/* Generated by Cython 0.15.1 on Sun Jul 22 15:37:18 2012 */

#define PY_SSIZE_T_CLEAN
#include "Python.h"
#ifndef Py_PYTHON_H
    #error Python headers needed to compile C extensions, please install development version of Python.
#else

#include <stddef.h> /* For offsetof */
#ifndef offsetof
#define offsetof(type, member) ( (size_t) & ((type*)0) -> member )
#endif

#if !defined(WIN32) && !defined(MS_WINDOWS)
  #ifndef __stdcall
    #define __stdcall
  #endif
  #ifndef __cdecl
    #define __cdecl
  #endif
  #ifndef __fastcall
    #define __fastcall
  #endif
#endif

#ifndef DL_IMPORT
  #define DL_IMPORT(t) t
#endif
#ifndef DL_EXPORT
  #define DL_EXPORT(t) t
#endif

#ifndef PY_LONG_LONG
  #define PY_LONG_LONG LONG_LONG
#endif

#if PY_VERSION_HEX < 0x02040000
  #define METH_COEXIST 0
  #define PyDict_CheckExact(op) (Py_TYPE(op) == &PyDict_Type)
  #define PyDict_Contains(d,o)   PySequence_Contains(d,o)
#endif

#if PY_VERSION_HEX < 0x02050000
  typedef int Py_ssize_t;
  #define PY_SSIZE_T_MAX INT_MAX
  #define PY_SSIZE_T_MIN INT_MIN
  #define PY_FORMAT_SIZE_T ""
  #define PyInt_FromSsize_t(z) PyInt_FromLong(z)
  #define PyInt_AsSsize_t(o)   __Pyx_PyInt_AsInt(o)
  #define PyNumber_Index(o)    PyNumber_Int(o)
  #define PyIndex_Check(o)     PyNumber_Check(o)
  #define PyErr_WarnEx(category, message, stacklevel) PyErr_Warn(category, message)
#endif

#if PY_VERSION_HEX < 0x02060000
  #define Py_REFCNT(ob) (((PyObject*)(ob))->ob_refcnt)
  #define Py_TYPE(ob)   (((PyObject*)(ob))->ob_type)
  #define Py_SIZE(ob)   (((PyVarObject*)(ob))->ob_size)
  #define PyVarObject_HEAD_INIT(type, size) \
          PyObject_HEAD_INIT(type) size,
  #define PyType_Modified(t)

  typedef struct {
     void *buf;
     PyObject *obj;
     Py_ssize_t len;
     Py_ssize_t itemsize;
     int readonly;
     int ndim;
     char *format;
     Py_ssize_t *shape;
     Py_ssize_t *strides;
     Py_ssize_t *suboffsets;
     void *internal;
  } Py_buffer;

  #define PyBUF_SIMPLE 0
  #define PyBUF_WRITABLE 0x0001
  #define PyBUF_FORMAT 0x0004
  #define PyBUF_ND 0x0008
  #define PyBUF_STRIDES (0x0010 | PyBUF_ND)
  #define PyBUF_C_CONTIGUOUS (0x0020 | PyBUF_STRIDES)
  #define PyBUF_F_CONTIGUOUS (0x0040 | PyBUF_STRIDES)
  #define PyBUF_ANY_CONTIGUOUS (0x0080 | PyBUF_STRIDES)
  #define PyBUF_INDIRECT (0x0100 | PyBUF_STRIDES)

#endif

#if PY_MAJOR_VERSION < 3
  #define __Pyx_BUILTIN_MODULE_NAME "__builtin__"
#else
  #define __Pyx_BUILTIN_MODULE_NAME "builtins"
#endif

#if PY_MAJOR_VERSION >= 3
  #define Py_TPFLAGS_CHECKTYPES 0
  #define Py_TPFLAGS_HAVE_INDEX 0
#endif

#if (PY_VERSION_HEX < 0x02060000) || (PY_MAJOR_VERSION >= 3)
  #define Py_TPFLAGS_HAVE_NEWBUFFER 0
#endif

#if PY_MAJOR_VERSION >= 3
  #define PyBaseString_Type            PyUnicode_Type
  #define PyStringObject               PyUnicodeObject
  #define PyString_Type                PyUnicode_Type
  #define PyString_Check               PyUnicode_Check
  #define PyString_CheckExact          PyUnicode_CheckExact
#endif

#if PY_VERSION_HEX < 0x02060000
  #define PyBytesObject                PyStringObject
  #define PyBytes_Type                 PyString_Type
  #define PyBytes_Check                PyString_Check
  #define PyBytes_CheckExact           PyString_CheckExact
  #define PyBytes_FromString           PyString_FromString
  #define PyBytes_FromStringAndSize    PyString_FromStringAndSize
  #define PyBytes_FromFormat           PyString_FromFormat
  #define PyBytes_DecodeEscape         PyString_DecodeEscape
  #define PyBytes_AsString             PyString_AsString
  #define PyBytes_AsStringAndSize      PyString_AsStringAndSize
  #define PyBytes_Size                 PyString_Size
  #define PyBytes_AS_STRING            PyString_AS_STRING
  #define PyBytes_GET_SIZE             PyString_GET_SIZE
  #define PyBytes_Repr                 PyString_Repr
  #define PyBytes_Concat               PyString_Concat
  #define PyBytes_ConcatAndDel         PyString_ConcatAndDel
#endif

#if PY_VERSION_HEX < 0x02060000
  #define PySet_Check(obj)             PyObject_TypeCheck(obj, &PySet_Type)
  #define PyFrozenSet_Check(obj)       PyObject_TypeCheck(obj, &PyFrozenSet_Type)
#endif
#ifndef PySet_CheckExact
  #define PySet_CheckExact(obj)        (Py_TYPE(obj) == &PySet_Type)
#endif

#define __Pyx_TypeCheck(obj, type) PyObject_TypeCheck(obj, (PyTypeObject *)type)

#if PY_MAJOR_VERSION >= 3
  #define PyIntObject                  PyLongObject
  #define PyInt_Type                   PyLong_Type
  #define PyInt_Check(op)              PyLong_Check(op)
  #define PyInt_CheckExact(op)         PyLong_CheckExact(op)
  #define PyInt_FromString             PyLong_FromString
  #define PyInt_FromUnicode            PyLong_FromUnicode
  #define PyInt_FromLong               PyLong_FromLong
  #define PyInt_FromSize_t             PyLong_FromSize_t
  #define PyInt_FromSsize_t            PyLong_FromSsize_t
  #define PyInt_AsLong                 PyLong_AsLong
  #define PyInt_AS_LONG                PyLong_AS_LONG
  #define PyInt_AsSsize_t              PyLong_AsSsize_t
  #define PyInt_AsUnsignedLongMask     PyLong_AsUnsignedLongMask
  #define PyInt_AsUnsignedLongLongMask PyLong_AsUnsignedLongLongMask
#endif

#if PY_MAJOR_VERSION >= 3
  #define PyBoolObject                 PyLongObject
#endif

#if PY_VERSION_HEX < 0x03020000
  typedef long Py_hash_t;
  #define __Pyx_PyInt_FromHash_t PyInt_FromLong
  #define __Pyx_PyInt_AsHash_t   PyInt_AsLong
#else
  #define __Pyx_PyInt_FromHash_t PyInt_FromSsize_t
  #define __Pyx_PyInt_AsHash_t   PyInt_AsSsize_t
#endif


#if PY_MAJOR_VERSION >= 3
  #define __Pyx_PyNumber_Divide(x,y)         PyNumber_TrueDivide(x,y)
  #define __Pyx_PyNumber_InPlaceDivide(x,y)  PyNumber_InPlaceTrueDivide(x,y)
#else
  #define __Pyx_PyNumber_Divide(x,y)         PyNumber_Divide(x,y)
  #define __Pyx_PyNumber_InPlaceDivide(x,y)  PyNumber_InPlaceDivide(x,y)
#endif

#if (PY_MAJOR_VERSION < 3) || (PY_VERSION_HEX >= 0x03010300)
  #define __Pyx_PySequence_GetSlice(obj, a, b) PySequence_GetSlice(obj, a, b)
  #define __Pyx_PySequence_SetSlice(obj, a, b, value) PySequence_SetSlice(obj, a, b, value)
  #define __Pyx_PySequence_DelSlice(obj, a, b) PySequence_DelSlice(obj, a, b)
#else
  #define __Pyx_PySequence_GetSlice(obj, a, b) (unlikely(!(obj)) ? \
        (PyErr_SetString(PyExc_SystemError, "null argument to internal routine"), (PyObject*)0) : \
        (likely((obj)->ob_type->tp_as_mapping) ? (PySequence_GetSlice(obj, a, b)) : \
            (PyErr_Format(PyExc_TypeError, "'%.200s' object is unsliceable", (obj)->ob_type->tp_name), (PyObject*)0)))
  #define __Pyx_PySequence_SetSlice(obj, a, b, value) (unlikely(!(obj)) ? \
        (PyErr_SetString(PyExc_SystemError, "null argument to internal routine"), -1) : \
        (likely((obj)->ob_type->tp_as_mapping) ? (PySequence_SetSlice(obj, a, b, value)) : \
            (PyErr_Format(PyExc_TypeError, "'%.200s' object doesn't support slice assignment", (obj)->ob_type->tp_name), -1)))
  #define __Pyx_PySequence_DelSlice(obj, a, b) (unlikely(!(obj)) ? \
        (PyErr_SetString(PyExc_SystemError, "null argument to internal routine"), -1) : \
        (likely((obj)->ob_type->tp_as_mapping) ? (PySequence_DelSlice(obj, a, b)) : \
            (PyErr_Format(PyExc_TypeError, "'%.200s' object doesn't support slice deletion", (obj)->ob_type->tp_name), -1)))
#endif

#if PY_MAJOR_VERSION >= 3
  #define PyMethod_New(func, self, klass) ((self) ? PyMethod_New(func, self) : PyInstanceMethod_New(func))
#endif

#if PY_VERSION_HEX < 0x02050000
  #define __Pyx_GetAttrString(o,n)   PyObject_GetAttrString((o),((char *)(n)))
  #define __Pyx_SetAttrString(o,n,a) PyObject_SetAttrString((o),((char *)(n)),(a))
  #define __Pyx_DelAttrString(o,n)   PyObject_DelAttrString((o),((char *)(n)))
#else
  #define __Pyx_GetAttrString(o,n)   PyObject_GetAttrString((o),(n))
  #define __Pyx_SetAttrString(o,n,a) PyObject_SetAttrString((o),(n),(a))
  #define __Pyx_DelAttrString(o,n)   PyObject_DelAttrString((o),(n))
#endif

#if PY_VERSION_HEX < 0x02050000
  #define __Pyx_NAMESTR(n) ((char *)(n))
  #define __Pyx_DOCSTR(n)  ((char *)(n))
#else
  #define __Pyx_NAMESTR(n) (n)
  #define __Pyx_DOCSTR(n)  (n)
#endif

#ifndef __PYX_EXTERN_C
  #ifdef __cplusplus
    #define __PYX_EXTERN_C extern "C"
  #else
    #define __PYX_EXTERN_C extern
  #endif
#endif

#if defined(WIN32) || defined(MS_WINDOWS)
#define _USE_MATH_DEFINES
#endif
#include <math.h>
#define __PYX_HAVE__pandas___algos
#define __PYX_HAVE_API__pandas___algos
#include "stdio.h"
#include "stdlib.h"
#include "numpy/arrayobject.h"
#include "numpy/ufuncobject.h"
#include "pythread.h"
#include "stdint.h"
#include "datetime.h"
#include "datetime_helper.h"
#include "numpy/ndarrayobject.h"
#include "numpy_helper.h"
#include "numpy/npy_common.h"
#include "datetime/np_datetime.h"
#include "datetime/np_datetime_strings.h"
#include "khash.h"
#include "math.h"
#ifdef _OPENMP
#include <omp.h>
#endif /* _OPENMP */

#ifdef PYREX_WITHOUT_ASSERTIONS
#define CYTHON_WITHOUT_ASSERTIONS
#endif


/* inline attribute */
#ifndef CYTHON_INLINE
  #if defined(__GNUC__)
    #define CYTHON_INLINE __inline__
  #elif defined(_MSC_VER)
    #define CYTHON_INLINE __inline
  #elif defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L
    #define CYTHON_INLINE inline
  #else
    #define CYTHON_INLINE
  #endif
#endif

/* unused attribute */
#ifndef CYTHON_UNUSED
# if defined(__GNUC__)
#   if !(defined(__cplusplus)) || (__GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 4))
#     define CYTHON_UNUSED __attribute__ ((__unused__))
#   else
#     define CYTHON_UNUSED
#   endif
# elif defined(__ICC) || defined(__INTEL_COMPILER)
#   define CYTHON_UNUSED __attribute__ ((__unused__))
# else
#   define CYTHON_UNUSED
# endif
#endif

typedef struct {PyObject **p; char *s; const long n; const char* encoding; const char is_unicode; const char is_str; const char intern; } __Pyx_StringTabEntry; /*proto*/


/* Type Conversion Predeclarations */

#define __Pyx_PyBytes_FromUString(s) PyBytes_FromString((char*)s)
#define __Pyx_PyBytes_AsUString(s)   ((unsigned char*) PyBytes_AsString(s))

#define __Pyx_Owned_Py_None(b) (Py_INCREF(Py_None), Py_None)
#define __Pyx_PyBool_FromLong(b) ((b) ? (Py_INCREF(Py_True), Py_True) : (Py_INCREF(Py_False), Py_False))
static CYTHON_INLINE int __Pyx_PyObject_IsTrue(PyObject*);
static CYTHON_INLINE PyObject* __Pyx_PyNumber_Int(PyObject* x);

static CYTHON_INLINE Py_ssize_t __Pyx_PyIndex_AsSsize_t(PyObject*);
static CYTHON_INLINE PyObject * __Pyx_PyInt_FromSize_t(size_t);
static CYTHON_INLINE size_t __Pyx_PyInt_AsSize_t(PyObject*);

#define __pyx_PyFloat_AsDouble(x) (PyFloat_CheckExact(x) ? PyFloat_AS_DOUBLE(x) : PyFloat_AsDouble(x))


#ifdef __GNUC__
  /* Test for GCC > 2.95 */
  #if __GNUC__ > 2 || (__GNUC__ == 2 && (__GNUC_MINOR__ > 95))
    #define likely(x)   __builtin_expect(!!(x), 1)
    #define unlikely(x) __builtin_expect(!!(x), 0)
  #else /* __GNUC__ > 2 ... */
    #define likely(x)   (x)
    #define unlikely(x) (x)
  #endif /* __GNUC__ > 2 ... */
#else /* __GNUC__ */
  #define likely(x)   (x)
  #define unlikely(x) (x)
#endif /* __GNUC__ */
    
static PyObject *__pyx_m;
static PyObject *__pyx_b;
static PyObject *__pyx_empty_tuple;
static PyObject *__pyx_empty_bytes;
static int __pyx_lineno;
static int __pyx_clineno = 0;
static const char * __pyx_cfilenm= __FILE__;
static const char *__pyx_filename;


#if !defined(CYTHON_CCOMPLEX)
  #if defined(__cplusplus)
    #define CYTHON_CCOMPLEX 1
  #elif defined(_Complex_I)
    #define CYTHON_CCOMPLEX 1
  #else
    #define CYTHON_CCOMPLEX 0
  #endif
#endif

#if CYTHON_CCOMPLEX
  #ifdef __cplusplus
    #include <complex>
  #else
    #include <complex.h>
  #endif
#endif

#if CYTHON_CCOMPLEX && !defined(__cplusplus) && defined(__sun__) && defined(__GNUC__)
  #undef _Complex_I
  #define _Complex_I 1.0fj
#endif

static const char *__pyx_f[] = {
  "generated.pyx",
  "numpy.pxd",
  "util.pxd",
  "bool.pxd",
  "complex.pxd",
  "datetime.pxd",
};

/* "numpy.pxd":724
 * # in Cython to enable them only on the right systems.
 * 
 * ctypedef npy_int8       int8_t             # <<<<<<<<<<<<<<
 * ctypedef npy_int16      int16_t
 * ctypedef npy_int32      int32_t
 */
typedef npy_int8 __pyx_t_5numpy_int8_t;

/* "numpy.pxd":725
 * 
 * ctypedef npy_int8       int8_t
 * ctypedef npy_int16      int16_t             # <<<<<<<<<<<<<<
 * ctypedef npy_int32      int32_t
 * ctypedef npy_int64      int64_t
 */
typedef npy_int16 __pyx_t_5numpy_int16_t;

/* "numpy.pxd":726
 * ctypedef npy_int8       int8_t
 * ctypedef npy_int16      int16_t
 * ctypedef npy_int32      int32_t             # <<<<<<<<<<<<<<
 * ctypedef npy_int64      int64_t
 * #ctypedef npy_int96      int96_t
 */
typedef npy_int32 __pyx_t_5numpy_int32_t;

/* "numpy.pxd":727
 * ctypedef npy_int16      int16_t
 * ctypedef npy_int32      int32_t
 * ctypedef npy_int64      int64_t             # <<<<<<<<<<<<<<
 * #ctypedef npy_int96      int96_t
 * #ctypedef npy_int128     int128_t
 */
typedef npy_int64 __pyx_t_5numpy_int64_t;

/* "numpy.pxd":731
 * #ctypedef npy_int128     int128_t
 * 
 * ctypedef npy_uint8      uint8_t             # <<<<<<<<<<<<<<
 * ctypedef npy_uint16     uint16_t
 * ctypedef npy_uint32     uint32_t
 */
typedef npy_uint8 __pyx_t_5numpy_uint8_t;

/* "numpy.pxd":732
 * 
 * ctypedef npy_uint8      uint8_t
 * ctypedef npy_uint16     uint16_t             # <<<<<<<<<<<<<<
 * ctypedef npy_uint32     uint32_t
 * ctypedef npy_uint64     uint64_t
 */
typedef npy_uint16 __pyx_t_5numpy_uint16_t;

/* "numpy.pxd":733
 * ctypedef npy_uint8      uint8_t
 * ctypedef npy_uint16     uint16_t
 * ctypedef npy_uint32     uint32_t             # <<<<<<<<<<<<<<
 * ctypedef npy_uint64     uint64_t
 * #ctypedef npy_uint96     uint96_t
 */
typedef npy_uint32 __pyx_t_5numpy_uint32_t;

/* "numpy.pxd":734
 * ctypedef npy_uint16     uint16_t
 * ctypedef npy_uint32     uint32_t
 * ctypedef npy_uint64     uint64_t             # <<<<<<<<<<<<<<
 * #ctypedef npy_uint96     uint96_t
 * #ctypedef npy_uint128    uint128_t
 */
typedef npy_uint64 __pyx_t_5numpy_uint64_t;

/* "numpy.pxd":738
 * #ctypedef npy_uint128    uint128_t
 * 
 * ctypedef npy_float32    float32_t             # <<<<<<<<<<<<<<
 * ctypedef npy_float64    float64_t
 * #ctypedef npy_float80    float80_t
 */
typedef npy_float32 __pyx_t_5numpy_float32_t;

/* "numpy.pxd":739
 * 
 * ctypedef npy_float32    float32_t
 * ctypedef npy_float64    float64_t             # <<<<<<<<<<<<<<
 * #ctypedef npy_float80    float80_t
 * #ctypedef npy_float128   float128_t
 */
typedef npy_float64 __pyx_t_5numpy_float64_t;

/* "numpy.pxd":748
 * # The int types are mapped a bit surprising --
 * # numpy.int corresponds to 'l' and numpy.long to 'q'
 * ctypedef npy_long       int_t             # <<<<<<<<<<<<<<
 * ctypedef npy_longlong   long_t
 * ctypedef npy_longlong   longlong_t
 */
typedef npy_long __pyx_t_5numpy_int_t;

/* "numpy.pxd":749
 * # numpy.int corresponds to 'l' and numpy.long to 'q'
 * ctypedef npy_long       int_t
 * ctypedef npy_longlong   long_t             # <<<<<<<<<<<<<<
 * ctypedef npy_longlong   longlong_t
 * 
 */
typedef npy_longlong __pyx_t_5numpy_long_t;

/* "numpy.pxd":750
 * ctypedef npy_long       int_t
 * ctypedef npy_longlong   long_t
 * ctypedef npy_longlong   longlong_t             # <<<<<<<<<<<<<<
 * 
 * ctypedef npy_ulong      uint_t
 */
typedef npy_longlong __pyx_t_5numpy_longlong_t;

/* "numpy.pxd":752
 * ctypedef npy_longlong   longlong_t
 * 
 * ctypedef npy_ulong      uint_t             # <<<<<<<<<<<<<<
 * ctypedef npy_ulonglong  ulong_t
 * ctypedef npy_ulonglong  ulonglong_t
 */
typedef npy_ulong __pyx_t_5numpy_uint_t;

/* "numpy.pxd":753
 * 
 * ctypedef npy_ulong      uint_t
 * ctypedef npy_ulonglong  ulong_t             # <<<<<<<<<<<<<<
 * ctypedef npy_ulonglong  ulonglong_t
 * 
 */
typedef npy_ulonglong __pyx_t_5numpy_ulong_t;

/* "numpy.pxd":754
 * ctypedef npy_ulong      uint_t
 * ctypedef npy_ulonglong  ulong_t
 * ctypedef npy_ulonglong  ulonglong_t             # <<<<<<<<<<<<<<
 * 
 * ctypedef npy_intp       intp_t
 */
typedef npy_ulonglong __pyx_t_5numpy_ulonglong_t;

/* "numpy.pxd":756
 * ctypedef npy_ulonglong  ulonglong_t
 * 
 * ctypedef npy_intp       intp_t             # <<<<<<<<<<<<<<
 * ctypedef npy_uintp      uintp_t
 * 
 */
typedef npy_intp __pyx_t_5numpy_intp_t;

/* "numpy.pxd":757
 * 
 * ctypedef npy_intp       intp_t
 * ctypedef npy_uintp      uintp_t             # <<<<<<<<<<<<<<
 * 
 * ctypedef npy_double     float_t
 */
typedef npy_uintp __pyx_t_5numpy_uintp_t;

/* "numpy.pxd":759
 * ctypedef npy_uintp      uintp_t
 * 
 * ctypedef npy_double     float_t             # <<<<<<<<<<<<<<
 * ctypedef npy_double     double_t
 * ctypedef npy_longdouble longdouble_t
 */
typedef npy_double __pyx_t_5numpy_float_t;

/* "numpy.pxd":760
 * 
 * ctypedef npy_double     float_t
 * ctypedef npy_double     double_t             # <<<<<<<<<<<<<<
 * ctypedef npy_longdouble longdouble_t
 * 
 */
typedef npy_double __pyx_t_5numpy_double_t;

/* "numpy.pxd":761
 * ctypedef npy_double     float_t
 * ctypedef npy_double     double_t
 * ctypedef npy_longdouble longdouble_t             # <<<<<<<<<<<<<<
 * 
 * ctypedef npy_cfloat      cfloat_t
 */
typedef npy_longdouble __pyx_t_5numpy_longdouble_t;

/* "pandas/src/generated.pyx":30
 * cdef inline int int_min(int a, int b): return a if a <= b else b
 * 
 * ctypedef unsigned char UChar             # <<<<<<<<<<<<<<
 * 
 * cimport util
 */
typedef unsigned char __pyx_t_6pandas_6_algos_UChar;

#if CYTHON_CCOMPLEX
  #ifdef __cplusplus
    typedef ::std::complex< float > __pyx_t_float_complex;
  #else
    typedef float _Complex __pyx_t_float_complex;
  #endif
#else
    typedef struct { float real, imag; } __pyx_t_float_complex;
#endif

#if CYTHON_CCOMPLEX
  #ifdef __cplusplus
    typedef ::std::complex< double > __pyx_t_double_complex;
  #else
    typedef double _Complex __pyx_t_double_complex;
  #endif
#else
    typedef struct { double real, imag; } __pyx_t_double_complex;
#endif

/*--- Type declarations ---*/

/* "numpy.pxd":763
 * ctypedef npy_longdouble longdouble_t
 * 
 * ctypedef npy_cfloat      cfloat_t             # <<<<<<<<<<<<<<
 * ctypedef npy_cdouble     cdouble_t
 * ctypedef npy_clongdouble clongdouble_t
 */
typedef npy_cfloat __pyx_t_5numpy_cfloat_t;

/* "numpy.pxd":764
 * 
 * ctypedef npy_cfloat      cfloat_t
 * ctypedef npy_cdouble     cdouble_t             # <<<<<<<<<<<<<<
 * ctypedef npy_clongdouble clongdouble_t
 * 
 */
typedef npy_cdouble __pyx_t_5numpy_cdouble_t;

/* "numpy.pxd":765
 * ctypedef npy_cfloat      cfloat_t
 * ctypedef npy_cdouble     cdouble_t
 * ctypedef npy_clongdouble clongdouble_t             # <<<<<<<<<<<<<<
 * 
 * ctypedef npy_cdouble     complex_t
 */
typedef npy_clongdouble __pyx_t_5numpy_clongdouble_t;

/* "numpy.pxd":767
 * ctypedef npy_clongdouble clongdouble_t
 * 
 * ctypedef npy_cdouble     complex_t             # <<<<<<<<<<<<<<
 * 
 * cdef inline object PyArray_MultiIterNew1(a):
 */
typedef npy_cdouble __pyx_t_5numpy_complex_t;


#ifndef CYTHON_REFNANNY
  #define CYTHON_REFNANNY 0
#endif

#if CYTHON_REFNANNY
  typedef struct {
    void (*INCREF)(void*, PyObject*, int);
    void (*DECREF)(void*, PyObject*, int);
    void (*GOTREF)(void*, PyObject*, int);
    void (*GIVEREF)(void*, PyObject*, int);
    void* (*SetupContext)(const char*, int, const char*);
    void (*FinishContext)(void**);
  } __Pyx_RefNannyAPIStruct;
  static __Pyx_RefNannyAPIStruct *__Pyx_RefNanny = NULL;
  static __Pyx_RefNannyAPIStruct *__Pyx_RefNannyImportAPI(const char *modname); /*proto*/
  #define __Pyx_RefNannyDeclarations void *__pyx_refnanny = NULL;
  #define __Pyx_RefNannySetupContext(name)           __pyx_refnanny = __Pyx_RefNanny->SetupContext((name), __LINE__, __FILE__)
  #define __Pyx_RefNannyFinishContext()           __Pyx_RefNanny->FinishContext(&__pyx_refnanny)
  #define __Pyx_INCREF(r)  __Pyx_RefNanny->INCREF(__pyx_refnanny, (PyObject *)(r), __LINE__)
  #define __Pyx_DECREF(r)  __Pyx_RefNanny->DECREF(__pyx_refnanny, (PyObject *)(r), __LINE__)
  #define __Pyx_GOTREF(r)  __Pyx_RefNanny->GOTREF(__pyx_refnanny, (PyObject *)(r), __LINE__)
  #define __Pyx_GIVEREF(r) __Pyx_RefNanny->GIVEREF(__pyx_refnanny, (PyObject *)(r), __LINE__)
  #define __Pyx_XINCREF(r)  do { if((r) != NULL) {__Pyx_INCREF(r); }} while(0)
  #define __Pyx_XDECREF(r)  do { if((r) != NULL) {__Pyx_DECREF(r); }} while(0)
  #define __Pyx_XGOTREF(r)  do { if((r) != NULL) {__Pyx_GOTREF(r); }} while(0)
  #define __Pyx_XGIVEREF(r) do { if((r) != NULL) {__Pyx_GIVEREF(r);}} while(0)
#else
  #define __Pyx_RefNannyDeclarations
  #define __Pyx_RefNannySetupContext(name)
  #define __Pyx_RefNannyFinishContext()
  #define __Pyx_INCREF(r) Py_INCREF(r)
  #define __Pyx_DECREF(r) Py_DECREF(r)
  #define __Pyx_GOTREF(r)
  #define __Pyx_GIVEREF(r)
  #define __Pyx_XINCREF(r) Py_XINCREF(r)
  #define __Pyx_XDECREF(r) Py_XDECREF(r)
  #define __Pyx_XGOTREF(r)
  #define __Pyx_XGIVEREF(r)
#endif /* CYTHON_REFNANNY */

static PyObject *__Pyx_GetName(PyObject *dict, PyObject *name); /*proto*/

/* Run-time type information about structs used with buffers */
struct __Pyx_StructField_;

typedef struct {
  const char* name; /* for error messages only */
  struct __Pyx_StructField_* fields;
  size_t size;     /* sizeof(type) */
  char typegroup; /* _R_eal, _C_omplex, Signed _I_nt, _U_nsigned int, _S_truct, _P_ointer, _O_bject */
} __Pyx_TypeInfo;

typedef struct __Pyx_StructField_ {
  __Pyx_TypeInfo* type;
  const char* name;
  size_t offset;
} __Pyx_StructField;

typedef struct {
  __Pyx_StructField* field;
  size_t parent_offset;
} __Pyx_BufFmt_StackElem;


static CYTHON_INLINE int  __Pyx_GetBufferAndValidate(Py_buffer* buf, PyObject* obj, __Pyx_TypeInfo* dtype, int flags, int nd, int cast, __Pyx_BufFmt_StackElem* stack);
static CYTHON_INLINE void __Pyx_SafeReleaseBuffer(Py_buffer* info);
#define __Pyx_BufPtrStrided1d(type, buf, i0, s0) (type)((char*)buf + i0 * s0)

static CYTHON_INLINE void __Pyx_ErrRestore(PyObject *type, PyObject *value, PyObject *tb); /*proto*/
static CYTHON_INLINE void __Pyx_ErrFetch(PyObject **type, PyObject **value, PyObject **tb); /*proto*/

static int __Pyx_ArgTypeTest(PyObject *obj, PyTypeObject *type, int none_allowed,
    const char *name, int exact); /*proto*/

#define __Pyx_SetItemInt(o, i, v, size, to_py_func) (((size) <= sizeof(Py_ssize_t)) ? \
                                                    __Pyx_SetItemInt_Fast(o, i, v) : \
                                                    __Pyx_SetItemInt_Generic(o, to_py_func(i), v))

static CYTHON_INLINE int __Pyx_SetItemInt_Generic(PyObject *o, PyObject *j, PyObject *v) {
    int r;
    if (!j) return -1;
    r = PyObject_SetItem(o, j, v);
    Py_DECREF(j);
    return r;
}

static CYTHON_INLINE int __Pyx_SetItemInt_Fast(PyObject *o, Py_ssize_t i, PyObject *v) {
    if (PyList_CheckExact(o) && ((0 <= i) & (i < PyList_GET_SIZE(o)))) {
        Py_INCREF(v);
        Py_DECREF(PyList_GET_ITEM(o, i));
        PyList_SET_ITEM(o, i, v);
        return 1;
    }
    else if (Py_TYPE(o)->tp_as_sequence && Py_TYPE(o)->tp_as_sequence->sq_ass_item && (likely(i >= 0)))
        return PySequence_SetItem(o, i, v);
    else {
        PyObject *j = PyInt_FromSsize_t(i);
        return __Pyx_SetItemInt_Generic(o, j, v);
    }
}

static void __Pyx_RaiseArgtupleInvalid(const char* func_name, int exact,
    Py_ssize_t num_min, Py_ssize_t num_max, Py_ssize_t num_found); /*proto*/

static void __Pyx_RaiseDoubleKeywordsError(
    const char* func_name, PyObject* kw_name); /*proto*/

static int __Pyx_ParseOptionalKeywords(PyObject *kwds, PyObject **argnames[],     PyObject *kwds2, PyObject *values[], Py_ssize_t num_pos_args,     const char* function_name); /*proto*/

static CYTHON_INLINE int __Pyx_TypeTest(PyObject *obj, PyTypeObject *type); /*proto*/

static void __Pyx_RaiseBufferFallbackError(void); /*proto*/

static void __Pyx_Raise(PyObject *type, PyObject *value, PyObject *tb, PyObject *cause); /*proto*/

static CYTHON_INLINE void __Pyx_RaiseNeedMoreValuesError(Py_ssize_t index);

static CYTHON_INLINE void __Pyx_RaiseTooManyValuesError(Py_ssize_t expected);

static int __Pyx_IternextUnpackEndCheck(PyObject *retval, Py_ssize_t expected); /*proto*/
#define __Pyx_BufPtrStrided2d(type, buf, i0, s0, i1, s1) (type)((char*)buf + i0 * s0 + i1 * s1)
static void __Pyx_RaiseBufferIndexError(int axis); /*proto*/

static CYTHON_INLINE int __Pyx_NegateNonNeg(int b) { 
    return unlikely(b < 0) ? b : !b; 
}
static CYTHON_INLINE PyObject* __Pyx_PyBoolOrNull_FromLong(long b) {
    return unlikely(b < 0) ? NULL : __Pyx_PyBool_FromLong(b);
}

static CYTHON_INLINE void __Pyx_RaiseNoneIndexingError(void);

#if PY_MAJOR_VERSION >= 3
static PyObject *__Pyx_PyDict_GetItem(PyObject *d, PyObject* key) {
    PyObject *value;
    if (unlikely(d == Py_None)) {
        __Pyx_RaiseNoneIndexingError();
        return NULL;
    }
    value = PyDict_GetItemWithError(d, key);
    if (unlikely(!value)) {
        if (!PyErr_Occurred())
            PyErr_SetObject(PyExc_KeyError, key);
        return NULL;
    }
    Py_INCREF(value);
    return value;
}
#else
    #define __Pyx_PyDict_GetItem(d, key) PyObject_GetItem(d, key)
#endif

static CYTHON_INLINE void __Pyx_RaiseNoneNotIterableError(void);

static void __Pyx_UnpackTupleError(PyObject *, Py_ssize_t index); /*proto*/
#if PY_MAJOR_VERSION < 3
static int __Pyx_GetBuffer(PyObject *obj, Py_buffer *view, int flags);
static void __Pyx_ReleaseBuffer(Py_buffer *view);
#else
#define __Pyx_GetBuffer PyObject_GetBuffer
#define __Pyx_ReleaseBuffer PyBuffer_Release
#endif

Py_ssize_t __Pyx_zeros[] = {0, 0};
Py_ssize_t __Pyx_minusones[] = {-1, -1};

static PyObject *__Pyx_Import(PyObject *name, PyObject *from_list, long level); /*proto*/

static CYTHON_INLINE npy_int32 __Pyx_PyInt_from_py_npy_int32(PyObject *);

static CYTHON_INLINE npy_int64 __Pyx_PyInt_from_py_npy_int64(PyObject *);

static CYTHON_INLINE npy_uint8 __Pyx_PyInt_from_py_npy_uint8(PyObject *);

static CYTHON_INLINE PyObject *__Pyx_PyInt_to_py_npy_int32(npy_int32);

static CYTHON_INLINE PyObject *__Pyx_PyInt_to_py_npy_int64(npy_int64);

static CYTHON_INLINE PyObject *__Pyx_PyInt_to_py_npy_uint8(npy_uint8);

#if CYTHON_CCOMPLEX
  #ifdef __cplusplus
    #define __Pyx_CREAL(z) ((z).real())
    #define __Pyx_CIMAG(z) ((z).imag())
  #else
    #define __Pyx_CREAL(z) (__real__(z))
    #define __Pyx_CIMAG(z) (__imag__(z))
  #endif
#else
    #define __Pyx_CREAL(z) ((z).real)
    #define __Pyx_CIMAG(z) ((z).imag)
#endif

#if defined(_WIN32) && defined(__cplusplus) && CYTHON_CCOMPLEX
    #define __Pyx_SET_CREAL(z,x) ((z).real(x))
    #define __Pyx_SET_CIMAG(z,y) ((z).imag(y))
#else
    #define __Pyx_SET_CREAL(z,x) __Pyx_CREAL(z) = (x)
    #define __Pyx_SET_CIMAG(z,y) __Pyx_CIMAG(z) = (y)
#endif

static CYTHON_INLINE __pyx_t_float_complex __pyx_t_float_complex_from_parts(float, float);

#if CYTHON_CCOMPLEX
    #define __Pyx_c_eqf(a, b)   ((a)==(b))
    #define __Pyx_c_sumf(a, b)  ((a)+(b))
    #define __Pyx_c_difff(a, b) ((a)-(b))
    #define __Pyx_c_prodf(a, b) ((a)*(b))
    #define __Pyx_c_quotf(a, b) ((a)/(b))
    #define __Pyx_c_negf(a)     (-(a))
  #ifdef __cplusplus
    #define __Pyx_c_is_zerof(z) ((z)==(float)0)
    #define __Pyx_c_conjf(z)    (::std::conj(z))
    #if 1
        #define __Pyx_c_absf(z)     (::std::abs(z))
        #define __Pyx_c_powf(a, b)  (::std::pow(a, b))
    #endif
  #else
    #define __Pyx_c_is_zerof(z) ((z)==0)
    #define __Pyx_c_conjf(z)    (conjf(z))
    #if 1
        #define __Pyx_c_absf(z)     (cabsf(z))
        #define __Pyx_c_powf(a, b)  (cpowf(a, b))
    #endif
 #endif
#else
    static CYTHON_INLINE int __Pyx_c_eqf(__pyx_t_float_complex, __pyx_t_float_complex);
    static CYTHON_INLINE __pyx_t_float_complex __Pyx_c_sumf(__pyx_t_float_complex, __pyx_t_float_complex);
    static CYTHON_INLINE __pyx_t_float_complex __Pyx_c_difff(__pyx_t_float_complex, __pyx_t_float_complex);
    static CYTHON_INLINE __pyx_t_float_complex __Pyx_c_prodf(__pyx_t_float_complex, __pyx_t_float_complex);
    static CYTHON_INLINE __pyx_t_float_complex __Pyx_c_quotf(__pyx_t_float_complex, __pyx_t_float_complex);
    static CYTHON_INLINE __pyx_t_float_complex __Pyx_c_negf(__pyx_t_float_complex);
    static CYTHON_INLINE int __Pyx_c_is_zerof(__pyx_t_float_complex);
    static CYTHON_INLINE __pyx_t_float_complex __Pyx_c_conjf(__pyx_t_float_complex);
    #if 1
        static CYTHON_INLINE float __Pyx_c_absf(__pyx_t_float_complex);
        static CYTHON_INLINE __pyx_t_float_complex __Pyx_c_powf(__pyx_t_float_complex, __pyx_t_float_complex);
    #endif
#endif

static CYTHON_INLINE __pyx_t_double_complex __pyx_t_double_complex_from_parts(double, double);

#if CYTHON_CCOMPLEX
    #define __Pyx_c_eq(a, b)   ((a)==(b))
    #define __Pyx_c_sum(a, b)  ((a)+(b))
    #define __Pyx_c_diff(a, b) ((a)-(b))
    #define __Pyx_c_prod(a, b) ((a)*(b))
    #define __Pyx_c_quot(a, b) ((a)/(b))
    #define __Pyx_c_neg(a)     (-(a))
  #ifdef __cplusplus
    #define __Pyx_c_is_zero(z) ((z)==(double)0)
    #define __Pyx_c_conj(z)    (::std::conj(z))
    #if 1
        #define __Pyx_c_abs(z)     (::std::abs(z))
        #define __Pyx_c_pow(a, b)  (::std::pow(a, b))
    #endif
  #else
    #define __Pyx_c_is_zero(z) ((z)==0)
    #define __Pyx_c_conj(z)    (conj(z))
    #if 1
        #define __Pyx_c_abs(z)     (cabs(z))
        #define __Pyx_c_pow(a, b)  (cpow(a, b))
    #endif
 #endif
#else
    static CYTHON_INLINE int __Pyx_c_eq(__pyx_t_double_complex, __pyx_t_double_complex);
    static CYTHON_INLINE __pyx_t_double_complex __Pyx_c_sum(__pyx_t_double_complex, __pyx_t_double_complex);
    static CYTHON_INLINE __pyx_t_double_complex __Pyx_c_diff(__pyx_t_double_complex, __pyx_t_double_complex);
    static CYTHON_INLINE __pyx_t_double_complex __Pyx_c_prod(__pyx_t_double_complex, __pyx_t_double_complex);
    static CYTHON_INLINE __pyx_t_double_complex __Pyx_c_quot(__pyx_t_double_complex, __pyx_t_double_complex);
    static CYTHON_INLINE __pyx_t_double_complex __Pyx_c_neg(__pyx_t_double_complex);
    static CYTHON_INLINE int __Pyx_c_is_zero(__pyx_t_double_complex);
    static CYTHON_INLINE __pyx_t_double_complex __Pyx_c_conj(__pyx_t_double_complex);
    #if 1
        static CYTHON_INLINE double __Pyx_c_abs(__pyx_t_double_complex);
        static CYTHON_INLINE __pyx_t_double_complex __Pyx_c_pow(__pyx_t_double_complex, __pyx_t_double_complex);
    #endif
#endif

static CYTHON_INLINE unsigned char __Pyx_PyInt_AsUnsignedChar(PyObject *);

static CYTHON_INLINE unsigned short __Pyx_PyInt_AsUnsignedShort(PyObject *);

static CYTHON_INLINE unsigned int __Pyx_PyInt_AsUnsignedInt(PyObject *);

static CYTHON_INLINE char __Pyx_PyInt_AsChar(PyObject *);

static CYTHON_INLINE short __Pyx_PyInt_AsShort(PyObject *);

static CYTHON_INLINE int __Pyx_PyInt_AsInt(PyObject *);

static CYTHON_INLINE signed char __Pyx_PyInt_AsSignedChar(PyObject *);

static CYTHON_INLINE signed short __Pyx_PyInt_AsSignedShort(PyObject *);

static CYTHON_INLINE signed int __Pyx_PyInt_AsSignedInt(PyObject *);

static CYTHON_INLINE int __Pyx_PyInt_AsLongDouble(PyObject *);

static CYTHON_INLINE unsigned long __Pyx_PyInt_AsUnsignedLong(PyObject *);

static CYTHON_INLINE unsigned PY_LONG_LONG __Pyx_PyInt_AsUnsignedLongLong(PyObject *);

static CYTHON_INLINE long __Pyx_PyInt_AsLong(PyObject *);

static CYTHON_INLINE PY_LONG_LONG __Pyx_PyInt_AsLongLong(PyObject *);

static CYTHON_INLINE signed long __Pyx_PyInt_AsSignedLong(PyObject *);

static CYTHON_INLINE signed PY_LONG_LONG __Pyx_PyInt_AsSignedLongLong(PyObject *);

static void __Pyx_WriteUnraisable(const char *name, int clineno,
                                  int lineno, const char *filename); /*proto*/

static int __Pyx_check_binary_version(void);

static PyTypeObject *__Pyx_ImportType(const char *module_name, const char *class_name, size_t size, int strict);  /*proto*/

static PyObject *__Pyx_ImportModule(const char *name); /*proto*/

static void __Pyx_AddTraceback(const char *funcname, int __pyx_clineno,
                               int __pyx_lineno, const char *__pyx_filename); /*proto*/

static int __Pyx_InitStrings(__Pyx_StringTabEntry *t); /*proto*/

/* Module declarations from 'cpython.buffer' */

/* Module declarations from 'cpython.ref' */

/* Module declarations from 'libc.stdio' */

/* Module declarations from 'cpython.object' */

/* Module declarations from 'libc.stdlib' */

/* Module declarations from 'numpy' */

/* Module declarations from 'numpy' */
static PyTypeObject *__pyx_ptype_5numpy_dtype = 0;
static PyTypeObject *__pyx_ptype_5numpy_flatiter = 0;
static PyTypeObject *__pyx_ptype_5numpy_broadcast = 0;
static PyTypeObject *__pyx_ptype_5numpy_ndarray = 0;
static PyTypeObject *__pyx_ptype_5numpy_ufunc = 0;
static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew1(PyObject *); /*proto*/
static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew2(PyObject *, PyObject *); /*proto*/
static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew3(PyObject *, PyObject *, PyObject *); /*proto*/
static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew4(PyObject *, PyObject *, PyObject *, PyObject *); /*proto*/
static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew5(PyObject *, PyObject *, PyObject *, PyObject *, PyObject *); /*proto*/
static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *, char *, char *, int *); /*proto*/
static CYTHON_INLINE void __pyx_f_5numpy_set_array_base(PyArrayObject *, PyObject *); /*proto*/
static CYTHON_INLINE PyObject *__pyx_f_5numpy_get_array_base(PyArrayObject *); /*proto*/

/* Module declarations from 'cython.cython.view' */

/* Module declarations from 'cython' */

/* Module declarations from 'cpython.version' */

/* Module declarations from 'cpython.exc' */

/* Module declarations from 'cpython.module' */

/* Module declarations from 'cpython.mem' */

/* Module declarations from 'cpython.tuple' */

/* Module declarations from 'cpython.list' */

/* Module declarations from 'cpython.sequence' */

/* Module declarations from 'cpython.mapping' */

/* Module declarations from 'cpython.iterator' */

/* Module declarations from 'cpython.type' */

/* Module declarations from 'cpython.number' */

/* Module declarations from 'cpython.int' */

/* Module declarations from '__builtin__' */

/* Module declarations from 'cpython.bool' */
static PyTypeObject *__pyx_ptype_7cpython_4bool_bool = 0;

/* Module declarations from 'cpython.long' */

/* Module declarations from 'cpython.float' */

/* Module declarations from '__builtin__' */

/* Module declarations from 'cpython.complex' */
static PyTypeObject *__pyx_ptype_7cpython_7complex_complex = 0;

/* Module declarations from 'cpython.string' */

/* Module declarations from 'cpython.unicode' */

/* Module declarations from 'cpython.dict' */

/* Module declarations from 'cpython.instance' */

/* Module declarations from 'cpython.function' */

/* Module declarations from 'cpython.method' */

/* Module declarations from 'cpython.weakref' */

/* Module declarations from 'cpython.getargs' */

/* Module declarations from 'cpython.pythread' */

/* Module declarations from 'cpython.pystate' */

/* Module declarations from 'cpython.cobject' */

/* Module declarations from 'cpython.oldbuffer' */

/* Module declarations from 'cpython.set' */

/* Module declarations from 'cpython.bytes' */

/* Module declarations from 'cpython.pycapsule' */

/* Module declarations from 'cpython' */

/* Module declarations from 'datetime' */

/* Module declarations from 'datetime' */
static PyTypeObject *__pyx_ptype_8datetime_date = 0;
static PyTypeObject *__pyx_ptype_8datetime_datetime = 0;
static PyTypeObject *__pyx_ptype_8datetime_timedelta = 0;

/* Module declarations from 'khash' */

/* Module declarations from 'util' */
static CYTHON_INLINE PyObject *__pyx_f_4util_get_value_at(PyArrayObject *, PyObject *); /*proto*/
static CYTHON_INLINE PyObject *__pyx_f_4util_set_value_at(PyArrayObject *, PyObject *, PyObject *); /*proto*/
static CYTHON_INLINE int __pyx_f_4util_is_contiguous(PyArrayObject *); /*proto*/
static CYTHON_INLINE PyObject *__pyx_f_4util_is_array(PyObject *); /*proto*/
static CYTHON_INLINE int __pyx_f_4util__checknull(PyObject *); /*proto*/
static CYTHON_INLINE int __pyx_f_4util__checknan(PyObject *); /*proto*/

/* Module declarations from 'pandas._algos' */
static double __pyx_v_6pandas_6_algos_NaN;
static double __pyx_v_6pandas_6_algos_nan;
static int __pyx_v_6pandas_6_algos_PLATFORM_INT;
static CYTHON_INLINE int __pyx_f_6pandas_6_algos_int_max(int, int); /*proto*/
static CYTHON_INLINE int __pyx_f_6pandas_6_algos_int_min(int, int); /*proto*/
static PyObject *__pyx_f_6pandas_6_algos_ensure_platform_int(PyObject *, int __pyx_skip_dispatch); /*proto*/
static PyObject *__pyx_f_6pandas_6_algos_ensure_float64(PyObject *, int __pyx_skip_dispatch); /*proto*/
static PyObject *__pyx_f_6pandas_6_algos_ensure_int32(PyObject *, int __pyx_skip_dispatch); /*proto*/
static PyObject *__pyx_f_6pandas_6_algos_ensure_int64(PyObject *, int __pyx_skip_dispatch); /*proto*/
static PyObject *__pyx_f_6pandas_6_algos_ensure_object(PyObject *, int __pyx_skip_dispatch); /*proto*/
static PyObject *__pyx_f_6pandas_6_algos_map_indices_float64(PyArrayObject *, int __pyx_skip_dispatch); /*proto*/
static PyObject *__pyx_f_6pandas_6_algos_map_indices_object(PyArrayObject *, int __pyx_skip_dispatch); /*proto*/
static PyObject *__pyx_f_6pandas_6_algos_map_indices_int32(PyArrayObject *, int __pyx_skip_dispatch); /*proto*/
static PyObject *__pyx_f_6pandas_6_algos_map_indices_int64(PyArrayObject *, int __pyx_skip_dispatch); /*proto*/
static PyObject *__pyx_f_6pandas_6_algos_map_indices_bool(PyArrayObject *, int __pyx_skip_dispatch); /*proto*/
static __Pyx_TypeInfo __Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t = { "float64_t", NULL, sizeof(__pyx_t_5numpy_float64_t), 'R' };
static __Pyx_TypeInfo __Pyx_TypeInfo_object = { "Python object", NULL, sizeof(PyObject *), 'O' };
static __Pyx_TypeInfo __Pyx_TypeInfo_nn___pyx_t_5numpy_int32_t = { "int32_t", NULL, sizeof(__pyx_t_5numpy_int32_t), 'I' };
static __Pyx_TypeInfo __Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t = { "int64_t", NULL, sizeof(__pyx_t_5numpy_int64_t), 'I' };
static __Pyx_TypeInfo __Pyx_TypeInfo_nn___pyx_t_5numpy_uint8_t = { "uint8_t", NULL, sizeof(__pyx_t_5numpy_uint8_t), 'U' };
#define __Pyx_MODULE_NAME "pandas._algos"
int __pyx_module_is_main_pandas___algos = 0;

/* Implementation of 'pandas._algos' */
static PyObject *__pyx_builtin_range;
static PyObject *__pyx_builtin_ValueError;
static PyObject *__pyx_builtin_object;
static PyObject *__pyx_builtin_RuntimeError;
static PyObject *__pyx_builtin_IndexError;
static char __pyx_k_2[] = "Limit must be non-negative";
static char __pyx_k_43[] = "No NA values allowed";
static char __pyx_k_53[] = "pandas.lib";
static char __pyx_k_54[] = "maybe_convert_objects";
static char __pyx_k_90[] = "ndarray is not C contiguous";
static char __pyx_k_92[] = "ndarray is not Fortran contiguous";
static char __pyx_k_94[] = "Non-native byte order not supported";
static char __pyx_k_96[] = "unknown dtype code in numpy.pxd (%d)";
static char __pyx_k_97[] = "Format string allocated too short, see comment in numpy.pxd";
static char __pyx_k__B[] = "B";
static char __pyx_k__H[] = "H";
static char __pyx_k__I[] = "I";
static char __pyx_k__L[] = "L";
static char __pyx_k__O[] = "O";
static char __pyx_k__Q[] = "Q";
static char __pyx_k__b[] = "b";
static char __pyx_k__d[] = "d";
static char __pyx_k__f[] = "f";
static char __pyx_k__g[] = "g";
static char __pyx_k__h[] = "h";
static char __pyx_k__i[] = "i";
static char __pyx_k__l[] = "l";
static char __pyx_k__q[] = "q";
static char __pyx_k_100[] = "Format string allocated too short.";
static char __pyx_k_102[] = "index out of bounds";
static char __pyx_k_106[] = "pandas._algos";
static char __pyx_k_107[] = "backfill_inplace_float64";
static char __pyx_k_108[] = "backfill_inplace_object";
static char __pyx_k_109[] = "backfill_inplace_int32";
static char __pyx_k_110[] = "backfill_inplace_int64";
static char __pyx_k_111[] = "backfill_inplace_bool";
static char __pyx_k_112[] = "pad_2d_inplace_float64";
static char __pyx_k_113[] = "pad_2d_inplace_object";
static char __pyx_k_114[] = "pad_2d_inplace_int32";
static char __pyx_k_115[] = "pad_2d_inplace_int64";
static char __pyx_k_116[] = "backfill_2d_inplace_float64";
static char __pyx_k_117[] = "backfill_2d_inplace_object";
static char __pyx_k_118[] = "backfill_2d_inplace_int32";
static char __pyx_k_119[] = "backfill_2d_inplace_int64";
static char __pyx_k_120[] = "backfill_2d_inplace_bool";
static char __pyx_k_121[] = "is_monotonic_float64";
static char __pyx_k_122[] = "take_2d_axis0_float64";
static char __pyx_k_123[] = "take_2d_axis0_object";
static char __pyx_k_124[] = "take_2d_axis1_float64";
static char __pyx_k_125[] = "take_2d_axis1_object";
static char __pyx_k_126[] = "take_2d_multi_float64";
static char __pyx_k_127[] = "take_2d_multi_object";
static char __pyx_k_128[] = "left_join_indexer_unique_float64";
static char __pyx_k_129[] = "left_join_indexer_unique_object";
static char __pyx_k_130[] = "left_join_indexer_unique_int32";
static char __pyx_k_131[] = "left_join_indexer_unique_int64";
static char __pyx_k_132[] = "left_join_indexer_float64";
static char __pyx_k_133[] = "left_join_indexer_object";
static char __pyx_k_134[] = "left_join_indexer_int32";
static char __pyx_k_135[] = "left_join_indexer_int64";
static char __pyx_k_136[] = "outer_join_indexer_float64";
static char __pyx_k_137[] = "outer_join_indexer_object";
static char __pyx_k_138[] = "outer_join_indexer_int32";
static char __pyx_k_139[] = "outer_join_indexer_int64";
static char __pyx_k_140[] = "inner_join_indexer_float64";
static char __pyx_k_141[] = "inner_join_indexer_object";
static char __pyx_k_142[] = "inner_join_indexer_int32";
static char __pyx_k_143[] = "inner_join_indexer_int64";
static char __pyx_k__Zd[] = "Zd";
static char __pyx_k__Zf[] = "Zf";
static char __pyx_k__Zg[] = "Zg";
static char __pyx_k__np[] = "np";
static char __pyx_k__NaN[] = "NaN";
static char __pyx_k__nan[] = "nan";
static char __pyx_k__new[] = "new";
static char __pyx_k__old[] = "old";
static char __pyx_k__out[] = "out";
static char __pyx_k__fill[] = "fill";
static char __pyx_k__func[] = "func";
static char __pyx_k__idx0[] = "idx0";
static char __pyx_k__idx1[] = "idx1";
static char __pyx_k__int_[] = "int_";
static char __pyx_k__left[] = "left";
static char __pyx_k__mask[] = "mask";
static char __pyx_k__array[] = "array";
static char __pyx_k__dtype[] = "dtype";
static char __pyx_k__empty[] = "empty";
static char __pyx_k__index[] = "index";
static char __pyx_k__int32[] = "int32";
static char __pyx_k__int64[] = "int64";
static char __pyx_k__isnan[] = "isnan";
static char __pyx_k__limit[] = "limit";
static char __pyx_k__numpy[] = "numpy";
static char __pyx_k__range[] = "range";
static char __pyx_k__right[] = "right";
static char __pyx_k__shape[] = "shape";
static char __pyx_k__arange[] = "arange";
static char __pyx_k__astype[] = "astype";
static char __pyx_k__labels[] = "labels";
static char __pyx_k__object[] = "object";
static char __pyx_k__values[] = "values";
static char __pyx_k__float64[] = "float64";
static char __pyx_k__indexer[] = "indexer";
static char __pyx_k__object_[] = "object_";
static char __pyx_k____main__[] = "__main__";
static char __pyx_k____test__[] = "__test__";
static char __pyx_k__datetime[] = "datetime";
static char __pyx_k__pad_bool[] = "pad_bool";
static char __pyx_k__pad_int32[] = "pad_int32";
static char __pyx_k__pad_int64[] = "pad_int64";
static char __pyx_k__IndexError[] = "IndexError";
static char __pyx_k__ValueError[] = "ValueError";
static char __pyx_k__fill_value[] = "fill_value";
static char __pyx_k__pad_object[] = "pad_object";
static char __pyx_k__pydatetime[] = "pydatetime";
static char __pyx_k__arrmap_bool[] = "arrmap_bool";
static char __pyx_k__pad_float64[] = "pad_float64";
static char __pyx_k__RuntimeError[] = "RuntimeError";
static char __pyx_k__arrmap_int32[] = "arrmap_int32";
static char __pyx_k__arrmap_int64[] = "arrmap_int64";
static char __pyx_k__groupby_bool[] = "groupby_bool";
static char __pyx_k__take_1d_bool[] = "take_1d_bool";
static char __pyx_k__arrmap_object[] = "arrmap_object";
static char __pyx_k__backfill_bool[] = "backfill_bool";
static char __pyx_k__groupby_int32[] = "groupby_int32";
static char __pyx_k__groupby_int64[] = "groupby_int64";
static char __pyx_k__take_1d_int32[] = "take_1d_int32";
static char __pyx_k__take_1d_int64[] = "take_1d_int64";
static char __pyx_k__arrmap_float64[] = "arrmap_float64";
static char __pyx_k__backfill_int32[] = "backfill_int32";
static char __pyx_k__backfill_int64[] = "backfill_int64";
static char __pyx_k__groupby_object[] = "groupby_object";
static char __pyx_k__take_1d_object[] = "take_1d_object";
static char __pyx_k__backfill_object[] = "backfill_object";
static char __pyx_k__groupby_float64[] = "groupby_float64";
static char __pyx_k__take_1d_float64[] = "take_1d_float64";
static char __pyx_k__backfill_float64[] = "backfill_float64";
static char __pyx_k__pad_inplace_bool[] = "pad_inplace_bool";
static char __pyx_k__is_monotonic_bool[] = "is_monotonic_bool";
static char __pyx_k__pad_inplace_int32[] = "pad_inplace_int32";
static char __pyx_k__pad_inplace_int64[] = "pad_inplace_int64";
static char __pyx_k__is_monotonic_int32[] = "is_monotonic_int32";
static char __pyx_k__is_monotonic_int64[] = "is_monotonic_int64";
static char __pyx_k__pad_inplace_object[] = "pad_inplace_object";
static char __pyx_k__take_2d_axis0_bool[] = "take_2d_axis0_bool";
static char __pyx_k__take_2d_axis1_bool[] = "take_2d_axis1_bool";
static char __pyx_k__take_2d_multi_bool[] = "take_2d_multi_bool";
static char __pyx_k__is_monotonic_object[] = "is_monotonic_object";
static char __pyx_k__pad_2d_inplace_bool[] = "pad_2d_inplace_bool";
static char __pyx_k__pad_inplace_float64[] = "pad_inplace_float64";
static char __pyx_k__take_2d_axis0_int32[] = "take_2d_axis0_int32";
static char __pyx_k__take_2d_axis0_int64[] = "take_2d_axis0_int64";
static char __pyx_k__take_2d_axis1_int32[] = "take_2d_axis1_int32";
static char __pyx_k__take_2d_axis1_int64[] = "take_2d_axis1_int64";
static char __pyx_k__take_2d_multi_int32[] = "take_2d_multi_int32";
static char __pyx_k__take_2d_multi_int64[] = "take_2d_multi_int64";
static PyObject *__pyx_kp_u_100;
static PyObject *__pyx_kp_s_102;
static PyObject *__pyx_n_s_106;
static PyObject *__pyx_n_s_107;
static PyObject *__pyx_n_s_108;
static PyObject *__pyx_n_s_109;
static PyObject *__pyx_n_s_110;
static PyObject *__pyx_n_s_111;
static PyObject *__pyx_n_s_112;
static PyObject *__pyx_n_s_113;
static PyObject *__pyx_n_s_114;
static PyObject *__pyx_n_s_115;
static PyObject *__pyx_n_s_116;
static PyObject *__pyx_n_s_117;
static PyObject *__pyx_n_s_118;
static PyObject *__pyx_n_s_119;
static PyObject *__pyx_n_s_120;
static PyObject *__pyx_n_s_121;
static PyObject *__pyx_n_s_122;
static PyObject *__pyx_n_s_123;
static PyObject *__pyx_n_s_124;
static PyObject *__pyx_n_s_125;
static PyObject *__pyx_n_s_126;
static PyObject *__pyx_n_s_127;
static PyObject *__pyx_n_s_128;
static PyObject *__pyx_n_s_129;
static PyObject *__pyx_n_s_130;
static PyObject *__pyx_n_s_131;
static PyObject *__pyx_n_s_132;
static PyObject *__pyx_n_s_133;
static PyObject *__pyx_n_s_134;
static PyObject *__pyx_n_s_135;
static PyObject *__pyx_n_s_136;
static PyObject *__pyx_n_s_137;
static PyObject *__pyx_n_s_138;
static PyObject *__pyx_n_s_139;
static PyObject *__pyx_n_s_140;
static PyObject *__pyx_n_s_141;
static PyObject *__pyx_n_s_142;
static PyObject *__pyx_n_s_143;
static PyObject *__pyx_kp_s_2;
static PyObject *__pyx_kp_s_43;
static PyObject *__pyx_n_s_53;
static PyObject *__pyx_n_s_54;
static PyObject *__pyx_kp_u_90;
static PyObject *__pyx_kp_u_92;
static PyObject *__pyx_kp_u_94;
static PyObject *__pyx_kp_u_96;
static PyObject *__pyx_kp_u_97;
static PyObject *__pyx_n_s__IndexError;
static PyObject *__pyx_n_s__NaN;
static PyObject *__pyx_n_s__RuntimeError;
static PyObject *__pyx_n_s__ValueError;
static PyObject *__pyx_n_s____main__;
static PyObject *__pyx_n_s____test__;
static PyObject *__pyx_n_s__arange;
static PyObject *__pyx_n_s__array;
static PyObject *__pyx_n_s__arrmap_bool;
static PyObject *__pyx_n_s__arrmap_float64;
static PyObject *__pyx_n_s__arrmap_int32;
static PyObject *__pyx_n_s__arrmap_int64;
static PyObject *__pyx_n_s__arrmap_object;
static PyObject *__pyx_n_s__astype;
static PyObject *__pyx_n_s__backfill_bool;
static PyObject *__pyx_n_s__backfill_float64;
static PyObject *__pyx_n_s__backfill_int32;
static PyObject *__pyx_n_s__backfill_int64;
static PyObject *__pyx_n_s__backfill_object;
static PyObject *__pyx_n_s__datetime;
static PyObject *__pyx_n_s__dtype;
static PyObject *__pyx_n_s__empty;
static PyObject *__pyx_n_s__fill;
static PyObject *__pyx_n_s__fill_value;
static PyObject *__pyx_n_s__float64;
static PyObject *__pyx_n_s__func;
static PyObject *__pyx_n_s__groupby_bool;
static PyObject *__pyx_n_s__groupby_float64;
static PyObject *__pyx_n_s__groupby_int32;
static PyObject *__pyx_n_s__groupby_int64;
static PyObject *__pyx_n_s__groupby_object;
static PyObject *__pyx_n_s__idx0;
static PyObject *__pyx_n_s__idx1;
static PyObject *__pyx_n_s__index;
static PyObject *__pyx_n_s__indexer;
static PyObject *__pyx_n_s__int32;
static PyObject *__pyx_n_s__int64;
static PyObject *__pyx_n_s__int_;
static PyObject *__pyx_n_s__is_monotonic_bool;
static PyObject *__pyx_n_s__is_monotonic_int32;
static PyObject *__pyx_n_s__is_monotonic_int64;
static PyObject *__pyx_n_s__is_monotonic_object;
static PyObject *__pyx_n_s__isnan;
static PyObject *__pyx_n_s__labels;
static PyObject *__pyx_n_s__left;
static PyObject *__pyx_n_s__limit;
static PyObject *__pyx_n_s__mask;
static PyObject *__pyx_n_s__nan;
static PyObject *__pyx_n_s__new;
static PyObject *__pyx_n_s__np;
static PyObject *__pyx_n_s__numpy;
static PyObject *__pyx_n_s__object;
static PyObject *__pyx_n_s__object_;
static PyObject *__pyx_n_s__old;
static PyObject *__pyx_n_s__out;
static PyObject *__pyx_n_s__pad_2d_inplace_bool;
static PyObject *__pyx_n_s__pad_bool;
static PyObject *__pyx_n_s__pad_float64;
static PyObject *__pyx_n_s__pad_inplace_bool;
static PyObject *__pyx_n_s__pad_inplace_float64;
static PyObject *__pyx_n_s__pad_inplace_int32;
static PyObject *__pyx_n_s__pad_inplace_int64;
static PyObject *__pyx_n_s__pad_inplace_object;
static PyObject *__pyx_n_s__pad_int32;
static PyObject *__pyx_n_s__pad_int64;
static PyObject *__pyx_n_s__pad_object;
static PyObject *__pyx_n_s__pydatetime;
static PyObject *__pyx_n_s__range;
static PyObject *__pyx_n_s__right;
static PyObject *__pyx_n_s__shape;
static PyObject *__pyx_n_s__take_1d_bool;
static PyObject *__pyx_n_s__take_1d_float64;
static PyObject *__pyx_n_s__take_1d_int32;
static PyObject *__pyx_n_s__take_1d_int64;
static PyObject *__pyx_n_s__take_1d_object;
static PyObject *__pyx_n_s__take_2d_axis0_bool;
static PyObject *__pyx_n_s__take_2d_axis0_int32;
static PyObject *__pyx_n_s__take_2d_axis0_int64;
static PyObject *__pyx_n_s__take_2d_axis1_bool;
static PyObject *__pyx_n_s__take_2d_axis1_int32;
static PyObject *__pyx_n_s__take_2d_axis1_int64;
static PyObject *__pyx_n_s__take_2d_multi_bool;
static PyObject *__pyx_n_s__take_2d_multi_int32;
static PyObject *__pyx_n_s__take_2d_multi_int64;
static PyObject *__pyx_n_s__values;
static PyObject *__pyx_int_0;
static PyObject *__pyx_int_neg_1;
static PyObject *__pyx_int_15;
static PyObject *__pyx_k_42;
static PyObject *__pyx_k_45;
static PyObject *__pyx_k_47;
static PyObject *__pyx_k_49;
static PyObject *__pyx_k_51;
static PyObject *__pyx_k_55;
static PyObject *__pyx_k_57;
static PyObject *__pyx_k_59;
static PyObject *__pyx_k_61;
static PyObject *__pyx_k_63;
static PyObject *__pyx_k_65;
static PyObject *__pyx_k_67;
static PyObject *__pyx_k_69;
static PyObject *__pyx_k_71;
static PyObject *__pyx_k_73;
static PyObject *__pyx_k_75;
static PyObject *__pyx_k_78;
static PyObject *__pyx_k_81;
static PyObject *__pyx_k_84;
static PyObject *__pyx_k_87;
static PyObject *__pyx_k_tuple_1;
static PyObject *__pyx_k_tuple_3;
static PyObject *__pyx_k_tuple_4;
static PyObject *__pyx_k_tuple_5;
static PyObject *__pyx_k_tuple_6;
static PyObject *__pyx_k_tuple_7;
static PyObject *__pyx_k_tuple_8;
static PyObject *__pyx_k_tuple_9;
static PyObject *__pyx_k_tuple_10;
static PyObject *__pyx_k_tuple_11;
static PyObject *__pyx_k_tuple_12;
static PyObject *__pyx_k_tuple_13;
static PyObject *__pyx_k_tuple_14;
static PyObject *__pyx_k_tuple_15;
static PyObject *__pyx_k_tuple_16;
static PyObject *__pyx_k_tuple_17;
static PyObject *__pyx_k_tuple_18;
static PyObject *__pyx_k_tuple_19;
static PyObject *__pyx_k_tuple_20;
static PyObject *__pyx_k_tuple_21;
static PyObject *__pyx_k_tuple_22;
static PyObject *__pyx_k_tuple_23;
static PyObject *__pyx_k_tuple_24;
static PyObject *__pyx_k_tuple_25;
static PyObject *__pyx_k_tuple_26;
static PyObject *__pyx_k_tuple_27;
static PyObject *__pyx_k_tuple_28;
static PyObject *__pyx_k_tuple_29;
static PyObject *__pyx_k_tuple_30;
static PyObject *__pyx_k_tuple_31;
static PyObject *__pyx_k_tuple_32;
static PyObject *__pyx_k_tuple_33;
static PyObject *__pyx_k_tuple_34;
static PyObject *__pyx_k_tuple_35;
static PyObject *__pyx_k_tuple_36;
static PyObject *__pyx_k_tuple_37;
static PyObject *__pyx_k_tuple_38;
static PyObject *__pyx_k_tuple_39;
static PyObject *__pyx_k_tuple_40;
static PyObject *__pyx_k_tuple_41;
static PyObject *__pyx_k_tuple_44;
static PyObject *__pyx_k_tuple_46;
static PyObject *__pyx_k_tuple_48;
static PyObject *__pyx_k_tuple_50;
static PyObject *__pyx_k_tuple_52;
static PyObject *__pyx_k_tuple_56;
static PyObject *__pyx_k_tuple_58;
static PyObject *__pyx_k_tuple_60;
static PyObject *__pyx_k_tuple_62;
static PyObject *__pyx_k_tuple_64;
static PyObject *__pyx_k_tuple_66;
static PyObject *__pyx_k_tuple_68;
static PyObject *__pyx_k_tuple_70;
static PyObject *__pyx_k_tuple_72;
static PyObject *__pyx_k_tuple_74;
static PyObject *__pyx_k_tuple_76;
static PyObject *__pyx_k_tuple_77;
static PyObject *__pyx_k_tuple_79;
static PyObject *__pyx_k_tuple_80;
static PyObject *__pyx_k_tuple_82;
static PyObject *__pyx_k_tuple_83;
static PyObject *__pyx_k_tuple_85;
static PyObject *__pyx_k_tuple_86;
static PyObject *__pyx_k_tuple_88;
static PyObject *__pyx_k_tuple_89;
static PyObject *__pyx_k_tuple_91;
static PyObject *__pyx_k_tuple_93;
static PyObject *__pyx_k_tuple_95;
static PyObject *__pyx_k_tuple_98;
static PyObject *__pyx_k_tuple_99;
static PyObject *__pyx_k_tuple_101;
static PyObject *__pyx_k_tuple_103;
static PyObject *__pyx_k_tuple_104;
static PyObject *__pyx_k_tuple_105;

/* "pandas/src/generated.pyx":27
 * from khash cimport *
 * 
 * cdef inline int int_max(int a, int b): return a if a >= b else b             # <<<<<<<<<<<<<<
 * cdef inline int int_min(int a, int b): return a if a <= b else b
 * 
 */

static CYTHON_INLINE int __pyx_f_6pandas_6_algos_int_max(int __pyx_v_a, int __pyx_v_b) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  __Pyx_RefNannySetupContext("int_max");
  if ((__pyx_v_a >= __pyx_v_b)) {
    __pyx_t_1 = __pyx_v_a;
  } else {
    __pyx_t_1 = __pyx_v_b;
  }
  __pyx_r = __pyx_t_1;
  goto __pyx_L0;

  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "pandas/src/generated.pyx":28
 * 
 * cdef inline int int_max(int a, int b): return a if a >= b else b
 * cdef inline int int_min(int a, int b): return a if a <= b else b             # <<<<<<<<<<<<<<
 * 
 * ctypedef unsigned char UChar
 */

static CYTHON_INLINE int __pyx_f_6pandas_6_algos_int_min(int __pyx_v_a, int __pyx_v_b) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  __Pyx_RefNannySetupContext("int_min");
  if ((__pyx_v_a <= __pyx_v_b)) {
    __pyx_t_1 = __pyx_v_a;
  } else {
    __pyx_t_1 = __pyx_v_b;
  }
  __pyx_r = __pyx_t_1;
  goto __pyx_L0;

  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "pandas/src/generated.pyx":48
 * cdef int PLATFORM_INT = (<ndarray> np.arange(0, dtype=np.int_)).descr.type_num
 * 
 * cpdef ensure_platform_int(object arr):             # <<<<<<<<<<<<<<
 *     if util.is_array(arr):
 *         if (<ndarray> arr).descr.type_num == PLATFORM_INT:
 */

static PyObject *__pyx_pf_6pandas_6_algos_ensure_platform_int(PyObject *__pyx_self, PyObject *__pyx_v_arr); /*proto*/
static PyObject *__pyx_f_6pandas_6_algos_ensure_platform_int(PyObject *__pyx_v_arr, int __pyx_skip_dispatch) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("ensure_platform_int");

  /* "pandas/src/generated.pyx":49
 * 
 * cpdef ensure_platform_int(object arr):
 *     if util.is_array(arr):             # <<<<<<<<<<<<<<
 *         if (<ndarray> arr).descr.type_num == PLATFORM_INT:
 *             return arr
 */
  __pyx_t_1 = __pyx_f_4util_is_array(__pyx_v_arr); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 49; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 49; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  if (__pyx_t_2) {

    /* "pandas/src/generated.pyx":50
 * cpdef ensure_platform_int(object arr):
 *     if util.is_array(arr):
 *         if (<ndarray> arr).descr.type_num == PLATFORM_INT:             # <<<<<<<<<<<<<<
 *             return arr
 *         else:
 */
    __pyx_t_2 = (((PyArrayObject *)__pyx_v_arr)->descr->type_num == __pyx_v_6pandas_6_algos_PLATFORM_INT);
    if (__pyx_t_2) {

      /* "pandas/src/generated.pyx":51
 *     if util.is_array(arr):
 *         if (<ndarray> arr).descr.type_num == PLATFORM_INT:
 *             return arr             # <<<<<<<<<<<<<<
 *         else:
 *             return arr.astype(np.int_)
 */
      __Pyx_XDECREF(__pyx_r);
      __Pyx_INCREF(__pyx_v_arr);
      __pyx_r = __pyx_v_arr;
      goto __pyx_L0;
      goto __pyx_L4;
    }
    /*else*/ {

      /* "pandas/src/generated.pyx":53
 *             return arr
 *         else:
 *             return arr.astype(np.int_)             # <<<<<<<<<<<<<<
 *     else:
 *         return np.array(arr, dtype=np.int_)
 */
      __Pyx_XDECREF(__pyx_r);
      __pyx_t_1 = PyObject_GetAttr(__pyx_v_arr, __pyx_n_s__astype); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 53; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_1);
      __pyx_t_3 = __Pyx_GetName(__pyx_m, __pyx_n_s__np); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 53; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_3);
      __pyx_t_4 = PyObject_GetAttr(__pyx_t_3, __pyx_n_s__int_); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 53; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 53; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(((PyObject *)__pyx_t_3));
      PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_4);
      __Pyx_GIVEREF(__pyx_t_4);
      __pyx_t_4 = 0;
      __pyx_t_4 = PyObject_Call(__pyx_t_1, ((PyObject *)__pyx_t_3), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 53; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      __Pyx_DECREF(((PyObject *)__pyx_t_3)); __pyx_t_3 = 0;
      __pyx_r = __pyx_t_4;
      __pyx_t_4 = 0;
      goto __pyx_L0;
    }
    __pyx_L4:;
    goto __pyx_L3;
  }
  /*else*/ {

    /* "pandas/src/generated.pyx":55
 *             return arr.astype(np.int_)
 *     else:
 *         return np.array(arr, dtype=np.int_)             # <<<<<<<<<<<<<<
 * 
 * 
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_4 = __Pyx_GetName(__pyx_m, __pyx_n_s__np); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 55; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_3 = PyObject_GetAttr(__pyx_t_4, __pyx_n_s__array); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 55; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 55; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(((PyObject *)__pyx_t_4));
    __Pyx_INCREF(__pyx_v_arr);
    PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_v_arr);
    __Pyx_GIVEREF(__pyx_v_arr);
    __pyx_t_1 = PyDict_New(); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 55; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(((PyObject *)__pyx_t_1));
    __pyx_t_5 = __Pyx_GetName(__pyx_m, __pyx_n_s__np); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 55; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_6 = PyObject_GetAttr(__pyx_t_5, __pyx_n_s__int_); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 55; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_6);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    if (PyDict_SetItem(__pyx_t_1, ((PyObject *)__pyx_n_s__dtype), __pyx_t_6) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 55; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    __pyx_t_6 = PyEval_CallObjectWithKeywords(__pyx_t_3, ((PyObject *)__pyx_t_4), ((PyObject *)__pyx_t_1)); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 55; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_6);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_DECREF(((PyObject *)__pyx_t_4)); __pyx_t_4 = 0;
    __Pyx_DECREF(((PyObject *)__pyx_t_1)); __pyx_t_1 = 0;
    __pyx_r = __pyx_t_6;
    __pyx_t_6 = 0;
    goto __pyx_L0;
  }
  __pyx_L3:;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_AddTraceback("pandas._algos.ensure_platform_int", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "pandas/src/generated.pyx":48
 * cdef int PLATFORM_INT = (<ndarray> np.arange(0, dtype=np.int_)).descr.type_num
 * 
 * cpdef ensure_platform_int(object arr):             # <<<<<<<<<<<<<<
 *     if util.is_array(arr):
 *         if (<ndarray> arr).descr.type_num == PLATFORM_INT:
 */

static PyObject *__pyx_pf_6pandas_6_algos_ensure_platform_int(PyObject *__pyx_self, PyObject *__pyx_v_arr); /*proto*/
static PyObject *__pyx_pf_6pandas_6_algos_ensure_platform_int(PyObject *__pyx_self, PyObject *__pyx_v_arr) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("ensure_platform_int");
  __pyx_self = __pyx_self;
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_6pandas_6_algos_ensure_platform_int(__pyx_v_arr, 0); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 48; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("pandas._algos.ensure_platform_int", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "pandas/src/generated.pyx":59
 * 
 * 
 * cpdef ensure_float64(object arr):             # <<<<<<<<<<<<<<
 *     if util.is_array(arr):
 *         if (<ndarray> arr).descr.type_num == NPY_FLOAT64:
 */

static PyObject *__pyx_pf_6pandas_6_algos_1ensure_float64(PyObject *__pyx_self, PyObject *__pyx_v_arr); /*proto*/
static PyObject *__pyx_f_6pandas_6_algos_ensure_float64(PyObject *__pyx_v_arr, int __pyx_skip_dispatch) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("ensure_float64");

  /* "pandas/src/generated.pyx":60
 * 
 * cpdef ensure_float64(object arr):
 *     if util.is_array(arr):             # <<<<<<<<<<<<<<
 *         if (<ndarray> arr).descr.type_num == NPY_FLOAT64:
 *             return arr
 */
  __pyx_t_1 = __pyx_f_4util_is_array(__pyx_v_arr); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 60; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 60; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  if (__pyx_t_2) {

    /* "pandas/src/generated.pyx":61
 * cpdef ensure_float64(object arr):
 *     if util.is_array(arr):
 *         if (<ndarray> arr).descr.type_num == NPY_FLOAT64:             # <<<<<<<<<<<<<<
 *             return arr
 *         else:
 */
    __pyx_t_2 = (((PyArrayObject *)__pyx_v_arr)->descr->type_num == NPY_FLOAT64);
    if (__pyx_t_2) {

      /* "pandas/src/generated.pyx":62
 *     if util.is_array(arr):
 *         if (<ndarray> arr).descr.type_num == NPY_FLOAT64:
 *             return arr             # <<<<<<<<<<<<<<
 *         else:
 *             return arr.astype(np.float64)
 */
      __Pyx_XDECREF(__pyx_r);
      __Pyx_INCREF(__pyx_v_arr);
      __pyx_r = __pyx_v_arr;
      goto __pyx_L0;
      goto __pyx_L4;
    }
    /*else*/ {

      /* "pandas/src/generated.pyx":64
 *             return arr
 *         else:
 *             return arr.astype(np.float64)             # <<<<<<<<<<<<<<
 *     else:
 *         return np.array(arr, dtype=np.float64)
 */
      __Pyx_XDECREF(__pyx_r);
      __pyx_t_1 = PyObject_GetAttr(__pyx_v_arr, __pyx_n_s__astype); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 64; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_1);
      __pyx_t_3 = __Pyx_GetName(__pyx_m, __pyx_n_s__np); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 64; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_3);
      __pyx_t_4 = PyObject_GetAttr(__pyx_t_3, __pyx_n_s__float64); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 64; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 64; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(((PyObject *)__pyx_t_3));
      PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_4);
      __Pyx_GIVEREF(__pyx_t_4);
      __pyx_t_4 = 0;
      __pyx_t_4 = PyObject_Call(__pyx_t_1, ((PyObject *)__pyx_t_3), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 64; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      __Pyx_DECREF(((PyObject *)__pyx_t_3)); __pyx_t_3 = 0;
      __pyx_r = __pyx_t_4;
      __pyx_t_4 = 0;
      goto __pyx_L0;
    }
    __pyx_L4:;
    goto __pyx_L3;
  }
  /*else*/ {

    /* "pandas/src/generated.pyx":66
 *             return arr.astype(np.float64)
 *     else:
 *         return np.array(arr, dtype=np.float64)             # <<<<<<<<<<<<<<
 * 
 * 
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_4 = __Pyx_GetName(__pyx_m, __pyx_n_s__np); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 66; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_3 = PyObject_GetAttr(__pyx_t_4, __pyx_n_s__array); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 66; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 66; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(((PyObject *)__pyx_t_4));
    __Pyx_INCREF(__pyx_v_arr);
    PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_v_arr);
    __Pyx_GIVEREF(__pyx_v_arr);
    __pyx_t_1 = PyDict_New(); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 66; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(((PyObject *)__pyx_t_1));
    __pyx_t_5 = __Pyx_GetName(__pyx_m, __pyx_n_s__np); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 66; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_6 = PyObject_GetAttr(__pyx_t_5, __pyx_n_s__float64); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 66; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_6);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    if (PyDict_SetItem(__pyx_t_1, ((PyObject *)__pyx_n_s__dtype), __pyx_t_6) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 66; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    __pyx_t_6 = PyEval_CallObjectWithKeywords(__pyx_t_3, ((PyObject *)__pyx_t_4), ((PyObject *)__pyx_t_1)); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 66; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_6);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_DECREF(((PyObject *)__pyx_t_4)); __pyx_t_4 = 0;
    __Pyx_DECREF(((PyObject *)__pyx_t_1)); __pyx_t_1 = 0;
    __pyx_r = __pyx_t_6;
    __pyx_t_6 = 0;
    goto __pyx_L0;
  }
  __pyx_L3:;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_AddTraceback("pandas._algos.ensure_float64", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "pandas/src/generated.pyx":59
 * 
 * 
 * cpdef ensure_float64(object arr):             # <<<<<<<<<<<<<<
 *     if util.is_array(arr):
 *         if (<ndarray> arr).descr.type_num == NPY_FLOAT64:
 */

static PyObject *__pyx_pf_6pandas_6_algos_1ensure_float64(PyObject *__pyx_self, PyObject *__pyx_v_arr); /*proto*/
static PyObject *__pyx_pf_6pandas_6_algos_1ensure_float64(PyObject *__pyx_self, PyObject *__pyx_v_arr) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("ensure_float64");
  __pyx_self = __pyx_self;
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_6pandas_6_algos_ensure_float64(__pyx_v_arr, 0); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 59; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("pandas._algos.ensure_float64", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "pandas/src/generated.pyx":69
 * 
 * 
 * cpdef ensure_int32(object arr):             # <<<<<<<<<<<<<<
 *     if util.is_array(arr):
 *         if (<ndarray> arr).descr.type_num == NPY_INT32:
 */

static PyObject *__pyx_pf_6pandas_6_algos_2ensure_int32(PyObject *__pyx_self, PyObject *__pyx_v_arr); /*proto*/
static PyObject *__pyx_f_6pandas_6_algos_ensure_int32(PyObject *__pyx_v_arr, int __pyx_skip_dispatch) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("ensure_int32");

  /* "pandas/src/generated.pyx":70
 * 
 * cpdef ensure_int32(object arr):
 *     if util.is_array(arr):             # <<<<<<<<<<<<<<
 *         if (<ndarray> arr).descr.type_num == NPY_INT32:
 *             return arr
 */
  __pyx_t_1 = __pyx_f_4util_is_array(__pyx_v_arr); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 70; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 70; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  if (__pyx_t_2) {

    /* "pandas/src/generated.pyx":71
 * cpdef ensure_int32(object arr):
 *     if util.is_array(arr):
 *         if (<ndarray> arr).descr.type_num == NPY_INT32:             # <<<<<<<<<<<<<<
 *             return arr
 *         else:
 */
    __pyx_t_2 = (((PyArrayObject *)__pyx_v_arr)->descr->type_num == NPY_INT32);
    if (__pyx_t_2) {

      /* "pandas/src/generated.pyx":72
 *     if util.is_array(arr):
 *         if (<ndarray> arr).descr.type_num == NPY_INT32:
 *             return arr             # <<<<<<<<<<<<<<
 *         else:
 *             return arr.astype(np.int32)
 */
      __Pyx_XDECREF(__pyx_r);
      __Pyx_INCREF(__pyx_v_arr);
      __pyx_r = __pyx_v_arr;
      goto __pyx_L0;
      goto __pyx_L4;
    }
    /*else*/ {

      /* "pandas/src/generated.pyx":74
 *             return arr
 *         else:
 *             return arr.astype(np.int32)             # <<<<<<<<<<<<<<
 *     else:
 *         return np.array(arr, dtype=np.int32)
 */
      __Pyx_XDECREF(__pyx_r);
      __pyx_t_1 = PyObject_GetAttr(__pyx_v_arr, __pyx_n_s__astype); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 74; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_1);
      __pyx_t_3 = __Pyx_GetName(__pyx_m, __pyx_n_s__np); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 74; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_3);
      __pyx_t_4 = PyObject_GetAttr(__pyx_t_3, __pyx_n_s__int32); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 74; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 74; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(((PyObject *)__pyx_t_3));
      PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_4);
      __Pyx_GIVEREF(__pyx_t_4);
      __pyx_t_4 = 0;
      __pyx_t_4 = PyObject_Call(__pyx_t_1, ((PyObject *)__pyx_t_3), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 74; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      __Pyx_DECREF(((PyObject *)__pyx_t_3)); __pyx_t_3 = 0;
      __pyx_r = __pyx_t_4;
      __pyx_t_4 = 0;
      goto __pyx_L0;
    }
    __pyx_L4:;
    goto __pyx_L3;
  }
  /*else*/ {

    /* "pandas/src/generated.pyx":76
 *             return arr.astype(np.int32)
 *     else:
 *         return np.array(arr, dtype=np.int32)             # <<<<<<<<<<<<<<
 * 
 * 
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_4 = __Pyx_GetName(__pyx_m, __pyx_n_s__np); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 76; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_3 = PyObject_GetAttr(__pyx_t_4, __pyx_n_s__array); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 76; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 76; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(((PyObject *)__pyx_t_4));
    __Pyx_INCREF(__pyx_v_arr);
    PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_v_arr);
    __Pyx_GIVEREF(__pyx_v_arr);
    __pyx_t_1 = PyDict_New(); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 76; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(((PyObject *)__pyx_t_1));
    __pyx_t_5 = __Pyx_GetName(__pyx_m, __pyx_n_s__np); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 76; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_6 = PyObject_GetAttr(__pyx_t_5, __pyx_n_s__int32); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 76; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_6);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    if (PyDict_SetItem(__pyx_t_1, ((PyObject *)__pyx_n_s__dtype), __pyx_t_6) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 76; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    __pyx_t_6 = PyEval_CallObjectWithKeywords(__pyx_t_3, ((PyObject *)__pyx_t_4), ((PyObject *)__pyx_t_1)); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 76; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_6);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_DECREF(((PyObject *)__pyx_t_4)); __pyx_t_4 = 0;
    __Pyx_DECREF(((PyObject *)__pyx_t_1)); __pyx_t_1 = 0;
    __pyx_r = __pyx_t_6;
    __pyx_t_6 = 0;
    goto __pyx_L0;
  }
  __pyx_L3:;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_AddTraceback("pandas._algos.ensure_int32", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "pandas/src/generated.pyx":69
 * 
 * 
 * cpdef ensure_int32(object arr):             # <<<<<<<<<<<<<<
 *     if util.is_array(arr):
 *         if (<ndarray> arr).descr.type_num == NPY_INT32:
 */

static PyObject *__pyx_pf_6pandas_6_algos_2ensure_int32(PyObject *__pyx_self, PyObject *__pyx_v_arr); /*proto*/
static PyObject *__pyx_pf_6pandas_6_algos_2ensure_int32(PyObject *__pyx_self, PyObject *__pyx_v_arr) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("ensure_int32");
  __pyx_self = __pyx_self;
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_6pandas_6_algos_ensure_int32(__pyx_v_arr, 0); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 69; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("pandas._algos.ensure_int32", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "pandas/src/generated.pyx":79
 * 
 * 
 * cpdef ensure_int64(object arr):             # <<<<<<<<<<<<<<
 *     if util.is_array(arr):
 *         if (<ndarray> arr).descr.type_num == NPY_INT64:
 */

static PyObject *__pyx_pf_6pandas_6_algos_3ensure_int64(PyObject *__pyx_self, PyObject *__pyx_v_arr); /*proto*/
static PyObject *__pyx_f_6pandas_6_algos_ensure_int64(PyObject *__pyx_v_arr, int __pyx_skip_dispatch) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("ensure_int64");

  /* "pandas/src/generated.pyx":80
 * 
 * cpdef ensure_int64(object arr):
 *     if util.is_array(arr):             # <<<<<<<<<<<<<<
 *         if (<ndarray> arr).descr.type_num == NPY_INT64:
 *             return arr
 */
  __pyx_t_1 = __pyx_f_4util_is_array(__pyx_v_arr); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 80; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 80; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  if (__pyx_t_2) {

    /* "pandas/src/generated.pyx":81
 * cpdef ensure_int64(object arr):
 *     if util.is_array(arr):
 *         if (<ndarray> arr).descr.type_num == NPY_INT64:             # <<<<<<<<<<<<<<
 *             return arr
 *         else:
 */
    __pyx_t_2 = (((PyArrayObject *)__pyx_v_arr)->descr->type_num == NPY_INT64);
    if (__pyx_t_2) {

      /* "pandas/src/generated.pyx":82
 *     if util.is_array(arr):
 *         if (<ndarray> arr).descr.type_num == NPY_INT64:
 *             return arr             # <<<<<<<<<<<<<<
 *         else:
 *             return arr.astype(np.int64)
 */
      __Pyx_XDECREF(__pyx_r);
      __Pyx_INCREF(__pyx_v_arr);
      __pyx_r = __pyx_v_arr;
      goto __pyx_L0;
      goto __pyx_L4;
    }
    /*else*/ {

      /* "pandas/src/generated.pyx":84
 *             return arr
 *         else:
 *             return arr.astype(np.int64)             # <<<<<<<<<<<<<<
 *     else:
 *         return np.array(arr, dtype=np.int64)
 */
      __Pyx_XDECREF(__pyx_r);
      __pyx_t_1 = PyObject_GetAttr(__pyx_v_arr, __pyx_n_s__astype); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 84; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_1);
      __pyx_t_3 = __Pyx_GetName(__pyx_m, __pyx_n_s__np); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 84; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_3);
      __pyx_t_4 = PyObject_GetAttr(__pyx_t_3, __pyx_n_s__int64); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 84; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 84; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(((PyObject *)__pyx_t_3));
      PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_4);
      __Pyx_GIVEREF(__pyx_t_4);
      __pyx_t_4 = 0;
      __pyx_t_4 = PyObject_Call(__pyx_t_1, ((PyObject *)__pyx_t_3), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 84; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      __Pyx_DECREF(((PyObject *)__pyx_t_3)); __pyx_t_3 = 0;
      __pyx_r = __pyx_t_4;
      __pyx_t_4 = 0;
      goto __pyx_L0;
    }
    __pyx_L4:;
    goto __pyx_L3;
  }
  /*else*/ {

    /* "pandas/src/generated.pyx":86
 *             return arr.astype(np.int64)
 *     else:
 *         return np.array(arr, dtype=np.int64)             # <<<<<<<<<<<<<<
 * 
 * 
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_4 = __Pyx_GetName(__pyx_m, __pyx_n_s__np); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 86; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_3 = PyObject_GetAttr(__pyx_t_4, __pyx_n_s__array); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 86; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 86; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(((PyObject *)__pyx_t_4));
    __Pyx_INCREF(__pyx_v_arr);
    PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_v_arr);
    __Pyx_GIVEREF(__pyx_v_arr);
    __pyx_t_1 = PyDict_New(); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 86; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(((PyObject *)__pyx_t_1));
    __pyx_t_5 = __Pyx_GetName(__pyx_m, __pyx_n_s__np); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 86; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_6 = PyObject_GetAttr(__pyx_t_5, __pyx_n_s__int64); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 86; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_6);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    if (PyDict_SetItem(__pyx_t_1, ((PyObject *)__pyx_n_s__dtype), __pyx_t_6) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 86; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    __pyx_t_6 = PyEval_CallObjectWithKeywords(__pyx_t_3, ((PyObject *)__pyx_t_4), ((PyObject *)__pyx_t_1)); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 86; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_6);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_DECREF(((PyObject *)__pyx_t_4)); __pyx_t_4 = 0;
    __Pyx_DECREF(((PyObject *)__pyx_t_1)); __pyx_t_1 = 0;
    __pyx_r = __pyx_t_6;
    __pyx_t_6 = 0;
    goto __pyx_L0;
  }
  __pyx_L3:;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_AddTraceback("pandas._algos.ensure_int64", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "pandas/src/generated.pyx":79
 * 
 * 
 * cpdef ensure_int64(object arr):             # <<<<<<<<<<<<<<
 *     if util.is_array(arr):
 *         if (<ndarray> arr).descr.type_num == NPY_INT64:
 */

static PyObject *__pyx_pf_6pandas_6_algos_3ensure_int64(PyObject *__pyx_self, PyObject *__pyx_v_arr); /*proto*/
static PyObject *__pyx_pf_6pandas_6_algos_3ensure_int64(PyObject *__pyx_self, PyObject *__pyx_v_arr) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("ensure_int64");
  __pyx_self = __pyx_self;
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_6pandas_6_algos_ensure_int64(__pyx_v_arr, 0); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 79; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("pandas._algos.ensure_int64", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "pandas/src/generated.pyx":89
 * 
 * 
 * cpdef ensure_object(object arr):             # <<<<<<<<<<<<<<
 *     if util.is_array(arr):
 *         if (<ndarray> arr).descr.type_num == NPY_OBJECT:
 */

static PyObject *__pyx_pf_6pandas_6_algos_4ensure_object(PyObject *__pyx_self, PyObject *__pyx_v_arr); /*proto*/
static PyObject *__pyx_f_6pandas_6_algos_ensure_object(PyObject *__pyx_v_arr, int __pyx_skip_dispatch) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("ensure_object");

  /* "pandas/src/generated.pyx":90
 * 
 * cpdef ensure_object(object arr):
 *     if util.is_array(arr):             # <<<<<<<<<<<<<<
 *         if (<ndarray> arr).descr.type_num == NPY_OBJECT:
 *             return arr
 */
  __pyx_t_1 = __pyx_f_4util_is_array(__pyx_v_arr); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 90; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 90; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  if (__pyx_t_2) {

    /* "pandas/src/generated.pyx":91
 * cpdef ensure_object(object arr):
 *     if util.is_array(arr):
 *         if (<ndarray> arr).descr.type_num == NPY_OBJECT:             # <<<<<<<<<<<<<<
 *             return arr
 *         else:
 */
    __pyx_t_2 = (((PyArrayObject *)__pyx_v_arr)->descr->type_num == NPY_OBJECT);
    if (__pyx_t_2) {

      /* "pandas/src/generated.pyx":92
 *     if util.is_array(arr):
 *         if (<ndarray> arr).descr.type_num == NPY_OBJECT:
 *             return arr             # <<<<<<<<<<<<<<
 *         else:
 *             return arr.astype(np.object_)
 */
      __Pyx_XDECREF(__pyx_r);
      __Pyx_INCREF(__pyx_v_arr);
      __pyx_r = __pyx_v_arr;
      goto __pyx_L0;
      goto __pyx_L4;
    }
    /*else*/ {

      /* "pandas/src/generated.pyx":94
 *             return arr
 *         else:
 *             return arr.astype(np.object_)             # <<<<<<<<<<<<<<
 *     else:
 *         return np.array(arr, dtype=np.object_)
 */
      __Pyx_XDECREF(__pyx_r);
      __pyx_t_1 = PyObject_GetAttr(__pyx_v_arr, __pyx_n_s__astype); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 94; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_1);
      __pyx_t_3 = __Pyx_GetName(__pyx_m, __pyx_n_s__np); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 94; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_3);
      __pyx_t_4 = PyObject_GetAttr(__pyx_t_3, __pyx_n_s__object_); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 94; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 94; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(((PyObject *)__pyx_t_3));
      PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_4);
      __Pyx_GIVEREF(__pyx_t_4);
      __pyx_t_4 = 0;
      __pyx_t_4 = PyObject_Call(__pyx_t_1, ((PyObject *)__pyx_t_3), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 94; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      __Pyx_DECREF(((PyObject *)__pyx_t_3)); __pyx_t_3 = 0;
      __pyx_r = __pyx_t_4;
      __pyx_t_4 = 0;
      goto __pyx_L0;
    }
    __pyx_L4:;
    goto __pyx_L3;
  }
  /*else*/ {

    /* "pandas/src/generated.pyx":96
 *             return arr.astype(np.object_)
 *     else:
 *         return np.array(arr, dtype=np.object_)             # <<<<<<<<<<<<<<
 * 
 * 
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_4 = __Pyx_GetName(__pyx_m, __pyx_n_s__np); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 96; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_3 = PyObject_GetAttr(__pyx_t_4, __pyx_n_s__array); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 96; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 96; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(((PyObject *)__pyx_t_4));
    __Pyx_INCREF(__pyx_v_arr);
    PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_v_arr);
    __Pyx_GIVEREF(__pyx_v_arr);
    __pyx_t_1 = PyDict_New(); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 96; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(((PyObject *)__pyx_t_1));
    __pyx_t_5 = __Pyx_GetName(__pyx_m, __pyx_n_s__np); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 96; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_6 = PyObject_GetAttr(__pyx_t_5, __pyx_n_s__object_); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 96; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_6);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    if (PyDict_SetItem(__pyx_t_1, ((PyObject *)__pyx_n_s__dtype), __pyx_t_6) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 96; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    __pyx_t_6 = PyEval_CallObjectWithKeywords(__pyx_t_3, ((PyObject *)__pyx_t_4), ((PyObject *)__pyx_t_1)); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 96; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_6);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_DECREF(((PyObject *)__pyx_t_4)); __pyx_t_4 = 0;
    __Pyx_DECREF(((PyObject *)__pyx_t_1)); __pyx_t_1 = 0;
    __pyx_r = __pyx_t_6;
    __pyx_t_6 = 0;
    goto __pyx_L0;
  }
  __pyx_L3:;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_AddTraceback("pandas._algos.ensure_object", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "pandas/src/generated.pyx":89
 * 
 * 
 * cpdef ensure_object(object arr):             # <<<<<<<<<<<<<<
 *     if util.is_array(arr):
 *         if (<ndarray> arr).descr.type_num == NPY_OBJECT:
 */

static PyObject *__pyx_pf_6pandas_6_algos_4ensure_object(PyObject *__pyx_self, PyObject *__pyx_v_arr); /*proto*/
static PyObject *__pyx_pf_6pandas_6_algos_4ensure_object(PyObject *__pyx_self, PyObject *__pyx_v_arr) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("ensure_object");
  __pyx_self = __pyx_self;
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_6pandas_6_algos_ensure_object(__pyx_v_arr, 0); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 89; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("pandas._algos.ensure_object", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "pandas/src/generated.pyx":101
 * @cython.wraparound(False)
 * @cython.boundscheck(False)
 * cpdef map_indices_float64(ndarray[float64_t] index):             # <<<<<<<<<<<<<<
 *     '''
 *     Produce a dict mapping the values of the input array to their respective
 */

static PyObject *__pyx_pf_6pandas_6_algos_5map_indices_float64(PyObject *__pyx_self, PyObject *__pyx_v_index); /*proto*/
static PyObject *__pyx_f_6pandas_6_algos_map_indices_float64(PyArrayObject *__pyx_v_index, int __pyx_skip_dispatch) {
  Py_ssize_t __pyx_v_i;
  Py_ssize_t __pyx_v_length;
  PyObject *__pyx_v_result = 0;
  Py_buffer __pyx_bstruct_index;
  Py_ssize_t __pyx_bstride_0_index = 0;
  Py_ssize_t __pyx_bshape_0_index = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  Py_ssize_t __pyx_t_2;
  Py_ssize_t __pyx_t_3;
  Py_ssize_t __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("map_indices_float64");
  __pyx_bstruct_index.buf = NULL;
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_index, (PyObject*)__pyx_v_index, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 101; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  }
  __pyx_bstride_0_index = __pyx_bstruct_index.strides[0];
  __pyx_bshape_0_index = __pyx_bstruct_index.shape[0];

  /* "pandas/src/generated.pyx":112
 *     '''
 *     cdef Py_ssize_t i, length
 *     cdef dict result = {}             # <<<<<<<<<<<<<<
 * 
 *     length = len(index)
 */
  __pyx_t_1 = PyDict_New(); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 112; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_1));
  __pyx_v_result = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "pandas/src/generated.pyx":114
 *     cdef dict result = {}
 * 
 *     length = len(index)             # <<<<<<<<<<<<<<
 * 
 *     for i in range(length):
 */
  __pyx_t_2 = PyObject_Length(((PyObject *)__pyx_v_index)); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 114; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_v_length = __pyx_t_2;

  /* "pandas/src/generated.pyx":116
 *     length = len(index)
 * 
 *     for i in range(length):             # <<<<<<<<<<<<<<
 *         result[index[i]] = i
 * 
 */
  __pyx_t_2 = __pyx_v_length;
  for (__pyx_t_3 = 0; __pyx_t_3 < __pyx_t_2; __pyx_t_3+=1) {
    __pyx_v_i = __pyx_t_3;

    /* "pandas/src/generated.pyx":117
 * 
 *     for i in range(length):
 *         result[index[i]] = i             # <<<<<<<<<<<<<<
 * 
 *     return result
 */
    __pyx_t_1 = PyInt_FromSsize_t(__pyx_v_i); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 117; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_4 = __pyx_v_i;
    __pyx_t_5 = PyFloat_FromDouble((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_index.buf, __pyx_t_4, __pyx_bstride_0_index))); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 117; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_5);
    if (PyDict_SetItem(((PyObject *)__pyx_v_result), __pyx_t_5, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 117; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  }

  /* "pandas/src/generated.pyx":119
 *         result[index[i]] = i
 * 
 *     return result             # <<<<<<<<<<<<<<
 * 
 * @cython.wraparound(False)
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_result));
  __pyx_r = ((PyObject *)__pyx_v_result);
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_5);
  { PyObject *__pyx_type, *__pyx_value, *__pyx_tb;
    __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);
    __Pyx_SafeReleaseBuffer(&__pyx_bstruct_index);
  __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);}
  __Pyx_AddTraceback("pandas._algos.map_indices_float64", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  goto __pyx_L2;
  __pyx_L0:;
  __Pyx_SafeReleaseBuffer(&__pyx_bstruct_index);
  __pyx_L2:;
  __Pyx_XDECREF(__pyx_v_result);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "pandas/src/generated.pyx":101
 * @cython.wraparound(False)
 * @cython.boundscheck(False)
 * cpdef map_indices_float64(ndarray[float64_t] index):             # <<<<<<<<<<<<<<
 *     '''
 *     Produce a dict mapping the values of the input array to their respective
 */

static PyObject *__pyx_pf_6pandas_6_algos_5map_indices_float64(PyObject *__pyx_self, PyObject *__pyx_v_index); /*proto*/
static char __pyx_doc_6pandas_6_algos_5map_indices_float64[] = "\n    Produce a dict mapping the values of the input array to their respective\n    locations.\n\n    Example:\n        array(['hi', 'there']) --> {'hi' : 0 , 'there' : 1}\n\n    Better to do this with Cython because of the enormous speed boost.\n    ";
static PyObject *__pyx_pf_6pandas_6_algos_5map_indices_float64(PyObject *__pyx_self, PyObject *__pyx_v_index) {
  Py_buffer __pyx_bstruct_index;
  Py_ssize_t __pyx_bstride_0_index = 0;
  Py_ssize_t __pyx_bshape_0_index = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("map_indices_float64");
  __pyx_self = __pyx_self;
  __pyx_bstruct_index.buf = NULL;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_index), __pyx_ptype_5numpy_ndarray, 1, "index", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 101; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_index, (PyObject*)__pyx_v_index, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 101; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  }
  __pyx_bstride_0_index = __pyx_bstruct_index.strides[0];
  __pyx_bshape_0_index = __pyx_bstruct_index.shape[0];
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_6pandas_6_algos_map_indices_float64(((PyArrayObject *)__pyx_v_index), 0); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 101; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  { PyObject *__pyx_type, *__pyx_value, *__pyx_tb;
    __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);
    __Pyx_SafeReleaseBuffer(&__pyx_bstruct_index);
  __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);}
  __Pyx_AddTraceback("pandas._algos.map_indices_float64", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  goto __pyx_L2;
  __pyx_L0:;
  __Pyx_SafeReleaseBuffer(&__pyx_bstruct_index);
  __pyx_L2:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "pandas/src/generated.pyx":123
 * @cython.wraparound(False)
 * @cython.boundscheck(False)
 * cpdef map_indices_object(ndarray[object] index):             # <<<<<<<<<<<<<<
 *     '''
 *     Produce a dict mapping the values of the input array to their respective
 */

static PyObject *__pyx_pf_6pandas_6_algos_6map_indices_object(PyObject *__pyx_self, PyObject *__pyx_v_index); /*proto*/
static PyObject *__pyx_f_6pandas_6_algos_map_indices_object(PyArrayObject *__pyx_v_index, int __pyx_skip_dispatch) {
  Py_ssize_t __pyx_v_i;
  Py_ssize_t __pyx_v_length;
  PyObject *__pyx_v_result = 0;
  Py_buffer __pyx_bstruct_index;
  Py_ssize_t __pyx_bstride_0_index = 0;
  Py_ssize_t __pyx_bshape_0_index = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  Py_ssize_t __pyx_t_2;
  Py_ssize_t __pyx_t_3;
  PyObject *__pyx_t_4 = NULL;
  Py_ssize_t __pyx_t_5;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("map_indices_object");
  __pyx_bstruct_index.buf = NULL;
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_index, (PyObject*)__pyx_v_index, &__Pyx_TypeInfo_object, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 123; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  }
  __pyx_bstride_0_index = __pyx_bstruct_index.strides[0];
  __pyx_bshape_0_index = __pyx_bstruct_index.shape[0];

  /* "pandas/src/generated.pyx":134
 *     '''
 *     cdef Py_ssize_t i, length
 *     cdef dict result = {}             # <<<<<<<<<<<<<<
 * 
 *     length = len(index)
 */
  __pyx_t_1 = PyDict_New(); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 134; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_1));
  __pyx_v_result = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "pandas/src/generated.pyx":136
 *     cdef dict result = {}
 * 
 *     length = len(index)             # <<<<<<<<<<<<<<
 * 
 *     for i in range(length):
 */
  __pyx_t_2 = PyObject_Length(((PyObject *)__pyx_v_index)); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 136; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_v_length = __pyx_t_2;

  /* "pandas/src/generated.pyx":138
 *     length = len(index)
 * 
 *     for i in range(length):             # <<<<<<<<<<<<<<
 *         result[index[i]] = i
 * 
 */
  __pyx_t_2 = __pyx_v_length;
  for (__pyx_t_3 = 0; __pyx_t_3 < __pyx_t_2; __pyx_t_3+=1) {
    __pyx_v_i = __pyx_t_3;

    /* "pandas/src/generated.pyx":139
 * 
 *     for i in range(length):
 *         result[index[i]] = i             # <<<<<<<<<<<<<<
 * 
 *     return result
 */
    __pyx_t_1 = PyInt_FromSsize_t(__pyx_v_i); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 139; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_5 = __pyx_v_i;
    __pyx_t_4 = *__Pyx_BufPtrStrided1d(PyObject **, __pyx_bstruct_index.buf, __pyx_t_5, __pyx_bstride_0_index);
    __Pyx_INCREF((PyObject*)__pyx_t_4);
    if (PyDict_SetItem(((PyObject *)__pyx_v_result), __pyx_t_4, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 139; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  }

  /* "pandas/src/generated.pyx":141
 *         result[index[i]] = i
 * 
 *     return result             # <<<<<<<<<<<<<<
 * 
 * @cython.wraparound(False)
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_result));
  __pyx_r = ((PyObject *)__pyx_v_result);
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_4);
  { PyObject *__pyx_type, *__pyx_value, *__pyx_tb;
    __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);
    __Pyx_SafeReleaseBuffer(&__pyx_bstruct_index);
  __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);}
  __Pyx_AddTraceback("pandas._algos.map_indices_object", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  goto __pyx_L2;
  __pyx_L0:;
  __Pyx_SafeReleaseBuffer(&__pyx_bstruct_index);
  __pyx_L2:;
  __Pyx_XDECREF(__pyx_v_result);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "pandas/src/generated.pyx":123
 * @cython.wraparound(False)
 * @cython.boundscheck(False)
 * cpdef map_indices_object(ndarray[object] index):             # <<<<<<<<<<<<<<
 *     '''
 *     Produce a dict mapping the values of the input array to their respective
 */

static PyObject *__pyx_pf_6pandas_6_algos_6map_indices_object(PyObject *__pyx_self, PyObject *__pyx_v_index); /*proto*/
static char __pyx_doc_6pandas_6_algos_6map_indices_object[] = "\n    Produce a dict mapping the values of the input array to their respective\n    locations.\n\n    Example:\n        array(['hi', 'there']) --> {'hi' : 0 , 'there' : 1}\n\n    Better to do this with Cython because of the enormous speed boost.\n    ";
static PyObject *__pyx_pf_6pandas_6_algos_6map_indices_object(PyObject *__pyx_self, PyObject *__pyx_v_index) {
  Py_buffer __pyx_bstruct_index;
  Py_ssize_t __pyx_bstride_0_index = 0;
  Py_ssize_t __pyx_bshape_0_index = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("map_indices_object");
  __pyx_self = __pyx_self;
  __pyx_bstruct_index.buf = NULL;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_index), __pyx_ptype_5numpy_ndarray, 1, "index", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 123; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_index, (PyObject*)__pyx_v_index, &__Pyx_TypeInfo_object, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 123; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  }
  __pyx_bstride_0_index = __pyx_bstruct_index.strides[0];
  __pyx_bshape_0_index = __pyx_bstruct_index.shape[0];
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_6pandas_6_algos_map_indices_object(((PyArrayObject *)__pyx_v_index), 0); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 123; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  { PyObject *__pyx_type, *__pyx_value, *__pyx_tb;
    __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);
    __Pyx_SafeReleaseBuffer(&__pyx_bstruct_index);
  __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);}
  __Pyx_AddTraceback("pandas._algos.map_indices_object", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  goto __pyx_L2;
  __pyx_L0:;
  __Pyx_SafeReleaseBuffer(&__pyx_bstruct_index);
  __pyx_L2:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "pandas/src/generated.pyx":145
 * @cython.wraparound(False)
 * @cython.boundscheck(False)
 * cpdef map_indices_int32(ndarray[int32_t] index):             # <<<<<<<<<<<<<<
 *     '''
 *     Produce a dict mapping the values of the input array to their respective
 */

static PyObject *__pyx_pf_6pandas_6_algos_7map_indices_int32(PyObject *__pyx_self, PyObject *__pyx_v_index); /*proto*/
static PyObject *__pyx_f_6pandas_6_algos_map_indices_int32(PyArrayObject *__pyx_v_index, int __pyx_skip_dispatch) {
  Py_ssize_t __pyx_v_i;
  Py_ssize_t __pyx_v_length;
  PyObject *__pyx_v_result = 0;
  Py_buffer __pyx_bstruct_index;
  Py_ssize_t __pyx_bstride_0_index = 0;
  Py_ssize_t __pyx_bshape_0_index = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  Py_ssize_t __pyx_t_2;
  Py_ssize_t __pyx_t_3;
  Py_ssize_t __pyx_t_4;
  __pyx_t_5numpy_int32_t __pyx_t_5;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("map_indices_int32");
  __pyx_bstruct_index.buf = NULL;
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_index, (PyObject*)__pyx_v_index, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int32_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 145; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  }
  __pyx_bstride_0_index = __pyx_bstruct_index.strides[0];
  __pyx_bshape_0_index = __pyx_bstruct_index.shape[0];

  /* "pandas/src/generated.pyx":156
 *     '''
 *     cdef Py_ssize_t i, length
 *     cdef dict result = {}             # <<<<<<<<<<<<<<
 * 
 *     length = len(index)
 */
  __pyx_t_1 = PyDict_New(); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 156; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_1));
  __pyx_v_result = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "pandas/src/generated.pyx":158
 *     cdef dict result = {}
 * 
 *     length = len(index)             # <<<<<<<<<<<<<<
 * 
 *     for i in range(length):
 */
  __pyx_t_2 = PyObject_Length(((PyObject *)__pyx_v_index)); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 158; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_v_length = __pyx_t_2;

  /* "pandas/src/generated.pyx":160
 *     length = len(index)
 * 
 *     for i in range(length):             # <<<<<<<<<<<<<<
 *         result[index[i]] = i
 * 
 */
  __pyx_t_2 = __pyx_v_length;
  for (__pyx_t_3 = 0; __pyx_t_3 < __pyx_t_2; __pyx_t_3+=1) {
    __pyx_v_i = __pyx_t_3;

    /* "pandas/src/generated.pyx":161
 * 
 *     for i in range(length):
 *         result[index[i]] = i             # <<<<<<<<<<<<<<
 * 
 *     return result
 */
    __pyx_t_1 = PyInt_FromSsize_t(__pyx_v_i); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 161; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_4 = __pyx_v_i;
    __pyx_t_5 = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int32_t *, __pyx_bstruct_index.buf, __pyx_t_4, __pyx_bstride_0_index));
    if (__Pyx_SetItemInt(((PyObject *)__pyx_v_result), __pyx_t_5, __pyx_t_1, sizeof(__pyx_t_5numpy_int32_t), __Pyx_PyInt_to_py_npy_int32) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 161; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  }

  /* "pandas/src/generated.pyx":163
 *         result[index[i]] = i
 * 
 *     return result             # <<<<<<<<<<<<<<
 * 
 * @cython.wraparound(False)
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_result));
  __pyx_r = ((PyObject *)__pyx_v_result);
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  { PyObject *__pyx_type, *__pyx_value, *__pyx_tb;
    __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);
    __Pyx_SafeReleaseBuffer(&__pyx_bstruct_index);
  __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);}
  __Pyx_AddTraceback("pandas._algos.map_indices_int32", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  goto __pyx_L2;
  __pyx_L0:;
  __Pyx_SafeReleaseBuffer(&__pyx_bstruct_index);
  __pyx_L2:;
  __Pyx_XDECREF(__pyx_v_result);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "pandas/src/generated.pyx":145
 * @cython.wraparound(False)
 * @cython.boundscheck(False)
 * cpdef map_indices_int32(ndarray[int32_t] index):             # <<<<<<<<<<<<<<
 *     '''
 *     Produce a dict mapping the values of the input array to their respective
 */

static PyObject *__pyx_pf_6pandas_6_algos_7map_indices_int32(PyObject *__pyx_self, PyObject *__pyx_v_index); /*proto*/
static char __pyx_doc_6pandas_6_algos_7map_indices_int32[] = "\n    Produce a dict mapping the values of the input array to their respective\n    locations.\n\n    Example:\n        array(['hi', 'there']) --> {'hi' : 0 , 'there' : 1}\n\n    Better to do this with Cython because of the enormous speed boost.\n    ";
static PyObject *__pyx_pf_6pandas_6_algos_7map_indices_int32(PyObject *__pyx_self, PyObject *__pyx_v_index) {
  Py_buffer __pyx_bstruct_index;
  Py_ssize_t __pyx_bstride_0_index = 0;
  Py_ssize_t __pyx_bshape_0_index = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("map_indices_int32");
  __pyx_self = __pyx_self;
  __pyx_bstruct_index.buf = NULL;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_index), __pyx_ptype_5numpy_ndarray, 1, "index", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 145; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_index, (PyObject*)__pyx_v_index, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int32_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 145; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  }
  __pyx_bstride_0_index = __pyx_bstruct_index.strides[0];
  __pyx_bshape_0_index = __pyx_bstruct_index.shape[0];
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_6pandas_6_algos_map_indices_int32(((PyArrayObject *)__pyx_v_index), 0); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 145; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  { PyObject *__pyx_type, *__pyx_value, *__pyx_tb;
    __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);
    __Pyx_SafeReleaseBuffer(&__pyx_bstruct_index);
  __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);}
  __Pyx_AddTraceback("pandas._algos.map_indices_int32", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  goto __pyx_L2;
  __pyx_L0:;
  __Pyx_SafeReleaseBuffer(&__pyx_bstruct_index);
  __pyx_L2:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "pandas/src/generated.pyx":167
 * @cython.wraparound(False)
 * @cython.boundscheck(False)
 * cpdef map_indices_int64(ndarray[int64_t] index):             # <<<<<<<<<<<<<<
 *     '''
 *     Produce a dict mapping the values of the input array to their respective
 */

static PyObject *__pyx_pf_6pandas_6_algos_8map_indices_int64(PyObject *__pyx_self, PyObject *__pyx_v_index); /*proto*/
static PyObject *__pyx_f_6pandas_6_algos_map_indices_int64(PyArrayObject *__pyx_v_index, int __pyx_skip_dispatch) {
  Py_ssize_t __pyx_v_i;
  Py_ssize_t __pyx_v_length;
  PyObject *__pyx_v_result = 0;
  Py_buffer __pyx_bstruct_index;
  Py_ssize_t __pyx_bstride_0_index = 0;
  Py_ssize_t __pyx_bshape_0_index = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  Py_ssize_t __pyx_t_2;
  Py_ssize_t __pyx_t_3;
  Py_ssize_t __pyx_t_4;
  __pyx_t_5numpy_int64_t __pyx_t_5;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("map_indices_int64");
  __pyx_bstruct_index.buf = NULL;
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_index, (PyObject*)__pyx_v_index, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 167; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  }
  __pyx_bstride_0_index = __pyx_bstruct_index.strides[0];
  __pyx_bshape_0_index = __pyx_bstruct_index.shape[0];

  /* "pandas/src/generated.pyx":178
 *     '''
 *     cdef Py_ssize_t i, length
 *     cdef dict result = {}             # <<<<<<<<<<<<<<
 * 
 *     length = len(index)
 */
  __pyx_t_1 = PyDict_New(); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 178; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_1));
  __pyx_v_result = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "pandas/src/generated.pyx":180
 *     cdef dict result = {}
 * 
 *     length = len(index)             # <<<<<<<<<<<<<<
 * 
 *     for i in range(length):
 */
  __pyx_t_2 = PyObject_Length(((PyObject *)__pyx_v_index)); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 180; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_v_length = __pyx_t_2;

  /* "pandas/src/generated.pyx":182
 *     length = len(index)
 * 
 *     for i in range(length):             # <<<<<<<<<<<<<<
 *         result[index[i]] = i
 * 
 */
  __pyx_t_2 = __pyx_v_length;
  for (__pyx_t_3 = 0; __pyx_t_3 < __pyx_t_2; __pyx_t_3+=1) {
    __pyx_v_i = __pyx_t_3;

    /* "pandas/src/generated.pyx":183
 * 
 *     for i in range(length):
 *         result[index[i]] = i             # <<<<<<<<<<<<<<
 * 
 *     return result
 */
    __pyx_t_1 = PyInt_FromSsize_t(__pyx_v_i); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 183; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_4 = __pyx_v_i;
    __pyx_t_5 = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_bstruct_index.buf, __pyx_t_4, __pyx_bstride_0_index));
    if (__Pyx_SetItemInt(((PyObject *)__pyx_v_result), __pyx_t_5, __pyx_t_1, sizeof(__pyx_t_5numpy_int64_t), __Pyx_PyInt_to_py_npy_int64) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 183; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  }

  /* "pandas/src/generated.pyx":185
 *         result[index[i]] = i
 * 
 *     return result             # <<<<<<<<<<<<<<
 * 
 * @cython.wraparound(False)
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_result));
  __pyx_r = ((PyObject *)__pyx_v_result);
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  { PyObject *__pyx_type, *__pyx_value, *__pyx_tb;
    __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);
    __Pyx_SafeReleaseBuffer(&__pyx_bstruct_index);
  __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);}
  __Pyx_AddTraceback("pandas._algos.map_indices_int64", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  goto __pyx_L2;
  __pyx_L0:;
  __Pyx_SafeReleaseBuffer(&__pyx_bstruct_index);
  __pyx_L2:;
  __Pyx_XDECREF(__pyx_v_result);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "pandas/src/generated.pyx":167
 * @cython.wraparound(False)
 * @cython.boundscheck(False)
 * cpdef map_indices_int64(ndarray[int64_t] index):             # <<<<<<<<<<<<<<
 *     '''
 *     Produce a dict mapping the values of the input array to their respective
 */

static PyObject *__pyx_pf_6pandas_6_algos_8map_indices_int64(PyObject *__pyx_self, PyObject *__pyx_v_index); /*proto*/
static char __pyx_doc_6pandas_6_algos_8map_indices_int64[] = "\n    Produce a dict mapping the values of the input array to their respective\n    locations.\n\n    Example:\n        array(['hi', 'there']) --> {'hi' : 0 , 'there' : 1}\n\n    Better to do this with Cython because of the enormous speed boost.\n    ";
static PyObject *__pyx_pf_6pandas_6_algos_8map_indices_int64(PyObject *__pyx_self, PyObject *__pyx_v_index) {
  Py_buffer __pyx_bstruct_index;
  Py_ssize_t __pyx_bstride_0_index = 0;
  Py_ssize_t __pyx_bshape_0_index = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("map_indices_int64");
  __pyx_self = __pyx_self;
  __pyx_bstruct_index.buf = NULL;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_index), __pyx_ptype_5numpy_ndarray, 1, "index", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 167; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_index, (PyObject*)__pyx_v_index, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 167; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  }
  __pyx_bstride_0_index = __pyx_bstruct_index.strides[0];
  __pyx_bshape_0_index = __pyx_bstruct_index.shape[0];
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_6pandas_6_algos_map_indices_int64(((PyArrayObject *)__pyx_v_index), 0); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 167; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  { PyObject *__pyx_type, *__pyx_value, *__pyx_tb;
    __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);
    __Pyx_SafeReleaseBuffer(&__pyx_bstruct_index);
  __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);}
  __Pyx_AddTraceback("pandas._algos.map_indices_int64", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  goto __pyx_L2;
  __pyx_L0:;
  __Pyx_SafeReleaseBuffer(&__pyx_bstruct_index);
  __pyx_L2:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "pandas/src/generated.pyx":189
 * @cython.wraparound(False)
 * @cython.boundscheck(False)
 * cpdef map_indices_bool(ndarray[uint8_t] index):             # <<<<<<<<<<<<<<
 *     '''
 *     Produce a dict mapping the values of the input array to their respective
 */

static PyObject *__pyx_pf_6pandas_6_algos_9map_indices_bool(PyObject *__pyx_self, PyObject *__pyx_v_index); /*proto*/
static PyObject *__pyx_f_6pandas_6_algos_map_indices_bool(PyArrayObject *__pyx_v_index, int __pyx_skip_dispatch) {
  Py_ssize_t __pyx_v_i;
  Py_ssize_t __pyx_v_length;
  PyObject *__pyx_v_result = 0;
  Py_buffer __pyx_bstruct_index;
  Py_ssize_t __pyx_bstride_0_index = 0;
  Py_ssize_t __pyx_bshape_0_index = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  Py_ssize_t __pyx_t_2;
  Py_ssize_t __pyx_t_3;
  Py_ssize_t __pyx_t_4;
  __pyx_t_5numpy_uint8_t __pyx_t_5;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("map_indices_bool");
  __pyx_bstruct_index.buf = NULL;
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_index, (PyObject*)__pyx_v_index, &__Pyx_TypeInfo_nn___pyx_t_5numpy_uint8_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 189; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  }
  __pyx_bstride_0_index = __pyx_bstruct_index.strides[0];
  __pyx_bshape_0_index = __pyx_bstruct_index.shape[0];

  /* "pandas/src/generated.pyx":200
 *     '''
 *     cdef Py_ssize_t i, length
 *     cdef dict result = {}             # <<<<<<<<<<<<<<
 * 
 *     length = len(index)
 */
  __pyx_t_1 = PyDict_New(); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 200; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_1));
  __pyx_v_result = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "pandas/src/generated.pyx":202
 *     cdef dict result = {}
 * 
 *     length = len(index)             # <<<<<<<<<<<<<<
 * 
 *     for i in range(length):
 */
  __pyx_t_2 = PyObject_Length(((PyObject *)__pyx_v_index)); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 202; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_v_length = __pyx_t_2;

  /* "pandas/src/generated.pyx":204
 *     length = len(index)
 * 
 *     for i in range(length):             # <<<<<<<<<<<<<<
 *         result[index[i]] = i
 * 
 */
  __pyx_t_2 = __pyx_v_length;
  for (__pyx_t_3 = 0; __pyx_t_3 < __pyx_t_2; __pyx_t_3+=1) {
    __pyx_v_i = __pyx_t_3;

    /* "pandas/src/generated.pyx":205
 * 
 *     for i in range(length):
 *         result[index[i]] = i             # <<<<<<<<<<<<<<
 * 
 *     return result
 */
    __pyx_t_1 = PyInt_FromSsize_t(__pyx_v_i); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 205; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_4 = __pyx_v_i;
    __pyx_t_5 = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_uint8_t *, __pyx_bstruct_index.buf, __pyx_t_4, __pyx_bstride_0_index));
    if (__Pyx_SetItemInt(((PyObject *)__pyx_v_result), __pyx_t_5, __pyx_t_1, sizeof(__pyx_t_5numpy_uint8_t)+1, __Pyx_PyInt_to_py_npy_uint8) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 205; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  }

  /* "pandas/src/generated.pyx":207
 *         result[index[i]] = i
 * 
 *     return result             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_result));
  __pyx_r = ((PyObject *)__pyx_v_result);
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  { PyObject *__pyx_type, *__pyx_value, *__pyx_tb;
    __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);
    __Pyx_SafeReleaseBuffer(&__pyx_bstruct_index);
  __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);}
  __Pyx_AddTraceback("pandas._algos.map_indices_bool", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  goto __pyx_L2;
  __pyx_L0:;
  __Pyx_SafeReleaseBuffer(&__pyx_bstruct_index);
  __pyx_L2:;
  __Pyx_XDECREF(__pyx_v_result);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "pandas/src/generated.pyx":189
 * @cython.wraparound(False)
 * @cython.boundscheck(False)
 * cpdef map_indices_bool(ndarray[uint8_t] index):             # <<<<<<<<<<<<<<
 *     '''
 *     Produce a dict mapping the values of the input array to their respective
 */

static PyObject *__pyx_pf_6pandas_6_algos_9map_indices_bool(PyObject *__pyx_self, PyObject *__pyx_v_index); /*proto*/
static char __pyx_doc_6pandas_6_algos_9map_indices_bool[] = "\n    Produce a dict mapping the values of the input array to their respective\n    locations.\n\n    Example:\n        array(['hi', 'there']) --> {'hi' : 0 , 'there' : 1}\n\n    Better to do this with Cython because of the enormous speed boost.\n    ";
static PyObject *__pyx_pf_6pandas_6_algos_9map_indices_bool(PyObject *__pyx_self, PyObject *__pyx_v_index) {
  Py_buffer __pyx_bstruct_index;
  Py_ssize_t __pyx_bstride_0_index = 0;
  Py_ssize_t __pyx_bshape_0_index = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("map_indices_bool");
  __pyx_self = __pyx_self;
  __pyx_bstruct_index.buf = NULL;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_index), __pyx_ptype_5numpy_ndarray, 1, "index", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 189; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_index, (PyObject*)__pyx_v_index, &__Pyx_TypeInfo_nn___pyx_t_5numpy_uint8_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 189; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  }
  __pyx_bstride_0_index = __pyx_bstruct_index.strides[0];
  __pyx_bshape_0_index = __pyx_bstruct_index.shape[0];
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_6pandas_6_algos_map_indices_bool(((PyArrayObject *)__pyx_v_index), 0); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 189; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  { PyObject *__pyx_type, *__pyx_value, *__pyx_tb;
    __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);
    __Pyx_SafeReleaseBuffer(&__pyx_bstruct_index);
  __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);}
  __Pyx_AddTraceback("pandas._algos.map_indices_bool", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  goto __pyx_L2;
  __pyx_L0:;
  __Pyx_SafeReleaseBuffer(&__pyx_bstruct_index);
  __pyx_L2:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "pandas/src/generated.pyx":212
 * @cython.boundscheck(False)
 * @cython.wraparound(False)
 * def pad_float64(ndarray[float64_t] old, ndarray[float64_t] new,             # <<<<<<<<<<<<<<
 *                    limit=None):
 *     cdef Py_ssize_t i, j, nleft, nright
 */

static PyObject *__pyx_pf_6pandas_6_algos_10pad_float64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_6pandas_6_algos_10pad_float64 = {__Pyx_NAMESTR("pad_float64"), (PyCFunction)__pyx_pf_6pandas_6_algos_10pad_float64, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(0)};
static PyObject *__pyx_pf_6pandas_6_algos_10pad_float64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyArrayObject *__pyx_v_old = 0;
  PyArrayObject *__pyx_v_new = 0;
  PyObject *__pyx_v_limit = 0;
  Py_ssize_t __pyx_v_i;
  Py_ssize_t __pyx_v_j;
  Py_ssize_t __pyx_v_nleft;
  Py_ssize_t __pyx_v_nright;
  PyArrayObject *__pyx_v_indexer = 0;
  __pyx_t_5numpy_float64_t __pyx_v_cur;
  __pyx_t_5numpy_float64_t __pyx_v_next;
  int __pyx_v_lim;
  int __pyx_v_fill_count;
  Py_buffer __pyx_bstruct_old;
  Py_ssize_t __pyx_bstride_0_old = 0;
  Py_ssize_t __pyx_bshape_0_old = 0;
  Py_buffer __pyx_bstruct_indexer;
  Py_ssize_t __pyx_bstride_0_indexer = 0;
  Py_ssize_t __pyx_bshape_0_indexer = 0;
  Py_buffer __pyx_bstruct_new;
  Py_ssize_t __pyx_bstride_0_new = 0;
  Py_ssize_t __pyx_bshape_0_new = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  Py_ssize_t __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  PyArrayObject *__pyx_t_7 = NULL;
  int __pyx_t_8;
  PyObject *__pyx_t_9 = NULL;
  PyObject *__pyx_t_10 = NULL;
  PyObject *__pyx_t_11 = NULL;
  int __pyx_t_12;
  int __pyx_t_13;
  long __pyx_t_14;
  int __pyx_t_15;
  int __pyx_t_16;
  long __pyx_t_17;
  Py_ssize_t __pyx_t_18;
  Py_ssize_t __pyx_t_19;
  Py_ssize_t __pyx_t_20;
  Py_ssize_t __pyx_t_21;
  Py_ssize_t __pyx_t_22;
  Py_ssize_t __pyx_t_23;
  Py_ssize_t __pyx_t_24;
  __pyx_t_5numpy_float64_t __pyx_t_25;
  Py_ssize_t __pyx_t_26;
  Py_ssize_t __pyx_t_27;
  Py_ssize_t __pyx_t_28;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__old,&__pyx_n_s__new,&__pyx_n_s__limit,0};
  __Pyx_RefNannySetupContext("pad_float64");
  __pyx_self = __pyx_self;
  {
    PyObject* values[3] = {0,0,0};

    /* "pandas/src/generated.pyx":213
 * @cython.wraparound(False)
 * def pad_float64(ndarray[float64_t] old, ndarray[float64_t] new,
 *                    limit=None):             # <<<<<<<<<<<<<<
 *     cdef Py_ssize_t i, j, nleft, nright
 *     cdef ndarray[int64_t, ndim=1] indexer
 */
    values[2] = ((PyObject *)Py_None);
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  0:
        values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__old);
        if (likely(values[0])) kw_args--;
        else goto __pyx_L5_argtuple_error;
        case  1:
        values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__new);
        if (likely(values[1])) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("pad_float64", 0, 2, 3, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 212; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
        }
        case  2:
        if (kw_args > 0) {
          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__limit);
          if (value) { values[2] = value; kw_args--; }
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "pad_float64") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 212; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
    } else {
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_old = ((PyArrayObject *)values[0]);
    __pyx_v_new = ((PyArrayObject *)values[1]);
    __pyx_v_limit = values[2];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("pad_float64", 0, 2, 3, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 212; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("pandas._algos.pad_float64", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_bstruct_indexer.buf = NULL;
  __pyx_bstruct_old.buf = NULL;
  __pyx_bstruct_new.buf = NULL;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_old), __pyx_ptype_5numpy_ndarray, 1, "old", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 212; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_new), __pyx_ptype_5numpy_ndarray, 1, "new", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 212; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_old, (PyObject*)__pyx_v_old, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 212; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  }
  __pyx_bstride_0_old = __pyx_bstruct_old.strides[0];
  __pyx_bshape_0_old = __pyx_bstruct_old.shape[0];
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_new, (PyObject*)__pyx_v_new, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 212; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  }
  __pyx_bstride_0_new = __pyx_bstruct_new.strides[0];
  __pyx_bshape_0_new = __pyx_bstruct_new.shape[0];

  /* "pandas/src/generated.pyx":217
 *     cdef ndarray[int64_t, ndim=1] indexer
 *     cdef float64_t cur, next
 *     cdef int lim, fill_count = 0             # <<<<<<<<<<<<<<
 * 
 *     nleft = len(old)
 */
  __pyx_v_fill_count = 0;

  /* "pandas/src/generated.pyx":219
 *     cdef int lim, fill_count = 0
 * 
 *     nleft = len(old)             # <<<<<<<<<<<<<<
 *     nright = len(new)
 *     indexer = np.empty(nright, dtype=np.int64)
 */
  __pyx_t_1 = PyObject_Length(((PyObject *)__pyx_v_old)); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 219; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_v_nleft = __pyx_t_1;

  /* "pandas/src/generated.pyx":220
 * 
 *     nleft = len(old)
 *     nright = len(new)             # <<<<<<<<<<<<<<
 *     indexer = np.empty(nright, dtype=np.int64)
 *     indexer.fill(-1)
 */
  __pyx_t_1 = PyObject_Length(((PyObject *)__pyx_v_new)); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 220; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_v_nright = __pyx_t_1;

  /* "pandas/src/generated.pyx":221
 *     nleft = len(old)
 *     nright = len(new)
 *     indexer = np.empty(nright, dtype=np.int64)             # <<<<<<<<<<<<<<
 *     indexer.fill(-1)
 * 
 */
  __pyx_t_2 = __Pyx_GetName(__pyx_m, __pyx_n_s__np); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 221; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = PyObject_GetAttr(__pyx_t_2, __pyx_n_s__empty); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 221; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = PyInt_FromSsize_t(__pyx_v_nright); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 221; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 221; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_4));
  PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_2);
  __Pyx_GIVEREF(__pyx_t_2);
  __pyx_t_2 = 0;
  __pyx_t_2 = PyDict_New(); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 221; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_2));
  __pyx_t_5 = __Pyx_GetName(__pyx_m, __pyx_n_s__np); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 221; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_6 = PyObject_GetAttr(__pyx_t_5, __pyx_n_s__int64); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 221; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  if (PyDict_SetItem(__pyx_t_2, ((PyObject *)__pyx_n_s__dtype), __pyx_t_6) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 221; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __pyx_t_6 = PyEval_CallObjectWithKeywords(__pyx_t_3, ((PyObject *)__pyx_t_4), ((PyObject *)__pyx_t_2)); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 221; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_DECREF(((PyObject *)__pyx_t_4)); __pyx_t_4 = 0;
  __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0;
  if (!(likely(((__pyx_t_6) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_6, __pyx_ptype_5numpy_ndarray))))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 221; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_t_7 = ((PyArrayObject *)__pyx_t_6);
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    __Pyx_SafeReleaseBuffer(&__pyx_bstruct_indexer);
    __pyx_t_8 = __Pyx_GetBufferAndValidate(&__pyx_bstruct_indexer, (PyObject*)__pyx_t_7, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack);
    if (unlikely(__pyx_t_8 < 0)) {
      PyErr_Fetch(&__pyx_t_9, &__pyx_t_10, &__pyx_t_11);
      if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_indexer, (PyObject*)__pyx_v_indexer, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) {
        Py_XDECREF(__pyx_t_9); Py_XDECREF(__pyx_t_10); Py_XDECREF(__pyx_t_11);
        __Pyx_RaiseBufferFallbackError();
      } else {
        PyErr_Restore(__pyx_t_9, __pyx_t_10, __pyx_t_11);
      }
    }
    __pyx_bstride_0_indexer = __pyx_bstruct_indexer.strides[0];
    __pyx_bshape_0_indexer = __pyx_bstruct_indexer.shape[0];
    if (unlikely(__pyx_t_8 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 221; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  }
  __pyx_t_7 = 0;
  __pyx_v_indexer = ((PyArrayObject *)__pyx_t_6);
  __pyx_t_6 = 0;

  /* "pandas/src/generated.pyx":222
 *     nright = len(new)
 *     indexer = np.empty(nright, dtype=np.int64)
 *     indexer.fill(-1)             # <<<<<<<<<<<<<<
 * 
 *     if limit is None:
 */
  __pyx_t_6 = PyObject_GetAttr(((PyObject *)__pyx_v_indexer), __pyx_n_s__fill); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 222; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_2 = PyObject_Call(__pyx_t_6, ((PyObject *)__pyx_k_tuple_1), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 222; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "pandas/src/generated.pyx":224
 *     indexer.fill(-1)
 * 
 *     if limit is None:             # <<<<<<<<<<<<<<
 *         lim = nright
 *     else:
 */
  __pyx_t_12 = (__pyx_v_limit == Py_None);
  if (__pyx_t_12) {

    /* "pandas/src/generated.pyx":225
 * 
 *     if limit is None:
 *         lim = nright             # <<<<<<<<<<<<<<
 *     else:
 *         if limit < 0:
 */
    __pyx_v_lim = __pyx_v_nright;
    goto __pyx_L6;
  }
  /*else*/ {

    /* "pandas/src/generated.pyx":227
 *         lim = nright
 *     else:
 *         if limit < 0:             # <<<<<<<<<<<<<<
 *             raise ValueError('Limit must be non-negative')
 *         lim = limit
 */
    __pyx_t_2 = PyObject_RichCompare(__pyx_v_limit, __pyx_int_0, Py_LT); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 227; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_12 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_12 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 227; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    if (__pyx_t_12) {

      /* "pandas/src/generated.pyx":228
 *     else:
 *         if limit < 0:
 *             raise ValueError('Limit must be non-negative')             # <<<<<<<<<<<<<<
 *         lim = limit
 * 
 */
      __pyx_t_2 = PyObject_Call(__pyx_builtin_ValueError, ((PyObject *)__pyx_k_tuple_3), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 228; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_Raise(__pyx_t_2, 0, 0, 0);
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      {__pyx_filename = __pyx_f[0]; __pyx_lineno = 228; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      goto __pyx_L7;
    }
    __pyx_L7:;

    /* "pandas/src/generated.pyx":229
 *         if limit < 0:
 *             raise ValueError('Limit must be non-negative')
 *         lim = limit             # <<<<<<<<<<<<<<
 * 
 *     if nleft == 0 or nright == 0 or new[nright - 1] < old[0]:
 */
    __pyx_t_8 = __Pyx_PyInt_AsInt(__pyx_v_limit); if (unlikely((__pyx_t_8 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 229; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __pyx_v_lim = __pyx_t_8;
  }
  __pyx_L6:;

  /* "pandas/src/generated.pyx":231
 *         lim = limit
 * 
 *     if nleft == 0 or nright == 0 or new[nright - 1] < old[0]:             # <<<<<<<<<<<<<<
 *         return indexer
 * 
 */
  __pyx_t_12 = (__pyx_v_nleft == 0);
  if (!__pyx_t_12) {
    __pyx_t_13 = (__pyx_v_nright == 0);
    if (!__pyx_t_13) {
      __pyx_t_1 = (__pyx_v_nright - 1);
      __pyx_t_14 = 0;
      __pyx_t_15 = ((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_new.buf, __pyx_t_1, __pyx_bstride_0_new)) < (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_old.buf, __pyx_t_14, __pyx_bstride_0_old)));
      __pyx_t_16 = __pyx_t_15;
    } else {
      __pyx_t_16 = __pyx_t_13;
    }
    __pyx_t_13 = __pyx_t_16;
  } else {
    __pyx_t_13 = __pyx_t_12;
  }
  if (__pyx_t_13) {

    /* "pandas/src/generated.pyx":232
 * 
 *     if nleft == 0 or nright == 0 or new[nright - 1] < old[0]:
 *         return indexer             # <<<<<<<<<<<<<<
 * 
 *     i = j = 0
 */
    __Pyx_XDECREF(__pyx_r);
    __Pyx_INCREF(((PyObject *)__pyx_v_indexer));
    __pyx_r = ((PyObject *)__pyx_v_indexer);
    goto __pyx_L0;
    goto __pyx_L8;
  }
  __pyx_L8:;

  /* "pandas/src/generated.pyx":234
 *         return indexer
 * 
 *     i = j = 0             # <<<<<<<<<<<<<<
 * 
 *     cur = old[0]
 */
  __pyx_v_i = 0;
  __pyx_v_j = 0;

  /* "pandas/src/generated.pyx":236
 *     i = j = 0
 * 
 *     cur = old[0]             # <<<<<<<<<<<<<<
 * 
 *     while j <= nright - 1 and new[j] < cur:
 */
  __pyx_t_17 = 0;
  __pyx_v_cur = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_old.buf, __pyx_t_17, __pyx_bstride_0_old));

  /* "pandas/src/generated.pyx":238
 *     cur = old[0]
 * 
 *     while j <= nright - 1 and new[j] < cur:             # <<<<<<<<<<<<<<
 *         j += 1
 * 
 */
  while (1) {
    __pyx_t_13 = (__pyx_v_j <= (__pyx_v_nright - 1));
    if (__pyx_t_13) {
      __pyx_t_18 = __pyx_v_j;
      __pyx_t_12 = ((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_new.buf, __pyx_t_18, __pyx_bstride_0_new)) < __pyx_v_cur);
      __pyx_t_16 = __pyx_t_12;
    } else {
      __pyx_t_16 = __pyx_t_13;
    }
    if (!__pyx_t_16) break;

    /* "pandas/src/generated.pyx":239
 * 
 *     while j <= nright - 1 and new[j] < cur:
 *         j += 1             # <<<<<<<<<<<<<<
 * 
 *     while True:
 */
    __pyx_v_j = (__pyx_v_j + 1);
  }

  /* "pandas/src/generated.pyx":241
 *         j += 1
 * 
 *     while True:             # <<<<<<<<<<<<<<
 *         if j == nright:
 *             break
 */
  while (1) {
    if (!1) break;

    /* "pandas/src/generated.pyx":242
 * 
 *     while True:
 *         if j == nright:             # <<<<<<<<<<<<<<
 *             break
 * 
 */
    __pyx_t_16 = (__pyx_v_j == __pyx_v_nright);
    if (__pyx_t_16) {

      /* "pandas/src/generated.pyx":243
 *     while True:
 *         if j == nright:
 *             break             # <<<<<<<<<<<<<<
 * 
 *         if i == nleft - 1:
 */
      goto __pyx_L12_break;
      goto __pyx_L13;
    }
    __pyx_L13:;

    /* "pandas/src/generated.pyx":245
 *             break
 * 
 *         if i == nleft - 1:             # <<<<<<<<<<<<<<
 *             while j < nright:
 *                 if new[j] == cur:
 */
    __pyx_t_16 = (__pyx_v_i == (__pyx_v_nleft - 1));
    if (__pyx_t_16) {

      /* "pandas/src/generated.pyx":246
 * 
 *         if i == nleft - 1:
 *             while j < nright:             # <<<<<<<<<<<<<<
 *                 if new[j] == cur:
 *                     indexer[j] = i
 */
      while (1) {
        __pyx_t_16 = (__pyx_v_j < __pyx_v_nright);
        if (!__pyx_t_16) break;

        /* "pandas/src/generated.pyx":247
 *         if i == nleft - 1:
 *             while j < nright:
 *                 if new[j] == cur:             # <<<<<<<<<<<<<<
 *                     indexer[j] = i
 *                 elif new[j] > cur and fill_count < lim:
 */
        __pyx_t_19 = __pyx_v_j;
        __pyx_t_16 = ((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_new.buf, __pyx_t_19, __pyx_bstride_0_new)) == __pyx_v_cur);
        if (__pyx_t_16) {

          /* "pandas/src/generated.pyx":248
 *             while j < nright:
 *                 if new[j] == cur:
 *                     indexer[j] = i             # <<<<<<<<<<<<<<
 *                 elif new[j] > cur and fill_count < lim:
 *                     indexer[j] = i
 */
          __pyx_t_20 = __pyx_v_j;
          *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_bstruct_indexer.buf, __pyx_t_20, __pyx_bstride_0_indexer) = __pyx_v_i;
          goto __pyx_L17;
        }

        /* "pandas/src/generated.pyx":249
 *                 if new[j] == cur:
 *                     indexer[j] = i
 *                 elif new[j] > cur and fill_count < lim:             # <<<<<<<<<<<<<<
 *                     indexer[j] = i
 *                     fill_count += 1
 */
        __pyx_t_21 = __pyx_v_j;
        __pyx_t_16 = ((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_new.buf, __pyx_t_21, __pyx_bstride_0_new)) > __pyx_v_cur);
        if (__pyx_t_16) {
          __pyx_t_13 = (__pyx_v_fill_count < __pyx_v_lim);
          __pyx_t_12 = __pyx_t_13;
        } else {
          __pyx_t_12 = __pyx_t_16;
        }
        if (__pyx_t_12) {

          /* "pandas/src/generated.pyx":250
 *                     indexer[j] = i
 *                 elif new[j] > cur and fill_count < lim:
 *                     indexer[j] = i             # <<<<<<<<<<<<<<
 *                     fill_count += 1
 *                 j += 1
 */
          __pyx_t_22 = __pyx_v_j;
          *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_bstruct_indexer.buf, __pyx_t_22, __pyx_bstride_0_indexer) = __pyx_v_i;

          /* "pandas/src/generated.pyx":251
 *                 elif new[j] > cur and fill_count < lim:
 *                     indexer[j] = i
 *                     fill_count += 1             # <<<<<<<<<<<<<<
 *                 j += 1
 *             break
 */
          __pyx_v_fill_count = (__pyx_v_fill_count + 1);
          goto __pyx_L17;
        }
        __pyx_L17:;

        /* "pandas/src/generated.pyx":252
 *                     indexer[j] = i
 *                     fill_count += 1
 *                 j += 1             # <<<<<<<<<<<<<<
 *             break
 * 
 */
        __pyx_v_j = (__pyx_v_j + 1);
      }

      /* "pandas/src/generated.pyx":253
 *                     fill_count += 1
 *                 j += 1
 *             break             # <<<<<<<<<<<<<<
 * 
 *         next = old[i + 1]
 */
      goto __pyx_L12_break;
      goto __pyx_L14;
    }
    __pyx_L14:;

    /* "pandas/src/generated.pyx":255
 *             break
 * 
 *         next = old[i + 1]             # <<<<<<<<<<<<<<
 * 
 *         while j < nright and cur <= new[j] < next:
 */
    __pyx_t_23 = (__pyx_v_i + 1);
    __pyx_v_next = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_old.buf, __pyx_t_23, __pyx_bstride_0_old));

    /* "pandas/src/generated.pyx":257
 *         next = old[i + 1]
 * 
 *         while j < nright and cur <= new[j] < next:             # <<<<<<<<<<<<<<
 *             if new[j] == cur:
 *                 indexer[j] = i
 */
    while (1) {
      __pyx_t_12 = (__pyx_v_j < __pyx_v_nright);
      if (__pyx_t_12) {
        __pyx_t_24 = __pyx_v_j;
        __pyx_t_25 = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_new.buf, __pyx_t_24, __pyx_bstride_0_new));
        __pyx_t_16 = (__pyx_v_cur <= __pyx_t_25);
        if (__pyx_t_16) {
          __pyx_t_16 = (__pyx_t_25 < __pyx_v_next);
        }
        __pyx_t_13 = __pyx_t_16;
      } else {
        __pyx_t_13 = __pyx_t_12;
      }
      if (!__pyx_t_13) break;

      /* "pandas/src/generated.pyx":258
 * 
 *         while j < nright and cur <= new[j] < next:
 *             if new[j] == cur:             # <<<<<<<<<<<<<<
 *                 indexer[j] = i
 *             elif fill_count < lim:
 */
      __pyx_t_26 = __pyx_v_j;
      __pyx_t_13 = ((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_new.buf, __pyx_t_26, __pyx_bstride_0_new)) == __pyx_v_cur);
      if (__pyx_t_13) {

        /* "pandas/src/generated.pyx":259
 *         while j < nright and cur <= new[j] < next:
 *             if new[j] == cur:
 *                 indexer[j] = i             # <<<<<<<<<<<<<<
 *             elif fill_count < lim:
 *                 indexer[j] = i
 */
        __pyx_t_27 = __pyx_v_j;
        *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_bstruct_indexer.buf, __pyx_t_27, __pyx_bstride_0_indexer) = __pyx_v_i;
        goto __pyx_L20;
      }

      /* "pandas/src/generated.pyx":260
 *             if new[j] == cur:
 *                 indexer[j] = i
 *             elif fill_count < lim:             # <<<<<<<<<<<<<<
 *                 indexer[j] = i
 *                 fill_count += 1
 */
      __pyx_t_13 = (__pyx_v_fill_count < __pyx_v_lim);
      if (__pyx_t_13) {

        /* "pandas/src/generated.pyx":261
 *                 indexer[j] = i
 *             elif fill_count < lim:
 *                 indexer[j] = i             # <<<<<<<<<<<<<<
 *                 fill_count += 1
 *             j += 1
 */
        __pyx_t_28 = __pyx_v_j;
        *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_bstruct_indexer.buf, __pyx_t_28, __pyx_bstride_0_indexer) = __pyx_v_i;

        /* "pandas/src/generated.pyx":262
 *             elif fill_count < lim:
 *                 indexer[j] = i
 *                 fill_count += 1             # <<<<<<<<<<<<<<
 *             j += 1
 * 
 */
        __pyx_v_fill_count = (__pyx_v_fill_count + 1);
        goto __pyx_L20;
      }
      __pyx_L20:;

      /* "pandas/src/generated.pyx":263
 *                 indexer[j] = i
 *                 fill_count += 1
 *             j += 1             # <<<<<<<<<<<<<<
 * 
 *         fill_count = 0
 */
      __pyx_v_j = (__pyx_v_j + 1);
    }

    /* "pandas/src/generated.pyx":265
 *             j += 1
 * 
 *         fill_count = 0             # <<<<<<<<<<<<<<
 *         i += 1
 *         cur = next
 */
    __pyx_v_fill_count = 0;

    /* "pandas/src/generated.pyx":266
 * 
 *         fill_count = 0
 *         i += 1             # <<<<<<<<<<<<<<
 *         cur = next
 * 
 */
    __pyx_v_i = (__pyx_v_i + 1);

    /* "pandas/src/generated.pyx":267
 *         fill_count = 0
 *         i += 1
 *         cur = next             # <<<<<<<<<<<<<<
 * 
 *     return indexer
 */
    __pyx_v_cur = __pyx_v_next;
  }
  __pyx_L12_break:;

  /* "pandas/src/generated.pyx":269
 *         cur = next
 * 
 *     return indexer             # <<<<<<<<<<<<<<
 * 
 * @cython.boundscheck(False)
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_indexer));
  __pyx_r = ((PyObject *)__pyx_v_indexer);
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  { PyObject *__pyx_type, *__pyx_value, *__pyx_tb;
    __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);
    __Pyx_SafeReleaseBuffer(&__pyx_bstruct_old);
    __Pyx_SafeReleaseBuffer(&__pyx_bstruct_indexer);
    __Pyx_SafeReleaseBuffer(&__pyx_bstruct_new);
  __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);}
  __Pyx_AddTraceback("pandas._algos.pad_float64", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  goto __pyx_L2;
  __pyx_L0:;
  __Pyx_SafeReleaseBuffer(&__pyx_bstruct_old);
  __Pyx_SafeReleaseBuffer(&__pyx_bstruct_indexer);
  __Pyx_SafeReleaseBuffer(&__pyx_bstruct_new);
  __pyx_L2:;
  __Pyx_XDECREF((PyObject *)__pyx_v_indexer);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "pandas/src/generated.pyx":273
 * @cython.boundscheck(False)
 * @cython.wraparound(False)
 * def pad_object(ndarray[object] old, ndarray[object] new,             # <<<<<<<<<<<<<<
 *                    limit=None):
 *     cdef Py_ssize_t i, j, nleft, nright
 */

static PyObject *__pyx_pf_6pandas_6_algos_11pad_object(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_6pandas_6_algos_11pad_object = {__Pyx_NAMESTR("pad_object"), (PyCFunction)__pyx_pf_6pandas_6_algos_11pad_object, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(0)};
static PyObject *__pyx_pf_6pandas_6_algos_11pad_object(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyArrayObject *__pyx_v_old = 0;
  PyArrayObject *__pyx_v_new = 0;
  PyObject *__pyx_v_limit = 0;
  Py_ssize_t __pyx_v_i;
  Py_ssize_t __pyx_v_j;
  Py_ssize_t __pyx_v_nleft;
  Py_ssize_t __pyx_v_nright;
  PyArrayObject *__pyx_v_indexer = 0;
  PyObject *__pyx_v_cur = 0;
  PyObject *__pyx_v_next = 0;
  int __pyx_v_lim;
  int __pyx_v_fill_count;
  Py_buffer __pyx_bstruct_old;
  Py_ssize_t __pyx_bstride_0_old = 0;
  Py_ssize_t __pyx_bshape_0_old = 0;
  Py_buffer __pyx_bstruct_indexer;
  Py_ssize_t __pyx_bstride_0_indexer = 0;
  Py_ssize_t __pyx_bshape_0_indexer = 0;
  Py_buffer __pyx_bstruct_new;
  Py_ssize_t __pyx_bstride_0_new = 0;
  Py_ssize_t __pyx_bshape_0_new = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  Py_ssize_t __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  PyArrayObject *__pyx_t_7 = NULL;
  int __pyx_t_8;
  PyObject *__pyx_t_9 = NULL;
  PyObject *__pyx_t_10 = NULL;
  PyObject *__pyx_t_11 = NULL;
  int __pyx_t_12;
  int __pyx_t_13;
  long __pyx_t_14;
  int __pyx_t_15;
  int __pyx_t_16;
  long __pyx_t_17;
  Py_ssize_t __pyx_t_18;
  Py_ssize_t __pyx_t_19;
  Py_ssize_t __pyx_t_20;
  Py_ssize_t __pyx_t_21;
  Py_ssize_t __pyx_t_22;
  Py_ssize_t __pyx_t_23;
  Py_ssize_t __pyx_t_24;
  Py_ssize_t __pyx_t_25;
  Py_ssize_t __pyx_t_26;
  Py_ssize_t __pyx_t_27;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__old,&__pyx_n_s__new,&__pyx_n_s__limit,0};
  __Pyx_RefNannySetupContext("pad_object");
  __pyx_self = __pyx_self;
  {
    PyObject* values[3] = {0,0,0};

    /* "pandas/src/generated.pyx":274
 * @cython.wraparound(False)
 * def pad_object(ndarray[object] old, ndarray[object] new,
 *                    limit=None):             # <<<<<<<<<<<<<<
 *     cdef Py_ssize_t i, j, nleft, nright
 *     cdef ndarray[int64_t, ndim=1] indexer
 */
    values[2] = ((PyObject *)Py_None);
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  0:
        values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__old);
        if (likely(values[0])) kw_args--;
        else goto __pyx_L5_argtuple_error;
        case  1:
        values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__new);
        if (likely(values[1])) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("pad_object", 0, 2, 3, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 273; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
        }
        case  2:
        if (kw_args > 0) {
          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__limit);
          if (value) { values[2] = value; kw_args--; }
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "pad_object") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 273; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
    } else {
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_old = ((PyArrayObject *)values[0]);
    __pyx_v_new = ((PyArrayObject *)values[1]);
    __pyx_v_limit = values[2];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("pad_object", 0, 2, 3, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 273; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("pandas._algos.pad_object", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_bstruct_indexer.buf = NULL;
  __pyx_bstruct_old.buf = NULL;
  __pyx_bstruct_new.buf = NULL;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_old), __pyx_ptype_5numpy_ndarray, 1, "old", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 273; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_new), __pyx_ptype_5numpy_ndarray, 1, "new", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 273; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_old, (PyObject*)__pyx_v_old, &__Pyx_TypeInfo_object, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 273; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  }
  __pyx_bstride_0_old = __pyx_bstruct_old.strides[0];
  __pyx_bshape_0_old = __pyx_bstruct_old.shape[0];
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_new, (PyObject*)__pyx_v_new, &__Pyx_TypeInfo_object, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 273; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  }
  __pyx_bstride_0_new = __pyx_bstruct_new.strides[0];
  __pyx_bshape_0_new = __pyx_bstruct_new.shape[0];

  /* "pandas/src/generated.pyx":278
 *     cdef ndarray[int64_t, ndim=1] indexer
 *     cdef object cur, next
 *     cdef int lim, fill_count = 0             # <<<<<<<<<<<<<<
 * 
 *     nleft = len(old)
 */
  __pyx_v_fill_count = 0;

  /* "pandas/src/generated.pyx":280
 *     cdef int lim, fill_count = 0
 * 
 *     nleft = len(old)             # <<<<<<<<<<<<<<
 *     nright = len(new)
 *     indexer = np.empty(nright, dtype=np.int64)
 */
  __pyx_t_1 = PyObject_Length(((PyObject *)__pyx_v_old)); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 280; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_v_nleft = __pyx_t_1;

  /* "pandas/src/generated.pyx":281
 * 
 *     nleft = len(old)
 *     nright = len(new)             # <<<<<<<<<<<<<<
 *     indexer = np.empty(nright, dtype=np.int64)
 *     indexer.fill(-1)
 */
  __pyx_t_1 = PyObject_Length(((PyObject *)__pyx_v_new)); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 281; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_v_nright = __pyx_t_1;

  /* "pandas/src/generated.pyx":282
 *     nleft = len(old)
 *     nright = len(new)
 *     indexer = np.empty(nright, dtype=np.int64)             # <<<<<<<<<<<<<<
 *     indexer.fill(-1)
 * 
 */
  __pyx_t_2 = __Pyx_GetName(__pyx_m, __pyx_n_s__np); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 282; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = PyObject_GetAttr(__pyx_t_2, __pyx_n_s__empty); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 282; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = PyInt_FromSsize_t(__pyx_v_nright); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 282; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 282; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_4));
  PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_2);
  __Pyx_GIVEREF(__pyx_t_2);
  __pyx_t_2 = 0;
  __pyx_t_2 = PyDict_New(); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 282; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_2));
  __pyx_t_5 = __Pyx_GetName(__pyx_m, __pyx_n_s__np); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 282; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_6 = PyObject_GetAttr(__pyx_t_5, __pyx_n_s__int64); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 282; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  if (PyDict_SetItem(__pyx_t_2, ((PyObject *)__pyx_n_s__dtype), __pyx_t_6) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 282; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __pyx_t_6 = PyEval_CallObjectWithKeywords(__pyx_t_3, ((PyObject *)__pyx_t_4), ((PyObject *)__pyx_t_2)); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 282; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_DECREF(((PyObject *)__pyx_t_4)); __pyx_t_4 = 0;
  __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0;
  if (!(likely(((__pyx_t_6) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_6, __pyx_ptype_5numpy_ndarray))))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 282; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_t_7 = ((PyArrayObject *)__pyx_t_6);
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    __Pyx_SafeReleaseBuffer(&__pyx_bstruct_indexer);
    __pyx_t_8 = __Pyx_GetBufferAndValidate(&__pyx_bstruct_indexer, (PyObject*)__pyx_t_7, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack);
    if (unlikely(__pyx_t_8 < 0)) {
      PyErr_Fetch(&__pyx_t_9, &__pyx_t_10, &__pyx_t_11);
      if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_indexer, (PyObject*)__pyx_v_indexer, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) {
        Py_XDECREF(__pyx_t_9); Py_XDECREF(__pyx_t_10); Py_XDECREF(__pyx_t_11);
        __Pyx_RaiseBufferFallbackError();
      } else {
        PyErr_Restore(__pyx_t_9, __pyx_t_10, __pyx_t_11);
      }
    }
    __pyx_bstride_0_indexer = __pyx_bstruct_indexer.strides[0];
    __pyx_bshape_0_indexer = __pyx_bstruct_indexer.shape[0];
    if (unlikely(__pyx_t_8 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 282; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  }
  __pyx_t_7 = 0;
  __pyx_v_indexer = ((PyArrayObject *)__pyx_t_6);
  __pyx_t_6 = 0;

  /* "pandas/src/generated.pyx":283
 *     nright = len(new)
 *     indexer = np.empty(nright, dtype=np.int64)
 *     indexer.fill(-1)             # <<<<<<<<<<<<<<
 * 
 *     if limit is None:
 */
  __pyx_t_6 = PyObject_GetAttr(((PyObject *)__pyx_v_indexer), __pyx_n_s__fill); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 283; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_2 = PyObject_Call(__pyx_t_6, ((PyObject *)__pyx_k_tuple_4), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 283; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "pandas/src/generated.pyx":285
 *     indexer.fill(-1)
 * 
 *     if limit is None:             # <<<<<<<<<<<<<<
 *         lim = nright
 *     else:
 */
  __pyx_t_12 = (__pyx_v_limit == Py_None);
  if (__pyx_t_12) {

    /* "pandas/src/generated.pyx":286
 * 
 *     if limit is None:
 *         lim = nright             # <<<<<<<<<<<<<<
 *     else:
 *         if limit < 0:
 */
    __pyx_v_lim = __pyx_v_nright;
    goto __pyx_L6;
  }
  /*else*/ {

    /* "pandas/src/generated.pyx":288
 *         lim = nright
 *     else:
 *         if limit < 0:             # <<<<<<<<<<<<<<
 *             raise ValueError('Limit must be non-negative')
 *         lim = limit
 */
    __pyx_t_2 = PyObject_RichCompare(__pyx_v_limit, __pyx_int_0, Py_LT); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 288; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_12 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_12 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 288; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    if (__pyx_t_12) {

      /* "pandas/src/generated.pyx":289
 *     else:
 *         if limit < 0:
 *             raise ValueError('Limit must be non-negative')             # <<<<<<<<<<<<<<
 *         lim = limit
 * 
 */
      __pyx_t_2 = PyObject_Call(__pyx_builtin_ValueError, ((PyObject *)__pyx_k_tuple_5), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 289; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_Raise(__pyx_t_2, 0, 0, 0);
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      {__pyx_filename = __pyx_f[0]; __pyx_lineno = 289; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      goto __pyx_L7;
    }
    __pyx_L7:;

    /* "pandas/src/generated.pyx":290
 *         if limit < 0:
 *             raise ValueError('Limit must be non-negative')
 *         lim = limit             # <<<<<<<<<<<<<<
 * 
 *     if nleft == 0 or nright == 0 or new[nright - 1] < old[0]:
 */
    __pyx_t_8 = __Pyx_PyInt_AsInt(__pyx_v_limit); if (unlikely((__pyx_t_8 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 290; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __pyx_v_lim = __pyx_t_8;
  }
  __pyx_L6:;

  /* "pandas/src/generated.pyx":292
 *         lim = limit
 * 
 *     if nleft == 0 or nright == 0 or new[nright - 1] < old[0]:             # <<<<<<<<<<<<<<
 *         return indexer
 * 
 */
  __pyx_t_12 = (__pyx_v_nleft == 0);
  if (!__pyx_t_12) {
    __pyx_t_13 = (__pyx_v_nright == 0);
    if (!__pyx_t_13) {
      __pyx_t_1 = (__pyx_v_nright - 1);
      __pyx_t_2 = *__Pyx_BufPtrStrided1d(PyObject **, __pyx_bstruct_new.buf, __pyx_t_1, __pyx_bstride_0_new);
      __Pyx_INCREF((PyObject*)__pyx_t_2);
      __pyx_t_14 = 0;
      __pyx_t_6 = *__Pyx_BufPtrStrided1d(PyObject **, __pyx_bstruct_old.buf, __pyx_t_14, __pyx_bstride_0_old);
      __Pyx_INCREF((PyObject*)__pyx_t_6);
      __pyx_t_4 = PyObject_RichCompare(__pyx_t_2, __pyx_t_6, Py_LT); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 292; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      __pyx_t_15 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_15 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 292; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __pyx_t_16 = __pyx_t_15;
    } else {
      __pyx_t_16 = __pyx_t_13;
    }
    __pyx_t_13 = __pyx_t_16;
  } else {
    __pyx_t_13 = __pyx_t_12;
  }
  if (__pyx_t_13) {

    /* "pandas/src/generated.pyx":293
 * 
 *     if nleft == 0 or nright == 0 or new[nright - 1] < old[0]:
 *         return indexer             # <<<<<<<<<<<<<<
 * 
 *     i = j = 0
 */
    __Pyx_XDECREF(__pyx_r);
    __Pyx_INCREF(((PyObject *)__pyx_v_indexer));
    __pyx_r = ((PyObject *)__pyx_v_indexer);
    goto __pyx_L0;
    goto __pyx_L8;
  }
  __pyx_L8:;

  /* "pandas/src/generated.pyx":295
 *         return indexer
 * 
 *     i = j = 0             # <<<<<<<<<<<<<<
 * 
 *     cur = old[0]
 */
  __pyx_v_i = 0;
  __pyx_v_j = 0;

  /* "pandas/src/generated.pyx":297
 *     i = j = 0
 * 
 *     cur = old[0]             # <<<<<<<<<<<<<<
 * 
 *     while j <= nright - 1 and new[j] < cur:
 */
  __pyx_t_17 = 0;
  __pyx_t_4 = *__Pyx_BufPtrStrided1d(PyObject **, __pyx_bstruct_old.buf, __pyx_t_17, __pyx_bstride_0_old);
  __Pyx_INCREF((PyObject*)__pyx_t_4);
  __pyx_v_cur = __pyx_t_4;
  __pyx_t_4 = 0;

  /* "pandas/src/generated.pyx":299
 *     cur = old[0]
 * 
 *     while j <= nright - 1 and new[j] < cur:             # <<<<<<<<<<<<<<
 *         j += 1
 * 
 */
  while (1) {
    __pyx_t_13 = (__pyx_v_j <= (__pyx_v_nright - 1));
    if (__pyx_t_13) {
      __pyx_t_18 = __pyx_v_j;
      __pyx_t_4 = *__Pyx_BufPtrStrided1d(PyObject **, __pyx_bstruct_new.buf, __pyx_t_18, __pyx_bstride_0_new);
      __Pyx_INCREF((PyObject*)__pyx_t_4);
      __pyx_t_6 = PyObject_RichCompare(__pyx_t_4, __pyx_v_cur, Py_LT); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 299; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_6);
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __pyx_t_12 = __Pyx_PyObject_IsTrue(__pyx_t_6); if (unlikely(__pyx_t_12 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 299; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      __pyx_t_16 = __pyx_t_12;
    } else {
      __pyx_t_16 = __pyx_t_13;
    }
    if (!__pyx_t_16) break;

    /* "pandas/src/generated.pyx":300
 * 
 *     while j <= nright - 1 and new[j] < cur:
 *         j += 1             # <<<<<<<<<<<<<<
 * 
 *     while True:
 */
    __pyx_v_j = (__pyx_v_j + 1);
  }

  /* "pandas/src/generated.pyx":302
 *         j += 1
 * 
 *     while True:             # <<<<<<<<<<<<<<
 *         if j == nright:
 *             break
 */
  while (1) {
    if (!1) break;

    /* "pandas/src/generated.pyx":303
 * 
 *     while True:
 *         if j == nright:             # <<<<<<<<<<<<<<
 *             break
 * 
 */
    __pyx_t_16 = (__pyx_v_j == __pyx_v_nright);
    if (__pyx_t_16) {

      /* "pandas/src/generated.pyx":304
 *     while True:
 *         if j == nright:
 *             break             # <<<<<<<<<<<<<<
 * 
 *         if i == nleft - 1:
 */
      goto __pyx_L12_break;
      goto __pyx_L13;
    }
    __pyx_L13:;

    /* "pandas/src/generated.pyx":306
 *             break
 * 
 *         if i == nleft - 1:             # <<<<<<<<<<<<<<
 *             while j < nright:
 *                 if new[j] == cur:
 */
    __pyx_t_16 = (__pyx_v_i == (__pyx_v_nleft - 1));
    if (__pyx_t_16) {

      /* "pandas/src/generated.pyx":307
 * 
 *         if i == nleft - 1:
 *             while j < nright:             # <<<<<<<<<<<<<<
 *                 if new[j] == cur:
 *                     indexer[j] = i
 */
      while (1) {
        __pyx_t_16 = (__pyx_v_j < __pyx_v_nright);
        if (!__pyx_t_16) break;

        /* "pandas/src/generated.pyx":308
 *         if i == nleft - 1:
 *             while j < nright:
 *                 if new[j] == cur:             # <<<<<<<<<<<<<<
 *                     indexer[j] = i
 *                 elif new[j] > cur and fill_count < lim:
 */
        __pyx_t_19 = __pyx_v_j;
        __pyx_t_6 = *__Pyx_BufPtrStrided1d(PyObject **, __pyx_bstruct_new.buf, __pyx_t_19, __pyx_bstride_0_new);
        __Pyx_INCREF((PyObject*)__pyx_t_6);
        __pyx_t_4 = PyObject_RichCompare(__pyx_t_6, __pyx_v_cur, Py_EQ); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 308; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_GOTREF(__pyx_t_4);
        __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
        __pyx_t_16 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_16 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 308; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
        if (__pyx_t_16) {

          /* "pandas/src/generated.pyx":309
 *             while j < nright:
 *                 if new[j] == cur:
 *                     indexer[j] = i             # <<<<<<<<<<<<<<
 *                 elif new[j] > cur and fill_count < lim:
 *                     indexer[j] = i
 */
          __pyx_t_20 = __pyx_v_j;
          *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_bstruct_indexer.buf, __pyx_t_20, __pyx_bstride_0_indexer) = __pyx_v_i;
          goto __pyx_L17;
        }

        /* "pandas/src/generated.pyx":310
 *                 if new[j] == cur:
 *                     indexer[j] = i
 *                 elif new[j] > cur and fill_count < lim:             # <<<<<<<<<<<<<<
 *                     indexer[j] = i
 *                     fill_count += 1
 */
        __pyx_t_21 = __pyx_v_j;
        __pyx_t_4 = *__Pyx_BufPtrStrided1d(PyObject **, __pyx_bstruct_new.buf, __pyx_t_21, __pyx_bstride_0_new);
        __Pyx_INCREF((PyObject*)__pyx_t_4);
        __pyx_t_6 = PyObject_RichCompare(__pyx_t_4, __pyx_v_cur, Py_GT); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 310; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_GOTREF(__pyx_t_6);
        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
        __pyx_t_16 = __Pyx_PyObject_IsTrue(__pyx_t_6); if (unlikely(__pyx_t_16 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 310; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
        if (__pyx_t_16) {
          __pyx_t_13 = (__pyx_v_fill_count < __pyx_v_lim);
          __pyx_t_12 = __pyx_t_13;
        } else {
          __pyx_t_12 = __pyx_t_16;
        }
        if (__pyx_t_12) {

          /* "pandas/src/generated.pyx":311
 *                     indexer[j] = i
 *                 elif new[j] > cur and fill_count < lim:
 *                     indexer[j] = i             # <<<<<<<<<<<<<<
 *                     fill_count += 1
 *                 j += 1
 */
          __pyx_t_22 = __pyx_v_j;
          *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_bstruct_indexer.buf, __pyx_t_22, __pyx_bstride_0_indexer) = __pyx_v_i;

          /* "pandas/src/generated.pyx":312
 *                 elif new[j] > cur and fill_count < lim:
 *                     indexer[j] = i
 *                     fill_count += 1             # <<<<<<<<<<<<<<
 *                 j += 1
 *             break
 */
          __pyx_v_fill_count = (__pyx_v_fill_count + 1);
          goto __pyx_L17;
        }
        __pyx_L17:;

        /* "pandas/src/generated.pyx":313
 *                     indexer[j] = i
 *                     fill_count += 1
 *                 j += 1             # <<<<<<<<<<<<<<
 *             break
 * 
 */
        __pyx_v_j = (__pyx_v_j + 1);
      }

      /* "pandas/src/generated.pyx":314
 *                     fill_count += 1
 *                 j += 1
 *             break             # <<<<<<<<<<<<<<
 * 
 *         next = old[i + 1]
 */
      goto __pyx_L12_break;
      goto __pyx_L14;
    }
    __pyx_L14:;

    /* "pandas/src/generated.pyx":316
 *             break
 * 
 *         next = old[i + 1]             # <<<<<<<<<<<<<<
 * 
 *         while j < nright and cur <= new[j] < next:
 */
    __pyx_t_23 = (__pyx_v_i + 1);
    __pyx_t_6 = *__Pyx_BufPtrStrided1d(PyObject **, __pyx_bstruct_old.buf, __pyx_t_23, __pyx_bstride_0_old);
    __Pyx_INCREF((PyObject*)__pyx_t_6);
    __Pyx_XDECREF(__pyx_v_next);
    __pyx_v_next = __pyx_t_6;
    __pyx_t_6 = 0;

    /* "pandas/src/generated.pyx":318
 *         next = old[i + 1]
 * 
 *         while j < nright and cur <= new[j] < next:             # <<<<<<<<<<<<<<
 *             if new[j] == cur:
 *                 indexer[j] = i
 */
    while (1) {
      __pyx_t_12 = (__pyx_v_j < __pyx_v_nright);
      if (__pyx_t_12) {
        __pyx_t_24 = __pyx_v_j;
        __pyx_t_6 = *__Pyx_BufPtrStrided1d(PyObject **, __pyx_bstruct_new.buf, __pyx_t_24, __pyx_bstride_0_new);
        __Pyx_INCREF((PyObject*)__pyx_t_6);
        __pyx_t_4 = PyObject_RichCompare(__pyx_v_cur, __pyx_t_6, Py_LE); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 318; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_GOTREF(__pyx_t_4);
        if (__Pyx_PyObject_IsTrue(__pyx_t_4)) {
          __Pyx_DECREF(__pyx_t_4);
          __pyx_t_4 = PyObject_RichCompare(__pyx_t_6, __pyx_v_next, Py_LT); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 318; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
          __Pyx_GOTREF(__pyx_t_4);
        }
        __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
        __pyx_t_16 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_16 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 318; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
        __pyx_t_13 = __pyx_t_16;
      } else {
        __pyx_t_13 = __pyx_t_12;
      }
      if (!__pyx_t_13) break;

      /* "pandas/src/generated.pyx":319
 * 
 *         while j < nright and cur <= new[j] < next:
 *             if new[j] == cur:             # <<<<<<<<<<<<<<
 *                 indexer[j] = i
 *             elif fill_count < lim:
 */
      __pyx_t_25 = __pyx_v_j;
      __pyx_t_4 = *__Pyx_BufPtrStrided1d(PyObject **, __pyx_bstruct_new.buf, __pyx_t_25, __pyx_bstride_0_new);
      __Pyx_INCREF((PyObject*)__pyx_t_4);
      __pyx_t_6 = PyObject_RichCompare(__pyx_t_4, __pyx_v_cur, Py_EQ); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 319; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_6);
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __pyx_t_13 = __Pyx_PyObject_IsTrue(__pyx_t_6); if (unlikely(__pyx_t_13 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 319; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      if (__pyx_t_13) {

        /* "pandas/src/generated.pyx":320
 *         while j < nright and cur <= new[j] < next:
 *             if new[j] == cur:
 *                 indexer[j] = i             # <<<<<<<<<<<<<<
 *             elif fill_count < lim:
 *                 indexer[j] = i
 */
        __pyx_t_26 = __pyx_v_j;
        *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_bstruct_indexer.buf, __pyx_t_26, __pyx_bstride_0_indexer) = __pyx_v_i;
        goto __pyx_L20;
      }

      /* "pandas/src/generated.pyx":321
 *             if new[j] == cur:
 *                 indexer[j] = i
 *             elif fill_count < lim:             # <<<<<<<<<<<<<<
 *                 indexer[j] = i
 *                 fill_count += 1
 */
      __pyx_t_13 = (__pyx_v_fill_count < __pyx_v_lim);
      if (__pyx_t_13) {

        /* "pandas/src/generated.pyx":322
 *                 indexer[j] = i
 *             elif fill_count < lim:
 *                 indexer[j] = i             # <<<<<<<<<<<<<<
 *                 fill_count += 1
 *             j += 1
 */
        __pyx_t_27 = __pyx_v_j;
        *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_bstruct_indexer.buf, __pyx_t_27, __pyx_bstride_0_indexer) = __pyx_v_i;

        /* "pandas/src/generated.pyx":323
 *             elif fill_count < lim:
 *                 indexer[j] = i
 *                 fill_count += 1             # <<<<<<<<<<<<<<
 *             j += 1
 * 
 */
        __pyx_v_fill_count = (__pyx_v_fill_count + 1);
        goto __pyx_L20;
      }
      __pyx_L20:;

      /* "pandas/src/generated.pyx":324
 *                 indexer[j] = i
 *                 fill_count += 1
 *             j += 1             # <<<<<<<<<<<<<<
 * 
 *         fill_count = 0
 */
      __pyx_v_j = (__pyx_v_j + 1);
    }

    /* "pandas/src/generated.pyx":326
 *             j += 1
 * 
 *         fill_count = 0             # <<<<<<<<<<<<<<
 *         i += 1
 *         cur = next
 */
    __pyx_v_fill_count = 0;

    /* "pandas/src/generated.pyx":327
 * 
 *         fill_count = 0
 *         i += 1             # <<<<<<<<<<<<<<
 *         cur = next
 * 
 */
    __pyx_v_i = (__pyx_v_i + 1);

    /* "pandas/src/generated.pyx":328
 *         fill_count = 0
 *         i += 1
 *         cur = next             # <<<<<<<<<<<<<<
 * 
 *     return indexer
 */
    __Pyx_INCREF(__pyx_v_next);
    __Pyx_DECREF(__pyx_v_cur);
    __pyx_v_cur = __pyx_v_next;
  }
  __pyx_L12_break:;

  /* "pandas/src/generated.pyx":330
 *         cur = next
 * 
 *     return indexer             # <<<<<<<<<<<<<<
 * 
 * @cython.boundscheck(False)
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_indexer));
  __pyx_r = ((PyObject *)__pyx_v_indexer);
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  { PyObject *__pyx_type, *__pyx_value, *__pyx_tb;
    __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);
    __Pyx_SafeReleaseBuffer(&__pyx_bstruct_old);
    __Pyx_SafeReleaseBuffer(&__pyx_bstruct_indexer);
    __Pyx_SafeReleaseBuffer(&__pyx_bstruct_new);
  __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);}
  __Pyx_AddTraceback("pandas._algos.pad_object", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  goto __pyx_L2;
  __pyx_L0:;
  __Pyx_SafeReleaseBuffer(&__pyx_bstruct_old);
  __Pyx_SafeReleaseBuffer(&__pyx_bstruct_indexer);
  __Pyx_SafeReleaseBuffer(&__pyx_bstruct_new);
  __pyx_L2:;
  __Pyx_XDECREF((PyObject *)__pyx_v_indexer);
  __Pyx_XDECREF(__pyx_v_cur);
  __Pyx_XDECREF(__pyx_v_next);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "pandas/src/generated.pyx":334
 * @cython.boundscheck(False)
 * @cython.wraparound(False)
 * def pad_int32(ndarray[int32_t] old, ndarray[int32_t] new,             # <<<<<<<<<<<<<<
 *                    limit=None):
 *     cdef Py_ssize_t i, j, nleft, nright
 */

static PyObject *__pyx_pf_6pandas_6_algos_12pad_int32(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_6pandas_6_algos_12pad_int32 = {__Pyx_NAMESTR("pad_int32"), (PyCFunction)__pyx_pf_6pandas_6_algos_12pad_int32, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(0)};
static PyObject *__pyx_pf_6pandas_6_algos_12pad_int32(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyArrayObject *__pyx_v_old = 0;
  PyArrayObject *__pyx_v_new = 0;
  PyObject *__pyx_v_limit = 0;
  Py_ssize_t __pyx_v_i;
  Py_ssize_t __pyx_v_j;
  Py_ssize_t __pyx_v_nleft;
  Py_ssize_t __pyx_v_nright;
  PyArrayObject *__pyx_v_indexer = 0;
  __pyx_t_5numpy_int32_t __pyx_v_cur;
  __pyx_t_5numpy_int32_t __pyx_v_next;
  int __pyx_v_lim;
  int __pyx_v_fill_count;
  Py_buffer __pyx_bstruct_old;
  Py_ssize_t __pyx_bstride_0_old = 0;
  Py_ssize_t __pyx_bshape_0_old = 0;
  Py_buffer __pyx_bstruct_indexer;
  Py_ssize_t __pyx_bstride_0_indexer = 0;
  Py_ssize_t __pyx_bshape_0_indexer = 0;
  Py_buffer __pyx_bstruct_new;
  Py_ssize_t __pyx_bstride_0_new = 0;
  Py_ssize_t __pyx_bshape_0_new = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  Py_ssize_t __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  PyArrayObject *__pyx_t_7 = NULL;
  int __pyx_t_8;
  PyObject *__pyx_t_9 = NULL;
  PyObject *__pyx_t_10 = NULL;
  PyObject *__pyx_t_11 = NULL;
  int __pyx_t_12;
  int __pyx_t_13;
  long __pyx_t_14;
  int __pyx_t_15;
  int __pyx_t_16;
  long __pyx_t_17;
  Py_ssize_t __pyx_t_18;
  Py_ssize_t __pyx_t_19;
  Py_ssize_t __pyx_t_20;
  Py_ssize_t __pyx_t_21;
  Py_ssize_t __pyx_t_22;
  Py_ssize_t __pyx_t_23;
  Py_ssize_t __pyx_t_24;
  __pyx_t_5numpy_int32_t __pyx_t_25;
  Py_ssize_t __pyx_t_26;
  Py_ssize_t __pyx_t_27;
  Py_ssize_t __pyx_t_28;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__old,&__pyx_n_s__new,&__pyx_n_s__limit,0};
  __Pyx_RefNannySetupContext("pad_int32");
  __pyx_self = __pyx_self;
  {
    PyObject* values[3] = {0,0,0};

    /* "pandas/src/generated.pyx":335
 * @cython.wraparound(False)
 * def pad_int32(ndarray[int32_t] old, ndarray[int32_t] new,
 *                    limit=None):             # <<<<<<<<<<<<<<
 *     cdef Py_ssize_t i, j, nleft, nright
 *     cdef ndarray[int64_t, ndim=1] indexer
 */
    values[2] = ((PyObject *)Py_None);
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  0:
        values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__old);
        if (likely(values[0])) kw_args--;
        else goto __pyx_L5_argtuple_error;
        case  1:
        values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__new);
        if (likely(values[1])) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("pad_int32", 0, 2, 3, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 334; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
        }
        case  2:
        if (kw_args > 0) {
          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__limit);
          if (value) { values[2] = value; kw_args--; }
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "pad_int32") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 334; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
    } else {
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_old = ((PyArrayObject *)values[0]);
    __pyx_v_new = ((PyArrayObject *)values[1]);
    __pyx_v_limit = values[2];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("pad_int32", 0, 2, 3, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 334; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("pandas._algos.pad_int32", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_bstruct_indexer.buf = NULL;
  __pyx_bstruct_old.buf = NULL;
  __pyx_bstruct_new.buf = NULL;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_old), __pyx_ptype_5numpy_ndarray, 1, "old", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 334; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_new), __pyx_ptype_5numpy_ndarray, 1, "new", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 334; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_old, (PyObject*)__pyx_v_old, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int32_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 334; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  }
  __pyx_bstride_0_old = __pyx_bstruct_old.strides[0];
  __pyx_bshape_0_old = __pyx_bstruct_old.shape[0];
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_new, (PyObject*)__pyx_v_new, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int32_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 334; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  }
  __pyx_bstride_0_new = __pyx_bstruct_new.strides[0];
  __pyx_bshape_0_new = __pyx_bstruct_new.shape[0];

  /* "pandas/src/generated.pyx":339
 *     cdef ndarray[int64_t, ndim=1] indexer
 *     cdef int32_t cur, next
 *     cdef int lim, fill_count = 0             # <<<<<<<<<<<<<<
 * 
 *     nleft = len(old)
 */
  __pyx_v_fill_count = 0;

  /* "pandas/src/generated.pyx":341
 *     cdef int lim, fill_count = 0
 * 
 *     nleft = len(old)             # <<<<<<<<<<<<<<
 *     nright = len(new)
 *     indexer = np.empty(nright, dtype=np.int64)
 */
  __pyx_t_1 = PyObject_Length(((PyObject *)__pyx_v_old)); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 341; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_v_nleft = __pyx_t_1;

  /* "pandas/src/generated.pyx":342
 * 
 *     nleft = len(old)
 *     nright = len(new)             # <<<<<<<<<<<<<<
 *     indexer = np.empty(nright, dtype=np.int64)
 *     indexer.fill(-1)
 */
  __pyx_t_1 = PyObject_Length(((PyObject *)__pyx_v_new)); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 342; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_v_nright = __pyx_t_1;

  /* "pandas/src/generated.pyx":343
 *     nleft = len(old)
 *     nright = len(new)
 *     indexer = np.empty(nright, dtype=np.int64)             # <<<<<<<<<<<<<<
 *     indexer.fill(-1)
 * 
 */
  __pyx_t_2 = __Pyx_GetName(__pyx_m, __pyx_n_s__np); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 343; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = PyObject_GetAttr(__pyx_t_2, __pyx_n_s__empty); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 343; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = PyInt_FromSsize_t(__pyx_v_nright); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 343; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 343; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_4));
  PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_2);
  __Pyx_GIVEREF(__pyx_t_2);
  __pyx_t_2 = 0;
  __pyx_t_2 = PyDict_New(); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 343; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_2));
  __pyx_t_5 = __Pyx_GetName(__pyx_m, __pyx_n_s__np); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 343; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_6 = PyObject_GetAttr(__pyx_t_5, __pyx_n_s__int64); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 343; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  if (PyDict_SetItem(__pyx_t_2, ((PyObject *)__pyx_n_s__dtype), __pyx_t_6) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 343; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __pyx_t_6 = PyEval_CallObjectWithKeywords(__pyx_t_3, ((PyObject *)__pyx_t_4), ((PyObject *)__pyx_t_2)); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 343; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_DECREF(((PyObject *)__pyx_t_4)); __pyx_t_4 = 0;
  __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0;
  if (!(likely(((__pyx_t_6) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_6, __pyx_ptype_5numpy_ndarray))))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 343; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_t_7 = ((PyArrayObject *)__pyx_t_6);
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    __Pyx_SafeReleaseBuffer(&__pyx_bstruct_indexer);
    __pyx_t_8 = __Pyx_GetBufferAndValidate(&__pyx_bstruct_indexer, (PyObject*)__pyx_t_7, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack);
    if (unlikely(__pyx_t_8 < 0)) {
      PyErr_Fetch(&__pyx_t_9, &__pyx_t_10, &__pyx_t_11);
      if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_indexer, (PyObject*)__pyx_v_indexer, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) {
        Py_XDECREF(__pyx_t_9); Py_XDECREF(__pyx_t_10); Py_XDECREF(__pyx_t_11);
        __Pyx_RaiseBufferFallbackError();
      } else {
        PyErr_Restore(__pyx_t_9, __pyx_t_10, __pyx_t_11);
      }
    }
    __pyx_bstride_0_indexer = __pyx_bstruct_indexer.strides[0];
    __pyx_bshape_0_indexer = __pyx_bstruct_indexer.shape[0];
    if (unlikely(__pyx_t_8 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 343; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  }
  __pyx_t_7 = 0;
  __pyx_v_indexer = ((PyArrayObject *)__pyx_t_6);
  __pyx_t_6 = 0;

  /* "pandas/src/generated.pyx":344
 *     nright = len(new)
 *     indexer = np.empty(nright, dtype=np.int64)
 *     indexer.fill(-1)             # <<<<<<<<<<<<<<
 * 
 *     if limit is None:
 */
  __pyx_t_6 = PyObject_GetAttr(((PyObject *)__pyx_v_indexer), __pyx_n_s__fill); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 344; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_2 = PyObject_Call(__pyx_t_6, ((PyObject *)__pyx_k_tuple_6), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 344; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "pandas/src/generated.pyx":346
 *     indexer.fill(-1)
 * 
 *     if limit is None:             # <<<<<<<<<<<<<<
 *         lim = nright
 *     else:
 */
  __pyx_t_12 = (__pyx_v_limit == Py_None);
  if (__pyx_t_12) {

    /* "pandas/src/generated.pyx":347
 * 
 *     if limit is None:
 *         lim = nright             # <<<<<<<<<<<<<<
 *     else:
 *         if limit < 0:
 */
    __pyx_v_lim = __pyx_v_nright;
    goto __pyx_L6;
  }
  /*else*/ {

    /* "pandas/src/generated.pyx":349
 *         lim = nright
 *     else:
 *         if limit < 0:             # <<<<<<<<<<<<<<
 *             raise ValueError('Limit must be non-negative')
 *         lim = limit
 */
    __pyx_t_2 = PyObject_RichCompare(__pyx_v_limit, __pyx_int_0, Py_LT); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 349; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_12 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_12 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 349; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    if (__pyx_t_12) {

      /* "pandas/src/generated.pyx":350
 *     else:
 *         if limit < 0:
 *             raise ValueError('Limit must be non-negative')             # <<<<<<<<<<<<<<
 *         lim = limit
 * 
 */
      __pyx_t_2 = PyObject_Call(__pyx_builtin_ValueError, ((PyObject *)__pyx_k_tuple_7), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 350; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_Raise(__pyx_t_2, 0, 0, 0);
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      {__pyx_filename = __pyx_f[0]; __pyx_lineno = 350; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      goto __pyx_L7;
    }
    __pyx_L7:;

    /* "pandas/src/generated.pyx":351
 *         if limit < 0:
 *             raise ValueError('Limit must be non-negative')
 *         lim = limit             # <<<<<<<<<<<<<<
 * 
 *     if nleft == 0 or nright == 0 or new[nright - 1] < old[0]:
 */
    __pyx_t_8 = __Pyx_PyInt_AsInt(__pyx_v_limit); if (unlikely((__pyx_t_8 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 351; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __pyx_v_lim = __pyx_t_8;
  }
  __pyx_L6:;

  /* "pandas/src/generated.pyx":353
 *         lim = limit
 * 
 *     if nleft == 0 or nright == 0 or new[nright - 1] < old[0]:             # <<<<<<<<<<<<<<
 *         return indexer
 * 
 */
  __pyx_t_12 = (__pyx_v_nleft == 0);
  if (!__pyx_t_12) {
    __pyx_t_13 = (__pyx_v_nright == 0);
    if (!__pyx_t_13) {
      __pyx_t_1 = (__pyx_v_nright - 1);
      __pyx_t_14 = 0;
      __pyx_t_15 = ((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int32_t *, __pyx_bstruct_new.buf, __pyx_t_1, __pyx_bstride_0_new)) < (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int32_t *, __pyx_bstruct_old.buf, __pyx_t_14, __pyx_bstride_0_old)));
      __pyx_t_16 = __pyx_t_15;
    } else {
      __pyx_t_16 = __pyx_t_13;
    }
    __pyx_t_13 = __pyx_t_16;
  } else {
    __pyx_t_13 = __pyx_t_12;
  }
  if (__pyx_t_13) {

    /* "pandas/src/generated.pyx":354
 * 
 *     if nleft == 0 or nright == 0 or new[nright - 1] < old[0]:
 *         return indexer             # <<<<<<<<<<<<<<
 * 
 *     i = j = 0
 */
    __Pyx_XDECREF(__pyx_r);
    __Pyx_INCREF(((PyObject *)__pyx_v_indexer));
    __pyx_r = ((PyObject *)__pyx_v_indexer);
    goto __pyx_L0;
    goto __pyx_L8;
  }
  __pyx_L8:;

  /* "pandas/src/generated.pyx":356
 *         return indexer
 * 
 *     i = j = 0             # <<<<<<<<<<<<<<
 * 
 *     cur = old[0]
 */
  __pyx_v_i = 0;
  __pyx_v_j = 0;

  /* "pandas/src/generated.pyx":358
 *     i = j = 0
 * 
 *     cur = old[0]             # <<<<<<<<<<<<<<
 * 
 *     while j <= nright - 1 and new[j] < cur:
 */
  __pyx_t_17 = 0;
  __pyx_v_cur = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int32_t *, __pyx_bstruct_old.buf, __pyx_t_17, __pyx_bstride_0_old));

  /* "pandas/src/generated.pyx":360
 *     cur = old[0]
 * 
 *     while j <= nright - 1 and new[j] < cur:             # <<<<<<<<<<<<<<
 *         j += 1
 * 
 */
  while (1) {
    __pyx_t_13 = (__pyx_v_j <= (__pyx_v_nright - 1));
    if (__pyx_t_13) {
      __pyx_t_18 = __pyx_v_j;
      __pyx_t_12 = ((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int32_t *, __pyx_bstruct_new.buf, __pyx_t_18, __pyx_bstride_0_new)) < __pyx_v_cur);
      __pyx_t_16 = __pyx_t_12;
    } else {
      __pyx_t_16 = __pyx_t_13;
    }
    if (!__pyx_t_16) break;

    /* "pandas/src/generated.pyx":361
 * 
 *     while j <= nright - 1 and new[j] < cur:
 *         j += 1             # <<<<<<<<<<<<<<
 * 
 *     while True:
 */
    __pyx_v_j = (__pyx_v_j + 1);
  }

  /* "pandas/src/generated.pyx":363
 *         j += 1
 * 
 *     while True:             # <<<<<<<<<<<<<<
 *         if j == nright:
 *             break
 */
  while (1) {
    if (!1) break;

    /* "pandas/src/generated.pyx":364
 * 
 *     while True:
 *         if j == nright:             # <<<<<<<<<<<<<<
 *             break
 * 
 */
    __pyx_t_16 = (__pyx_v_j == __pyx_v_nright);
    if (__pyx_t_16) {

      /* "pandas/src/generated.pyx":365
 *     while True:
 *         if j == nright:
 *             break             # <<<<<<<<<<<<<<
 * 
 *         if i == nleft - 1:
 */
      goto __pyx_L12_break;
      goto __pyx_L13;
    }
    __pyx_L13:;

    /* "pandas/src/generated.pyx":367
 *             break
 * 
 *         if i == nleft - 1:             # <<<<<<<<<<<<<<
 *             while j < nright:
 *                 if new[j] == cur:
 */
    __pyx_t_16 = (__pyx_v_i == (__pyx_v_nleft - 1));
    if (__pyx_t_16) {

      /* "pandas/src/generated.pyx":368
 * 
 *         if i == nleft - 1:
 *             while j < nright:             # <<<<<<<<<<<<<<
 *                 if new[j] == cur:
 *                     indexer[j] = i
 */
      while (1) {
        __pyx_t_16 = (__pyx_v_j < __pyx_v_nright);
        if (!__pyx_t_16) break;

        /* "pandas/src/generated.pyx":369
 *         if i == nleft - 1:
 *             while j < nright:
 *                 if new[j] == cur:             # <<<<<<<<<<<<<<
 *                     indexer[j] = i
 *                 elif new[j] > cur and fill_count < lim:
 */
        __pyx_t_19 = __pyx_v_j;
        __pyx_t_16 = ((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int32_t *, __pyx_bstruct_new.buf, __pyx_t_19, __pyx_bstride_0_new)) == __pyx_v_cur);
        if (__pyx_t_16) {

          /* "pandas/src/generated.pyx":370
 *             while j < nright:
 *                 if new[j] == cur:
 *                     indexer[j] = i             # <<<<<<<<<<<<<<
 *                 elif new[j] > cur and fill_count < lim:
 *                     indexer[j] = i
 */
          __pyx_t_20 = __pyx_v_j;
          *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_bstruct_indexer.buf, __pyx_t_20, __pyx_bstride_0_indexer) = __pyx_v_i;
          goto __pyx_L17;
        }

        /* "pandas/src/generated.pyx":371
 *                 if new[j] == cur:
 *                     indexer[j] = i
 *                 elif new[j] > cur and fill_count < lim:             # <<<<<<<<<<<<<<
 *                     indexer[j] = i
 *                     fill_count += 1
 */
        __pyx_t_21 = __pyx_v_j;
        __pyx_t_16 = ((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int32_t *, __pyx_bstruct_new.buf, __pyx_t_21, __pyx_bstride_0_new)) > __pyx_v_cur);
        if (__pyx_t_16) {
          __pyx_t_13 = (__pyx_v_fill_count < __pyx_v_lim);
          __pyx_t_12 = __pyx_t_13;
        } else {
          __pyx_t_12 = __pyx_t_16;
        }
        if (__pyx_t_12) {

          /* "pandas/src/generated.pyx":372
 *                     indexer[j] = i
 *                 elif new[j] > cur and fill_count < lim:
 *                     indexer[j] = i             # <<<<<<<<<<<<<<
 *                     fill_count += 1
 *                 j += 1
 */
          __pyx_t_22 = __pyx_v_j;
          *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_bstruct_indexer.buf, __pyx_t_22, __pyx_bstride_0_indexer) = __pyx_v_i;

          /* "pandas/src/generated.pyx":373
 *                 elif new[j] > cur and fill_count < lim:
 *                     indexer[j] = i
 *                     fill_count += 1             # <<<<<<<<<<<<<<
 *                 j += 1
 *             break
 */
          __pyx_v_fill_count = (__pyx_v_fill_count + 1);
          goto __pyx_L17;
        }
        __pyx_L17:;

        /* "pandas/src/generated.pyx":374
 *                     indexer[j] = i
 *                     fill_count += 1
 *                 j += 1             # <<<<<<<<<<<<<<
 *             break
 * 
 */
        __pyx_v_j = (__pyx_v_j + 1);
      }

      /* "pandas/src/generated.pyx":375
 *                     fill_count += 1
 *                 j += 1
 *             break             # <<<<<<<<<<<<<<
 * 
 *         next = old[i + 1]
 */
      goto __pyx_L12_break;
      goto __pyx_L14;
    }
    __pyx_L14:;

    /* "pandas/src/generated.pyx":377
 *             break
 * 
 *         next = old[i + 1]             # <<<<<<<<<<<<<<
 * 
 *         while j < nright and cur <= new[j] < next:
 */
    __pyx_t_23 = (__pyx_v_i + 1);
    __pyx_v_next = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int32_t *, __pyx_bstruct_old.buf, __pyx_t_23, __pyx_bstride_0_old));

    /* "pandas/src/generated.pyx":379
 *         next = old[i + 1]
 * 
 *         while j < nright and cur <= new[j] < next:             # <<<<<<<<<<<<<<
 *             if new[j] == cur:
 *                 indexer[j] = i
 */
    while (1) {
      __pyx_t_12 = (__pyx_v_j < __pyx_v_nright);
      if (__pyx_t_12) {
        __pyx_t_24 = __pyx_v_j;
        __pyx_t_25 = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int32_t *, __pyx_bstruct_new.buf, __pyx_t_24, __pyx_bstride_0_new));
        __pyx_t_16 = (__pyx_v_cur <= __pyx_t_25);
        if (__pyx_t_16) {
          __pyx_t_16 = (__pyx_t_25 < __pyx_v_next);
        }
        __pyx_t_13 = __pyx_t_16;
      } else {
        __pyx_t_13 = __pyx_t_12;
      }
      if (!__pyx_t_13) break;

      /* "pandas/src/generated.pyx":380
 * 
 *         while j < nright and cur <= new[j] < next:
 *             if new[j] == cur:             # <<<<<<<<<<<<<<
 *                 indexer[j] = i
 *             elif fill_count < lim:
 */
      __pyx_t_26 = __pyx_v_j;
      __pyx_t_13 = ((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int32_t *, __pyx_bstruct_new.buf, __pyx_t_26, __pyx_bstride_0_new)) == __pyx_v_cur);
      if (__pyx_t_13) {

        /* "pandas/src/generated.pyx":381
 *         while j < nright and cur <= new[j] < next:
 *             if new[j] == cur:
 *                 indexer[j] = i             # <<<<<<<<<<<<<<
 *             elif fill_count < lim:
 *                 indexer[j] = i
 */
        __pyx_t_27 = __pyx_v_j;
        *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_bstruct_indexer.buf, __pyx_t_27, __pyx_bstride_0_indexer) = __pyx_v_i;
        goto __pyx_L20;
      }

      /* "pandas/src/generated.pyx":382
 *             if new[j] == cur:
 *                 indexer[j] = i
 *             elif fill_count < lim:             # <<<<<<<<<<<<<<
 *                 indexer[j] = i
 *                 fill_count += 1
 */
      __pyx_t_13 = (__pyx_v_fill_count < __pyx_v_lim);
      if (__pyx_t_13) {

        /* "pandas/src/generated.pyx":383
 *                 indexer[j] = i
 *             elif fill_count < lim:
 *                 indexer[j] = i             # <<<<<<<<<<<<<<
 *                 fill_count += 1
 *             j += 1
 */
        __pyx_t_28 = __pyx_v_j;
        *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_bstruct_indexer.buf, __pyx_t_28, __pyx_bstride_0_indexer) = __pyx_v_i;

        /* "pandas/src/generated.pyx":384
 *             elif fill_count < lim:
 *                 indexer[j] = i
 *                 fill_count += 1             # <<<<<<<<<<<<<<
 *             j += 1
 * 
 */
        __pyx_v_fill_count = (__pyx_v_fill_count + 1);
        goto __pyx_L20;
      }
      __pyx_L20:;

      /* "pandas/src/generated.pyx":385
 *                 indexer[j] = i
 *                 fill_count += 1
 *             j += 1             # <<<<<<<<<<<<<<
 * 
 *         fill_count = 0
 */
      __pyx_v_j = (__pyx_v_j + 1);
    }

    /* "pandas/src/generated.pyx":387
 *             j += 1
 * 
 *         fill_count = 0             # <<<<<<<<<<<<<<
 *         i += 1
 *         cur = next
 */
    __pyx_v_fill_count = 0;

    /* "pandas/src/generated.pyx":388
 * 
 *         fill_count = 0
 *         i += 1             # <<<<<<<<<<<<<<
 *         cur = next
 * 
 */
    __pyx_v_i = (__pyx_v_i + 1);

    /* "pandas/src/generated.pyx":389
 *         fill_count = 0
 *         i += 1
 *         cur = next             # <<<<<<<<<<<<<<
 * 
 *     return indexer
 */
    __pyx_v_cur = __pyx_v_next;
  }
  __pyx_L12_break:;

  /* "pandas/src/generated.pyx":391
 *         cur = next
 * 
 *     return indexer             # <<<<<<<<<<<<<<
 * 
 * @cython.boundscheck(False)
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_indexer));
  __pyx_r = ((PyObject *)__pyx_v_indexer);
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  { PyObject *__pyx_type, *__pyx_value, *__pyx_tb;
    __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);
    __Pyx_SafeReleaseBuffer(&__pyx_bstruct_old);
    __Pyx_SafeReleaseBuffer(&__pyx_bstruct_indexer);
    __Pyx_SafeReleaseBuffer(&__pyx_bstruct_new);
  __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);}
  __Pyx_AddTraceback("pandas._algos.pad_int32", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  goto __pyx_L2;
  __pyx_L0:;
  __Pyx_SafeReleaseBuffer(&__pyx_bstruct_old);
  __Pyx_SafeReleaseBuffer(&__pyx_bstruct_indexer);
  __Pyx_SafeReleaseBuffer(&__pyx_bstruct_new);
  __pyx_L2:;
  __Pyx_XDECREF((PyObject *)__pyx_v_indexer);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "pandas/src/generated.pyx":395
 * @cython.boundscheck(False)
 * @cython.wraparound(False)
 * def pad_int64(ndarray[int64_t] old, ndarray[int64_t] new,             # <<<<<<<<<<<<<<
 *                    limit=None):
 *     cdef Py_ssize_t i, j, nleft, nright
 */

static PyObject *__pyx_pf_6pandas_6_algos_13pad_int64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_6pandas_6_algos_13pad_int64 = {__Pyx_NAMESTR("pad_int64"), (PyCFunction)__pyx_pf_6pandas_6_algos_13pad_int64, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(0)};
static PyObject *__pyx_pf_6pandas_6_algos_13pad_int64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyArrayObject *__pyx_v_old = 0;
  PyArrayObject *__pyx_v_new = 0;
  PyObject *__pyx_v_limit = 0;
  Py_ssize_t __pyx_v_i;
  Py_ssize_t __pyx_v_j;
  Py_ssize_t __pyx_v_nleft;
  Py_ssize_t __pyx_v_nright;
  PyArrayObject *__pyx_v_indexer = 0;
  __pyx_t_5numpy_int64_t __pyx_v_cur;
  __pyx_t_5numpy_int64_t __pyx_v_next;
  int __pyx_v_lim;
  int __pyx_v_fill_count;
  Py_buffer __pyx_bstruct_old;
  Py_ssize_t __pyx_bstride_0_old = 0;
  Py_ssize_t __pyx_bshape_0_old = 0;
  Py_buffer __pyx_bstruct_indexer;
  Py_ssize_t __pyx_bstride_0_indexer = 0;
  Py_ssize_t __pyx_bshape_0_indexer = 0;
  Py_buffer __pyx_bstruct_new;
  Py_ssize_t __pyx_bstride_0_new = 0;
  Py_ssize_t __pyx_bshape_0_new = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  Py_ssize_t __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  PyArrayObject *__pyx_t_7 = NULL;
  int __pyx_t_8;
  PyObject *__pyx_t_9 = NULL;
  PyObject *__pyx_t_10 = NULL;
  PyObject *__pyx_t_11 = NULL;
  int __pyx_t_12;
  int __pyx_t_13;
  long __pyx_t_14;
  int __pyx_t_15;
  int __pyx_t_16;
  long __pyx_t_17;
  Py_ssize_t __pyx_t_18;
  Py_ssize_t __pyx_t_19;
  Py_ssize_t __pyx_t_20;
  Py_ssize_t __pyx_t_21;
  Py_ssize_t __pyx_t_22;
  Py_ssize_t __pyx_t_23;
  Py_ssize_t __pyx_t_24;
  __pyx_t_5numpy_int64_t __pyx_t_25;
  Py_ssize_t __pyx_t_26;
  Py_ssize_t __pyx_t_27;
  Py_ssize_t __pyx_t_28;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__old,&__pyx_n_s__new,&__pyx_n_s__limit,0};
  __Pyx_RefNannySetupContext("pad_int64");
  __pyx_self = __pyx_self;
  {
    PyObject* values[3] = {0,0,0};

    /* "pandas/src/generated.pyx":396
 * @cython.wraparound(False)
 * def pad_int64(ndarray[int64_t] old, ndarray[int64_t] new,
 *                    limit=None):             # <<<<<<<<<<<<<<
 *     cdef Py_ssize_t i, j, nleft, nright
 *     cdef ndarray[int64_t, ndim=1] indexer
 */
    values[2] = ((PyObject *)Py_None);
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  0:
        values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__old);
        if (likely(values[0])) kw_args--;
        else goto __pyx_L5_argtuple_error;
        case  1:
        values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__new);
        if (likely(values[1])) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("pad_int64", 0, 2, 3, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 395; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
        }
        case  2:
        if (kw_args > 0) {
          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__limit);
          if (value) { values[2] = value; kw_args--; }
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "pad_int64") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 395; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
    } else {
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_old = ((PyArrayObject *)values[0]);
    __pyx_v_new = ((PyArrayObject *)values[1]);
    __pyx_v_limit = values[2];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("pad_int64", 0, 2, 3, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 395; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("pandas._algos.pad_int64", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_bstruct_indexer.buf = NULL;
  __pyx_bstruct_old.buf = NULL;
  __pyx_bstruct_new.buf = NULL;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_old), __pyx_ptype_5numpy_ndarray, 1, "old", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 395; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_new), __pyx_ptype_5numpy_ndarray, 1, "new", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 395; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_old, (PyObject*)__pyx_v_old, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 395; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  }
  __pyx_bstride_0_old = __pyx_bstruct_old.strides[0];
  __pyx_bshape_0_old = __pyx_bstruct_old.shape[0];
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_new, (PyObject*)__pyx_v_new, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 395; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  }
  __pyx_bstride_0_new = __pyx_bstruct_new.strides[0];
  __pyx_bshape_0_new = __pyx_bstruct_new.shape[0];

  /* "pandas/src/generated.pyx":400
 *     cdef ndarray[int64_t, ndim=1] indexer
 *     cdef int64_t cur, next
 *     cdef int lim, fill_count = 0             # <<<<<<<<<<<<<<
 * 
 *     nleft = len(old)
 */
  __pyx_v_fill_count = 0;

  /* "pandas/src/generated.pyx":402
 *     cdef int lim, fill_count = 0
 * 
 *     nleft = len(old)             # <<<<<<<<<<<<<<
 *     nright = len(new)
 *     indexer = np.empty(nright, dtype=np.int64)
 */
  __pyx_t_1 = PyObject_Length(((PyObject *)__pyx_v_old)); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 402; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_v_nleft = __pyx_t_1;

  /* "pandas/src/generated.pyx":403
 * 
 *     nleft = len(old)
 *     nright = len(new)             # <<<<<<<<<<<<<<
 *     indexer = np.empty(nright, dtype=np.int64)
 *     indexer.fill(-1)
 */
  __pyx_t_1 = PyObject_Length(((PyObject *)__pyx_v_new)); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 403; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_v_nright = __pyx_t_1;

  /* "pandas/src/generated.pyx":404
 *     nleft = len(old)
 *     nright = len(new)
 *     indexer = np.empty(nright, dtype=np.int64)             # <<<<<<<<<<<<<<
 *     indexer.fill(-1)
 * 
 */
  __pyx_t_2 = __Pyx_GetName(__pyx_m, __pyx_n_s__np); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 404; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = PyObject_GetAttr(__pyx_t_2, __pyx_n_s__empty); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 404; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = PyInt_FromSsize_t(__pyx_v_nright); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 404; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 404; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_4));
  PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_2);
  __Pyx_GIVEREF(__pyx_t_2);
  __pyx_t_2 = 0;
  __pyx_t_2 = PyDict_New(); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 404; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_2));
  __pyx_t_5 = __Pyx_GetName(__pyx_m, __pyx_n_s__np); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 404; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_6 = PyObject_GetAttr(__pyx_t_5, __pyx_n_s__int64); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 404; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  if (PyDict_SetItem(__pyx_t_2, ((PyObject *)__pyx_n_s__dtype), __pyx_t_6) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 404; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __pyx_t_6 = PyEval_CallObjectWithKeywords(__pyx_t_3, ((PyObject *)__pyx_t_4), ((PyObject *)__pyx_t_2)); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 404; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_DECREF(((PyObject *)__pyx_t_4)); __pyx_t_4 = 0;
  __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0;
  if (!(likely(((__pyx_t_6) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_6, __pyx_ptype_5numpy_ndarray))))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 404; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_t_7 = ((PyArrayObject *)__pyx_t_6);
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    __Pyx_SafeReleaseBuffer(&__pyx_bstruct_indexer);
    __pyx_t_8 = __Pyx_GetBufferAndValidate(&__pyx_bstruct_indexer, (PyObject*)__pyx_t_7, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack);
    if (unlikely(__pyx_t_8 < 0)) {
      PyErr_Fetch(&__pyx_t_9, &__pyx_t_10, &__pyx_t_11);
      if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_indexer, (PyObject*)__pyx_v_indexer, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) {
        Py_XDECREF(__pyx_t_9); Py_XDECREF(__pyx_t_10); Py_XDECREF(__pyx_t_11);
        __Pyx_RaiseBufferFallbackError();
      } else {
        PyErr_Restore(__pyx_t_9, __pyx_t_10, __pyx_t_11);
      }
    }
    __pyx_bstride_0_indexer = __pyx_bstruct_indexer.strides[0];
    __pyx_bshape_0_indexer = __pyx_bstruct_indexer.shape[0];
    if (unlikely(__pyx_t_8 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 404; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  }
  __pyx_t_7 = 0;
  __pyx_v_indexer = ((PyArrayObject *)__pyx_t_6);
  __pyx_t_6 = 0;

  /* "pandas/src/generated.pyx":405
 *     nright = len(new)
 *     indexer = np.empty(nright, dtype=np.int64)
 *     indexer.fill(-1)             # <<<<<<<<<<<<<<
 * 
 *     if limit is None:
 */
  __pyx_t_6 = PyObject_GetAttr(((PyObject *)__pyx_v_indexer), __pyx_n_s__fill); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 405; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_2 = PyObject_Call(__pyx_t_6, ((PyObject *)__pyx_k_tuple_8), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 405; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "pandas/src/generated.pyx":407
 *     indexer.fill(-1)
 * 
 *     if limit is None:             # <<<<<<<<<<<<<<
 *         lim = nright
 *     else:
 */
  __pyx_t_12 = (__pyx_v_limit == Py_None);
  if (__pyx_t_12) {

    /* "pandas/src/generated.pyx":408
 * 
 *     if limit is None:
 *         lim = nright             # <<<<<<<<<<<<<<
 *     else:
 *         if limit < 0:
 */
    __pyx_v_lim = __pyx_v_nright;
    goto __pyx_L6;
  }
  /*else*/ {

    /* "pandas/src/generated.pyx":410
 *         lim = nright
 *     else:
 *         if limit < 0:             # <<<<<<<<<<<<<<
 *             raise ValueError('Limit must be non-negative')
 *         lim = limit
 */
    __pyx_t_2 = PyObject_RichCompare(__pyx_v_limit, __pyx_int_0, Py_LT); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 410; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_12 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_12 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 410; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    if (__pyx_t_12) {

      /* "pandas/src/generated.pyx":411
 *     else:
 *         if limit < 0:
 *             raise ValueError('Limit must be non-negative')             # <<<<<<<<<<<<<<
 *         lim = limit
 * 
 */
      __pyx_t_2 = PyObject_Call(__pyx_builtin_ValueError, ((PyObject *)__pyx_k_tuple_9), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 411; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_Raise(__pyx_t_2, 0, 0, 0);
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      {__pyx_filename = __pyx_f[0]; __pyx_lineno = 411; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      goto __pyx_L7;
    }
    __pyx_L7:;

    /* "pandas/src/generated.pyx":412
 *         if limit < 0:
 *             raise ValueError('Limit must be non-negative')
 *         lim = limit             # <<<<<<<<<<<<<<
 * 
 *     if nleft == 0 or nright == 0 or new[nright - 1] < old[0]:
 */
    __pyx_t_8 = __Pyx_PyInt_AsInt(__pyx_v_limit); if (unlikely((__pyx_t_8 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 412; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __pyx_v_lim = __pyx_t_8;
  }
  __pyx_L6:;

  /* "pandas/src/generated.pyx":414
 *         lim = limit
 * 
 *     if nleft == 0 or nright == 0 or new[nright - 1] < old[0]:             # <<<<<<<<<<<<<<
 *         return indexer
 * 
 */
  __pyx_t_12 = (__pyx_v_nleft == 0);
  if (!__pyx_t_12) {
    __pyx_t_13 = (__pyx_v_nright == 0);
    if (!__pyx_t_13) {
      __pyx_t_1 = (__pyx_v_nright - 1);
      __pyx_t_14 = 0;
      __pyx_t_15 = ((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_bstruct_new.buf, __pyx_t_1, __pyx_bstride_0_new)) < (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_bstruct_old.buf, __pyx_t_14, __pyx_bstride_0_old)));
      __pyx_t_16 = __pyx_t_15;
    } else {
      __pyx_t_16 = __pyx_t_13;
    }
    __pyx_t_13 = __pyx_t_16;
  } else {
    __pyx_t_13 = __pyx_t_12;
  }
  if (__pyx_t_13) {

    /* "pandas/src/generated.pyx":415
 * 
 *     if nleft == 0 or nright == 0 or new[nright - 1] < old[0]:
 *         return indexer             # <<<<<<<<<<<<<<
 * 
 *     i = j = 0
 */
    __Pyx_XDECREF(__pyx_r);
    __Pyx_INCREF(((PyObject *)__pyx_v_indexer));
    __pyx_r = ((PyObject *)__pyx_v_indexer);
    goto __pyx_L0;
    goto __pyx_L8;
  }
  __pyx_L8:;

  /* "pandas/src/generated.pyx":417
 *         return indexer
 * 
 *     i = j = 0             # <<<<<<<<<<<<<<
 * 
 *     cur = old[0]
 */
  __pyx_v_i = 0;
  __pyx_v_j = 0;

  /* "pandas/src/generated.pyx":419
 *     i = j = 0
 * 
 *     cur = old[0]             # <<<<<<<<<<<<<<
 * 
 *     while j <= nright - 1 and new[j] < cur:
 */
  __pyx_t_17 = 0;
  __pyx_v_cur = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_bstruct_old.buf, __pyx_t_17, __pyx_bstride_0_old));

  /* "pandas/src/generated.pyx":421
 *     cur = old[0]
 * 
 *     while j <= nright - 1 and new[j] < cur:             # <<<<<<<<<<<<<<
 *         j += 1
 * 
 */
  while (1) {
    __pyx_t_13 = (__pyx_v_j <= (__pyx_v_nright - 1));
    if (__pyx_t_13) {
      __pyx_t_18 = __pyx_v_j;
      __pyx_t_12 = ((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_bstruct_new.buf, __pyx_t_18, __pyx_bstride_0_new)) < __pyx_v_cur);
      __pyx_t_16 = __pyx_t_12;
    } else {
      __pyx_t_16 = __pyx_t_13;
    }
    if (!__pyx_t_16) break;

    /* "pandas/src/generated.pyx":422
 * 
 *     while j <= nright - 1 and new[j] < cur:
 *         j += 1             # <<<<<<<<<<<<<<
 * 
 *     while True:
 */
    __pyx_v_j = (__pyx_v_j + 1);
  }

  /* "pandas/src/generated.pyx":424
 *         j += 1
 * 
 *     while True:             # <<<<<<<<<<<<<<
 *         if j == nright:
 *             break
 */
  while (1) {
    if (!1) break;

    /* "pandas/src/generated.pyx":425
 * 
 *     while True:
 *         if j == nright:             # <<<<<<<<<<<<<<
 *             break
 * 
 */
    __pyx_t_16 = (__pyx_v_j == __pyx_v_nright);
    if (__pyx_t_16) {

      /* "pandas/src/generated.pyx":426
 *     while True:
 *         if j == nright:
 *             break             # <<<<<<<<<<<<<<
 * 
 *         if i == nleft - 1:
 */
      goto __pyx_L12_break;
      goto __pyx_L13;
    }
    __pyx_L13:;

    /* "pandas/src/generated.pyx":428
 *             break
 * 
 *         if i == nleft - 1:             # <<<<<<<<<<<<<<
 *             while j < nright:
 *                 if new[j] == cur:
 */
    __pyx_t_16 = (__pyx_v_i == (__pyx_v_nleft - 1));
    if (__pyx_t_16) {

      /* "pandas/src/generated.pyx":429
 * 
 *         if i == nleft - 1:
 *             while j < nright:             # <<<<<<<<<<<<<<
 *                 if new[j] == cur:
 *                     indexer[j] = i
 */
      while (1) {
        __pyx_t_16 = (__pyx_v_j < __pyx_v_nright);
        if (!__pyx_t_16) break;

        /* "pandas/src/generated.pyx":430
 *         if i == nleft - 1:
 *             while j < nright:
 *                 if new[j] == cur:             # <<<<<<<<<<<<<<
 *                     indexer[j] = i
 *                 elif new[j] > cur and fill_count < lim:
 */
        __pyx_t_19 = __pyx_v_j;
        __pyx_t_16 = ((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_bstruct_new.buf, __pyx_t_19, __pyx_bstride_0_new)) == __pyx_v_cur);
        if (__pyx_t_16) {

          /* "pandas/src/generated.pyx":431
 *             while j < nright:
 *                 if new[j] == cur:
 *                     indexer[j] = i             # <<<<<<<<<<<<<<
 *                 elif new[j] > cur and fill_count < lim:
 *                     indexer[j] = i
 */
          __pyx_t_20 = __pyx_v_j;
          *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_bstruct_indexer.buf, __pyx_t_20, __pyx_bstride_0_indexer) = __pyx_v_i;
          goto __pyx_L17;
        }

        /* "pandas/src/generated.pyx":432
 *                 if new[j] == cur:
 *                     indexer[j] = i
 *                 elif new[j] > cur and fill_count < lim:             # <<<<<<<<<<<<<<
 *                     indexer[j] = i
 *                     fill_count += 1
 */
        __pyx_t_21 = __pyx_v_j;
        __pyx_t_16 = ((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_bstruct_new.buf, __pyx_t_21, __pyx_bstride_0_new)) > __pyx_v_cur);
        if (__pyx_t_16) {
          __pyx_t_13 = (__pyx_v_fill_count < __pyx_v_lim);
          __pyx_t_12 = __pyx_t_13;
        } else {
          __pyx_t_12 = __pyx_t_16;
        }
        if (__pyx_t_12) {

          /* "pandas/src/generated.pyx":433
 *                     indexer[j] = i
 *                 elif new[j] > cur and fill_count < lim:
 *                     indexer[j] = i             # <<<<<<<<<<<<<<
 *                     fill_count += 1
 *                 j += 1
 */
          __pyx_t_22 = __pyx_v_j;
          *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_bstruct_indexer.buf, __pyx_t_22, __pyx_bstride_0_indexer) = __pyx_v_i;

          /* "pandas/src/generated.pyx":434
 *                 elif new[j] > cur and fill_count < lim:
 *                     indexer[j] = i
 *                     fill_count += 1             # <<<<<<<<<<<<<<
 *                 j += 1
 *             break
 */
          __pyx_v_fill_count = (__pyx_v_fill_count + 1);
          goto __pyx_L17;
        }
        __pyx_L17:;

        /* "pandas/src/generated.pyx":435
 *                     indexer[j] = i
 *                     fill_count += 1
 *                 j += 1             # <<<<<<<<<<<<<<
 *             break
 * 
 */
        __pyx_v_j = (__pyx_v_j + 1);
      }

      /* "pandas/src/generated.pyx":436
 *                     fill_count += 1
 *                 j += 1
 *             break             # <<<<<<<<<<<<<<
 * 
 *         next = old[i + 1]
 */
      goto __pyx_L12_break;
      goto __pyx_L14;
    }
    __pyx_L14:;

    /* "pandas/src/generated.pyx":438
 *             break
 * 
 *         next = old[i + 1]             # <<<<<<<<<<<<<<
 * 
 *         while j < nright and cur <= new[j] < next:
 */
    __pyx_t_23 = (__pyx_v_i + 1);
    __pyx_v_next = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_bstruct_old.buf, __pyx_t_23, __pyx_bstride_0_old));

    /* "pandas/src/generated.pyx":440
 *         next = old[i + 1]
 * 
 *         while j < nright and cur <= new[j] < next:             # <<<<<<<<<<<<<<
 *             if new[j] == cur:
 *                 indexer[j] = i
 */
    while (1) {
      __pyx_t_12 = (__pyx_v_j < __pyx_v_nright);
      if (__pyx_t_12) {
        __pyx_t_24 = __pyx_v_j;
        __pyx_t_25 = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_bstruct_new.buf, __pyx_t_24, __pyx_bstride_0_new));
        __pyx_t_16 = (__pyx_v_cur <= __pyx_t_25);
        if (__pyx_t_16) {
          __pyx_t_16 = (__pyx_t_25 < __pyx_v_next);
        }
        __pyx_t_13 = __pyx_t_16;
      } else {
        __pyx_t_13 = __pyx_t_12;
      }
      if (!__pyx_t_13) break;

      /* "pandas/src/generated.pyx":441
 * 
 *         while j < nright and cur <= new[j] < next:
 *             if new[j] == cur:             # <<<<<<<<<<<<<<
 *                 indexer[j] = i
 *             elif fill_count < lim:
 */
      __pyx_t_26 = __pyx_v_j;
      __pyx_t_13 = ((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_bstruct_new.buf, __pyx_t_26, __pyx_bstride_0_new)) == __pyx_v_cur);
      if (__pyx_t_13) {

        /* "pandas/src/generated.pyx":442
 *         while j < nright and cur <= new[j] < next:
 *             if new[j] == cur:
 *                 indexer[j] = i             # <<<<<<<<<<<<<<
 *             elif fill_count < lim:
 *                 indexer[j] = i
 */
        __pyx_t_27 = __pyx_v_j;
        *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_bstruct_indexer.buf, __pyx_t_27, __pyx_bstride_0_indexer) = __pyx_v_i;
        goto __pyx_L20;
      }

      /* "pandas/src/generated.pyx":443
 *             if new[j] == cur:
 *                 indexer[j] = i
 *             elif fill_count < lim:             # <<<<<<<<<<<<<<
 *                 indexer[j] = i
 *                 fill_count += 1
 */
      __pyx_t_13 = (__pyx_v_fill_count < __pyx_v_lim);
      if (__pyx_t_13) {

        /* "pandas/src/generated.pyx":444
 *                 indexer[j] = i
 *             elif fill_count < lim:
 *                 indexer[j] = i             # <<<<<<<<<<<<<<
 *                 fill_count += 1
 *             j += 1
 */
        __pyx_t_28 = __pyx_v_j;
        *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_bstruct_indexer.buf, __pyx_t_28, __pyx_bstride_0_indexer) = __pyx_v_i;

        /* "pandas/src/generated.pyx":445
 *             elif fill_count < lim:
 *                 indexer[j] = i
 *                 fill_count += 1             # <<<<<<<<<<<<<<
 *             j += 1
 * 
 */
        __pyx_v_fill_count = (__pyx_v_fill_count + 1);
        goto __pyx_L20;
      }
      __pyx_L20:;

      /* "pandas/src/generated.pyx":446
 *                 indexer[j] = i
 *                 fill_count += 1
 *             j += 1             # <<<<<<<<<<<<<<
 * 
 *         fill_count = 0
 */
      __pyx_v_j = (__pyx_v_j + 1);
    }

    /* "pandas/src/generated.pyx":448
 *             j += 1
 * 
 *         fill_count = 0             # <<<<<<<<<<<<<<
 *         i += 1
 *         cur = next
 */
    __pyx_v_fill_count = 0;

    /* "pandas/src/generated.pyx":449
 * 
 *         fill_count = 0
 *         i += 1             # <<<<<<<<<<<<<<
 *         cur = next
 * 
 */
    __pyx_v_i = (__pyx_v_i + 1);

    /* "pandas/src/generated.pyx":450
 *         fill_count = 0
 *         i += 1
 *         cur = next             # <<<<<<<<<<<<<<
 * 
 *     return indexer
 */
    __pyx_v_cur = __pyx_v_next;
  }
  __pyx_L12_break:;

  /* "pandas/src/generated.pyx":452
 *         cur = next
 * 
 *     return indexer             # <<<<<<<<<<<<<<
 * 
 * @cython.boundscheck(False)
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_indexer));
  __pyx_r = ((PyObject *)__pyx_v_indexer);
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  { PyObject *__pyx_type, *__pyx_value, *__pyx_tb;
    __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);
    __Pyx_SafeReleaseBuffer(&__pyx_bstruct_old);
    __Pyx_SafeReleaseBuffer(&__pyx_bstruct_indexer);
    __Pyx_SafeReleaseBuffer(&__pyx_bstruct_new);
  __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);}
  __Pyx_AddTraceback("pandas._algos.pad_int64", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  goto __pyx_L2;
  __pyx_L0:;
  __Pyx_SafeReleaseBuffer(&__pyx_bstruct_old);
  __Pyx_SafeReleaseBuffer(&__pyx_bstruct_indexer);
  __Pyx_SafeReleaseBuffer(&__pyx_bstruct_new);
  __pyx_L2:;
  __Pyx_XDECREF((PyObject *)__pyx_v_indexer);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "pandas/src/generated.pyx":456
 * @cython.boundscheck(False)
 * @cython.wraparound(False)
 * def pad_bool(ndarray[uint8_t] old, ndarray[uint8_t] new,             # <<<<<<<<<<<<<<
 *                    limit=None):
 *     cdef Py_ssize_t i, j, nleft, nright
 */

static PyObject *__pyx_pf_6pandas_6_algos_14pad_bool(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_6pandas_6_algos_14pad_bool = {__Pyx_NAMESTR("pad_bool"), (PyCFunction)__pyx_pf_6pandas_6_algos_14pad_bool, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(0)};
static PyObject *__pyx_pf_6pandas_6_algos_14pad_bool(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyArrayObject *__pyx_v_old = 0;
  PyArrayObject *__pyx_v_new = 0;
  PyObject *__pyx_v_limit = 0;
  Py_ssize_t __pyx_v_i;
  Py_ssize_t __pyx_v_j;
  Py_ssize_t __pyx_v_nleft;
  Py_ssize_t __pyx_v_nright;
  PyArrayObject *__pyx_v_indexer = 0;
  __pyx_t_5numpy_uint8_t __pyx_v_cur;
  __pyx_t_5numpy_uint8_t __pyx_v_next;
  int __pyx_v_lim;
  int __pyx_v_fill_count;
  Py_buffer __pyx_bstruct_old;
  Py_ssize_t __pyx_bstride_0_old = 0;
  Py_ssize_t __pyx_bshape_0_old = 0;
  Py_buffer __pyx_bstruct_indexer;
  Py_ssize_t __pyx_bstride_0_indexer = 0;
  Py_ssize_t __pyx_bshape_0_indexer = 0;
  Py_buffer __pyx_bstruct_new;
  Py_ssize_t __pyx_bstride_0_new = 0;
  Py_ssize_t __pyx_bshape_0_new = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  Py_ssize_t __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  PyArrayObject *__pyx_t_7 = NULL;
  int __pyx_t_8;
  PyObject *__pyx_t_9 = NULL;
  PyObject *__pyx_t_10 = NULL;
  PyObject *__pyx_t_11 = NULL;
  int __pyx_t_12;
  int __pyx_t_13;
  long __pyx_t_14;
  int __pyx_t_15;
  int __pyx_t_16;
  long __pyx_t_17;
  Py_ssize_t __pyx_t_18;
  Py_ssize_t __pyx_t_19;
  Py_ssize_t __pyx_t_20;
  Py_ssize_t __pyx_t_21;
  Py_ssize_t __pyx_t_22;
  Py_ssize_t __pyx_t_23;
  Py_ssize_t __pyx_t_24;
  __pyx_t_5numpy_uint8_t __pyx_t_25;
  Py_ssize_t __pyx_t_26;
  Py_ssize_t __pyx_t_27;
  Py_ssize_t __pyx_t_28;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__old,&__pyx_n_s__new,&__pyx_n_s__limit,0};
  __Pyx_RefNannySetupContext("pad_bool");
  __pyx_self = __pyx_self;
  {
    PyObject* values[3] = {0,0,0};

    /* "pandas/src/generated.pyx":457
 * @cython.wraparound(False)
 * def pad_bool(ndarray[uint8_t] old, ndarray[uint8_t] new,
 *                    limit=None):             # <<<<<<<<<<<<<<
 *     cdef Py_ssize_t i, j, nleft, nright
 *     cdef ndarray[int64_t, ndim=1] indexer
 */
    values[2] = ((PyObject *)Py_None);
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  0:
        values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__old);
        if (likely(values[0])) kw_args--;
        else goto __pyx_L5_argtuple_error;
        case  1:
        values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__new);
        if (likely(values[1])) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("pad_bool", 0, 2, 3, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 456; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
        }
        case  2:
        if (kw_args > 0) {
          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__limit);
          if (value) { values[2] = value; kw_args--; }
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "pad_bool") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 456; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
    } else {
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_old = ((PyArrayObject *)values[0]);
    __pyx_v_new = ((PyArrayObject *)values[1]);
    __pyx_v_limit = values[2];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("pad_bool", 0, 2, 3, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 456; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("pandas._algos.pad_bool", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_bstruct_indexer.buf = NULL;
  __pyx_bstruct_old.buf = NULL;
  __pyx_bstruct_new.buf = NULL;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_old), __pyx_ptype_5numpy_ndarray, 1, "old", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 456; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_new), __pyx_ptype_5numpy_ndarray, 1, "new", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 456; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_old, (PyObject*)__pyx_v_old, &__Pyx_TypeInfo_nn___pyx_t_5numpy_uint8_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 456; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  }
  __pyx_bstride_0_old = __pyx_bstruct_old.strides[0];
  __pyx_bshape_0_old = __pyx_bstruct_old.shape[0];
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_new, (PyObject*)__pyx_v_new, &__Pyx_TypeInfo_nn___pyx_t_5numpy_uint8_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 456; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  }
  __pyx_bstride_0_new = __pyx_bstruct_new.strides[0];
  __pyx_bshape_0_new = __pyx_bstruct_new.shape[0];

  /* "pandas/src/generated.pyx":461
 *     cdef ndarray[int64_t, ndim=1] indexer
 *     cdef uint8_t cur, next
 *     cdef int lim, fill_count = 0             # <<<<<<<<<<<<<<
 * 
 *     nleft = len(old)
 */
  __pyx_v_fill_count = 0;

  /* "pandas/src/generated.pyx":463
 *     cdef int lim, fill_count = 0
 * 
 *     nleft = len(old)             # <<<<<<<<<<<<<<
 *     nright = len(new)
 *     indexer = np.empty(nright, dtype=np.int64)
 */
  __pyx_t_1 = PyObject_Length(((PyObject *)__pyx_v_old)); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 463; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_v_nleft = __pyx_t_1;

  /* "pandas/src/generated.pyx":464
 * 
 *     nleft = len(old)
 *     nright = len(new)             # <<<<<<<<<<<<<<
 *     indexer = np.empty(nright, dtype=np.int64)
 *     indexer.fill(-1)
 */
  __pyx_t_1 = PyObject_Length(((PyObject *)__pyx_v_new)); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 464; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_v_nright = __pyx_t_1;

  /* "pandas/src/generated.pyx":465
 *     nleft = len(old)
 *     nright = len(new)
 *     indexer = np.empty(nright, dtype=np.int64)             # <<<<<<<<<<<<<<
 *     indexer.fill(-1)
 * 
 */
  __pyx_t_2 = __Pyx_GetName(__pyx_m, __pyx_n_s__np); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 465; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = PyObject_GetAttr(__pyx_t_2, __pyx_n_s__empty); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 465; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = PyInt_FromSsize_t(__pyx_v_nright); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 465; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 465; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_4));
  PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_2);
  __Pyx_GIVEREF(__pyx_t_2);
  __pyx_t_2 = 0;
  __pyx_t_2 = PyDict_New(); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 465; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_2));
  __pyx_t_5 = __Pyx_GetName(__pyx_m, __pyx_n_s__np); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 465; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_6 = PyObject_GetAttr(__pyx_t_5, __pyx_n_s__int64); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 465; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  if (PyDict_SetItem(__pyx_t_2, ((PyObject *)__pyx_n_s__dtype), __pyx_t_6) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 465; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __pyx_t_6 = PyEval_CallObjectWithKeywords(__pyx_t_3, ((PyObject *)__pyx_t_4), ((PyObject *)__pyx_t_2)); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 465; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_DECREF(((PyObject *)__pyx_t_4)); __pyx_t_4 = 0;
  __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0;
  if (!(likely(((__pyx_t_6) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_6, __pyx_ptype_5numpy_ndarray))))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 465; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_t_7 = ((PyArrayObject *)__pyx_t_6);
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    __Pyx_SafeReleaseBuffer(&__pyx_bstruct_indexer);
    __pyx_t_8 = __Pyx_GetBufferAndValidate(&__pyx_bstruct_indexer, (PyObject*)__pyx_t_7, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack);
    if (unlikely(__pyx_t_8 < 0)) {
      PyErr_Fetch(&__pyx_t_9, &__pyx_t_10, &__pyx_t_11);
      if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_indexer, (PyObject*)__pyx_v_indexer, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) {
        Py_XDECREF(__pyx_t_9); Py_XDECREF(__pyx_t_10); Py_XDECREF(__pyx_t_11);
        __Pyx_RaiseBufferFallbackError();
      } else {
        PyErr_Restore(__pyx_t_9, __pyx_t_10, __pyx_t_11);
      }
    }
    __pyx_bstride_0_indexer = __pyx_bstruct_indexer.strides[0];
    __pyx_bshape_0_indexer = __pyx_bstruct_indexer.shape[0];
    if (unlikely(__pyx_t_8 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 465; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  }
  __pyx_t_7 = 0;
  __pyx_v_indexer = ((PyArrayObject *)__pyx_t_6);
  __pyx_t_6 = 0;

  /* "pandas/src/generated.pyx":466
 *     nright = len(new)
 *     indexer = np.empty(nright, dtype=np.int64)
 *     indexer.fill(-1)             # <<<<<<<<<<<<<<
 * 
 *     if limit is None:
 */
  __pyx_t_6 = PyObject_GetAttr(((PyObject *)__pyx_v_indexer), __pyx_n_s__fill); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 466; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_2 = PyObject_Call(__pyx_t_6, ((PyObject *)__pyx_k_tuple_10), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 466; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "pandas/src/generated.pyx":468
 *     indexer.fill(-1)
 * 
 *     if limit is None:             # <<<<<<<<<<<<<<
 *         lim = nright
 *     else:
 */
  __pyx_t_12 = (__pyx_v_limit == Py_None);
  if (__pyx_t_12) {

    /* "pandas/src/generated.pyx":469
 * 
 *     if limit is None:
 *         lim = nright             # <<<<<<<<<<<<<<
 *     else:
 *         if limit < 0:
 */
    __pyx_v_lim = __pyx_v_nright;
    goto __pyx_L6;
  }
  /*else*/ {

    /* "pandas/src/generated.pyx":471
 *         lim = nright
 *     else:
 *         if limit < 0:             # <<<<<<<<<<<<<<
 *             raise ValueError('Limit must be non-negative')
 *         lim = limit
 */
    __pyx_t_2 = PyObject_RichCompare(__pyx_v_limit, __pyx_int_0, Py_LT); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 471; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_12 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_12 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 471; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    if (__pyx_t_12) {

      /* "pandas/src/generated.pyx":472
 *     else:
 *         if limit < 0:
 *             raise ValueError('Limit must be non-negative')             # <<<<<<<<<<<<<<
 *         lim = limit
 * 
 */
      __pyx_t_2 = PyObject_Call(__pyx_builtin_ValueError, ((PyObject *)__pyx_k_tuple_11), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 472; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_Raise(__pyx_t_2, 0, 0, 0);
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      {__pyx_filename = __pyx_f[0]; __pyx_lineno = 472; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      goto __pyx_L7;
    }
    __pyx_L7:;

    /* "pandas/src/generated.pyx":473
 *         if limit < 0:
 *             raise ValueError('Limit must be non-negative')
 *         lim = limit             # <<<<<<<<<<<<<<
 * 
 *     if nleft == 0 or nright == 0 or new[nright - 1] < old[0]:
 */
    __pyx_t_8 = __Pyx_PyInt_AsInt(__pyx_v_limit); if (unlikely((__pyx_t_8 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 473; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __pyx_v_lim = __pyx_t_8;
  }
  __pyx_L6:;

  /* "pandas/src/generated.pyx":475
 *         lim = limit
 * 
 *     if nleft == 0 or nright == 0 or new[nright - 1] < old[0]:             # <<<<<<<<<<<<<<
 *         return indexer
 * 
 */
  __pyx_t_12 = (__pyx_v_nleft == 0);
  if (!__pyx_t_12) {
    __pyx_t_13 = (__pyx_v_nright == 0);
    if (!__pyx_t_13) {
      __pyx_t_1 = (__pyx_v_nright - 1);
      __pyx_t_14 = 0;
      __pyx_t_15 = ((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_uint8_t *, __pyx_bstruct_new.buf, __pyx_t_1, __pyx_bstride_0_new)) < (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_uint8_t *, __pyx_bstruct_old.buf, __pyx_t_14, __pyx_bstride_0_old)));
      __pyx_t_16 = __pyx_t_15;
    } else {
      __pyx_t_16 = __pyx_t_13;
    }
    __pyx_t_13 = __pyx_t_16;
  } else {
    __pyx_t_13 = __pyx_t_12;
  }
  if (__pyx_t_13) {

    /* "pandas/src/generated.pyx":476
 * 
 *     if nleft == 0 or nright == 0 or new[nright - 1] < old[0]:
 *         return indexer             # <<<<<<<<<<<<<<
 * 
 *     i = j = 0
 */
    __Pyx_XDECREF(__pyx_r);
    __Pyx_INCREF(((PyObject *)__pyx_v_indexer));
    __pyx_r = ((PyObject *)__pyx_v_indexer);
    goto __pyx_L0;
    goto __pyx_L8;
  }
  __pyx_L8:;

  /* "pandas/src/generated.pyx":478
 *         return indexer
 * 
 *     i = j = 0             # <<<<<<<<<<<<<<
 * 
 *     cur = old[0]
 */
  __pyx_v_i = 0;
  __pyx_v_j = 0;

  /* "pandas/src/generated.pyx":480
 *     i = j = 0
 * 
 *     cur = old[0]             # <<<<<<<<<<<<<<
 * 
 *     while j <= nright - 1 and new[j] < cur:
 */
  __pyx_t_17 = 0;
  __pyx_v_cur = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_uint8_t *, __pyx_bstruct_old.buf, __pyx_t_17, __pyx_bstride_0_old));

  /* "pandas/src/generated.pyx":482
 *     cur = old[0]
 * 
 *     while j <= nright - 1 and new[j] < cur:             # <<<<<<<<<<<<<<
 *         j += 1
 * 
 */
  while (1) {
    __pyx_t_13 = (__pyx_v_j <= (__pyx_v_nright - 1));
    if (__pyx_t_13) {
      __pyx_t_18 = __pyx_v_j;
      __pyx_t_12 = ((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_uint8_t *, __pyx_bstruct_new.buf, __pyx_t_18, __pyx_bstride_0_new)) < __pyx_v_cur);
      __pyx_t_16 = __pyx_t_12;
    } else {
      __pyx_t_16 = __pyx_t_13;
    }
    if (!__pyx_t_16) break;

    /* "pandas/src/generated.pyx":483
 * 
 *     while j <= nright - 1 and new[j] < cur:
 *         j += 1             # <<<<<<<<<<<<<<
 * 
 *     while True:
 */
    __pyx_v_j = (__pyx_v_j + 1);
  }

  /* "pandas/src/generated.pyx":485
 *         j += 1
 * 
 *     while True:             # <<<<<<<<<<<<<<
 *         if j == nright:
 *             break
 */
  while (1) {
    if (!1) break;

    /* "pandas/src/generated.pyx":486
 * 
 *     while True:
 *         if j == nright:             # <<<<<<<<<<<<<<
 *             break
 * 
 */
    __pyx_t_16 = (__pyx_v_j == __pyx_v_nright);
    if (__pyx_t_16) {

      /* "pandas/src/generated.pyx":487
 *     while True:
 *         if j == nright:
 *             break             # <<<<<<<<<<<<<<
 * 
 *         if i == nleft - 1:
 */
      goto __pyx_L12_break;
      goto __pyx_L13;
    }
    __pyx_L13:;

    /* "pandas/src/generated.pyx":489
 *             break
 * 
 *         if i == nleft - 1:             # <<<<<<<<<<<<<<
 *             while j < nright:
 *                 if new[j] == cur:
 */
    __pyx_t_16 = (__pyx_v_i == (__pyx_v_nleft - 1));
    if (__pyx_t_16) {

      /* "pandas/src/generated.pyx":490
 * 
 *         if i == nleft - 1:
 *             while j < nright:             # <<<<<<<<<<<<<<
 *                 if new[j] == cur:
 *                     indexer[j] = i
 */
      while (1) {
        __pyx_t_16 = (__pyx_v_j < __pyx_v_nright);
        if (!__pyx_t_16) break;

        /* "pandas/src/generated.pyx":491
 *         if i == nleft - 1:
 *             while j < nright:
 *                 if new[j] == cur:             # <<<<<<<<<<<<<<
 *                     indexer[j] = i
 *                 elif new[j] > cur and fill_count < lim:
 */
        __pyx_t_19 = __pyx_v_j;
        __pyx_t_16 = ((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_uint8_t *, __pyx_bstruct_new.buf, __pyx_t_19, __pyx_bstride_0_new)) == __pyx_v_cur);
        if (__pyx_t_16) {

          /* "pandas/src/generated.pyx":492
 *             while j < nright:
 *                 if new[j] == cur:
 *                     indexer[j] = i             # <<<<<<<<<<<<<<
 *                 elif new[j] > cur and fill_count < lim:
 *                     indexer[j] = i
 */
          __pyx_t_20 = __pyx_v_j;
          *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_bstruct_indexer.buf, __pyx_t_20, __pyx_bstride_0_indexer) = __pyx_v_i;
          goto __pyx_L17;
        }

        /* "pandas/src/generated.pyx":493
 *                 if new[j] == cur:
 *                     indexer[j] = i
 *                 elif new[j] > cur and fill_count < lim:             # <<<<<<<<<<<<<<
 *                     indexer[j] = i
 *                     fill_count += 1
 */
        __pyx_t_21 = __pyx_v_j;
        __pyx_t_16 = ((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_uint8_t *, __pyx_bstruct_new.buf, __pyx_t_21, __pyx_bstride_0_new)) > __pyx_v_cur);
        if (__pyx_t_16) {
          __pyx_t_13 = (__pyx_v_fill_count < __pyx_v_lim);
          __pyx_t_12 = __pyx_t_13;
        } else {
          __pyx_t_12 = __pyx_t_16;
        }
        if (__pyx_t_12) {

          /* "pandas/src/generated.pyx":494
 *                     indexer[j] = i
 *                 elif new[j] > cur and fill_count < lim:
 *                     indexer[j] = i             # <<<<<<<<<<<<<<
 *                     fill_count += 1
 *                 j += 1
 */
          __pyx_t_22 = __pyx_v_j;
          *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_bstruct_indexer.buf, __pyx_t_22, __pyx_bstride_0_indexer) = __pyx_v_i;

          /* "pandas/src/generated.pyx":495
 *                 elif new[j] > cur and fill_count < lim:
 *                     indexer[j] = i
 *                     fill_count += 1             # <<<<<<<<<<<<<<
 *                 j += 1
 *             break
 */
          __pyx_v_fill_count = (__pyx_v_fill_count + 1);
          goto __pyx_L17;
        }
        __pyx_L17:;

        /* "pandas/src/generated.pyx":496
 *                     indexer[j] = i
 *                     fill_count += 1
 *                 j += 1             # <<<<<<<<<<<<<<
 *             break
 * 
 */
        __pyx_v_j = (__pyx_v_j + 1);
      }

      /* "pandas/src/generated.pyx":497
 *                     fill_count += 1
 *                 j += 1
 *             break             # <<<<<<<<<<<<<<
 * 
 *         next = old[i + 1]
 */
      goto __pyx_L12_break;
      goto __pyx_L14;
    }
    __pyx_L14:;

    /* "pandas/src/generated.pyx":499
 *             break
 * 
 *         next = old[i + 1]             # <<<<<<<<<<<<<<
 * 
 *         while j < nright and cur <= new[j] < next:
 */
    __pyx_t_23 = (__pyx_v_i + 1);
    __pyx_v_next = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_uint8_t *, __pyx_bstruct_old.buf, __pyx_t_23, __pyx_bstride_0_old));

    /* "pandas/src/generated.pyx":501
 *         next = old[i + 1]
 * 
 *         while j < nright and cur <= new[j] < next:             # <<<<<<<<<<<<<<
 *             if new[j] == cur:
 *                 indexer[j] = i
 */
    while (1) {
      __pyx_t_12 = (__pyx_v_j < __pyx_v_nright);
      if (__pyx_t_12) {
        __pyx_t_24 = __pyx_v_j;
        __pyx_t_25 = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_uint8_t *, __pyx_bstruct_new.buf, __pyx_t_24, __pyx_bstride_0_new));
        __pyx_t_16 = (__pyx_v_cur <= __pyx_t_25);
        if (__pyx_t_16) {
          __pyx_t_16 = (__pyx_t_25 < __pyx_v_next);
        }
        __pyx_t_13 = __pyx_t_16;
      } else {
        __pyx_t_13 = __pyx_t_12;
      }
      if (!__pyx_t_13) break;

      /* "pandas/src/generated.pyx":502
 * 
 *         while j < nright and cur <= new[j] < next:
 *             if new[j] == cur:             # <<<<<<<<<<<<<<
 *                 indexer[j] = i
 *             elif fill_count < lim:
 */
      __pyx_t_26 = __pyx_v_j;
      __pyx_t_13 = ((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_uint8_t *, __pyx_bstruct_new.buf, __pyx_t_26, __pyx_bstride_0_new)) == __pyx_v_cur);
      if (__pyx_t_13) {

        /* "pandas/src/generated.pyx":503
 *         while j < nright and cur <= new[j] < next:
 *             if new[j] == cur:
 *                 indexer[j] = i             # <<<<<<<<<<<<<<
 *             elif fill_count < lim:
 *                 indexer[j] = i
 */
        __pyx_t_27 = __pyx_v_j;
        *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_bstruct_indexer.buf, __pyx_t_27, __pyx_bstride_0_indexer) = __pyx_v_i;
        goto __pyx_L20;
      }

      /* "pandas/src/generated.pyx":504
 *             if new[j] == cur:
 *                 indexer[j] = i
 *             elif fill_count < lim:             # <<<<<<<<<<<<<<
 *                 indexer[j] = i
 *                 fill_count += 1
 */
      __pyx_t_13 = (__pyx_v_fill_count < __pyx_v_lim);
      if (__pyx_t_13) {

        /* "pandas/src/generated.pyx":505
 *                 indexer[j] = i
 *             elif fill_count < lim:
 *                 indexer[j] = i             # <<<<<<<<<<<<<<
 *                 fill_count += 1
 *             j += 1
 */
        __pyx_t_28 = __pyx_v_j;
        *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_bstruct_indexer.buf, __pyx_t_28, __pyx_bstride_0_indexer) = __pyx_v_i;

        /* "pandas/src/generated.pyx":506
 *             elif fill_count < lim:
 *                 indexer[j] = i
 *                 fill_count += 1             # <<<<<<<<<<<<<<
 *             j += 1
 * 
 */
        __pyx_v_fill_count = (__pyx_v_fill_count + 1);
        goto __pyx_L20;
      }
      __pyx_L20:;

      /* "pandas/src/generated.pyx":507
 *                 indexer[j] = i
 *                 fill_count += 1
 *             j += 1             # <<<<<<<<<<<<<<
 * 
 *         fill_count = 0
 */
      __pyx_v_j = (__pyx_v_j + 1);
    }

    /* "pandas/src/generated.pyx":509
 *             j += 1
 * 
 *         fill_count = 0             # <<<<<<<<<<<<<<
 *         i += 1
 *         cur = next
 */
    __pyx_v_fill_count = 0;

    /* "pandas/src/generated.pyx":510
 * 
 *         fill_count = 0
 *         i += 1             # <<<<<<<<<<<<<<
 *         cur = next
 * 
 */
    __pyx_v_i = (__pyx_v_i + 1);

    /* "pandas/src/generated.pyx":511
 *         fill_count = 0
 *         i += 1
 *         cur = next             # <<<<<<<<<<<<<<
 * 
 *     return indexer
 */
    __pyx_v_cur = __pyx_v_next;
  }
  __pyx_L12_break:;

  /* "pandas/src/generated.pyx":513
 *         cur = next
 * 
 *     return indexer             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_indexer));
  __pyx_r = ((PyObject *)__pyx_v_indexer);
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  { PyObject *__pyx_type, *__pyx_value, *__pyx_tb;
    __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);
    __Pyx_SafeReleaseBuffer(&__pyx_bstruct_old);
    __Pyx_SafeReleaseBuffer(&__pyx_bstruct_indexer);
    __Pyx_SafeReleaseBuffer(&__pyx_bstruct_new);
  __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);}
  __Pyx_AddTraceback("pandas._algos.pad_bool", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  goto __pyx_L2;
  __pyx_L0:;
  __Pyx_SafeReleaseBuffer(&__pyx_bstruct_old);
  __Pyx_SafeReleaseBuffer(&__pyx_bstruct_indexer);
  __Pyx_SafeReleaseBuffer(&__pyx_bstruct_new);
  __pyx_L2:;
  __Pyx_XDECREF((PyObject *)__pyx_v_indexer);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "pandas/src/generated.pyx":518
 * @cython.boundscheck(False)
 * @cython.wraparound(False)
 * def backfill_float64(ndarray[float64_t] old, ndarray[float64_t] new,             # <<<<<<<<<<<<<<
 *                       limit=None):
 *     cdef Py_ssize_t i, j, nleft, nright
 */

static PyObject *__pyx_pf_6pandas_6_algos_15backfill_float64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_6pandas_6_algos_15backfill_float64 = {__Pyx_NAMESTR("backfill_float64"), (PyCFunction)__pyx_pf_6pandas_6_algos_15backfill_float64, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(0)};
static PyObject *__pyx_pf_6pandas_6_algos_15backfill_float64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyArrayObject *__pyx_v_old = 0;
  PyArrayObject *__pyx_v_new = 0;
  PyObject *__pyx_v_limit = 0;
  Py_ssize_t __pyx_v_i;
  Py_ssize_t __pyx_v_j;
  Py_ssize_t __pyx_v_nleft;
  Py_ssize_t __pyx_v_nright;
  PyArrayObject *__pyx_v_indexer = 0;
  __pyx_t_5numpy_float64_t __pyx_v_cur;
  __pyx_t_5numpy_float64_t __pyx_v_prev;
  int __pyx_v_lim;
  int __pyx_v_fill_count;
  Py_buffer __pyx_bstruct_old;
  Py_ssize_t __pyx_bstride_0_old = 0;
  Py_ssize_t __pyx_bshape_0_old = 0;
  Py_buffer __pyx_bstruct_indexer;
  Py_ssize_t __pyx_bstride_0_indexer = 0;
  Py_ssize_t __pyx_bshape_0_indexer = 0;
  Py_buffer __pyx_bstruct_new;
  Py_ssize_t __pyx_bstride_0_new = 0;
  Py_ssize_t __pyx_bshape_0_new = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  Py_ssize_t __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  PyArrayObject *__pyx_t_7 = NULL;
  int __pyx_t_8;
  PyObject *__pyx_t_9 = NULL;
  PyObject *__pyx_t_10 = NULL;
  PyObject *__pyx_t_11 = NULL;
  int __pyx_t_12;
  int __pyx_t_13;
  long __pyx_t_14;
  int __pyx_t_15;
  int __pyx_t_16;
  Py_ssize_t __pyx_t_17;
  Py_ssize_t __pyx_t_18;
  Py_ssize_t __pyx_t_19;
  Py_ssize_t __pyx_t_20;
  Py_ssize_t __pyx_t_21;
  Py_ssize_t __pyx_t_22;
  Py_ssize_t __pyx_t_23;
  Py_ssize_t __pyx_t_24;
  __pyx_t_5numpy_float64_t __pyx_t_25;
  Py_ssize_t __pyx_t_26;
  Py_ssize_t __pyx_t_27;
  Py_ssize_t __pyx_t_28;
  Py_ssize_t __pyx_t_29;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__old,&__pyx_n_s__new,&__pyx_n_s__limit,0};
  __Pyx_RefNannySetupContext("backfill_float64");
  __pyx_self = __pyx_self;
  {
    PyObject* values[3] = {0,0,0};

    /* "pandas/src/generated.pyx":519
 * @cython.wraparound(False)
 * def backfill_float64(ndarray[float64_t] old, ndarray[float64_t] new,
 *                       limit=None):             # <<<<<<<<<<<<<<
 *     cdef Py_ssize_t i, j, nleft, nright
 *     cdef ndarray[int64_t, ndim=1] indexer
 */
    values[2] = ((PyObject *)Py_None);
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  0:
        values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__old);
        if (likely(values[0])) kw_args--;
        else goto __pyx_L5_argtuple_error;
        case  1:
        values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__new);
        if (likely(values[1])) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("backfill_float64", 0, 2, 3, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 518; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
        }
        case  2:
        if (kw_args > 0) {
          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__limit);
          if (value) { values[2] = value; kw_args--; }
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "backfill_float64") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 518; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
    } else {
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_old = ((PyArrayObject *)values[0]);
    __pyx_v_new = ((PyArrayObject *)values[1]);
    __pyx_v_limit = values[2];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("backfill_float64", 0, 2, 3, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 518; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("pandas._algos.backfill_float64", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_bstruct_indexer.buf = NULL;
  __pyx_bstruct_old.buf = NULL;
  __pyx_bstruct_new.buf = NULL;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_old), __pyx_ptype_5numpy_ndarray, 1, "old", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 518; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_new), __pyx_ptype_5numpy_ndarray, 1, "new", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 518; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_old, (PyObject*)__pyx_v_old, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 518; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  }
  __pyx_bstride_0_old = __pyx_bstruct_old.strides[0];
  __pyx_bshape_0_old = __pyx_bstruct_old.shape[0];
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_new, (PyObject*)__pyx_v_new, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 518; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  }
  __pyx_bstride_0_new = __pyx_bstruct_new.strides[0];
  __pyx_bshape_0_new = __pyx_bstruct_new.shape[0];

  /* "pandas/src/generated.pyx":523
 *     cdef ndarray[int64_t, ndim=1] indexer
 *     cdef float64_t cur, prev
 *     cdef int lim, fill_count = 0             # <<<<<<<<<<<<<<
 * 
 *     nleft = len(old)
 */
  __pyx_v_fill_count = 0;

  /* "pandas/src/generated.pyx":525
 *     cdef int lim, fill_count = 0
 * 
 *     nleft = len(old)             # <<<<<<<<<<<<<<
 *     nright = len(new)
 *     indexer = np.empty(nright, dtype=np.int64)
 */
  __pyx_t_1 = PyObject_Length(((PyObject *)__pyx_v_old)); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 525; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_v_nleft = __pyx_t_1;

  /* "pandas/src/generated.pyx":526
 * 
 *     nleft = len(old)
 *     nright = len(new)             # <<<<<<<<<<<<<<
 *     indexer = np.empty(nright, dtype=np.int64)
 *     indexer.fill(-1)
 */
  __pyx_t_1 = PyObject_Length(((PyObject *)__pyx_v_new)); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 526; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_v_nright = __pyx_t_1;

  /* "pandas/src/generated.pyx":527
 *     nleft = len(old)
 *     nright = len(new)
 *     indexer = np.empty(nright, dtype=np.int64)             # <<<<<<<<<<<<<<
 *     indexer.fill(-1)
 * 
 */
  __pyx_t_2 = __Pyx_GetName(__pyx_m, __pyx_n_s__np); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 527; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = PyObject_GetAttr(__pyx_t_2, __pyx_n_s__empty); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 527; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = PyInt_FromSsize_t(__pyx_v_nright); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 527; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 527; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_4));
  PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_2);
  __Pyx_GIVEREF(__pyx_t_2);
  __pyx_t_2 = 0;
  __pyx_t_2 = PyDict_New(); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 527; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_2));
  __pyx_t_5 = __Pyx_GetName(__pyx_m, __pyx_n_s__np); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 527; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_6 = PyObject_GetAttr(__pyx_t_5, __pyx_n_s__int64); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 527; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  if (PyDict_SetItem(__pyx_t_2, ((PyObject *)__pyx_n_s__dtype), __pyx_t_6) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 527; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __pyx_t_6 = PyEval_CallObjectWithKeywords(__pyx_t_3, ((PyObject *)__pyx_t_4), ((PyObject *)__pyx_t_2)); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 527; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_DECREF(((PyObject *)__pyx_t_4)); __pyx_t_4 = 0;
  __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0;
  if (!(likely(((__pyx_t_6) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_6, __pyx_ptype_5numpy_ndarray))))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 527; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_t_7 = ((PyArrayObject *)__pyx_t_6);
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    __Pyx_SafeReleaseBuffer(&__pyx_bstruct_indexer);
    __pyx_t_8 = __Pyx_GetBufferAndValidate(&__pyx_bstruct_indexer, (PyObject*)__pyx_t_7, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack);
    if (unlikely(__pyx_t_8 < 0)) {
      PyErr_Fetch(&__pyx_t_9, &__pyx_t_10, &__pyx_t_11);
      if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_indexer, (PyObject*)__pyx_v_indexer, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) {
        Py_XDECREF(__pyx_t_9); Py_XDECREF(__pyx_t_10); Py_XDECREF(__pyx_t_11);
        __Pyx_RaiseBufferFallbackError();
      } else {
        PyErr_Restore(__pyx_t_9, __pyx_t_10, __pyx_t_11);
      }
    }
    __pyx_bstride_0_indexer = __pyx_bstruct_indexer.strides[0];
    __pyx_bshape_0_indexer = __pyx_bstruct_indexer.shape[0];
    if (unlikely(__pyx_t_8 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 527; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  }
  __pyx_t_7 = 0;
  __pyx_v_indexer = ((PyArrayObject *)__pyx_t_6);
  __pyx_t_6 = 0;

  /* "pandas/src/generated.pyx":528
 *     nright = len(new)
 *     indexer = np.empty(nright, dtype=np.int64)
 *     indexer.fill(-1)             # <<<<<<<<<<<<<<
 * 
 *     if limit is None:
 */
  __pyx_t_6 = PyObject_GetAttr(((PyObject *)__pyx_v_indexer), __pyx_n_s__fill); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 528; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_2 = PyObject_Call(__pyx_t_6, ((PyObject *)__pyx_k_tuple_12), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 528; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "pandas/src/generated.pyx":530
 *     indexer.fill(-1)
 * 
 *     if limit is None:             # <<<<<<<<<<<<<<
 *         lim = nright
 *     else:
 */
  __pyx_t_12 = (__pyx_v_limit == Py_None);
  if (__pyx_t_12) {

    /* "pandas/src/generated.pyx":531
 * 
 *     if limit is None:
 *         lim = nright             # <<<<<<<<<<<<<<
 *     else:
 *         if limit < 0:
 */
    __pyx_v_lim = __pyx_v_nright;
    goto __pyx_L6;
  }
  /*else*/ {

    /* "pandas/src/generated.pyx":533
 *         lim = nright
 *     else:
 *         if limit < 0:             # <<<<<<<<<<<<<<
 *             raise ValueError('Limit must be non-negative')
 *         lim = limit
 */
    __pyx_t_2 = PyObject_RichCompare(__pyx_v_limit, __pyx_int_0, Py_LT); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 533; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_12 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_12 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 533; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    if (__pyx_t_12) {

      /* "pandas/src/generated.pyx":534
 *     else:
 *         if limit < 0:
 *             raise ValueError('Limit must be non-negative')             # <<<<<<<<<<<<<<
 *         lim = limit
 * 
 */
      __pyx_t_2 = PyObject_Call(__pyx_builtin_ValueError, ((PyObject *)__pyx_k_tuple_13), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 534; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_Raise(__pyx_t_2, 0, 0, 0);
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      {__pyx_filename = __pyx_f[0]; __pyx_lineno = 534; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      goto __pyx_L7;
    }
    __pyx_L7:;

    /* "pandas/src/generated.pyx":535
 *         if limit < 0:
 *             raise ValueError('Limit must be non-negative')
 *         lim = limit             # <<<<<<<<<<<<<<
 * 
 *     if nleft == 0 or nright == 0 or new[0] > old[nleft - 1]:
 */
    __pyx_t_8 = __Pyx_PyInt_AsInt(__pyx_v_limit); if (unlikely((__pyx_t_8 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 535; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __pyx_v_lim = __pyx_t_8;
  }
  __pyx_L6:;

  /* "pandas/src/generated.pyx":537
 *         lim = limit
 * 
 *     if nleft == 0 or nright == 0 or new[0] > old[nleft - 1]:             # <<<<<<<<<<<<<<
 *         return indexer
 * 
 */
  __pyx_t_12 = (__pyx_v_nleft == 0);
  if (!__pyx_t_12) {
    __pyx_t_13 = (__pyx_v_nright == 0);
    if (!__pyx_t_13) {
      __pyx_t_14 = 0;
      __pyx_t_1 = (__pyx_v_nleft - 1);
      __pyx_t_15 = ((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_new.buf, __pyx_t_14, __pyx_bstride_0_new)) > (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_old.buf, __pyx_t_1, __pyx_bstride_0_old)));
      __pyx_t_16 = __pyx_t_15;
    } else {
      __pyx_t_16 = __pyx_t_13;
    }
    __pyx_t_13 = __pyx_t_16;
  } else {
    __pyx_t_13 = __pyx_t_12;
  }
  if (__pyx_t_13) {

    /* "pandas/src/generated.pyx":538
 * 
 *     if nleft == 0 or nright == 0 or new[0] > old[nleft - 1]:
 *         return indexer             # <<<<<<<<<<<<<<
 * 
 *     i = nleft - 1
 */
    __Pyx_XDECREF(__pyx_r);
    __Pyx_INCREF(((PyObject *)__pyx_v_indexer));
    __pyx_r = ((PyObject *)__pyx_v_indexer);
    goto __pyx_L0;
    goto __pyx_L8;
  }
  __pyx_L8:;

  /* "pandas/src/generated.pyx":540
 *         return indexer
 * 
 *     i = nleft - 1             # <<<<<<<<<<<<<<
 *     j = nright - 1
 * 
 */
  __pyx_v_i = (__pyx_v_nleft - 1);

  /* "pandas/src/generated.pyx":541
 * 
 *     i = nleft - 1
 *     j = nright - 1             # <<<<<<<<<<<<<<
 * 
 *     cur = old[nleft - 1]
 */
  __pyx_v_j = (__pyx_v_nright - 1);

  /* "pandas/src/generated.pyx":543
 *     j = nright - 1
 * 
 *     cur = old[nleft - 1]             # <<<<<<<<<<<<<<
 * 
 *     while j >= 0 and new[j] > cur:
 */
  __pyx_t_17 = (__pyx_v_nleft - 1);
  __pyx_v_cur = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_old.buf, __pyx_t_17, __pyx_bstride_0_old));

  /* "pandas/src/generated.pyx":545
 *     cur = old[nleft - 1]
 * 
 *     while j >= 0 and new[j] > cur:             # <<<<<<<<<<<<<<
 *         j -= 1
 * 
 */
  while (1) {
    __pyx_t_13 = (__pyx_v_j >= 0);
    if (__pyx_t_13) {
      __pyx_t_18 = __pyx_v_j;
      __pyx_t_12 = ((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_new.buf, __pyx_t_18, __pyx_bstride_0_new)) > __pyx_v_cur);
      __pyx_t_16 = __pyx_t_12;
    } else {
      __pyx_t_16 = __pyx_t_13;
    }
    if (!__pyx_t_16) break;

    /* "pandas/src/generated.pyx":546
 * 
 *     while j >= 0 and new[j] > cur:
 *         j -= 1             # <<<<<<<<<<<<<<
 * 
 *     while True:
 */
    __pyx_v_j = (__pyx_v_j - 1);
  }

  /* "pandas/src/generated.pyx":548
 *         j -= 1
 * 
 *     while True:             # <<<<<<<<<<<<<<
 *         if j < 0:
 *             break
 */
  while (1) {
    if (!1) break;

    /* "pandas/src/generated.pyx":549
 * 
 *     while True:
 *         if j < 0:             # <<<<<<<<<<<<<<
 *             break
 * 
 */
    __pyx_t_16 = (__pyx_v_j < 0);
    if (__pyx_t_16) {

      /* "pandas/src/generated.pyx":550
 *     while True:
 *         if j < 0:
 *             break             # <<<<<<<<<<<<<<
 * 
 *         if i == 0:
 */
      goto __pyx_L12_break;
      goto __pyx_L13;
    }
    __pyx_L13:;

    /* "pandas/src/generated.pyx":552
 *             break
 * 
 *         if i == 0:             # <<<<<<<<<<<<<<
 *             while j >= 0:
 *                 if new[j] == cur:
 */
    __pyx_t_16 = (__pyx_v_i == 0);
    if (__pyx_t_16) {

      /* "pandas/src/generated.pyx":553
 * 
 *         if i == 0:
 *             while j >= 0:             # <<<<<<<<<<<<<<
 *                 if new[j] == cur:
 *                     indexer[j] = i
 */
      while (1) {
        __pyx_t_16 = (__pyx_v_j >= 0);
        if (!__pyx_t_16) break;

        /* "pandas/src/generated.pyx":554
 *         if i == 0:
 *             while j >= 0:
 *                 if new[j] == cur:             # <<<<<<<<<<<<<<
 *                     indexer[j] = i
 *                 elif new[j] < cur and fill_count < lim:
 */
        __pyx_t_19 = __pyx_v_j;
        __pyx_t_16 = ((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_new.buf, __pyx_t_19, __pyx_bstride_0_new)) == __pyx_v_cur);
        if (__pyx_t_16) {

          /* "pandas/src/generated.pyx":555
 *             while j >= 0:
 *                 if new[j] == cur:
 *                     indexer[j] = i             # <<<<<<<<<<<<<<
 *                 elif new[j] < cur and fill_count < lim:
 *                     indexer[j] = i
 */
          __pyx_t_20 = __pyx_v_j;
          *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_bstruct_indexer.buf, __pyx_t_20, __pyx_bstride_0_indexer) = __pyx_v_i;
          goto __pyx_L17;
        }

        /* "pandas/src/generated.pyx":556
 *                 if new[j] == cur:
 *                     indexer[j] = i
 *                 elif new[j] < cur and fill_count < lim:             # <<<<<<<<<<<<<<
 *                     indexer[j] = i
 *                     fill_count += 1
 */
        __pyx_t_21 = __pyx_v_j;
        __pyx_t_16 = ((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_new.buf, __pyx_t_21, __pyx_bstride_0_new)) < __pyx_v_cur);
        if (__pyx_t_16) {
          __pyx_t_13 = (__pyx_v_fill_count < __pyx_v_lim);
          __pyx_t_12 = __pyx_t_13;
        } else {
          __pyx_t_12 = __pyx_t_16;
        }
        if (__pyx_t_12) {

          /* "pandas/src/generated.pyx":557
 *                     indexer[j] = i
 *                 elif new[j] < cur and fill_count < lim:
 *                     indexer[j] = i             # <<<<<<<<<<<<<<
 *                     fill_count += 1
 *                 j -= 1
 */
          __pyx_t_22 = __pyx_v_j;
          *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_bstruct_indexer.buf, __pyx_t_22, __pyx_bstride_0_indexer) = __pyx_v_i;

          /* "pandas/src/generated.pyx":558
 *                 elif new[j] < cur and fill_count < lim:
 *                     indexer[j] = i
 *                     fill_count += 1             # <<<<<<<<<<<<<<
 *                 j -= 1
 *             break
 */
          __pyx_v_fill_count = (__pyx_v_fill_count + 1);
          goto __pyx_L17;
        }
        __pyx_L17:;

        /* "pandas/src/generated.pyx":559
 *                     indexer[j] = i
 *                     fill_count += 1
 *                 j -= 1             # <<<<<<<<<<<<<<
 *             break
 * 
 */
        __pyx_v_j = (__pyx_v_j - 1);
      }

      /* "pandas/src/generated.pyx":560
 *                     fill_count += 1
 *                 j -= 1
 *             break             # <<<<<<<<<<<<<<
 * 
 *         prev = old[i - 1]
 */
      goto __pyx_L12_break;
      goto __pyx_L14;
    }
    __pyx_L14:;

    /* "pandas/src/generated.pyx":562
 *             break
 * 
 *         prev = old[i - 1]             # <<<<<<<<<<<<<<
 * 
 *         while j >= 0 and prev < new[j] <= cur:
 */
    __pyx_t_23 = (__pyx_v_i - 1);
    __pyx_v_prev = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_old.buf, __pyx_t_23, __pyx_bstride_0_old));

    /* "pandas/src/generated.pyx":564
 *         prev = old[i - 1]
 * 
 *         while j >= 0 and prev < new[j] <= cur:             # <<<<<<<<<<<<<<
 *             if new[j] == cur:
 *                 indexer[j] = i
 */
    while (1) {
      __pyx_t_12 = (__pyx_v_j >= 0);
      if (__pyx_t_12) {
        __pyx_t_24 = __pyx_v_j;
        __pyx_t_25 = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_new.buf, __pyx_t_24, __pyx_bstride_0_new));
        __pyx_t_16 = (__pyx_v_prev < __pyx_t_25);
        if (__pyx_t_16) {
          __pyx_t_16 = (__pyx_t_25 <= __pyx_v_cur);
        }
        __pyx_t_13 = __pyx_t_16;
      } else {
        __pyx_t_13 = __pyx_t_12;
      }
      if (!__pyx_t_13) break;

      /* "pandas/src/generated.pyx":565
 * 
 *         while j >= 0 and prev < new[j] <= cur:
 *             if new[j] == cur:             # <<<<<<<<<<<<<<
 *                 indexer[j] = i
 *             elif new[j] < cur and fill_count < lim:
 */
      __pyx_t_26 = __pyx_v_j;
      __pyx_t_13 = ((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_new.buf, __pyx_t_26, __pyx_bstride_0_new)) == __pyx_v_cur);
      if (__pyx_t_13) {

        /* "pandas/src/generated.pyx":566
 *         while j >= 0 and prev < new[j] <= cur:
 *             if new[j] == cur:
 *                 indexer[j] = i             # <<<<<<<<<<<<<<
 *             elif new[j] < cur and fill_count < lim:
 *                 indexer[j] = i
 */
        __pyx_t_27 = __pyx_v_j;
        *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_bstruct_indexer.buf, __pyx_t_27, __pyx_bstride_0_indexer) = __pyx_v_i;
        goto __pyx_L20;
      }

      /* "pandas/src/generated.pyx":567
 *             if new[j] == cur:
 *                 indexer[j] = i
 *             elif new[j] < cur and fill_count < lim:             # <<<<<<<<<<<<<<
 *                 indexer[j] = i
 *                 fill_count += 1
 */
      __pyx_t_28 = __pyx_v_j;
      __pyx_t_13 = ((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_new.buf, __pyx_t_28, __pyx_bstride_0_new)) < __pyx_v_cur);
      if (__pyx_t_13) {
        __pyx_t_12 = (__pyx_v_fill_count < __pyx_v_lim);
        __pyx_t_16 = __pyx_t_12;
      } else {
        __pyx_t_16 = __pyx_t_13;
      }
      if (__pyx_t_16) {

        /* "pandas/src/generated.pyx":568
 *                 indexer[j] = i
 *             elif new[j] < cur and fill_count < lim:
 *                 indexer[j] = i             # <<<<<<<<<<<<<<
 *                 fill_count += 1
 *             j -= 1
 */
        __pyx_t_29 = __pyx_v_j;
        *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_bstruct_indexer.buf, __pyx_t_29, __pyx_bstride_0_indexer) = __pyx_v_i;

        /* "pandas/src/generated.pyx":569
 *             elif new[j] < cur and fill_count < lim:
 *                 indexer[j] = i
 *                 fill_count += 1             # <<<<<<<<<<<<<<
 *             j -= 1
 * 
 */
        __pyx_v_fill_count = (__pyx_v_fill_count + 1);
        goto __pyx_L20;
      }
      __pyx_L20:;

      /* "pandas/src/generated.pyx":570
 *                 indexer[j] = i
 *                 fill_count += 1
 *             j -= 1             # <<<<<<<<<<<<<<
 * 
 *         fill_count = 0
 */
      __pyx_v_j = (__pyx_v_j - 1);
    }

    /* "pandas/src/generated.pyx":572
 *             j -= 1
 * 
 *         fill_count = 0             # <<<<<<<<<<<<<<
 *         i -= 1
 *         cur = prev
 */
    __pyx_v_fill_count = 0;

    /* "pandas/src/generated.pyx":573
 * 
 *         fill_count = 0
 *         i -= 1             # <<<<<<<<<<<<<<
 *         cur = prev
 * 
 */
    __pyx_v_i = (__pyx_v_i - 1);

    /* "pandas/src/generated.pyx":574
 *         fill_count = 0
 *         i -= 1
 *         cur = prev             # <<<<<<<<<<<<<<
 * 
 *     return indexer
 */
    __pyx_v_cur = __pyx_v_prev;
  }
  __pyx_L12_break:;

  /* "pandas/src/generated.pyx":576
 *         cur = prev
 * 
 *     return indexer             # <<<<<<<<<<<<<<
 * 
 * @cython.boundscheck(False)
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_indexer));
  __pyx_r = ((PyObject *)__pyx_v_indexer);
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  { PyObject *__pyx_type, *__pyx_value, *__pyx_tb;
    __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);
    __Pyx_SafeReleaseBuffer(&__pyx_bstruct_old);
    __Pyx_SafeReleaseBuffer(&__pyx_bstruct_indexer);
    __Pyx_SafeReleaseBuffer(&__pyx_bstruct_new);
  __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);}
  __Pyx_AddTraceback("pandas._algos.backfill_float64", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  goto __pyx_L2;
  __pyx_L0:;
  __Pyx_SafeReleaseBuffer(&__pyx_bstruct_old);
  __Pyx_SafeReleaseBuffer(&__pyx_bstruct_indexer);
  __Pyx_SafeReleaseBuffer(&__pyx_bstruct_new);
  __pyx_L2:;
  __Pyx_XDECREF((PyObject *)__pyx_v_indexer);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "pandas/src/generated.pyx":580
 * @cython.boundscheck(False)
 * @cython.wraparound(False)
 * def backfill_object(ndarray[object] old, ndarray[object] new,             # <<<<<<<<<<<<<<
 *                       limit=None):
 *     cdef Py_ssize_t i, j, nleft, nright
 */

static PyObject *__pyx_pf_6pandas_6_algos_16backfill_object(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_6pandas_6_algos_16backfill_object = {__Pyx_NAMESTR("backfill_object"), (PyCFunction)__pyx_pf_6pandas_6_algos_16backfill_object, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(0)};
static PyObject *__pyx_pf_6pandas_6_algos_16backfill_object(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyArrayObject *__pyx_v_old = 0;
  PyArrayObject *__pyx_v_new = 0;
  PyObject *__pyx_v_limit = 0;
  Py_ssize_t __pyx_v_i;
  Py_ssize_t __pyx_v_j;
  Py_ssize_t __pyx_v_nleft;
  Py_ssize_t __pyx_v_nright;
  PyArrayObject *__pyx_v_indexer = 0;
  PyObject *__pyx_v_cur = 0;
  PyObject *__pyx_v_prev = 0;
  int __pyx_v_lim;
  int __pyx_v_fill_count;
  Py_buffer __pyx_bstruct_old;
  Py_ssize_t __pyx_bstride_0_old = 0;
  Py_ssize_t __pyx_bshape_0_old = 0;
  Py_buffer __pyx_bstruct_indexer;
  Py_ssize_t __pyx_bstride_0_indexer = 0;
  Py_ssize_t __pyx_bshape_0_indexer = 0;
  Py_buffer __pyx_bstruct_new;
  Py_ssize_t __pyx_bstride_0_new = 0;
  Py_ssize_t __pyx_bshape_0_new = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  Py_ssize_t __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  PyArrayObject *__pyx_t_7 = NULL;
  int __pyx_t_8;
  PyObject *__pyx_t_9 = NULL;
  PyObject *__pyx_t_10 = NULL;
  PyObject *__pyx_t_11 = NULL;
  int __pyx_t_12;
  int __pyx_t_13;
  long __pyx_t_14;
  int __pyx_t_15;
  int __pyx_t_16;
  Py_ssize_t __pyx_t_17;
  Py_ssize_t __pyx_t_18;
  Py_ssize_t __pyx_t_19;
  Py_ssize_t __pyx_t_20;
  Py_ssize_t __pyx_t_21;
  Py_ssize_t __pyx_t_22;
  Py_ssize_t __pyx_t_23;
  Py_ssize_t __pyx_t_24;
  Py_ssize_t __pyx_t_25;
  Py_ssize_t __pyx_t_26;
  Py_ssize_t __pyx_t_27;
  Py_ssize_t __pyx_t_28;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__old,&__pyx_n_s__new,&__pyx_n_s__limit,0};
  __Pyx_RefNannySetupContext("backfill_object");
  __pyx_self = __pyx_self;
  {
    PyObject* values[3] = {0,0,0};

    /* "pandas/src/generated.pyx":581
 * @cython.wraparound(False)
 * def backfill_object(ndarray[object] old, ndarray[object] new,
 *                       limit=None):             # <<<<<<<<<<<<<<
 *     cdef Py_ssize_t i, j, nleft, nright
 *     cdef ndarray[int64_t, ndim=1] indexer
 */
    values[2] = ((PyObject *)Py_None);
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  0:
        values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__old);
        if (likely(values[0])) kw_args--;
        else goto __pyx_L5_argtuple_error;
        case  1:
        values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__new);
        if (likely(values[1])) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("backfill_object", 0, 2, 3, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 580; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
        }
        case  2:
        if (kw_args > 0) {
          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__limit);
          if (value) { values[2] = value; kw_args--; }
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "backfill_object") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 580; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
    } else {
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_old = ((PyArrayObject *)values[0]);
    __pyx_v_new = ((PyArrayObject *)values[1]);
    __pyx_v_limit = values[2];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("backfill_object", 0, 2, 3, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 580; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("pandas._algos.backfill_object", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_bstruct_indexer.buf = NULL;
  __pyx_bstruct_old.buf = NULL;
  __pyx_bstruct_new.buf = NULL;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_old), __pyx_ptype_5numpy_ndarray, 1, "old", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 580; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_new), __pyx_ptype_5numpy_ndarray, 1, "new", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 580; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_old, (PyObject*)__pyx_v_old, &__Pyx_TypeInfo_object, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 580; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  }
  __pyx_bstride_0_old = __pyx_bstruct_old.strides[0];
  __pyx_bshape_0_old = __pyx_bstruct_old.shape[0];
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_new, (PyObject*)__pyx_v_new, &__Pyx_TypeInfo_object, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 580; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  }
  __pyx_bstride_0_new = __pyx_bstruct_new.strides[0];
  __pyx_bshape_0_new = __pyx_bstruct_new.shape[0];

  /* "pandas/src/generated.pyx":585
 *     cdef ndarray[int64_t, ndim=1] indexer
 *     cdef object cur, prev
 *     cdef int lim, fill_count = 0             # <<<<<<<<<<<<<<
 * 
 *     nleft = len(old)
 */
  __pyx_v_fill_count = 0;

  /* "pandas/src/generated.pyx":587
 *     cdef int lim, fill_count = 0
 * 
 *     nleft = len(old)             # <<<<<<<<<<<<<<
 *     nright = len(new)
 *     indexer = np.empty(nright, dtype=np.int64)
 */
  __pyx_t_1 = PyObject_Length(((PyObject *)__pyx_v_old)); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 587; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_v_nleft = __pyx_t_1;

  /* "pandas/src/generated.pyx":588
 * 
 *     nleft = len(old)
 *     nright = len(new)             # <<<<<<<<<<<<<<
 *     indexer = np.empty(nright, dtype=np.int64)
 *     indexer.fill(-1)
 */
  __pyx_t_1 = PyObject_Length(((PyObject *)__pyx_v_new)); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 588; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_v_nright = __pyx_t_1;

  /* "pandas/src/generated.pyx":589
 *     nleft = len(old)
 *     nright = len(new)
 *     indexer = np.empty(nright, dtype=np.int64)             # <<<<<<<<<<<<<<
 *     indexer.fill(-1)
 * 
 */
  __pyx_t_2 = __Pyx_GetName(__pyx_m, __pyx_n_s__np); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 589; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = PyObject_GetAttr(__pyx_t_2, __pyx_n_s__empty); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 589; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = PyInt_FromSsize_t(__pyx_v_nright); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 589; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 589; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_4));
  PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_2);
  __Pyx_GIVEREF(__pyx_t_2);
  __pyx_t_2 = 0;
  __pyx_t_2 = PyDict_New(); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 589; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_2));
  __pyx_t_5 = __Pyx_GetName(__pyx_m, __pyx_n_s__np); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 589; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_6 = PyObject_GetAttr(__pyx_t_5, __pyx_n_s__int64); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 589; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  if (PyDict_SetItem(__pyx_t_2, ((PyObject *)__pyx_n_s__dtype), __pyx_t_6) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 589; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __pyx_t_6 = PyEval_CallObjectWithKeywords(__pyx_t_3, ((PyObject *)__pyx_t_4), ((PyObject *)__pyx_t_2)); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 589; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_DECREF(((PyObject *)__pyx_t_4)); __pyx_t_4 = 0;
  __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0;
  if (!(likely(((__pyx_t_6) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_6, __pyx_ptype_5numpy_ndarray))))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 589; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_t_7 = ((PyArrayObject *)__pyx_t_6);
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    __Pyx_SafeReleaseBuffer(&__pyx_bstruct_indexer);
    __pyx_t_8 = __Pyx_GetBufferAndValidate(&__pyx_bstruct_indexer, (PyObject*)__pyx_t_7, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack);
    if (unlikely(__pyx_t_8 < 0)) {
      PyErr_Fetch(&__pyx_t_9, &__pyx_t_10, &__pyx_t_11);
      if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_indexer, (PyObject*)__pyx_v_indexer, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) {
        Py_XDECREF(__pyx_t_9); Py_XDECREF(__pyx_t_10); Py_XDECREF(__pyx_t_11);
        __Pyx_RaiseBufferFallbackError();
      } else {
        PyErr_Restore(__pyx_t_9, __pyx_t_10, __pyx_t_11);
      }
    }
    __pyx_bstride_0_indexer = __pyx_bstruct_indexer.strides[0];
    __pyx_bshape_0_indexer = __pyx_bstruct_indexer.shape[0];
    if (unlikely(__pyx_t_8 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 589; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  }
  __pyx_t_7 = 0;
  __pyx_v_indexer = ((PyArrayObject *)__pyx_t_6);
  __pyx_t_6 = 0;

  /* "pandas/src/generated.pyx":590
 *     nright = len(new)
 *     indexer = np.empty(nright, dtype=np.int64)
 *     indexer.fill(-1)             # <<<<<<<<<<<<<<
 * 
 *     if limit is None:
 */
  __pyx_t_6 = PyObject_GetAttr(((PyObject *)__pyx_v_indexer), __pyx_n_s__fill); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 590; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_2 = PyObject_Call(__pyx_t_6, ((PyObject *)__pyx_k_tuple_14), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 590; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "pandas/src/generated.pyx":592
 *     indexer.fill(-1)
 * 
 *     if limit is None:             # <<<<<<<<<<<<<<
 *         lim = nright
 *     else:
 */
  __pyx_t_12 = (__pyx_v_limit == Py_None);
  if (__pyx_t_12) {

    /* "pandas/src/generated.pyx":593
 * 
 *     if limit is None:
 *         lim = nright             # <<<<<<<<<<<<<<
 *     else:
 *         if limit < 0:
 */
    __pyx_v_lim = __pyx_v_nright;
    goto __pyx_L6;
  }
  /*else*/ {

    /* "pandas/src/generated.pyx":595
 *         lim = nright
 *     else:
 *         if limit < 0:             # <<<<<<<<<<<<<<
 *             raise ValueError('Limit must be non-negative')
 *         lim = limit
 */
    __pyx_t_2 = PyObject_RichCompare(__pyx_v_limit, __pyx_int_0, Py_LT); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 595; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_12 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_12 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 595; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    if (__pyx_t_12) {

      /* "pandas/src/generated.pyx":596
 *     else:
 *         if limit < 0:
 *             raise ValueError('Limit must be non-negative')             # <<<<<<<<<<<<<<
 *         lim = limit
 * 
 */
      __pyx_t_2 = PyObject_Call(__pyx_builtin_ValueError, ((PyObject *)__pyx_k_tuple_15), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 596; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_Raise(__pyx_t_2, 0, 0, 0);
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      {__pyx_filename = __pyx_f[0]; __pyx_lineno = 596; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      goto __pyx_L7;
    }
    __pyx_L7:;

    /* "pandas/src/generated.pyx":597
 *         if limit < 0:
 *             raise ValueError('Limit must be non-negative')
 *         lim = limit             # <<<<<<<<<<<<<<
 * 
 *     if nleft == 0 or nright == 0 or new[0] > old[nleft - 1]:
 */
    __pyx_t_8 = __Pyx_PyInt_AsInt(__pyx_v_limit); if (unlikely((__pyx_t_8 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 597; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __pyx_v_lim = __pyx_t_8;
  }
  __pyx_L6:;

  /* "pandas/src/generated.pyx":599
 *         lim = limit
 * 
 *     if nleft == 0 or nright == 0 or new[0] > old[nleft - 1]:             # <<<<<<<<<<<<<<
 *         return indexer
 * 
 */
  __pyx_t_12 = (__pyx_v_nleft == 0);
  if (!__pyx_t_12) {
    __pyx_t_13 = (__pyx_v_nright == 0);
    if (!__pyx_t_13) {
      __pyx_t_14 = 0;
      __pyx_t_2 = *__Pyx_BufPtrStrided1d(PyObject **, __pyx_bstruct_new.buf, __pyx_t_14, __pyx_bstride_0_new);
      __Pyx_INCREF((PyObject*)__pyx_t_2);
      __pyx_t_1 = (__pyx_v_nleft - 1);
      __pyx_t_6 = *__Pyx_BufPtrStrided1d(PyObject **, __pyx_bstruct_old.buf, __pyx_t_1, __pyx_bstride_0_old);
      __Pyx_INCREF((PyObject*)__pyx_t_6);
      __pyx_t_4 = PyObject_RichCompare(__pyx_t_2, __pyx_t_6, Py_GT); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 599; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      __pyx_t_15 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_15 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 599; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __pyx_t_16 = __pyx_t_15;
    } else {
      __pyx_t_16 = __pyx_t_13;
    }
    __pyx_t_13 = __pyx_t_16;
  } else {
    __pyx_t_13 = __pyx_t_12;
  }
  if (__pyx_t_13) {

    /* "pandas/src/generated.pyx":600
 * 
 *     if nleft == 0 or nright == 0 or new[0] > old[nleft - 1]:
 *         return indexer             # <<<<<<<<<<<<<<
 * 
 *     i = nleft - 1
 */
    __Pyx_XDECREF(__pyx_r);
    __Pyx_INCREF(((PyObject *)__pyx_v_indexer));
    __pyx_r = ((PyObject *)__pyx_v_indexer);
    goto __pyx_L0;
    goto __pyx_L8;
  }
  __pyx_L8:;

  /* "pandas/src/generated.pyx":602
 *         return indexer
 * 
 *     i = nleft - 1             # <<<<<<<<<<<<<<
 *     j = nright - 1
 * 
 */
  __pyx_v_i = (__pyx_v_nleft - 1);

  /* "pandas/src/generated.pyx":603
 * 
 *     i = nleft - 1
 *     j = nright - 1             # <<<<<<<<<<<<<<
 * 
 *     cur = old[nleft - 1]
 */
  __pyx_v_j = (__pyx_v_nright - 1);

  /* "pandas/src/generated.pyx":605
 *     j = nright - 1
 * 
 *     cur = old[nleft - 1]             # <<<<<<<<<<<<<<
 * 
 *     while j >= 0 and new[j] > cur:
 */
  __pyx_t_17 = (__pyx_v_nleft - 1);
  __pyx_t_4 = *__Pyx_BufPtrStrided1d(PyObject **, __pyx_bstruct_old.buf, __pyx_t_17, __pyx_bstride_0_old);
  __Pyx_INCREF((PyObject*)__pyx_t_4);
  __pyx_v_cur = __pyx_t_4;
  __pyx_t_4 = 0;

  /* "pandas/src/generated.pyx":607
 *     cur = old[nleft - 1]
 * 
 *     while j >= 0 and new[j] > cur:             # <<<<<<<<<<<<<<
 *         j -= 1
 * 
 */
  while (1) {
    __pyx_t_13 = (__pyx_v_j >= 0);
    if (__pyx_t_13) {
      __pyx_t_18 = __pyx_v_j;
      __pyx_t_4 = *__Pyx_BufPtrStrided1d(PyObject **, __pyx_bstruct_new.buf, __pyx_t_18, __pyx_bstride_0_new);
      __Pyx_INCREF((PyObject*)__pyx_t_4);
      __pyx_t_6 = PyObject_RichCompare(__pyx_t_4, __pyx_v_cur, Py_GT); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 607; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_6);
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __pyx_t_12 = __Pyx_PyObject_IsTrue(__pyx_t_6); if (unlikely(__pyx_t_12 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 607; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      __pyx_t_16 = __pyx_t_12;
    } else {
      __pyx_t_16 = __pyx_t_13;
    }
    if (!__pyx_t_16) break;

    /* "pandas/src/generated.pyx":608
 * 
 *     while j >= 0 and new[j] > cur:
 *         j -= 1             # <<<<<<<<<<<<<<
 * 
 *     while True:
 */
    __pyx_v_j = (__pyx_v_j - 1);
  }

  /* "pandas/src/generated.pyx":610
 *         j -= 1
 * 
 *     while True:             # <<<<<<<<<<<<<<
 *         if j < 0:
 *             break
 */
  while (1) {
    if (!1) break;

    /* "pandas/src/generated.pyx":611
 * 
 *     while True:
 *         if j < 0:             # <<<<<<<<<<<<<<
 *             break
 * 
 */
    __pyx_t_16 = (__pyx_v_j < 0);
    if (__pyx_t_16) {

      /* "pandas/src/generated.pyx":612
 *     while True:
 *         if j < 0:
 *             break             # <<<<<<<<<<<<<<
 * 
 *         if i == 0:
 */
      goto __pyx_L12_break;
      goto __pyx_L13;
    }
    __pyx_L13:;

    /* "pandas/src/generated.pyx":614
 *             break
 * 
 *         if i == 0:             # <<<<<<<<<<<<<<
 *             while j >= 0:
 *                 if new[j] == cur:
 */
    __pyx_t_16 = (__pyx_v_i == 0);
    if (__pyx_t_16) {

      /* "pandas/src/generated.pyx":615
 * 
 *         if i == 0:
 *             while j >= 0:             # <<<<<<<<<<<<<<
 *                 if new[j] == cur:
 *                     indexer[j] = i
 */
      while (1) {
        __pyx_t_16 = (__pyx_v_j >= 0);
        if (!__pyx_t_16) break;

        /* "pandas/src/generated.pyx":616
 *         if i == 0:
 *             while j >= 0:
 *                 if new[j] == cur:             # <<<<<<<<<<<<<<
 *                     indexer[j] = i
 *                 elif new[j] < cur and fill_count < lim:
 */
        __pyx_t_19 = __pyx_v_j;
        __pyx_t_6 = *__Pyx_BufPtrStrided1d(PyObject **, __pyx_bstruct_new.buf, __pyx_t_19, __pyx_bstride_0_new);
        __Pyx_INCREF((PyObject*)__pyx_t_6);
        __pyx_t_4 = PyObject_RichCompare(__pyx_t_6, __pyx_v_cur, Py_EQ); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 616; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_GOTREF(__pyx_t_4);
        __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
        __pyx_t_16 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_16 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 616; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
        if (__pyx_t_16) {

          /* "pandas/src/generated.pyx":617
 *             while j >= 0:
 *                 if new[j] == cur:
 *                     indexer[j] = i             # <<<<<<<<<<<<<<
 *                 elif new[j] < cur and fill_count < lim:
 *                     indexer[j] = i
 */
          __pyx_t_20 = __pyx_v_j;
          *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_bstruct_indexer.buf, __pyx_t_20, __pyx_bstride_0_indexer) = __pyx_v_i;
          goto __pyx_L17;
        }

        /* "pandas/src/generated.pyx":618
 *                 if new[j] == cur:
 *                     indexer[j] = i
 *                 elif new[j] < cur and fill_count < lim:             # <<<<<<<<<<<<<<
 *                     indexer[j] = i
 *                     fill_count += 1
 */
        __pyx_t_21 = __pyx_v_j;
        __pyx_t_4 = *__Pyx_BufPtrStrided1d(PyObject **, __pyx_bstruct_new.buf, __pyx_t_21, __pyx_bstride_0_new);
        __Pyx_INCREF((PyObject*)__pyx_t_4);
        __pyx_t_6 = PyObject_RichCompare(__pyx_t_4, __pyx_v_cur, Py_LT); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 618; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_GOTREF(__pyx_t_6);
        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
        __pyx_t_16 = __Pyx_PyObject_IsTrue(__pyx_t_6); if (unlikely(__pyx_t_16 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 618; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
        if (__pyx_t_16) {
          __pyx_t_13 = (__pyx_v_fill_count < __pyx_v_lim);
          __pyx_t_12 = __pyx_t_13;
        } else {
          __pyx_t_12 = __pyx_t_16;
        }
        if (__pyx_t_12) {

          /* "pandas/src/generated.pyx":619
 *                     indexer[j] = i
 *                 elif new[j] < cur and fill_count < lim:
 *                     indexer[j] = i             # <<<<<<<<<<<<<<
 *                     fill_count += 1
 *                 j -= 1
 */
          __pyx_t_22 = __pyx_v_j;
          *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_bstruct_indexer.buf, __pyx_t_22, __pyx_bstride_0_indexer) = __pyx_v_i;

          /* "pandas/src/generated.pyx":620
 *                 elif new[j] < cur and fill_count < lim:
 *                     indexer[j] = i
 *                     fill_count += 1             # <<<<<<<<<<<<<<
 *                 j -= 1
 *             break
 */
          __pyx_v_fill_count = (__pyx_v_fill_count + 1);
          goto __pyx_L17;
        }
        __pyx_L17:;

        /* "pandas/src/generated.pyx":621
 *                     indexer[j] = i
 *                     fill_count += 1
 *                 j -= 1             # <<<<<<<<<<<<<<
 *             break
 * 
 */
        __pyx_v_j = (__pyx_v_j - 1);
      }

      /* "pandas/src/generated.pyx":622
 *                     fill_count += 1
 *                 j -= 1
 *             break             # <<<<<<<<<<<<<<
 * 
 *         prev = old[i - 1]
 */
      goto __pyx_L12_break;
      goto __pyx_L14;
    }
    __pyx_L14:;

    /* "pandas/src/generated.pyx":624
 *             break
 * 
 *         prev = old[i - 1]             # <<<<<<<<<<<<<<
 * 
 *         while j >= 0 and prev < new[j] <= cur:
 */
    __pyx_t_23 = (__pyx_v_i - 1);
    __pyx_t_6 = *__Pyx_BufPtrStrided1d(PyObject **, __pyx_bstruct_old.buf, __pyx_t_23, __pyx_bstride_0_old);
    __Pyx_INCREF((PyObject*)__pyx_t_6);
    __Pyx_XDECREF(__pyx_v_prev);
    __pyx_v_prev = __pyx_t_6;
    __pyx_t_6 = 0;

    /* "pandas/src/generated.pyx":626
 *         prev = old[i - 1]
 * 
 *         while j >= 0 and prev < new[j] <= cur:             # <<<<<<<<<<<<<<
 *             if new[j] == cur:
 *                 indexer[j] = i
 */
    while (1) {
      __pyx_t_12 = (__pyx_v_j >= 0);
      if (__pyx_t_12) {
        __pyx_t_24 = __pyx_v_j;
        __pyx_t_6 = *__Pyx_BufPtrStrided1d(PyObject **, __pyx_bstruct_new.buf, __pyx_t_24, __pyx_bstride_0_new);
        __Pyx_INCREF((PyObject*)__pyx_t_6);
        __pyx_t_4 = PyObject_RichCompare(__pyx_v_prev, __pyx_t_6, Py_LT); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 626; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_GOTREF(__pyx_t_4);
        if (__Pyx_PyObject_IsTrue(__pyx_t_4)) {
          __Pyx_DECREF(__pyx_t_4);
          __pyx_t_4 = PyObject_RichCompare(__pyx_t_6, __pyx_v_cur, Py_LE); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 626; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
          __Pyx_GOTREF(__pyx_t_4);
        }
        __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
        __pyx_t_16 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_16 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 626; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
        __pyx_t_13 = __pyx_t_16;
      } else {
        __pyx_t_13 = __pyx_t_12;
      }
      if (!__pyx_t_13) break;

      /* "pandas/src/generated.pyx":627
 * 
 *         while j >= 0 and prev < new[j] <= cur:
 *             if new[j] == cur:             # <<<<<<<<<<<<<<
 *                 indexer[j] = i
 *             elif new[j] < cur and fill_count < lim:
 */
      __pyx_t_25 = __pyx_v_j;
      __pyx_t_4 = *__Pyx_BufPtrStrided1d(PyObject **, __pyx_bstruct_new.buf, __pyx_t_25, __pyx_bstride_0_new);
      __Pyx_INCREF((PyObject*)__pyx_t_4);
      __pyx_t_6 = PyObject_RichCompare(__pyx_t_4, __pyx_v_cur, Py_EQ); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 627; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_6);
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __pyx_t_13 = __Pyx_PyObject_IsTrue(__pyx_t_6); if (unlikely(__pyx_t_13 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 627; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      if (__pyx_t_13) {

        /* "pandas/src/generated.pyx":628
 *         while j >= 0 and prev < new[j] <= cur:
 *             if new[j] == cur:
 *                 indexer[j] = i             # <<<<<<<<<<<<<<
 *             elif new[j] < cur and fill_count < lim:
 *                 indexer[j] = i
 */
        __pyx_t_26 = __pyx_v_j;
        *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_bstruct_indexer.buf, __pyx_t_26, __pyx_bstride_0_indexer) = __pyx_v_i;
        goto __pyx_L20;
      }

      /* "pandas/src/generated.pyx":629
 *             if new[j] == cur:
 *                 indexer[j] = i
 *             elif new[j] < cur and fill_count < lim:             # <<<<<<<<<<<<<<
 *                 indexer[j] = i
 *                 fill_count += 1
 */
      __pyx_t_27 = __pyx_v_j;
      __pyx_t_6 = *__Pyx_BufPtrStrided1d(PyObject **, __pyx_bstruct_new.buf, __pyx_t_27, __pyx_bstride_0_new);
      __Pyx_INCREF((PyObject*)__pyx_t_6);
      __pyx_t_4 = PyObject_RichCompare(__pyx_t_6, __pyx_v_cur, Py_LT); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 629; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      __pyx_t_13 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_13 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 629; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      if (__pyx_t_13) {
        __pyx_t_12 = (__pyx_v_fill_count < __pyx_v_lim);
        __pyx_t_16 = __pyx_t_12;
      } else {
        __pyx_t_16 = __pyx_t_13;
      }
      if (__pyx_t_16) {

        /* "pandas/src/generated.pyx":630
 *                 indexer[j] = i
 *             elif new[j] < cur and fill_count < lim:
 *                 indexer[j] = i             # <<<<<<<<<<<<<<
 *                 fill_count += 1
 *             j -= 1
 */
        __pyx_t_28 = __pyx_v_j;
        *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_bstruct_indexer.buf, __pyx_t_28, __pyx_bstride_0_indexer) = __pyx_v_i;

        /* "pandas/src/generated.pyx":631
 *             elif new[j] < cur and fill_count < lim:
 *                 indexer[j] = i
 *                 fill_count += 1             # <<<<<<<<<<<<<<
 *             j -= 1
 * 
 */
        __pyx_v_fill_count = (__pyx_v_fill_count + 1);
        goto __pyx_L20;
      }
      __pyx_L20:;

      /* "pandas/src/generated.pyx":632
 *                 indexer[j] = i
 *                 fill_count += 1
 *             j -= 1             # <<<<<<<<<<<<<<
 * 
 *         fill_count = 0
 */
      __pyx_v_j = (__pyx_v_j - 1);
    }

    /* "pandas/src/generated.pyx":634
 *             j -= 1
 * 
 *         fill_count = 0             # <<<<<<<<<<<<<<
 *         i -= 1
 *         cur = prev
 */
    __pyx_v_fill_count = 0;

    /* "pandas/src/generated.pyx":635
 * 
 *         fill_count = 0
 *         i -= 1             # <<<<<<<<<<<<<<
 *         cur = prev
 * 
 */
    __pyx_v_i = (__pyx_v_i - 1);

    /* "pandas/src/generated.pyx":636
 *         fill_count = 0
 *         i -= 1
 *         cur = prev             # <<<<<<<<<<<<<<
 * 
 *     return indexer
 */
    __Pyx_INCREF(__pyx_v_prev);
    __Pyx_DECREF(__pyx_v_cur);
    __pyx_v_cur = __pyx_v_prev;
  }
  __pyx_L12_break:;

  /* "pandas/src/generated.pyx":638
 *         cur = prev
 * 
 *     return indexer             # <<<<<<<<<<<<<<
 * 
 * @cython.boundscheck(False)
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_indexer));
  __pyx_r = ((PyObject *)__pyx_v_indexer);
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  { PyObject *__pyx_type, *__pyx_value, *__pyx_tb;
    __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);
    __Pyx_SafeReleaseBuffer(&__pyx_bstruct_old);
    __Pyx_SafeReleaseBuffer(&__pyx_bstruct_indexer);
    __Pyx_SafeReleaseBuffer(&__pyx_bstruct_new);
  __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);}
  __Pyx_AddTraceback("pandas._algos.backfill_object", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  goto __pyx_L2;
  __pyx_L0:;
  __Pyx_SafeReleaseBuffer(&__pyx_bstruct_old);
  __Pyx_SafeReleaseBuffer(&__pyx_bstruct_indexer);
  __Pyx_SafeReleaseBuffer(&__pyx_bstruct_new);
  __pyx_L2:;
  __Pyx_XDECREF((PyObject *)__pyx_v_indexer);
  __Pyx_XDECREF(__pyx_v_cur);
  __Pyx_XDECREF(__pyx_v_prev);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "pandas/src/generated.pyx":642
 * @cython.boundscheck(False)
 * @cython.wraparound(False)
 * def backfill_int32(ndarray[int32_t] old, ndarray[int32_t] new,             # <<<<<<<<<<<<<<
 *                       limit=None):
 *     cdef Py_ssize_t i, j, nleft, nright
 */

static PyObject *__pyx_pf_6pandas_6_algos_17backfill_int32(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_6pandas_6_algos_17backfill_int32 = {__Pyx_NAMESTR("backfill_int32"), (PyCFunction)__pyx_pf_6pandas_6_algos_17backfill_int32, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(0)};
static PyObject *__pyx_pf_6pandas_6_algos_17backfill_int32(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyArrayObject *__pyx_v_old = 0;
  PyArrayObject *__pyx_v_new = 0;
  PyObject *__pyx_v_limit = 0;
  Py_ssize_t __pyx_v_i;
  Py_ssize_t __pyx_v_j;
  Py_ssize_t __pyx_v_nleft;
  Py_ssize_t __pyx_v_nright;
  PyArrayObject *__pyx_v_indexer = 0;
  __pyx_t_5numpy_int32_t __pyx_v_cur;
  __pyx_t_5numpy_int32_t __pyx_v_prev;
  int __pyx_v_lim;
  int __pyx_v_fill_count;
  Py_buffer __pyx_bstruct_old;
  Py_ssize_t __pyx_bstride_0_old = 0;
  Py_ssize_t __pyx_bshape_0_old = 0;
  Py_buffer __pyx_bstruct_indexer;
  Py_ssize_t __pyx_bstride_0_indexer = 0;
  Py_ssize_t __pyx_bshape_0_indexer = 0;
  Py_buffer __pyx_bstruct_new;
  Py_ssize_t __pyx_bstride_0_new = 0;
  Py_ssize_t __pyx_bshape_0_new = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  Py_ssize_t __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  PyArrayObject *__pyx_t_7 = NULL;
  int __pyx_t_8;
  PyObject *__pyx_t_9 = NULL;
  PyObject *__pyx_t_10 = NULL;
  PyObject *__pyx_t_11 = NULL;
  int __pyx_t_12;
  int __pyx_t_13;
  long __pyx_t_14;
  int __pyx_t_15;
  int __pyx_t_16;
  Py_ssize_t __pyx_t_17;
  Py_ssize_t __pyx_t_18;
  Py_ssize_t __pyx_t_19;
  Py_ssize_t __pyx_t_20;
  Py_ssize_t __pyx_t_21;
  Py_ssize_t __pyx_t_22;
  Py_ssize_t __pyx_t_23;
  Py_ssize_t __pyx_t_24;
  __pyx_t_5numpy_int32_t __pyx_t_25;
  Py_ssize_t __pyx_t_26;
  Py_ssize_t __pyx_t_27;
  Py_ssize_t __pyx_t_28;
  Py_ssize_t __pyx_t_29;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__old,&__pyx_n_s__new,&__pyx_n_s__limit,0};
  __Pyx_RefNannySetupContext("backfill_int32");
  __pyx_self = __pyx_self;
  {
    PyObject* values[3] = {0,0,0};

    /* "pandas/src/generated.pyx":643
 * @cython.wraparound(False)
 * def backfill_int32(ndarray[int32_t] old, ndarray[int32_t] new,
 *                       limit=None):             # <<<<<<<<<<<<<<
 *     cdef Py_ssize_t i, j, nleft, nright
 *     cdef ndarray[int64_t, ndim=1] indexer
 */
    values[2] = ((PyObject *)Py_None);
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  0:
        values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__old);
        if (likely(values[0])) kw_args--;
        else goto __pyx_L5_argtuple_error;
        case  1:
        values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__new);
        if (likely(values[1])) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("backfill_int32", 0, 2, 3, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 642; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
        }
        case  2:
        if (kw_args > 0) {
          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__limit);
          if (value) { values[2] = value; kw_args--; }
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "backfill_int32") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 642; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
    } else {
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_old = ((PyArrayObject *)values[0]);
    __pyx_v_new = ((PyArrayObject *)values[1]);
    __pyx_v_limit = values[2];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("backfill_int32", 0, 2, 3, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 642; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("pandas._algos.backfill_int32", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_bstruct_indexer.buf = NULL;
  __pyx_bstruct_old.buf = NULL;
  __pyx_bstruct_new.buf = NULL;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_old), __pyx_ptype_5numpy_ndarray, 1, "old", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 642; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_new), __pyx_ptype_5numpy_ndarray, 1, "new", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 642; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_old, (PyObject*)__pyx_v_old, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int32_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 642; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  }
  __pyx_bstride_0_old = __pyx_bstruct_old.strides[0];
  __pyx_bshape_0_old = __pyx_bstruct_old.shape[0];
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_new, (PyObject*)__pyx_v_new, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int32_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 642; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  }
  __pyx_bstride_0_new = __pyx_bstruct_new.strides[0];
  __pyx_bshape_0_new = __pyx_bstruct_new.shape[0];

  /* "pandas/src/generated.pyx":647
 *     cdef ndarray[int64_t, ndim=1] indexer
 *     cdef int32_t cur, prev
 *     cdef int lim, fill_count = 0             # <<<<<<<<<<<<<<
 * 
 *     nleft = len(old)
 */
  __pyx_v_fill_count = 0;

  /* "pandas/src/generated.pyx":649
 *     cdef int lim, fill_count = 0
 * 
 *     nleft = len(old)             # <<<<<<<<<<<<<<
 *     nright = len(new)
 *     indexer = np.empty(nright, dtype=np.int64)
 */
  __pyx_t_1 = PyObject_Length(((PyObject *)__pyx_v_old)); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 649; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_v_nleft = __pyx_t_1;

  /* "pandas/src/generated.pyx":650
 * 
 *     nleft = len(old)
 *     nright = len(new)             # <<<<<<<<<<<<<<
 *     indexer = np.empty(nright, dtype=np.int64)
 *     indexer.fill(-1)
 */
  __pyx_t_1 = PyObject_Length(((PyObject *)__pyx_v_new)); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 650; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_v_nright = __pyx_t_1;

  /* "pandas/src/generated.pyx":651
 *     nleft = len(old)
 *     nright = len(new)
 *     indexer = np.empty(nright, dtype=np.int64)             # <<<<<<<<<<<<<<
 *     indexer.fill(-1)
 * 
 */
  __pyx_t_2 = __Pyx_GetName(__pyx_m, __pyx_n_s__np); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 651; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = PyObject_GetAttr(__pyx_t_2, __pyx_n_s__empty); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 651; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = PyInt_FromSsize_t(__pyx_v_nright); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 651; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 651; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_4));
  PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_2);
  __Pyx_GIVEREF(__pyx_t_2);
  __pyx_t_2 = 0;
  __pyx_t_2 = PyDict_New(); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 651; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_2));
  __pyx_t_5 = __Pyx_GetName(__pyx_m, __pyx_n_s__np); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 651; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_6 = PyObject_GetAttr(__pyx_t_5, __pyx_n_s__int64); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 651; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  if (PyDict_SetItem(__pyx_t_2, ((PyObject *)__pyx_n_s__dtype), __pyx_t_6) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 651; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __pyx_t_6 = PyEval_CallObjectWithKeywords(__pyx_t_3, ((PyObject *)__pyx_t_4), ((PyObject *)__pyx_t_2)); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 651; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_DECREF(((PyObject *)__pyx_t_4)); __pyx_t_4 = 0;
  __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0;
  if (!(likely(((__pyx_t_6) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_6, __pyx_ptype_5numpy_ndarray))))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 651; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_t_7 = ((PyArrayObject *)__pyx_t_6);
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    __Pyx_SafeReleaseBuffer(&__pyx_bstruct_indexer);
    __pyx_t_8 = __Pyx_GetBufferAndValidate(&__pyx_bstruct_indexer, (PyObject*)__pyx_t_7, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack);
    if (unlikely(__pyx_t_8 < 0)) {
      PyErr_Fetch(&__pyx_t_9, &__pyx_t_10, &__pyx_t_11);
      if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_indexer, (PyObject*)__pyx_v_indexer, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) {
        Py_XDECREF(__pyx_t_9); Py_XDECREF(__pyx_t_10); Py_XDECREF(__pyx_t_11);
        __Pyx_RaiseBufferFallbackError();
      } else {
        PyErr_Restore(__pyx_t_9, __pyx_t_10, __pyx_t_11);
      }
    }
    __pyx_bstride_0_indexer = __pyx_bstruct_indexer.strides[0];
    __pyx_bshape_0_indexer = __pyx_bstruct_indexer.shape[0];
    if (unlikely(__pyx_t_8 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 651; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  }
  __pyx_t_7 = 0;
  __pyx_v_indexer = ((PyArrayObject *)__pyx_t_6);
  __pyx_t_6 = 0;

  /* "pandas/src/generated.pyx":652
 *     nright = len(new)
 *     indexer = np.empty(nright, dtype=np.int64)
 *     indexer.fill(-1)             # <<<<<<<<<<<<<<
 * 
 *     if limit is None:
 */
  __pyx_t_6 = PyObject_GetAttr(((PyObject *)__pyx_v_indexer), __pyx_n_s__fill); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 652; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_2 = PyObject_Call(__pyx_t_6, ((PyObject *)__pyx_k_tuple_16), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 652; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "pandas/src/generated.pyx":654
 *     indexer.fill(-1)
 * 
 *     if limit is None:             # <<<<<<<<<<<<<<
 *         lim = nright
 *     else:
 */
  __pyx_t_12 = (__pyx_v_limit == Py_None);
  if (__pyx_t_12) {

    /* "pandas/src/generated.pyx":655
 * 
 *     if limit is None:
 *         lim = nright             # <<<<<<<<<<<<<<
 *     else:
 *         if limit < 0:
 */
    __pyx_v_lim = __pyx_v_nright;
    goto __pyx_L6;
  }
  /*else*/ {

    /* "pandas/src/generated.pyx":657
 *         lim = nright
 *     else:
 *         if limit < 0:             # <<<<<<<<<<<<<<
 *             raise ValueError('Limit must be non-negative')
 *         lim = limit
 */
    __pyx_t_2 = PyObject_RichCompare(__pyx_v_limit, __pyx_int_0, Py_LT); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 657; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_12 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_12 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 657; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    if (__pyx_t_12) {

      /* "pandas/src/generated.pyx":658
 *     else:
 *         if limit < 0:
 *             raise ValueError('Limit must be non-negative')             # <<<<<<<<<<<<<<
 *         lim = limit
 * 
 */
      __pyx_t_2 = PyObject_Call(__pyx_builtin_ValueError, ((PyObject *)__pyx_k_tuple_17), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 658; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_Raise(__pyx_t_2, 0, 0, 0);
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      {__pyx_filename = __pyx_f[0]; __pyx_lineno = 658; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      goto __pyx_L7;
    }
    __pyx_L7:;

    /* "pandas/src/generated.pyx":659
 *         if limit < 0:
 *             raise ValueError('Limit must be non-negative')
 *         lim = limit             # <<<<<<<<<<<<<<
 * 
 *     if nleft == 0 or nright == 0 or new[0] > old[nleft - 1]:
 */
    __pyx_t_8 = __Pyx_PyInt_AsInt(__pyx_v_limit); if (unlikely((__pyx_t_8 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 659; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __pyx_v_lim = __pyx_t_8;
  }
  __pyx_L6:;

  /* "pandas/src/generated.pyx":661
 *         lim = limit
 * 
 *     if nleft == 0 or nright == 0 or new[0] > old[nleft - 1]:             # <<<<<<<<<<<<<<
 *         return indexer
 * 
 */
  __pyx_t_12 = (__pyx_v_nleft == 0);
  if (!__pyx_t_12) {
    __pyx_t_13 = (__pyx_v_nright == 0);
    if (!__pyx_t_13) {
      __pyx_t_14 = 0;
      __pyx_t_1 = (__pyx_v_nleft - 1);
      __pyx_t_15 = ((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int32_t *, __pyx_bstruct_new.buf, __pyx_t_14, __pyx_bstride_0_new)) > (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int32_t *, __pyx_bstruct_old.buf, __pyx_t_1, __pyx_bstride_0_old)));
      __pyx_t_16 = __pyx_t_15;
    } else {
      __pyx_t_16 = __pyx_t_13;
    }
    __pyx_t_13 = __pyx_t_16;
  } else {
    __pyx_t_13 = __pyx_t_12;
  }
  if (__pyx_t_13) {

    /* "pandas/src/generated.pyx":662
 * 
 *     if nleft == 0 or nright == 0 or new[0] > old[nleft - 1]:
 *         return indexer             # <<<<<<<<<<<<<<
 * 
 *     i = nleft - 1
 */
    __Pyx_XDECREF(__pyx_r);
    __Pyx_INCREF(((PyObject *)__pyx_v_indexer));
    __pyx_r = ((PyObject *)__pyx_v_indexer);
    goto __pyx_L0;
    goto __pyx_L8;
  }
  __pyx_L8:;

  /* "pandas/src/generated.pyx":664
 *         return indexer
 * 
 *     i = nleft - 1             # <<<<<<<<<<<<<<
 *     j = nright - 1
 * 
 */
  __pyx_v_i = (__pyx_v_nleft - 1);

  /* "pandas/src/generated.pyx":665
 * 
 *     i = nleft - 1
 *     j = nright - 1             # <<<<<<<<<<<<<<
 * 
 *     cur = old[nleft - 1]
 */
  __pyx_v_j = (__pyx_v_nright - 1);

  /* "pandas/src/generated.pyx":667
 *     j = nright - 1
 * 
 *     cur = old[nleft - 1]             # <<<<<<<<<<<<<<
 * 
 *     while j >= 0 and new[j] > cur:
 */
  __pyx_t_17 = (__pyx_v_nleft - 1);
  __pyx_v_cur = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int32_t *, __pyx_bstruct_old.buf, __pyx_t_17, __pyx_bstride_0_old));

  /* "pandas/src/generated.pyx":669
 *     cur = old[nleft - 1]
 * 
 *     while j >= 0 and new[j] > cur:             # <<<<<<<<<<<<<<
 *         j -= 1
 * 
 */
  while (1) {
    __pyx_t_13 = (__pyx_v_j >= 0);
    if (__pyx_t_13) {
      __pyx_t_18 = __pyx_v_j;
      __pyx_t_12 = ((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int32_t *, __pyx_bstruct_new.buf, __pyx_t_18, __pyx_bstride_0_new)) > __pyx_v_cur);
      __pyx_t_16 = __pyx_t_12;
    } else {
      __pyx_t_16 = __pyx_t_13;
    }
    if (!__pyx_t_16) break;

    /* "pandas/src/generated.pyx":670
 * 
 *     while j >= 0 and new[j] > cur:
 *         j -= 1             # <<<<<<<<<<<<<<
 * 
 *     while True:
 */
    __pyx_v_j = (__pyx_v_j - 1);
  }

  /* "pandas/src/generated.pyx":672
 *         j -= 1
 * 
 *     while True:             # <<<<<<<<<<<<<<
 *         if j < 0:
 *             break
 */
  while (1) {
    if (!1) break;

    /* "pandas/src/generated.pyx":673
 * 
 *     while True:
 *         if j < 0:             # <<<<<<<<<<<<<<
 *             break
 * 
 */
    __pyx_t_16 = (__pyx_v_j < 0);
    if (__pyx_t_16) {

      /* "pandas/src/generated.pyx":674
 *     while True:
 *         if j < 0:
 *             break             # <<<<<<<<<<<<<<
 * 
 *         if i == 0:
 */
      goto __pyx_L12_break;
      goto __pyx_L13;
    }
    __pyx_L13:;

    /* "pandas/src/generated.pyx":676
 *             break
 * 
 *         if i == 0:             # <<<<<<<<<<<<<<
 *             while j >= 0:
 *                 if new[j] == cur:
 */
    __pyx_t_16 = (__pyx_v_i == 0);
    if (__pyx_t_16) {

      /* "pandas/src/generated.pyx":677
 * 
 *         if i == 0:
 *             while j >= 0:             # <<<<<<<<<<<<<<
 *                 if new[j] == cur:
 *                     indexer[j] = i
 */
      while (1) {
        __pyx_t_16 = (__pyx_v_j >= 0);
        if (!__pyx_t_16) break;

        /* "pandas/src/generated.pyx":678
 *         if i == 0:
 *             while j >= 0:
 *                 if new[j] == cur:             # <<<<<<<<<<<<<<
 *                     indexer[j] = i
 *                 elif new[j] < cur and fill_count < lim:
 */
        __pyx_t_19 = __pyx_v_j;
        __pyx_t_16 = ((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int32_t *, __pyx_bstruct_new.buf, __pyx_t_19, __pyx_bstride_0_new)) == __pyx_v_cur);
        if (__pyx_t_16) {

          /* "pandas/src/generated.pyx":679
 *             while j >= 0:
 *                 if new[j] == cur:
 *                     indexer[j] = i             # <<<<<<<<<<<<<<
 *                 elif new[j] < cur and fill_count < lim:
 *                     indexer[j] = i
 */
          __pyx_t_20 = __pyx_v_j;
          *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_bstruct_indexer.buf, __pyx_t_20, __pyx_bstride_0_indexer) = __pyx_v_i;
          goto __pyx_L17;
        }

        /* "pandas/src/generated.pyx":680
 *                 if new[j] == cur:
 *                     indexer[j] = i
 *                 elif new[j] < cur and fill_count < lim:             # <<<<<<<<<<<<<<
 *                     indexer[j] = i
 *                     fill_count += 1
 */
        __pyx_t_21 = __pyx_v_j;
        __pyx_t_16 = ((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int32_t *, __pyx_bstruct_new.buf, __pyx_t_21, __pyx_bstride_0_new)) < __pyx_v_cur);
        if (__pyx_t_16) {
          __pyx_t_13 = (__pyx_v_fill_count < __pyx_v_lim);
          __pyx_t_12 = __pyx_t_13;
        } else {
          __pyx_t_12 = __pyx_t_16;
        }
        if (__pyx_t_12) {

          /* "pandas/src/generated.pyx":681
 *                     indexer[j] = i
 *                 elif new[j] < cur and fill_count < lim:
 *                     indexer[j] = i             # <<<<<<<<<<<<<<
 *                     fill_count += 1
 *                 j -= 1
 */
          __pyx_t_22 = __pyx_v_j;
          *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_bstruct_indexer.buf, __pyx_t_22, __pyx_bstride_0_indexer) = __pyx_v_i;

          /* "pandas/src/generated.pyx":682
 *                 elif new[j] < cur and fill_count < lim:
 *                     indexer[j] = i
 *                     fill_count += 1             # <<<<<<<<<<<<<<
 *                 j -= 1
 *             break
 */
          __pyx_v_fill_count = (__pyx_v_fill_count + 1);
          goto __pyx_L17;
        }
        __pyx_L17:;

        /* "pandas/src/generated.pyx":683
 *                     indexer[j] = i
 *                     fill_count += 1
 *                 j -= 1             # <<<<<<<<<<<<<<
 *             break
 * 
 */
        __pyx_v_j = (__pyx_v_j - 1);
      }

      /* "pandas/src/generated.pyx":684
 *                     fill_count += 1
 *                 j -= 1
 *             break             # <<<<<<<<<<<<<<
 * 
 *         prev = old[i - 1]
 */
      goto __pyx_L12_break;
      goto __pyx_L14;
    }
    __pyx_L14:;

    /* "pandas/src/generated.pyx":686
 *             break
 * 
 *         prev = old[i - 1]             # <<<<<<<<<<<<<<
 * 
 *         while j >= 0 and prev < new[j] <= cur:
 */
    __pyx_t_23 = (__pyx_v_i - 1);
    __pyx_v_prev = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int32_t *, __pyx_bstruct_old.buf, __pyx_t_23, __pyx_bstride_0_old));

    /* "pandas/src/generated.pyx":688
 *         prev = old[i - 1]
 * 
 *         while j >= 0 and prev < new[j] <= cur:             # <<<<<<<<<<<<<<
 *             if new[j] == cur:
 *                 indexer[j] = i
 */
    while (1) {
      __pyx_t_12 = (__pyx_v_j >= 0);
      if (__pyx_t_12) {
        __pyx_t_24 = __pyx_v_j;
        __pyx_t_25 = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int32_t *, __pyx_bstruct_new.buf, __pyx_t_24, __pyx_bstride_0_new));
        __pyx_t_16 = (__pyx_v_prev < __pyx_t_25);
        if (__pyx_t_16) {
          __pyx_t_16 = (__pyx_t_25 <= __pyx_v_cur);
        }
        __pyx_t_13 = __pyx_t_16;
      } else {
        __pyx_t_13 = __pyx_t_12;
      }
      if (!__pyx_t_13) break;

      /* "pandas/src/generated.pyx":689
 * 
 *         while j >= 0 and prev < new[j] <= cur:
 *             if new[j] == cur:             # <<<<<<<<<<<<<<
 *                 indexer[j] = i
 *             elif new[j] < cur and fill_count < lim:
 */
      __pyx_t_26 = __pyx_v_j;
      __pyx_t_13 = ((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int32_t *, __pyx_bstruct_new.buf, __pyx_t_26, __pyx_bstride_0_new)) == __pyx_v_cur);
      if (__pyx_t_13) {

        /* "pandas/src/generated.pyx":690
 *         while j >= 0 and prev < new[j] <= cur:
 *             if new[j] == cur:
 *                 indexer[j] = i             # <<<<<<<<<<<<<<
 *             elif new[j] < cur and fill_count < lim:
 *                 indexer[j] = i
 */
        __pyx_t_27 = __pyx_v_j;
        *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_bstruct_indexer.buf, __pyx_t_27, __pyx_bstride_0_indexer) = __pyx_v_i;
        goto __pyx_L20;
      }

      /* "pandas/src/generated.pyx":691
 *             if new[j] == cur:
 *                 indexer[j] = i
 *             elif new[j] < cur and fill_count < lim:             # <<<<<<<<<<<<<<
 *                 indexer[j] = i
 *                 fill_count += 1
 */
      __pyx_t_28 = __pyx_v_j;
      __pyx_t_13 = ((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int32_t *, __pyx_bstruct_new.buf, __pyx_t_28, __pyx_bstride_0_new)) < __pyx_v_cur);
      if (__pyx_t_13) {
        __pyx_t_12 = (__pyx_v_fill_count < __pyx_v_lim);
        __pyx_t_16 = __pyx_t_12;
      } else {
        __pyx_t_16 = __pyx_t_13;
      }
      if (__pyx_t_16) {

        /* "pandas/src/generated.pyx":692
 *                 indexer[j] = i
 *             elif new[j] < cur and fill_count < lim:
 *                 indexer[j] = i             # <<<<<<<<<<<<<<
 *                 fill_count += 1
 *             j -= 1
 */
        __pyx_t_29 = __pyx_v_j;
        *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_bstruct_indexer.buf, __pyx_t_29, __pyx_bstride_0_indexer) = __pyx_v_i;

        /* "pandas/src/generated.pyx":693
 *             elif new[j] < cur and fill_count < lim:
 *                 indexer[j] = i
 *                 fill_count += 1             # <<<<<<<<<<<<<<
 *             j -= 1
 * 
 */
        __pyx_v_fill_count = (__pyx_v_fill_count + 1);
        goto __pyx_L20;
      }
      __pyx_L20:;

      /* "pandas/src/generated.pyx":694
 *                 indexer[j] = i
 *                 fill_count += 1
 *             j -= 1             # <<<<<<<<<<<<<<
 * 
 *         fill_count = 0
 */
      __pyx_v_j = (__pyx_v_j - 1);
    }

    /* "pandas/src/generated.pyx":696
 *             j -= 1
 * 
 *         fill_count = 0             # <<<<<<<<<<<<<<
 *         i -= 1
 *         cur = prev
 */
    __pyx_v_fill_count = 0;

    /* "pandas/src/generated.pyx":697
 * 
 *         fill_count = 0
 *         i -= 1             # <<<<<<<<<<<<<<
 *         cur = prev
 * 
 */
    __pyx_v_i = (__pyx_v_i - 1);

    /* "pandas/src/generated.pyx":698
 *         fill_count = 0
 *         i -= 1
 *         cur = prev             # <<<<<<<<<<<<<<
 * 
 *     return indexer
 */
    __pyx_v_cur = __pyx_v_prev;
  }
  __pyx_L12_break:;

  /* "pandas/src/generated.pyx":700
 *         cur = prev
 * 
 *     return indexer             # <<<<<<<<<<<<<<
 * 
 * @cython.boundscheck(False)
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_indexer));
  __pyx_r = ((PyObject *)__pyx_v_indexer);
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  { PyObject *__pyx_type, *__pyx_value, *__pyx_tb;
    __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);
    __Pyx_SafeReleaseBuffer(&__pyx_bstruct_old);
    __Pyx_SafeReleaseBuffer(&__pyx_bstruct_indexer);
    __Pyx_SafeReleaseBuffer(&__pyx_bstruct_new);
  __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);}
  __Pyx_AddTraceback("pandas._algos.backfill_int32", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  goto __pyx_L2;
  __pyx_L0:;
  __Pyx_SafeReleaseBuffer(&__pyx_bstruct_old);
  __Pyx_SafeReleaseBuffer(&__pyx_bstruct_indexer);
  __Pyx_SafeReleaseBuffer(&__pyx_bstruct_new);
  __pyx_L2:;
  __Pyx_XDECREF((PyObject *)__pyx_v_indexer);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "pandas/src/generated.pyx":704
 * @cython.boundscheck(False)
 * @cython.wraparound(False)
 * def backfill_int64(ndarray[int64_t] old, ndarray[int64_t] new,             # <<<<<<<<<<<<<<
 *                       limit=None):
 *     cdef Py_ssize_t i, j, nleft, nright
 */

static PyObject *__pyx_pf_6pandas_6_algos_18backfill_int64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_6pandas_6_algos_18backfill_int64 = {__Pyx_NAMESTR("backfill_int64"), (PyCFunction)__pyx_pf_6pandas_6_algos_18backfill_int64, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(0)};
static PyObject *__pyx_pf_6pandas_6_algos_18backfill_int64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyArrayObject *__pyx_v_old = 0;
  PyArrayObject *__pyx_v_new = 0;
  PyObject *__pyx_v_limit = 0;
  Py_ssize_t __pyx_v_i;
  Py_ssize_t __pyx_v_j;
  Py_ssize_t __pyx_v_nleft;
  Py_ssize_t __pyx_v_nright;
  PyArrayObject *__pyx_v_indexer = 0;
  __pyx_t_5numpy_int64_t __pyx_v_cur;
  __pyx_t_5numpy_int64_t __pyx_v_prev;
  int __pyx_v_lim;
  int __pyx_v_fill_count;
  Py_buffer __pyx_bstruct_old;
  Py_ssize_t __pyx_bstride_0_old = 0;
  Py_ssize_t __pyx_bshape_0_old = 0;
  Py_buffer __pyx_bstruct_indexer;
  Py_ssize_t __pyx_bstride_0_indexer = 0;
  Py_ssize_t __pyx_bshape_0_indexer = 0;
  Py_buffer __pyx_bstruct_new;
  Py_ssize_t __pyx_bstride_0_new = 0;
  Py_ssize_t __pyx_bshape_0_new = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  Py_ssize_t __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  PyArrayObject *__pyx_t_7 = NULL;
  int __pyx_t_8;
  PyObject *__pyx_t_9 = NULL;
  PyObject *__pyx_t_10 = NULL;
  PyObject *__pyx_t_11 = NULL;
  int __pyx_t_12;
  int __pyx_t_13;
  long __pyx_t_14;
  int __pyx_t_15;
  int __pyx_t_16;
  Py_ssize_t __pyx_t_17;
  Py_ssize_t __pyx_t_18;
  Py_ssize_t __pyx_t_19;
  Py_ssize_t __pyx_t_20;
  Py_ssize_t __pyx_t_21;
  Py_ssize_t __pyx_t_22;
  Py_ssize_t __pyx_t_23;
  Py_ssize_t __pyx_t_24;
  __pyx_t_5numpy_int64_t __pyx_t_25;
  Py_ssize_t __pyx_t_26;
  Py_ssize_t __pyx_t_27;
  Py_ssize_t __pyx_t_28;
  Py_ssize_t __pyx_t_29;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__old,&__pyx_n_s__new,&__pyx_n_s__limit,0};
  __Pyx_RefNannySetupContext("backfill_int64");
  __pyx_self = __pyx_self;
  {
    PyObject* values[3] = {0,0,0};

    /* "pandas/src/generated.pyx":705
 * @cython.wraparound(False)
 * def backfill_int64(ndarray[int64_t] old, ndarray[int64_t] new,
 *                       limit=None):             # <<<<<<<<<<<<<<
 *     cdef Py_ssize_t i, j, nleft, nright
 *     cdef ndarray[int64_t, ndim=1] indexer
 */
    values[2] = ((PyObject *)Py_None);
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  0:
        values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__old);
        if (likely(values[0])) kw_args--;
        else goto __pyx_L5_argtuple_error;
        case  1:
        values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__new);
        if (likely(values[1])) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("backfill_int64", 0, 2, 3, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 704; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
        }
        case  2:
        if (kw_args > 0) {
          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__limit);
          if (value) { values[2] = value; kw_args--; }
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "backfill_int64") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 704; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
    } else {
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_old = ((PyArrayObject *)values[0]);
    __pyx_v_new = ((PyArrayObject *)values[1]);
    __pyx_v_limit = values[2];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("backfill_int64", 0, 2, 3, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 704; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("pandas._algos.backfill_int64", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_bstruct_indexer.buf = NULL;
  __pyx_bstruct_old.buf = NULL;
  __pyx_bstruct_new.buf = NULL;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_old), __pyx_ptype_5numpy_ndarray, 1, "old", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 704; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_new), __pyx_ptype_5numpy_ndarray, 1, "new", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 704; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_old, (PyObject*)__pyx_v_old, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 704; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  }
  __pyx_bstride_0_old = __pyx_bstruct_old.strides[0];
  __pyx_bshape_0_old = __pyx_bstruct_old.shape[0];
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_new, (PyObject*)__pyx_v_new, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 704; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  }
  __pyx_bstride_0_new = __pyx_bstruct_new.strides[0];
  __pyx_bshape_0_new = __pyx_bstruct_new.shape[0];

  /* "pandas/src/generated.pyx":709
 *     cdef ndarray[int64_t, ndim=1] indexer
 *     cdef int64_t cur, prev
 *     cdef int lim, fill_count = 0             # <<<<<<<<<<<<<<
 * 
 *     nleft = len(old)
 */
  __pyx_v_fill_count = 0;

  /* "pandas/src/generated.pyx":711
 *     cdef int lim, fill_count = 0
 * 
 *     nleft = len(old)             # <<<<<<<<<<<<<<
 *     nright = len(new)
 *     indexer = np.empty(nright, dtype=np.int64)
 */
  __pyx_t_1 = PyObject_Length(((PyObject *)__pyx_v_old)); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 711; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_v_nleft = __pyx_t_1;

  /* "pandas/src/generated.pyx":712
 * 
 *     nleft = len(old)
 *     nright = len(new)             # <<<<<<<<<<<<<<
 *     indexer = np.empty(nright, dtype=np.int64)
 *     indexer.fill(-1)
 */
  __pyx_t_1 = PyObject_Length(((PyObject *)__pyx_v_new)); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 712; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_v_nright = __pyx_t_1;

  /* "pandas/src/generated.pyx":713
 *     nleft = len(old)
 *     nright = len(new)
 *     indexer = np.empty(nright, dtype=np.int64)             # <<<<<<<<<<<<<<
 *     indexer.fill(-1)
 * 
 */
  __pyx_t_2 = __Pyx_GetName(__pyx_m, __pyx_n_s__np); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 713; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = PyObject_GetAttr(__pyx_t_2, __pyx_n_s__empty); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 713; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = PyInt_FromSsize_t(__pyx_v_nright); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 713; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 713; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_4));
  PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_2);
  __Pyx_GIVEREF(__pyx_t_2);
  __pyx_t_2 = 0;
  __pyx_t_2 = PyDict_New(); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 713; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_2));
  __pyx_t_5 = __Pyx_GetName(__pyx_m, __pyx_n_s__np); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 713; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_6 = PyObject_GetAttr(__pyx_t_5, __pyx_n_s__int64); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 713; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  if (PyDict_SetItem(__pyx_t_2, ((PyObject *)__pyx_n_s__dtype), __pyx_t_6) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 713; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __pyx_t_6 = PyEval_CallObjectWithKeywords(__pyx_t_3, ((PyObject *)__pyx_t_4), ((PyObject *)__pyx_t_2)); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 713; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_DECREF(((PyObject *)__pyx_t_4)); __pyx_t_4 = 0;
  __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0;
  if (!(likely(((__pyx_t_6) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_6, __pyx_ptype_5numpy_ndarray))))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 713; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_t_7 = ((PyArrayObject *)__pyx_t_6);
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    __Pyx_SafeReleaseBuffer(&__pyx_bstruct_indexer);
    __pyx_t_8 = __Pyx_GetBufferAndValidate(&__pyx_bstruct_indexer, (PyObject*)__pyx_t_7, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack);
    if (unlikely(__pyx_t_8 < 0)) {
      PyErr_Fetch(&__pyx_t_9, &__pyx_t_10, &__pyx_t_11);
      if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_indexer, (PyObject*)__pyx_v_indexer, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) {
        Py_XDECREF(__pyx_t_9); Py_XDECREF(__pyx_t_10); Py_XDECREF(__pyx_t_11);
        __Pyx_RaiseBufferFallbackError();
      } else {
        PyErr_Restore(__pyx_t_9, __pyx_t_10, __pyx_t_11);
      }
    }
    __pyx_bstride_0_indexer = __pyx_bstruct_indexer.strides[0];
    __pyx_bshape_0_indexer = __pyx_bstruct_indexer.shape[0];
    if (unlikely(__pyx_t_8 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 713; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  }
  __pyx_t_7 = 0;
  __pyx_v_indexer = ((PyArrayObject *)__pyx_t_6);
  __pyx_t_6 = 0;

  /* "pandas/src/generated.pyx":714
 *     nright = len(new)
 *     indexer = np.empty(nright, dtype=np.int64)
 *     indexer.fill(-1)             # <<<<<<<<<<<<<<
 * 
 *     if limit is None:
 */
  __pyx_t_6 = PyObject_GetAttr(((PyObject *)__pyx_v_indexer), __pyx_n_s__fill); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 714; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_2 = PyObject_Call(__pyx_t_6, ((PyObject *)__pyx_k_tuple_18), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 714; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "pandas/src/generated.pyx":716
 *     indexer.fill(-1)
 * 
 *     if limit is None:             # <<<<<<<<<<<<<<
 *         lim = nright
 *     else:
 */
  __pyx_t_12 = (__pyx_v_limit == Py_None);
  if (__pyx_t_12) {

    /* "pandas/src/generated.pyx":717
 * 
 *     if limit is None:
 *         lim = nright             # <<<<<<<<<<<<<<
 *     else:
 *         if limit < 0:
 */
    __pyx_v_lim = __pyx_v_nright;
    goto __pyx_L6;
  }
  /*else*/ {

    /* "pandas/src/generated.pyx":719
 *         lim = nright
 *     else:
 *         if limit < 0:             # <<<<<<<<<<<<<<
 *             raise ValueError('Limit must be non-negative')
 *         lim = limit
 */
    __pyx_t_2 = PyObject_RichCompare(__pyx_v_limit, __pyx_int_0, Py_LT); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 719; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_12 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_12 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 719; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    if (__pyx_t_12) {

      /* "pandas/src/generated.pyx":720
 *     else:
 *         if limit < 0:
 *             raise ValueError('Limit must be non-negative')             # <<<<<<<<<<<<<<
 *         lim = limit
 * 
 */
      __pyx_t_2 = PyObject_Call(__pyx_builtin_ValueError, ((PyObject *)__pyx_k_tuple_19), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 720; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_Raise(__pyx_t_2, 0, 0, 0);
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      {__pyx_filename = __pyx_f[0]; __pyx_lineno = 720; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      goto __pyx_L7;
    }
    __pyx_L7:;

    /* "pandas/src/generated.pyx":721
 *         if limit < 0:
 *             raise ValueError('Limit must be non-negative')
 *         lim = limit             # <<<<<<<<<<<<<<
 * 
 *     if nleft == 0 or nright == 0 or new[0] > old[nleft - 1]:
 */
    __pyx_t_8 = __Pyx_PyInt_AsInt(__pyx_v_limit); if (unlikely((__pyx_t_8 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 721; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __pyx_v_lim = __pyx_t_8;
  }
  __pyx_L6:;

  /* "pandas/src/generated.pyx":723
 *         lim = limit
 * 
 *     if nleft == 0 or nright == 0 or new[0] > old[nleft - 1]:             # <<<<<<<<<<<<<<
 *         return indexer
 * 
 */
  __pyx_t_12 = (__pyx_v_nleft == 0);
  if (!__pyx_t_12) {
    __pyx_t_13 = (__pyx_v_nright == 0);
    if (!__pyx_t_13) {
      __pyx_t_14 = 0;
      __pyx_t_1 = (__pyx_v_nleft - 1);
      __pyx_t_15 = ((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_bstruct_new.buf, __pyx_t_14, __pyx_bstride_0_new)) > (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_bstruct_old.buf, __pyx_t_1, __pyx_bstride_0_old)));
      __pyx_t_16 = __pyx_t_15;
    } else {
      __pyx_t_16 = __pyx_t_13;
    }
    __pyx_t_13 = __pyx_t_16;
  } else {
    __pyx_t_13 = __pyx_t_12;
  }
  if (__pyx_t_13) {

    /* "pandas/src/generated.pyx":724
 * 
 *     if nleft == 0 or nright == 0 or new[0] > old[nleft - 1]:
 *         return indexer             # <<<<<<<<<<<<<<
 * 
 *     i = nleft - 1
 */
    __Pyx_XDECREF(__pyx_r);
    __Pyx_INCREF(((PyObject *)__pyx_v_indexer));
    __pyx_r = ((PyObject *)__pyx_v_indexer);
    goto __pyx_L0;
    goto __pyx_L8;
  }
  __pyx_L8:;

  /* "pandas/src/generated.pyx":726
 *         return indexer
 * 
 *     i = nleft - 1             # <<<<<<<<<<<<<<
 *     j = nright - 1
 * 
 */
  __pyx_v_i = (__pyx_v_nleft - 1);

  /* "pandas/src/generated.pyx":727
 * 
 *     i = nleft - 1
 *     j = nright - 1             # <<<<<<<<<<<<<<
 * 
 *     cur = old[nleft - 1]
 */
  __pyx_v_j = (__pyx_v_nright - 1);

  /* "pandas/src/generated.pyx":729
 *     j = nright - 1
 * 
 *     cur = old[nleft - 1]             # <<<<<<<<<<<<<<
 * 
 *     while j >= 0 and new[j] > cur:
 */
  __pyx_t_17 = (__pyx_v_nleft - 1);
  __pyx_v_cur = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_bstruct_old.buf, __pyx_t_17, __pyx_bstride_0_old));

  /* "pandas/src/generated.pyx":731
 *     cur = old[nleft - 1]
 * 
 *     while j >= 0 and new[j] > cur:             # <<<<<<<<<<<<<<
 *         j -= 1
 * 
 */
  while (1) {
    __pyx_t_13 = (__pyx_v_j >= 0);
    if (__pyx_t_13) {
      __pyx_t_18 = __pyx_v_j;
      __pyx_t_12 = ((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_bstruct_new.buf, __pyx_t_18, __pyx_bstride_0_new)) > __pyx_v_cur);
      __pyx_t_16 = __pyx_t_12;
    } else {
      __pyx_t_16 = __pyx_t_13;
    }
    if (!__pyx_t_16) break;

    /* "pandas/src/generated.pyx":732
 * 
 *     while j >= 0 and new[j] > cur:
 *         j -= 1             # <<<<<<<<<<<<<<
 * 
 *     while True:
 */
    __pyx_v_j = (__pyx_v_j - 1);
  }

  /* "pandas/src/generated.pyx":734
 *         j -= 1
 * 
 *     while True:             # <<<<<<<<<<<<<<
 *         if j < 0:
 *             break
 */
  while (1) {
    if (!1) break;

    /* "pandas/src/generated.pyx":735
 * 
 *     while True:
 *         if j < 0:             # <<<<<<<<<<<<<<
 *             break
 * 
 */
    __pyx_t_16 = (__pyx_v_j < 0);
    if (__pyx_t_16) {

      /* "pandas/src/generated.pyx":736
 *     while True:
 *         if j < 0:
 *             break             # <<<<<<<<<<<<<<
 * 
 *         if i == 0:
 */
      goto __pyx_L12_break;
      goto __pyx_L13;
    }
    __pyx_L13:;

    /* "pandas/src/generated.pyx":738
 *             break
 * 
 *         if i == 0:             # <<<<<<<<<<<<<<
 *             while j >= 0:
 *                 if new[j] == cur:
 */
    __pyx_t_16 = (__pyx_v_i == 0);
    if (__pyx_t_16) {

      /* "pandas/src/generated.pyx":739
 * 
 *         if i == 0:
 *             while j >= 0:             # <<<<<<<<<<<<<<
 *                 if new[j] == cur:
 *                     indexer[j] = i
 */
      while (1) {
        __pyx_t_16 = (__pyx_v_j >= 0);
        if (!__pyx_t_16) break;

        /* "pandas/src/generated.pyx":740
 *         if i == 0:
 *             while j >= 0:
 *                 if new[j] == cur:             # <<<<<<<<<<<<<<
 *                     indexer[j] = i
 *                 elif new[j] < cur and fill_count < lim:
 */
        __pyx_t_19 = __pyx_v_j;
        __pyx_t_16 = ((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_bstruct_new.buf, __pyx_t_19, __pyx_bstride_0_new)) == __pyx_v_cur);
        if (__pyx_t_16) {

          /* "pandas/src/generated.pyx":741
 *             while j >= 0:
 *                 if new[j] == cur:
 *                     indexer[j] = i             # <<<<<<<<<<<<<<
 *                 elif new[j] < cur and fill_count < lim:
 *                     indexer[j] = i
 */
          __pyx_t_20 = __pyx_v_j;
          *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_bstruct_indexer.buf, __pyx_t_20, __pyx_bstride_0_indexer) = __pyx_v_i;
          goto __pyx_L17;
        }

        /* "pandas/src/generated.pyx":742
 *                 if new[j] == cur:
 *                     indexer[j] = i
 *                 elif new[j] < cur and fill_count < lim:             # <<<<<<<<<<<<<<
 *                     indexer[j] = i
 *                     fill_count += 1
 */
        __pyx_t_21 = __pyx_v_j;
        __pyx_t_16 = ((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_bstruct_new.buf, __pyx_t_21, __pyx_bstride_0_new)) < __pyx_v_cur);
        if (__pyx_t_16) {
          __pyx_t_13 = (__pyx_v_fill_count < __pyx_v_lim);
          __pyx_t_12 = __pyx_t_13;
        } else {
          __pyx_t_12 = __pyx_t_16;
        }
        if (__pyx_t_12) {

          /* "pandas/src/generated.pyx":743
 *                     indexer[j] = i
 *                 elif new[j] < cur and fill_count < lim:
 *                     indexer[j] = i             # <<<<<<<<<<<<<<
 *                     fill_count += 1
 *                 j -= 1
 */
          __pyx_t_22 = __pyx_v_j;
          *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_bstruct_indexer.buf, __pyx_t_22, __pyx_bstride_0_indexer) = __pyx_v_i;

          /* "pandas/src/generated.pyx":744
 *                 elif new[j] < cur and fill_count < lim:
 *                     indexer[j] = i
 *                     fill_count += 1             # <<<<<<<<<<<<<<
 *                 j -= 1
 *             break
 */
          __pyx_v_fill_count = (__pyx_v_fill_count + 1);
          goto __pyx_L17;
        }
        __pyx_L17:;

        /* "pandas/src/generated.pyx":745
 *                     indexer[j] = i
 *                     fill_count += 1
 *                 j -= 1             # <<<<<<<<<<<<<<
 *             break
 * 
 */
        __pyx_v_j = (__pyx_v_j - 1);
      }

      /* "pandas/src/generated.pyx":746
 *                     fill_count += 1
 *                 j -= 1
 *             break             # <<<<<<<<<<<<<<
 * 
 *         prev = old[i - 1]
 */
      goto __pyx_L12_break;
      goto __pyx_L14;
    }
    __pyx_L14:;

    /* "pandas/src/generated.pyx":748
 *             break
 * 
 *         prev = old[i - 1]             # <<<<<<<<<<<<<<
 * 
 *         while j >= 0 and prev < new[j] <= cur:
 */
    __pyx_t_23 = (__pyx_v_i - 1);
    __pyx_v_prev = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_bstruct_old.buf, __pyx_t_23, __pyx_bstride_0_old));

    /* "pandas/src/generated.pyx":750
 *         prev = old[i - 1]
 * 
 *         while j >= 0 and prev < new[j] <= cur:             # <<<<<<<<<<<<<<
 *             if new[j] == cur:
 *                 indexer[j] = i
 */
    while (1) {
      __pyx_t_12 = (__pyx_v_j >= 0);
      if (__pyx_t_12) {
        __pyx_t_24 = __pyx_v_j;
        __pyx_t_25 = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_bstruct_new.buf, __pyx_t_24, __pyx_bstride_0_new));
        __pyx_t_16 = (__pyx_v_prev < __pyx_t_25);
        if (__pyx_t_16) {
          __pyx_t_16 = (__pyx_t_25 <= __pyx_v_cur);
        }
        __pyx_t_13 = __pyx_t_16;
      } else {
        __pyx_t_13 = __pyx_t_12;
      }
      if (!__pyx_t_13) break;

      /* "pandas/src/generated.pyx":751
 * 
 *         while j >= 0 and prev < new[j] <= cur:
 *             if new[j] == cur:             # <<<<<<<<<<<<<<
 *                 indexer[j] = i
 *             elif new[j] < cur and fill_count < lim:
 */
      __pyx_t_26 = __pyx_v_j;
      __pyx_t_13 = ((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_bstruct_new.buf, __pyx_t_26, __pyx_bstride_0_new)) == __pyx_v_cur);
      if (__pyx_t_13) {

        /* "pandas/src/generated.pyx":752
 *         while j >= 0 and prev < new[j] <= cur:
 *             if new[j] == cur:
 *                 indexer[j] = i             # <<<<<<<<<<<<<<
 *             elif new[j] < cur and fill_count < lim:
 *                 indexer[j] = i
 */
        __pyx_t_27 = __pyx_v_j;
        *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_bstruct_indexer.buf, __pyx_t_27, __pyx_bstride_0_indexer) = __pyx_v_i;
        goto __pyx_L20;
      }

      /* "pandas/src/generated.pyx":753
 *             if new[j] == cur:
 *                 indexer[j] = i
 *             elif new[j] < cur and fill_count < lim:             # <<<<<<<<<<<<<<
 *                 indexer[j] = i
 *                 fill_count += 1
 */
      __pyx_t_28 = __pyx_v_j;
      __pyx_t_13 = ((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_bstruct_new.buf, __pyx_t_28, __pyx_bstride_0_new)) < __pyx_v_cur);
      if (__pyx_t_13) {
        __pyx_t_12 = (__pyx_v_fill_count < __pyx_v_lim);
        __pyx_t_16 = __pyx_t_12;
      } else {
        __pyx_t_16 = __pyx_t_13;
      }
      if (__pyx_t_16) {

        /* "pandas/src/generated.pyx":754
 *                 indexer[j] = i
 *             elif new[j] < cur and fill_count < lim:
 *                 indexer[j] = i             # <<<<<<<<<<<<<<
 *                 fill_count += 1
 *             j -= 1
 */
        __pyx_t_29 = __pyx_v_j;
        *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_bstruct_indexer.buf, __pyx_t_29, __pyx_bstride_0_indexer) = __pyx_v_i;

        /* "pandas/src/generated.pyx":755
 *             elif new[j] < cur and fill_count < lim:
 *                 indexer[j] = i
 *                 fill_count += 1             # <<<<<<<<<<<<<<
 *             j -= 1
 * 
 */
        __pyx_v_fill_count = (__pyx_v_fill_count + 1);
        goto __pyx_L20;
      }
      __pyx_L20:;

      /* "pandas/src/generated.pyx":756
 *                 indexer[j] = i
 *                 fill_count += 1
 *             j -= 1             # <<<<<<<<<<<<<<
 * 
 *         fill_count = 0
 */
      __pyx_v_j = (__pyx_v_j - 1);
    }

    /* "pandas/src/generated.pyx":758
 *             j -= 1
 * 
 *         fill_count = 0             # <<<<<<<<<<<<<<
 *         i -= 1
 *         cur = prev
 */
    __pyx_v_fill_count = 0;

    /* "pandas/src/generated.pyx":759
 * 
 *         fill_count = 0
 *         i -= 1             # <<<<<<<<<<<<<<
 *         cur = prev
 * 
 */
    __pyx_v_i = (__pyx_v_i - 1);

    /* "pandas/src/generated.pyx":760
 *         fill_count = 0
 *         i -= 1
 *         cur = prev             # <<<<<<<<<<<<<<
 * 
 *     return indexer
 */
    __pyx_v_cur = __pyx_v_prev;
  }
  __pyx_L12_break:;

  /* "pandas/src/generated.pyx":762
 *         cur = prev
 * 
 *     return indexer             # <<<<<<<<<<<<<<
 * 
 * @cython.boundscheck(False)
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_indexer));
  __pyx_r = ((PyObject *)__pyx_v_indexer);
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  { PyObject *__pyx_type, *__pyx_value, *__pyx_tb;
    __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);
    __Pyx_SafeReleaseBuffer(&__pyx_bstruct_old);
    __Pyx_SafeReleaseBuffer(&__pyx_bstruct_indexer);
    __Pyx_SafeReleaseBuffer(&__pyx_bstruct_new);
  __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);}
  __Pyx_AddTraceback("pandas._algos.backfill_int64", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  goto __pyx_L2;
  __pyx_L0:;
  __Pyx_SafeReleaseBuffer(&__pyx_bstruct_old);
  __Pyx_SafeReleaseBuffer(&__pyx_bstruct_indexer);
  __Pyx_SafeReleaseBuffer(&__pyx_bstruct_new);
  __pyx_L2:;
  __Pyx_XDECREF((PyObject *)__pyx_v_indexer);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "pandas/src/generated.pyx":766
 * @cython.boundscheck(False)
 * @cython.wraparound(False)
 * def backfill_bool(ndarray[uint8_t] old, ndarray[uint8_t] new,             # <<<<<<<<<<<<<<
 *                       limit=None):
 *     cdef Py_ssize_t i, j, nleft, nright
 */

static PyObject *__pyx_pf_6pandas_6_algos_19backfill_bool(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_6pandas_6_algos_19backfill_bool = {__Pyx_NAMESTR("backfill_bool"), (PyCFunction)__pyx_pf_6pandas_6_algos_19backfill_bool, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(0)};
static PyObject *__pyx_pf_6pandas_6_algos_19backfill_bool(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyArrayObject *__pyx_v_old = 0;
  PyArrayObject *__pyx_v_new = 0;
  PyObject *__pyx_v_limit = 0;
  Py_ssize_t __pyx_v_i;
  Py_ssize_t __pyx_v_j;
  Py_ssize_t __pyx_v_nleft;
  Py_ssize_t __pyx_v_nright;
  PyArrayObject *__pyx_v_indexer = 0;
  __pyx_t_5numpy_uint8_t __pyx_v_cur;
  __pyx_t_5numpy_uint8_t __pyx_v_prev;
  int __pyx_v_lim;
  int __pyx_v_fill_count;
  Py_buffer __pyx_bstruct_old;
  Py_ssize_t __pyx_bstride_0_old = 0;
  Py_ssize_t __pyx_bshape_0_old = 0;
  Py_buffer __pyx_bstruct_indexer;
  Py_ssize_t __pyx_bstride_0_indexer = 0;
  Py_ssize_t __pyx_bshape_0_indexer = 0;
  Py_buffer __pyx_bstruct_new;
  Py_ssize_t __pyx_bstride_0_new = 0;
  Py_ssize_t __pyx_bshape_0_new = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  Py_ssize_t __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  PyArrayObject *__pyx_t_7 = NULL;
  int __pyx_t_8;
  PyObject *__pyx_t_9 = NULL;
  PyObject *__pyx_t_10 = NULL;
  PyObject *__pyx_t_11 = NULL;
  int __pyx_t_12;
  int __pyx_t_13;
  long __pyx_t_14;
  int __pyx_t_15;
  int __pyx_t_16;
  Py_ssize_t __pyx_t_17;
  Py_ssize_t __pyx_t_18;
  Py_ssize_t __pyx_t_19;
  Py_ssize_t __pyx_t_20;
  Py_ssize_t __pyx_t_21;
  Py_ssize_t __pyx_t_22;
  Py_ssize_t __pyx_t_23;
  Py_ssize_t __pyx_t_24;
  __pyx_t_5numpy_uint8_t __pyx_t_25;
  Py_ssize_t __pyx_t_26;
  Py_ssize_t __pyx_t_27;
  Py_ssize_t __pyx_t_28;
  Py_ssize_t __pyx_t_29;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__old,&__pyx_n_s__new,&__pyx_n_s__limit,0};
  __Pyx_RefNannySetupContext("backfill_bool");
  __pyx_self = __pyx_self;
  {
    PyObject* values[3] = {0,0,0};

    /* "pandas/src/generated.pyx":767
 * @cython.wraparound(False)
 * def backfill_bool(ndarray[uint8_t] old, ndarray[uint8_t] new,
 *                       limit=None):             # <<<<<<<<<<<<<<
 *     cdef Py_ssize_t i, j, nleft, nright
 *     cdef ndarray[int64_t, ndim=1] indexer
 */
    values[2] = ((PyObject *)Py_None);
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  0:
        values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__old);
        if (likely(values[0])) kw_args--;
        else goto __pyx_L5_argtuple_error;
        case  1:
        values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__new);
        if (likely(values[1])) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("backfill_bool", 0, 2, 3, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 766; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
        }
        case  2:
        if (kw_args > 0) {
          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__limit);
          if (value) { values[2] = value; kw_args--; }
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "backfill_bool") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 766; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
    } else {
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_old = ((PyArrayObject *)values[0]);
    __pyx_v_new = ((PyArrayObject *)values[1]);
    __pyx_v_limit = values[2];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("backfill_bool", 0, 2, 3, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 766; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("pandas._algos.backfill_bool", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_bstruct_indexer.buf = NULL;
  __pyx_bstruct_old.buf = NULL;
  __pyx_bstruct_new.buf = NULL;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_old), __pyx_ptype_5numpy_ndarray, 1, "old", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 766; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_new), __pyx_ptype_5numpy_ndarray, 1, "new", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 766; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_old, (PyObject*)__pyx_v_old, &__Pyx_TypeInfo_nn___pyx_t_5numpy_uint8_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 766; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  }
  __pyx_bstride_0_old = __pyx_bstruct_old.strides[0];
  __pyx_bshape_0_old = __pyx_bstruct_old.shape[0];
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_new, (PyObject*)__pyx_v_new, &__Pyx_TypeInfo_nn___pyx_t_5numpy_uint8_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 766; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  }
  __pyx_bstride_0_new = __pyx_bstruct_new.strides[0];
  __pyx_bshape_0_new = __pyx_bstruct_new.shape[0];

  /* "pandas/src/generated.pyx":771
 *     cdef ndarray[int64_t, ndim=1] indexer
 *     cdef uint8_t cur, prev
 *     cdef int lim, fill_count = 0             # <<<<<<<<<<<<<<
 * 
 *     nleft = len(old)
 */
  __pyx_v_fill_count = 0;

  /* "pandas/src/generated.pyx":773
 *     cdef int lim, fill_count = 0
 * 
 *     nleft = len(old)             # <<<<<<<<<<<<<<
 *     nright = len(new)
 *     indexer = np.empty(nright, dtype=np.int64)
 */
  __pyx_t_1 = PyObject_Length(((PyObject *)__pyx_v_old)); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 773; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_v_nleft = __pyx_t_1;

  /* "pandas/src/generated.pyx":774
 * 
 *     nleft = len(old)
 *     nright = len(new)             # <<<<<<<<<<<<<<
 *     indexer = np.empty(nright, dtype=np.int64)
 *     indexer.fill(-1)
 */
  __pyx_t_1 = PyObject_Length(((PyObject *)__pyx_v_new)); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 774; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_v_nright = __pyx_t_1;

  /* "pandas/src/generated.pyx":775
 *     nleft = len(old)
 *     nright = len(new)
 *     indexer = np.empty(nright, dtype=np.int64)             # <<<<<<<<<<<<<<
 *     indexer.fill(-1)
 * 
 */
  __pyx_t_2 = __Pyx_GetName(__pyx_m, __pyx_n_s__np); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 775; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = PyObject_GetAttr(__pyx_t_2, __pyx_n_s__empty); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 775; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = PyInt_FromSsize_t(__pyx_v_nright); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 775; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 775; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_4));
  PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_2);
  __Pyx_GIVEREF(__pyx_t_2);
  __pyx_t_2 = 0;
  __pyx_t_2 = PyDict_New(); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 775; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_2));
  __pyx_t_5 = __Pyx_GetName(__pyx_m, __pyx_n_s__np); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 775; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_6 = PyObject_GetAttr(__pyx_t_5, __pyx_n_s__int64); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 775; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  if (PyDict_SetItem(__pyx_t_2, ((PyObject *)__pyx_n_s__dtype), __pyx_t_6) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 775; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __pyx_t_6 = PyEval_CallObjectWithKeywords(__pyx_t_3, ((PyObject *)__pyx_t_4), ((PyObject *)__pyx_t_2)); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 775; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_DECREF(((PyObject *)__pyx_t_4)); __pyx_t_4 = 0;
  __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0;
  if (!(likely(((__pyx_t_6) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_6, __pyx_ptype_5numpy_ndarray))))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 775; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_t_7 = ((PyArrayObject *)__pyx_t_6);
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    __Pyx_SafeReleaseBuffer(&__pyx_bstruct_indexer);
    __pyx_t_8 = __Pyx_GetBufferAndValidate(&__pyx_bstruct_indexer, (PyObject*)__pyx_t_7, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack);
    if (unlikely(__pyx_t_8 < 0)) {
      PyErr_Fetch(&__pyx_t_9, &__pyx_t_10, &__pyx_t_11);
      if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_indexer, (PyObject*)__pyx_v_indexer, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) {
        Py_XDECREF(__pyx_t_9); Py_XDECREF(__pyx_t_10); Py_XDECREF(__pyx_t_11);
        __Pyx_RaiseBufferFallbackError();
      } else {
        PyErr_Restore(__pyx_t_9, __pyx_t_10, __pyx_t_11);
      }
    }
    __pyx_bstride_0_indexer = __pyx_bstruct_indexer.strides[0];
    __pyx_bshape_0_indexer = __pyx_bstruct_indexer.shape[0];
    if (unlikely(__pyx_t_8 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 775; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  }
  __pyx_t_7 = 0;
  __pyx_v_indexer = ((PyArrayObject *)__pyx_t_6);
  __pyx_t_6 = 0;

  /* "pandas/src/generated.pyx":776
 *     nright = len(new)
 *     indexer = np.empty(nright, dtype=np.int64)
 *     indexer.fill(-1)             # <<<<<<<<<<<<<<
 * 
 *     if limit is None:
 */
  __pyx_t_6 = PyObject_GetAttr(((PyObject *)__pyx_v_indexer), __pyx_n_s__fill); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 776; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_2 = PyObject_Call(__pyx_t_6, ((PyObject *)__pyx_k_tuple_20), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 776; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "pandas/src/generated.pyx":778
 *     indexer.fill(-1)
 * 
 *     if limit is None:             # <<<<<<<<<<<<<<
 *         lim = nright
 *     else:
 */
  __pyx_t_12 = (__pyx_v_limit == Py_None);
  if (__pyx_t_12) {

    /* "pandas/src/generated.pyx":779
 * 
 *     if limit is None:
 *         lim = nright             # <<<<<<<<<<<<<<
 *     else:
 *         if limit < 0:
 */
    __pyx_v_lim = __pyx_v_nright;
    goto __pyx_L6;
  }
  /*else*/ {

    /* "pandas/src/generated.pyx":781
 *         lim = nright
 *     else:
 *         if limit < 0:             # <<<<<<<<<<<<<<
 *             raise ValueError('Limit must be non-negative')
 *         lim = limit
 */
    __pyx_t_2 = PyObject_RichCompare(__pyx_v_limit, __pyx_int_0, Py_LT); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 781; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_12 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_12 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 781; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    if (__pyx_t_12) {

      /* "pandas/src/generated.pyx":782
 *     else:
 *         if limit < 0:
 *             raise ValueError('Limit must be non-negative')             # <<<<<<<<<<<<<<
 *         lim = limit
 * 
 */
      __pyx_t_2 = PyObject_Call(__pyx_builtin_ValueError, ((PyObject *)__pyx_k_tuple_21), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 782; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_Raise(__pyx_t_2, 0, 0, 0);
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      {__pyx_filename = __pyx_f[0]; __pyx_lineno = 782; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      goto __pyx_L7;
    }
    __pyx_L7:;

    /* "pandas/src/generated.pyx":783
 *         if limit < 0:
 *             raise ValueError('Limit must be non-negative')
 *         lim = limit             # <<<<<<<<<<<<<<
 * 
 *     if nleft == 0 or nright == 0 or new[0] > old[nleft - 1]:
 */
    __pyx_t_8 = __Pyx_PyInt_AsInt(__pyx_v_limit); if (unlikely((__pyx_t_8 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 783; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __pyx_v_lim = __pyx_t_8;
  }
  __pyx_L6:;

  /* "pandas/src/generated.pyx":785
 *         lim = limit
 * 
 *     if nleft == 0 or nright == 0 or new[0] > old[nleft - 1]:             # <<<<<<<<<<<<<<
 *         return indexer
 * 
 */
  __pyx_t_12 = (__pyx_v_nleft == 0);
  if (!__pyx_t_12) {
    __pyx_t_13 = (__pyx_v_nright == 0);
    if (!__pyx_t_13) {
      __pyx_t_14 = 0;
      __pyx_t_1 = (__pyx_v_nleft - 1);
      __pyx_t_15 = ((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_uint8_t *, __pyx_bstruct_new.buf, __pyx_t_14, __pyx_bstride_0_new)) > (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_uint8_t *, __pyx_bstruct_old.buf, __pyx_t_1, __pyx_bstride_0_old)));
      __pyx_t_16 = __pyx_t_15;
    } else {
      __pyx_t_16 = __pyx_t_13;
    }
    __pyx_t_13 = __pyx_t_16;
  } else {
    __pyx_t_13 = __pyx_t_12;
  }
  if (__pyx_t_13) {

    /* "pandas/src/generated.pyx":786
 * 
 *     if nleft == 0 or nright == 0 or new[0] > old[nleft - 1]:
 *         return indexer             # <<<<<<<<<<<<<<
 * 
 *     i = nleft - 1
 */
    __Pyx_XDECREF(__pyx_r);
    __Pyx_INCREF(((PyObject *)__pyx_v_indexer));
    __pyx_r = ((PyObject *)__pyx_v_indexer);
    goto __pyx_L0;
    goto __pyx_L8;
  }
  __pyx_L8:;

  /* "pandas/src/generated.pyx":788
 *         return indexer
 * 
 *     i = nleft - 1             # <<<<<<<<<<<<<<
 *     j = nright - 1
 * 
 */
  __pyx_v_i = (__pyx_v_nleft - 1);

  /* "pandas/src/generated.pyx":789
 * 
 *     i = nleft - 1
 *     j = nright - 1             # <<<<<<<<<<<<<<
 * 
 *     cur = old[nleft - 1]
 */
  __pyx_v_j = (__pyx_v_nright - 1);

  /* "pandas/src/generated.pyx":791
 *     j = nright - 1
 * 
 *     cur = old[nleft - 1]             # <<<<<<<<<<<<<<
 * 
 *     while j >= 0 and new[j] > cur:
 */
  __pyx_t_17 = (__pyx_v_nleft - 1);
  __pyx_v_cur = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_uint8_t *, __pyx_bstruct_old.buf, __pyx_t_17, __pyx_bstride_0_old));

  /* "pandas/src/generated.pyx":793
 *     cur = old[nleft - 1]
 * 
 *     while j >= 0 and new[j] > cur:             # <<<<<<<<<<<<<<
 *         j -= 1
 * 
 */
  while (1) {
    __pyx_t_13 = (__pyx_v_j >= 0);
    if (__pyx_t_13) {
      __pyx_t_18 = __pyx_v_j;
      __pyx_t_12 = ((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_uint8_t *, __pyx_bstruct_new.buf, __pyx_t_18, __pyx_bstride_0_new)) > __pyx_v_cur);
      __pyx_t_16 = __pyx_t_12;
    } else {
      __pyx_t_16 = __pyx_t_13;
    }
    if (!__pyx_t_16) break;

    /* "pandas/src/generated.pyx":794
 * 
 *     while j >= 0 and new[j] > cur:
 *         j -= 1             # <<<<<<<<<<<<<<
 * 
 *     while True:
 */
    __pyx_v_j = (__pyx_v_j - 1);
  }

  /* "pandas/src/generated.pyx":796
 *         j -= 1
 * 
 *     while True:             # <<<<<<<<<<<<<<
 *         if j < 0:
 *             break
 */
  while (1) {
    if (!1) break;

    /* "pandas/src/generated.pyx":797
 * 
 *     while True:
 *         if j < 0:             # <<<<<<<<<<<<<<
 *             break
 * 
 */
    __pyx_t_16 = (__pyx_v_j < 0);
    if (__pyx_t_16) {

      /* "pandas/src/generated.pyx":798
 *     while True:
 *         if j < 0:
 *             break             # <<<<<<<<<<<<<<
 * 
 *         if i == 0:
 */
      goto __pyx_L12_break;
      goto __pyx_L13;
    }
    __pyx_L13:;

    /* "pandas/src/generated.pyx":800
 *             break
 * 
 *         if i == 0:             # <<<<<<<<<<<<<<
 *             while j >= 0:
 *                 if new[j] == cur:
 */
    __pyx_t_16 = (__pyx_v_i == 0);
    if (__pyx_t_16) {

      /* "pandas/src/generated.pyx":801
 * 
 *         if i == 0:
 *             while j >= 0:             # <<<<<<<<<<<<<<
 *                 if new[j] == cur:
 *                     indexer[j] = i
 */
      while (1) {
        __pyx_t_16 = (__pyx_v_j >= 0);
        if (!__pyx_t_16) break;

        /* "pandas/src/generated.pyx":802
 *         if i == 0:
 *             while j >= 0:
 *                 if new[j] == cur:             # <<<<<<<<<<<<<<
 *                     indexer[j] = i
 *                 elif new[j] < cur and fill_count < lim:
 */
        __pyx_t_19 = __pyx_v_j;
        __pyx_t_16 = ((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_uint8_t *, __pyx_bstruct_new.buf, __pyx_t_19, __pyx_bstride_0_new)) == __pyx_v_cur);
        if (__pyx_t_16) {

          /* "pandas/src/generated.pyx":803
 *             while j >= 0:
 *                 if new[j] == cur:
 *                     indexer[j] = i             # <<<<<<<<<<<<<<
 *                 elif new[j] < cur and fill_count < lim:
 *                     indexer[j] = i
 */
          __pyx_t_20 = __pyx_v_j;
          *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_bstruct_indexer.buf, __pyx_t_20, __pyx_bstride_0_indexer) = __pyx_v_i;
          goto __pyx_L17;
        }

        /* "pandas/src/generated.pyx":804
 *                 if new[j] == cur:
 *                     indexer[j] = i
 *                 elif new[j] < cur and fill_count < lim:             # <<<<<<<<<<<<<<
 *                     indexer[j] = i
 *                     fill_count += 1
 */
        __pyx_t_21 = __pyx_v_j;
        __pyx_t_16 = ((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_uint8_t *, __pyx_bstruct_new.buf, __pyx_t_21, __pyx_bstride_0_new)) < __pyx_v_cur);
        if (__pyx_t_16) {
          __pyx_t_13 = (__pyx_v_fill_count < __pyx_v_lim);
          __pyx_t_12 = __pyx_t_13;
        } else {
          __pyx_t_12 = __pyx_t_16;
        }
        if (__pyx_t_12) {

          /* "pandas/src/generated.pyx":805
 *                     indexer[j] = i
 *                 elif new[j] < cur and fill_count < lim:
 *                     indexer[j] = i             # <<<<<<<<<<<<<<
 *                     fill_count += 1
 *                 j -= 1
 */
          __pyx_t_22 = __pyx_v_j;
          *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_bstruct_indexer.buf, __pyx_t_22, __pyx_bstride_0_indexer) = __pyx_v_i;

          /* "pandas/src/generated.pyx":806
 *                 elif new[j] < cur and fill_count < lim:
 *                     indexer[j] = i
 *                     fill_count += 1             # <<<<<<<<<<<<<<
 *                 j -= 1
 *             break
 */
          __pyx_v_fill_count = (__pyx_v_fill_count + 1);
          goto __pyx_L17;
        }
        __pyx_L17:;

        /* "pandas/src/generated.pyx":807
 *                     indexer[j] = i
 *                     fill_count += 1
 *                 j -= 1             # <<<<<<<<<<<<<<
 *             break
 * 
 */
        __pyx_v_j = (__pyx_v_j - 1);
      }

      /* "pandas/src/generated.pyx":808
 *                     fill_count += 1
 *                 j -= 1
 *             break             # <<<<<<<<<<<<<<
 * 
 *         prev = old[i - 1]
 */
      goto __pyx_L12_break;
      goto __pyx_L14;
    }
    __pyx_L14:;

    /* "pandas/src/generated.pyx":810
 *             break
 * 
 *         prev = old[i - 1]             # <<<<<<<<<<<<<<
 * 
 *         while j >= 0 and prev < new[j] <= cur:
 */
    __pyx_t_23 = (__pyx_v_i - 1);
    __pyx_v_prev = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_uint8_t *, __pyx_bstruct_old.buf, __pyx_t_23, __pyx_bstride_0_old));

    /* "pandas/src/generated.pyx":812
 *         prev = old[i - 1]
 * 
 *         while j >= 0 and prev < new[j] <= cur:             # <<<<<<<<<<<<<<
 *             if new[j] == cur:
 *                 indexer[j] = i
 */
    while (1) {
      __pyx_t_12 = (__pyx_v_j >= 0);
      if (__pyx_t_12) {
        __pyx_t_24 = __pyx_v_j;
        __pyx_t_25 = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_uint8_t *, __pyx_bstruct_new.buf, __pyx_t_24, __pyx_bstride_0_new));
        __pyx_t_16 = (__pyx_v_prev < __pyx_t_25);
        if (__pyx_t_16) {
          __pyx_t_16 = (__pyx_t_25 <= __pyx_v_cur);
        }
        __pyx_t_13 = __pyx_t_16;
      } else {
        __pyx_t_13 = __pyx_t_12;
      }
      if (!__pyx_t_13) break;

      /* "pandas/src/generated.pyx":813
 * 
 *         while j >= 0 and prev < new[j] <= cur:
 *             if new[j] == cur:             # <<<<<<<<<<<<<<
 *                 indexer[j] = i
 *             elif new[j] < cur and fill_count < lim:
 */
      __pyx_t_26 = __pyx_v_j;
      __pyx_t_13 = ((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_uint8_t *, __pyx_bstruct_new.buf, __pyx_t_26, __pyx_bstride_0_new)) == __pyx_v_cur);
      if (__pyx_t_13) {

        /* "pandas/src/generated.pyx":814
 *         while j >= 0 and prev < new[j] <= cur:
 *             if new[j] == cur:
 *                 indexer[j] = i             # <<<<<<<<<<<<<<
 *             elif new[j] < cur and fill_count < lim:
 *                 indexer[j] = i
 */
        __pyx_t_27 = __pyx_v_j;
        *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_bstruct_indexer.buf, __pyx_t_27, __pyx_bstride_0_indexer) = __pyx_v_i;
        goto __pyx_L20;
      }

      /* "pandas/src/generated.pyx":815
 *             if new[j] == cur:
 *                 indexer[j] = i
 *             elif new[j] < cur and fill_count < lim:             # <<<<<<<<<<<<<<
 *                 indexer[j] = i
 *                 fill_count += 1
 */
      __pyx_t_28 = __pyx_v_j;
      __pyx_t_13 = ((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_uint8_t *, __pyx_bstruct_new.buf, __pyx_t_28, __pyx_bstride_0_new)) < __pyx_v_cur);
      if (__pyx_t_13) {
        __pyx_t_12 = (__pyx_v_fill_count < __pyx_v_lim);
        __pyx_t_16 = __pyx_t_12;
      } else {
        __pyx_t_16 = __pyx_t_13;
      }
      if (__pyx_t_16) {

        /* "pandas/src/generated.pyx":816
 *                 indexer[j] = i
 *             elif new[j] < cur and fill_count < lim:
 *                 indexer[j] = i             # <<<<<<<<<<<<<<
 *                 fill_count += 1
 *             j -= 1
 */
        __pyx_t_29 = __pyx_v_j;
        *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_bstruct_indexer.buf, __pyx_t_29, __pyx_bstride_0_indexer) = __pyx_v_i;

        /* "pandas/src/generated.pyx":817
 *             elif new[j] < cur and fill_count < lim:
 *                 indexer[j] = i
 *                 fill_count += 1             # <<<<<<<<<<<<<<
 *             j -= 1
 * 
 */
        __pyx_v_fill_count = (__pyx_v_fill_count + 1);
        goto __pyx_L20;
      }
      __pyx_L20:;

      /* "pandas/src/generated.pyx":818
 *                 indexer[j] = i
 *                 fill_count += 1
 *             j -= 1             # <<<<<<<<<<<<<<
 * 
 *         fill_count = 0
 */
      __pyx_v_j = (__pyx_v_j - 1);
    }

    /* "pandas/src/generated.pyx":820
 *             j -= 1
 * 
 *         fill_count = 0             # <<<<<<<<<<<<<<
 *         i -= 1
 *         cur = prev
 */
    __pyx_v_fill_count = 0;

    /* "pandas/src/generated.pyx":821
 * 
 *         fill_count = 0
 *         i -= 1             # <<<<<<<<<<<<<<
 *         cur = prev
 * 
 */
    __pyx_v_i = (__pyx_v_i - 1);

    /* "pandas/src/generated.pyx":822
 *         fill_count = 0
 *         i -= 1
 *         cur = prev             # <<<<<<<<<<<<<<
 * 
 *     return indexer
 */
    __pyx_v_cur = __pyx_v_prev;
  }
  __pyx_L12_break:;

  /* "pandas/src/generated.pyx":824
 *         cur = prev
 * 
 *     return indexer             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_indexer));
  __pyx_r = ((PyObject *)__pyx_v_indexer);
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  { PyObject *__pyx_type, *__pyx_value, *__pyx_tb;
    __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);
    __Pyx_SafeReleaseBuffer(&__pyx_bstruct_old);
    __Pyx_SafeReleaseBuffer(&__pyx_bstruct_indexer);
    __Pyx_SafeReleaseBuffer(&__pyx_bstruct_new);
  __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);}
  __Pyx_AddTraceback("pandas._algos.backfill_bool", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  goto __pyx_L2;
  __pyx_L0:;
  __Pyx_SafeReleaseBuffer(&__pyx_bstruct_old);
  __Pyx_SafeReleaseBuffer(&__pyx_bstruct_indexer);
  __Pyx_SafeReleaseBuffer(&__pyx_bstruct_new);
  __pyx_L2:;
  __Pyx_XDECREF((PyObject *)__pyx_v_indexer);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "pandas/src/generated.pyx":829
 * @cython.boundscheck(False)
 * @cython.wraparound(False)
 * def pad_inplace_float64(ndarray[float64_t] values,             # <<<<<<<<<<<<<<
 *                          ndarray[uint8_t, cast=True] mask,
 *                          limit=None):
 */

static PyObject *__pyx_pf_6pandas_6_algos_20pad_inplace_float64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_6pandas_6_algos_20pad_inplace_float64 = {__Pyx_NAMESTR("pad_inplace_float64"), (PyCFunction)__pyx_pf_6pandas_6_algos_20pad_inplace_float64, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(0)};
static PyObject *__pyx_pf_6pandas_6_algos_20pad_inplace_float64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyArrayObject *__pyx_v_values = 0;
  PyArrayObject *__pyx_v_mask = 0;
  PyObject *__pyx_v_limit = 0;
  Py_ssize_t __pyx_v_i;
  Py_ssize_t __pyx_v_N;
  __pyx_t_5numpy_float64_t __pyx_v_val;
  int __pyx_v_lim;
  int __pyx_v_fill_count;
  Py_buffer __pyx_bstruct_mask;
  Py_ssize_t __pyx_bstride_0_mask = 0;
  Py_ssize_t __pyx_bshape_0_mask = 0;
  Py_buffer __pyx_bstruct_values;
  Py_ssize_t __pyx_bstride_0_values = 0;
  Py_ssize_t __pyx_bshape_0_values = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  Py_ssize_t __pyx_t_1;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_t_4;
  long __pyx_t_5;
  Py_ssize_t __pyx_t_6;
  Py_ssize_t __pyx_t_7;
  __pyx_t_5numpy_uint8_t __pyx_t_8;
  Py_ssize_t __pyx_t_9;
  Py_ssize_t __pyx_t_10;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__values,&__pyx_n_s__mask,&__pyx_n_s__limit,0};
  __Pyx_RefNannySetupContext("pad_inplace_float64");
  __pyx_self = __pyx_self;
  {
    PyObject* values[3] = {0,0,0};

    /* "pandas/src/generated.pyx":831
 * def pad_inplace_float64(ndarray[float64_t] values,
 *                          ndarray[uint8_t, cast=True] mask,
 *                          limit=None):             # <<<<<<<<<<<<<<
 *     cdef Py_ssize_t i, N
 *     cdef float64_t val
 */
    values[2] = ((PyObject *)Py_None);
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  0:
        values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__values);
        if (likely(values[0])) kw_args--;
        else goto __pyx_L5_argtuple_error;
        case  1:
        values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__mask);
        if (likely(values[1])) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("pad_inplace_float64", 0, 2, 3, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 829; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
        }
        case  2:
        if (kw_args > 0) {
          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__limit);
          if (value) { values[2] = value; kw_args--; }
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "pad_inplace_float64") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 829; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
    } else {
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_values = ((PyArrayObject *)values[0]);
    __pyx_v_mask = ((PyArrayObject *)values[1]);
    __pyx_v_limit = values[2];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("pad_inplace_float64", 0, 2, 3, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 829; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("pandas._algos.pad_inplace_float64", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_bstruct_values.buf = NULL;
  __pyx_bstruct_mask.buf = NULL;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_values), __pyx_ptype_5numpy_ndarray, 1, "values", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 829; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_mask), __pyx_ptype_5numpy_ndarray, 1, "mask", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 830; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_values, (PyObject*)__pyx_v_values, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 829; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  }
  __pyx_bstride_0_values = __pyx_bstruct_values.strides[0];
  __pyx_bshape_0_values = __pyx_bstruct_values.shape[0];
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_mask, (PyObject*)__pyx_v_mask, &__Pyx_TypeInfo_nn___pyx_t_5numpy_uint8_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 1, __pyx_stack) == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 829; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  }
  __pyx_bstride_0_mask = __pyx_bstruct_mask.strides[0];
  __pyx_bshape_0_mask = __pyx_bstruct_mask.shape[0];

  /* "pandas/src/generated.pyx":834
 *     cdef Py_ssize_t i, N
 *     cdef float64_t val
 *     cdef int lim, fill_count = 0             # <<<<<<<<<<<<<<
 * 
 *     N = len(values)
 */
  __pyx_v_fill_count = 0;

  /* "pandas/src/generated.pyx":836
 *     cdef int lim, fill_count = 0
 * 
 *     N = len(values)             # <<<<<<<<<<<<<<
 * 
 *     if limit is None:
 */
  __pyx_t_1 = PyObject_Length(((PyObject *)__pyx_v_values)); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 836; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_v_N = __pyx_t_1;

  /* "pandas/src/generated.pyx":838
 *     N = len(values)
 * 
 *     if limit is None:             # <<<<<<<<<<<<<<
 *         lim = N
 *     else:
 */
  __pyx_t_2 = (__pyx_v_limit == Py_None);
  if (__pyx_t_2) {

    /* "pandas/src/generated.pyx":839
 * 
 *     if limit is None:
 *         lim = N             # <<<<<<<<<<<<<<
 *     else:
 *         if limit < 0:
 */
    __pyx_v_lim = __pyx_v_N;
    goto __pyx_L6;
  }
  /*else*/ {

    /* "pandas/src/generated.pyx":841
 *         lim = N
 *     else:
 *         if limit < 0:             # <<<<<<<<<<<<<<
 *             raise ValueError('Limit must be non-negative')
 *         lim = limit
 */
    __pyx_t_3 = PyObject_RichCompare(__pyx_v_limit, __pyx_int_0, Py_LT); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 841; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 841; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (__pyx_t_2) {

      /* "pandas/src/generated.pyx":842
 *     else:
 *         if limit < 0:
 *             raise ValueError('Limit must be non-negative')             # <<<<<<<<<<<<<<
 *         lim = limit
 * 
 */
      __pyx_t_3 = PyObject_Call(__pyx_builtin_ValueError, ((PyObject *)__pyx_k_tuple_22), NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 842; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_Raise(__pyx_t_3, 0, 0, 0);
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      {__pyx_filename = __pyx_f[0]; __pyx_lineno = 842; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      goto __pyx_L7;
    }
    __pyx_L7:;

    /* "pandas/src/generated.pyx":843
 *         if limit < 0:
 *             raise ValueError('Limit must be non-negative')
 *         lim = limit             # <<<<<<<<<<<<<<
 * 
 *     val = values[0]
 */
    __pyx_t_4 = __Pyx_PyInt_AsInt(__pyx_v_limit); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 843; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __pyx_v_lim = __pyx_t_4;
  }
  __pyx_L6:;

  /* "pandas/src/generated.pyx":845
 *         lim = limit
 * 
 *     val = values[0]             # <<<<<<<<<<<<<<
 *     for i in range(N):
 *         if mask[i]:
 */
  __pyx_t_5 = 0;
  __pyx_v_val = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_values.buf, __pyx_t_5, __pyx_bstride_0_values));

  /* "pandas/src/generated.pyx":846
 * 
 *     val = values[0]
 *     for i in range(N):             # <<<<<<<<<<<<<<
 *         if mask[i]:
 *             if fill_count >= lim:
 */
  __pyx_t_1 = __pyx_v_N;
  for (__pyx_t_6 = 0; __pyx_t_6 < __pyx_t_1; __pyx_t_6+=1) {
    __pyx_v_i = __pyx_t_6;

    /* "pandas/src/generated.pyx":847
 *     val = values[0]
 *     for i in range(N):
 *         if mask[i]:             # <<<<<<<<<<<<<<
 *             if fill_count >= lim:
 *                 continue
 */
    __pyx_t_7 = __pyx_v_i;
    __pyx_t_8 = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_uint8_t *, __pyx_bstruct_mask.buf, __pyx_t_7, __pyx_bstride_0_mask));
    if (__pyx_t_8) {

      /* "pandas/src/generated.pyx":848
 *     for i in range(N):
 *         if mask[i]:
 *             if fill_count >= lim:             # <<<<<<<<<<<<<<
 *                 continue
 *             fill_count += 1
 */
      __pyx_t_2 = (__pyx_v_fill_count >= __pyx_v_lim);
      if (__pyx_t_2) {

        /* "pandas/src/generated.pyx":849
 *         if mask[i]:
 *             if fill_count >= lim:
 *                 continue             # <<<<<<<<<<<<<<
 *             fill_count += 1
 *             values[i] = val
 */
        goto __pyx_L8_continue;
        goto __pyx_L11;
      }
      __pyx_L11:;

      /* "pandas/src/generated.pyx":850
 *             if fill_count >= lim:
 *                 continue
 *             fill_count += 1             # <<<<<<<<<<<<<<
 *             values[i] = val
 *         else:
 */
      __pyx_v_fill_count = (__pyx_v_fill_count + 1);

      /* "pandas/src/generated.pyx":851
 *                 continue
 *             fill_count += 1
 *             values[i] = val             # <<<<<<<<<<<<<<
 *         else:
 *             fill_count = 0
 */
      __pyx_t_9 = __pyx_v_i;
      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_values.buf, __pyx_t_9, __pyx_bstride_0_values) = __pyx_v_val;
      goto __pyx_L10;
    }
    /*else*/ {

      /* "pandas/src/generated.pyx":853
 *             values[i] = val
 *         else:
 *             fill_count = 0             # <<<<<<<<<<<<<<
 *             val = values[i]
 * 
 */
      __pyx_v_fill_count = 0;

      /* "pandas/src/generated.pyx":854
 *         else:
 *             fill_count = 0
 *             val = values[i]             # <<<<<<<<<<<<<<
 * 
 * @cython.boundscheck(False)
 */
      __pyx_t_10 = __pyx_v_i;
      __pyx_v_val = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_values.buf, __pyx_t_10, __pyx_bstride_0_values));
    }
    __pyx_L10:;
    __pyx_L8_continue:;
  }

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  { PyObject *__pyx_type, *__pyx_value, *__pyx_tb;
    __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);
    __Pyx_SafeReleaseBuffer(&__pyx_bstruct_mask);
    __Pyx_SafeReleaseBuffer(&__pyx_bstruct_values);
  __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);}
  __Pyx_AddTraceback("pandas._algos.pad_inplace_float64", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  goto __pyx_L2;
  __pyx_L0:;
  __Pyx_SafeReleaseBuffer(&__pyx_bstruct_mask);
  __Pyx_SafeReleaseBuffer(&__pyx_bstruct_values);
  __pyx_L2:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "pandas/src/generated.pyx":858
 * @cython.boundscheck(False)
 * @cython.wraparound(False)
 * def pad_inplace_object(ndarray[object] values,             # <<<<<<<<<<<<<<
 *                          ndarray[uint8_t, cast=True] mask,
 *                          limit=None):
 */

static PyObject *__pyx_pf_6pandas_6_algos_21pad_inplace_object(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_6pandas_6_algos_21pad_inplace_object = {__Pyx_NAMESTR("pad_inplace_object"), (PyCFunction)__pyx_pf_6pandas_6_algos_21pad_inplace_object, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(0)};
static PyObject *__pyx_pf_6pandas_6_algos_21pad_inplace_object(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyArrayObject *__pyx_v_values = 0;
  PyArrayObject *__pyx_v_mask = 0;
  PyObject *__pyx_v_limit = 0;
  Py_ssize_t __pyx_v_i;
  Py_ssize_t __pyx_v_N;
  PyObject *__pyx_v_val = 0;
  int __pyx_v_lim;
  int __pyx_v_fill_count;
  Py_buffer __pyx_bstruct_mask;
  Py_ssize_t __pyx_bstride_0_mask = 0;
  Py_ssize_t __pyx_bshape_0_mask = 0;
  Py_buffer __pyx_bstruct_values;
  Py_ssize_t __pyx_bstride_0_values = 0;
  Py_ssize_t __pyx_bshape_0_values = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  Py_ssize_t __pyx_t_1;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_t_4;
  long __pyx_t_5;
  Py_ssize_t __pyx_t_6;
  Py_ssize_t __pyx_t_7;
  __pyx_t_5numpy_uint8_t __pyx_t_8;
  Py_ssize_t __pyx_t_9;
  PyObject **__pyx_t_10;
  Py_ssize_t __pyx_t_11;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__values,&__pyx_n_s__mask,&__pyx_n_s__limit,0};
  __Pyx_RefNannySetupContext("pad_inplace_object");
  __pyx_self = __pyx_self;
  {
    PyObject* values[3] = {0,0,0};

    /* "pandas/src/generated.pyx":860
 * def pad_inplace_object(ndarray[object] values,
 *                          ndarray[uint8_t, cast=True] mask,
 *                          limit=None):             # <<<<<<<<<<<<<<
 *     cdef Py_ssize_t i, N
 *     cdef object val
 */
    values[2] = ((PyObject *)Py_None);
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  0:
        values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__values);
        if (likely(values[0])) kw_args--;
        else goto __pyx_L5_argtuple_error;
        case  1:
        values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__mask);
        if (likely(values[1])) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("pad_inplace_object", 0, 2, 3, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 858; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
        }
        case  2:
        if (kw_args > 0) {
          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__limit);
          if (value) { values[2] = value; kw_args--; }
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "pad_inplace_object") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 858; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
    } else {
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_values = ((PyArrayObject *)values[0]);
    __pyx_v_mask = ((PyArrayObject *)values[1]);
    __pyx_v_limit = values[2];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("pad_inplace_object", 0, 2, 3, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 858; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("pandas._algos.pad_inplace_object", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_bstruct_values.buf = NULL;
  __pyx_bstruct_mask.buf = NULL;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_values), __pyx_ptype_5numpy_ndarray, 1, "values", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 858; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_mask), __pyx_ptype_5numpy_ndarray, 1, "mask", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 859; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_values, (PyObject*)__pyx_v_values, &__Pyx_TypeInfo_object, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 858; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  }
  __pyx_bstride_0_values = __pyx_bstruct_values.strides[0];
  __pyx_bshape_0_values = __pyx_bstruct_values.shape[0];
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_mask, (PyObject*)__pyx_v_mask, &__Pyx_TypeInfo_nn___pyx_t_5numpy_uint8_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 1, __pyx_stack) == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 858; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  }
  __pyx_bstride_0_mask = __pyx_bstruct_mask.strides[0];
  __pyx_bshape_0_mask = __pyx_bstruct_mask.shape[0];

  /* "pandas/src/generated.pyx":863
 *     cdef Py_ssize_t i, N
 *     cdef object val
 *     cdef int lim, fill_count = 0             # <<<<<<<<<<<<<<
 * 
 *     N = len(values)
 */
  __pyx_v_fill_count = 0;

  /* "pandas/src/generated.pyx":865
 *     cdef int lim, fill_count = 0
 * 
 *     N = len(values)             # <<<<<<<<<<<<<<
 * 
 *     if limit is None:
 */
  __pyx_t_1 = PyObject_Length(((PyObject *)__pyx_v_values)); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 865; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_v_N = __pyx_t_1;

  /* "pandas/src/generated.pyx":867
 *     N = len(values)
 * 
 *     if limit is None:             # <<<<<<<<<<<<<<
 *         lim = N
 *     else:
 */
  __pyx_t_2 = (__pyx_v_limit == Py_None);
  if (__pyx_t_2) {

    /* "pandas/src/generated.pyx":868
 * 
 *     if limit is None:
 *         lim = N             # <<<<<<<<<<<<<<
 *     else:
 *         if limit < 0:
 */
    __pyx_v_lim = __pyx_v_N;
    goto __pyx_L6;
  }
  /*else*/ {

    /* "pandas/src/generated.pyx":870
 *         lim = N
 *     else:
 *         if limit < 0:             # <<<<<<<<<<<<<<
 *             raise ValueError('Limit must be non-negative')
 *         lim = limit
 */
    __pyx_t_3 = PyObject_RichCompare(__pyx_v_limit, __pyx_int_0, Py_LT); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 870; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 870; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (__pyx_t_2) {

      /* "pandas/src/generated.pyx":871
 *     else:
 *         if limit < 0:
 *             raise ValueError('Limit must be non-negative')             # <<<<<<<<<<<<<<
 *         lim = limit
 * 
 */
      __pyx_t_3 = PyObject_Call(__pyx_builtin_ValueError, ((PyObject *)__pyx_k_tuple_23), NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 871; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_Raise(__pyx_t_3, 0, 0, 0);
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      {__pyx_filename = __pyx_f[0]; __pyx_lineno = 871; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      goto __pyx_L7;
    }
    __pyx_L7:;

    /* "pandas/src/generated.pyx":872
 *         if limit < 0:
 *             raise ValueError('Limit must be non-negative')
 *         lim = limit             # <<<<<<<<<<<<<<
 * 
 *     val = values[0]
 */
    __pyx_t_4 = __Pyx_PyInt_AsInt(__pyx_v_limit); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 872; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __pyx_v_lim = __pyx_t_4;
  }
  __pyx_L6:;

  /* "pandas/src/generated.pyx":874
 *         lim = limit
 * 
 *     val = values[0]             # <<<<<<<<<<<<<<
 *     for i in range(N):
 *         if mask[i]:
 */
  __pyx_t_5 = 0;
  __pyx_t_3 = *__Pyx_BufPtrStrided1d(PyObject **, __pyx_bstruct_values.buf, __pyx_t_5, __pyx_bstride_0_values);
  __Pyx_INCREF((PyObject*)__pyx_t_3);
  __pyx_v_val = __pyx_t_3;
  __pyx_t_3 = 0;

  /* "pandas/src/generated.pyx":875
 * 
 *     val = values[0]
 *     for i in range(N):             # <<<<<<<<<<<<<<
 *         if mask[i]:
 *             if fill_count >= lim:
 */
  __pyx_t_1 = __pyx_v_N;
  for (__pyx_t_6 = 0; __pyx_t_6 < __pyx_t_1; __pyx_t_6+=1) {
    __pyx_v_i = __pyx_t_6;

    /* "pandas/src/generated.pyx":876
 *     val = values[0]
 *     for i in range(N):
 *         if mask[i]:             # <<<<<<<<<<<<<<
 *             if fill_count >= lim:
 *                 continue
 */
    __pyx_t_7 = __pyx_v_i;
    __pyx_t_8 = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_uint8_t *, __pyx_bstruct_mask.buf, __pyx_t_7, __pyx_bstride_0_mask));
    if (__pyx_t_8) {

      /* "pandas/src/generated.pyx":877
 *     for i in range(N):
 *         if mask[i]:
 *             if fill_count >= lim:             # <<<<<<<<<<<<<<
 *                 continue
 *             fill_count += 1
 */
      __pyx_t_2 = (__pyx_v_fill_count >= __pyx_v_lim);
      if (__pyx_t_2) {

        /* "pandas/src/generated.pyx":878
 *         if mask[i]:
 *             if fill_count >= lim:
 *                 continue             # <<<<<<<<<<<<<<
 *             fill_count += 1
 *             values[i] = val
 */
        goto __pyx_L8_continue;
        goto __pyx_L11;
      }
      __pyx_L11:;

      /* "pandas/src/generated.pyx":879
 *             if fill_count >= lim:
 *                 continue
 *             fill_count += 1             # <<<<<<<<<<<<<<
 *             values[i] = val
 *         else:
 */
      __pyx_v_fill_count = (__pyx_v_fill_count + 1);

      /* "pandas/src/generated.pyx":880
 *                 continue
 *             fill_count += 1
 *             values[i] = val             # <<<<<<<<<<<<<<
 *         else:
 *             fill_count = 0
 */
      __pyx_t_9 = __pyx_v_i;
      __pyx_t_10 = __Pyx_BufPtrStrided1d(PyObject **, __pyx_bstruct_values.buf, __pyx_t_9, __pyx_bstride_0_values);
      __Pyx_GOTREF(*__pyx_t_10);
      __Pyx_DECREF(*__pyx_t_10); __Pyx_INCREF(__pyx_v_val);
      *__pyx_t_10 = __pyx_v_val;
      __Pyx_GIVEREF(*__pyx_t_10);
      goto __pyx_L10;
    }
    /*else*/ {

      /* "pandas/src/generated.pyx":882
 *             values[i] = val
 *         else:
 *             fill_count = 0             # <<<<<<<<<<<<<<
 *             val = values[i]
 * 
 */
      __pyx_v_fill_count = 0;

      /* "pandas/src/generated.pyx":883
 *         else:
 *             fill_count = 0
 *             val = values[i]             # <<<<<<<<<<<<<<
 * 
 * @cython.boundscheck(False)
 */
      __pyx_t_11 = __pyx_v_i;
      __pyx_t_3 = *__Pyx_BufPtrStrided1d(PyObject **, __pyx_bstruct_values.buf, __pyx_t_11, __pyx_bstride_0_values);
      __Pyx_INCREF((PyObject*)__pyx_t_3);
      __Pyx_DECREF(__pyx_v_val);
      __pyx_v_val = __pyx_t_3;
      __pyx_t_3 = 0;
    }
    __pyx_L10:;
    __pyx_L8_continue:;
  }

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  { PyObject *__pyx_type, *__pyx_value, *__pyx_tb;
    __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);
    __Pyx_SafeReleaseBuffer(&__pyx_bstruct_mask);
    __Pyx_SafeReleaseBuffer(&__pyx_bstruct_values);
  __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);}
  __Pyx_AddTraceback("pandas._algos.pad_inplace_object", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  goto __pyx_L2;
  __pyx_L0:;
  __Pyx_SafeReleaseBuffer(&__pyx_bstruct_mask);
  __Pyx_SafeReleaseBuffer(&__pyx_bstruct_values);
  __pyx_L2:;
  __Pyx_XDECREF(__pyx_v_val);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "pandas/src/generated.pyx":887
 * @cython.boundscheck(False)
 * @cython.wraparound(False)
 * def pad_inplace_int32(ndarray[int32_t] values,             # <<<<<<<<<<<<<<
 *                          ndarray[uint8_t, cast=True] mask,
 *                          limit=None):
 */

static PyObject *__pyx_pf_6pandas_6_algos_22pad_inplace_int32(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_6pandas_6_algos_22pad_inplace_int32 = {__Pyx_NAMESTR("pad_inplace_int32"), (PyCFunction)__pyx_pf_6pandas_6_algos_22pad_inplace_int32, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(0)};
static PyObject *__pyx_pf_6pandas_6_algos_22pad_inplace_int32(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyArrayObject *__pyx_v_values = 0;
  PyArrayObject *__pyx_v_mask = 0;
  PyObject *__pyx_v_limit = 0;
  Py_ssize_t __pyx_v_i;
  Py_ssize_t __pyx_v_N;
  __pyx_t_5numpy_int32_t __pyx_v_val;
  int __pyx_v_lim;
  int __pyx_v_fill_count;
  Py_buffer __pyx_bstruct_mask;
  Py_ssize_t __pyx_bstride_0_mask = 0;
  Py_ssize_t __pyx_bshape_0_mask = 0;
  Py_buffer __pyx_bstruct_values;
  Py_ssize_t __pyx_bstride_0_values = 0;
  Py_ssize_t __pyx_bshape_0_values = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  Py_ssize_t __pyx_t_1;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_t_4;
  long __pyx_t_5;
  Py_ssize_t __pyx_t_6;
  Py_ssize_t __pyx_t_7;
  __pyx_t_5numpy_uint8_t __pyx_t_8;
  Py_ssize_t __pyx_t_9;
  Py_ssize_t __pyx_t_10;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__values,&__pyx_n_s__mask,&__pyx_n_s__limit,0};
  __Pyx_RefNannySetupContext("pad_inplace_int32");
  __pyx_self = __pyx_self;
  {
    PyObject* values[3] = {0,0,0};

    /* "pandas/src/generated.pyx":889
 * def pad_inplace_int32(ndarray[int32_t] values,
 *                          ndarray[uint8_t, cast=True] mask,
 *                          limit=None):             # <<<<<<<<<<<<<<
 *     cdef Py_ssize_t i, N
 *     cdef int32_t val
 */
    values[2] = ((PyObject *)Py_None);
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  0:
        values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__values);
        if (likely(values[0])) kw_args--;
        else goto __pyx_L5_argtuple_error;
        case  1:
        values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__mask);
        if (likely(values[1])) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("pad_inplace_int32", 0, 2, 3, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 887; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
        }
        case  2:
        if (kw_args > 0) {
          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__limit);
          if (value) { values[2] = value; kw_args--; }
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "pad_inplace_int32") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 887; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
    } else {
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_values = ((PyArrayObject *)values[0]);
    __pyx_v_mask = ((PyArrayObject *)values[1]);
    __pyx_v_limit = values[2];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("pad_inplace_int32", 0, 2, 3, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 887; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("pandas._algos.pad_inplace_int32", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_bstruct_values.buf = NULL;
  __pyx_bstruct_mask.buf = NULL;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_values), __pyx_ptype_5numpy_ndarray, 1, "values", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 887; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_mask), __pyx_ptype_5numpy_ndarray, 1, "mask", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 888; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_values, (PyObject*)__pyx_v_values, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int32_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 887; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  }
  __pyx_bstride_0_values = __pyx_bstruct_values.strides[0];
  __pyx_bshape_0_values = __pyx_bstruct_values.shape[0];
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_mask, (PyObject*)__pyx_v_mask, &__Pyx_TypeInfo_nn___pyx_t_5numpy_uint8_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 1, __pyx_stack) == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 887; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  }
  __pyx_bstride_0_mask = __pyx_bstruct_mask.strides[0];
  __pyx_bshape_0_mask = __pyx_bstruct_mask.shape[0];

  /* "pandas/src/generated.pyx":892
 *     cdef Py_ssize_t i, N
 *     cdef int32_t val
 *     cdef int lim, fill_count = 0             # <<<<<<<<<<<<<<
 * 
 *     N = len(values)
 */
  __pyx_v_fill_count = 0;

  /* "pandas/src/generated.pyx":894
 *     cdef int lim, fill_count = 0
 * 
 *     N = len(values)             # <<<<<<<<<<<<<<
 * 
 *     if limit is None:
 */
  __pyx_t_1 = PyObject_Length(((PyObject *)__pyx_v_values)); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 894; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_v_N = __pyx_t_1;

  /* "pandas/src/generated.pyx":896
 *     N = len(values)
 * 
 *     if limit is None:             # <<<<<<<<<<<<<<
 *         lim = N
 *     else:
 */
  __pyx_t_2 = (__pyx_v_limit == Py_None);
  if (__pyx_t_2) {

    /* "pandas/src/generated.pyx":897
 * 
 *     if limit is None:
 *         lim = N             # <<<<<<<<<<<<<<
 *     else:
 *         if limit < 0:
 */
    __pyx_v_lim = __pyx_v_N;
    goto __pyx_L6;
  }
  /*else*/ {

    /* "pandas/src/generated.pyx":899
 *         lim = N
 *     else:
 *         if limit < 0:             # <<<<<<<<<<<<<<
 *             raise ValueError('Limit must be non-negative')
 *         lim = limit
 */
    __pyx_t_3 = PyObject_RichCompare(__pyx_v_limit, __pyx_int_0, Py_LT); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 899; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 899; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (__pyx_t_2) {

      /* "pandas/src/generated.pyx":900
 *     else:
 *         if limit < 0:
 *             raise ValueError('Limit must be non-negative')             # <<<<<<<<<<<<<<
 *         lim = limit
 * 
 */
      __pyx_t_3 = PyObject_Call(__pyx_builtin_ValueError, ((PyObject *)__pyx_k_tuple_24), NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 900; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_Raise(__pyx_t_3, 0, 0, 0);
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      {__pyx_filename = __pyx_f[0]; __pyx_lineno = 900; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      goto __pyx_L7;
    }
    __pyx_L7:;

    /* "pandas/src/generated.pyx":901
 *         if limit < 0:
 *             raise ValueError('Limit must be non-negative')
 *         lim = limit             # <<<<<<<<<<<<<<
 * 
 *     val = values[0]
 */
    __pyx_t_4 = __Pyx_PyInt_AsInt(__pyx_v_limit); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 901; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __pyx_v_lim = __pyx_t_4;
  }
  __pyx_L6:;

  /* "pandas/src/generated.pyx":903
 *         lim = limit
 * 
 *     val = values[0]             # <<<<<<<<<<<<<<
 *     for i in range(N):
 *         if mask[i]:
 */
  __pyx_t_5 = 0;
  __pyx_v_val = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int32_t *, __pyx_bstruct_values.buf, __pyx_t_5, __pyx_bstride_0_values));

  /* "pandas/src/generated.pyx":904
 * 
 *     val = values[0]
 *     for i in range(N):             # <<<<<<<<<<<<<<
 *         if mask[i]:
 *             if fill_count >= lim:
 */
  __pyx_t_1 = __pyx_v_N;
  for (__pyx_t_6 = 0; __pyx_t_6 < __pyx_t_1; __pyx_t_6+=1) {
    __pyx_v_i = __pyx_t_6;

    /* "pandas/src/generated.pyx":905
 *     val = values[0]
 *     for i in range(N):
 *         if mask[i]:             # <<<<<<<<<<<<<<
 *             if fill_count >= lim:
 *                 continue
 */
    __pyx_t_7 = __pyx_v_i;
    __pyx_t_8 = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_uint8_t *, __pyx_bstruct_mask.buf, __pyx_t_7, __pyx_bstride_0_mask));
    if (__pyx_t_8) {

      /* "pandas/src/generated.pyx":906
 *     for i in range(N):
 *         if mask[i]:
 *             if fill_count >= lim:             # <<<<<<<<<<<<<<
 *                 continue
 *             fill_count += 1
 */
      __pyx_t_2 = (__pyx_v_fill_count >= __pyx_v_lim);
      if (__pyx_t_2) {

        /* "pandas/src/generated.pyx":907
 *         if mask[i]:
 *             if fill_count >= lim:
 *                 continue             # <<<<<<<<<<<<<<
 *             fill_count += 1
 *             values[i] = val
 */
        goto __pyx_L8_continue;
        goto __pyx_L11;
      }
      __pyx_L11:;

      /* "pandas/src/generated.pyx":908
 *             if fill_count >= lim:
 *                 continue
 *             fill_count += 1             # <<<<<<<<<<<<<<
 *             values[i] = val
 *         else:
 */
      __pyx_v_fill_count = (__pyx_v_fill_count + 1);

      /* "pandas/src/generated.pyx":909
 *                 continue
 *             fill_count += 1
 *             values[i] = val             # <<<<<<<<<<<<<<
 *         else:
 *             fill_count = 0
 */
      __pyx_t_9 = __pyx_v_i;
      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int32_t *, __pyx_bstruct_values.buf, __pyx_t_9, __pyx_bstride_0_values) = __pyx_v_val;
      goto __pyx_L10;
    }
    /*else*/ {

      /* "pandas/src/generated.pyx":911
 *             values[i] = val
 *         else:
 *             fill_count = 0             # <<<<<<<<<<<<<<
 *             val = values[i]
 * 
 */
      __pyx_v_fill_count = 0;

      /* "pandas/src/generated.pyx":912
 *         else:
 *             fill_count = 0
 *             val = values[i]             # <<<<<<<<<<<<<<
 * 
 * @cython.boundscheck(False)
 */
      __pyx_t_10 = __pyx_v_i;
      __pyx_v_val = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int32_t *, __pyx_bstruct_values.buf, __pyx_t_10, __pyx_bstride_0_values));
    }
    __pyx_L10:;
    __pyx_L8_continue:;
  }

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  { PyObject *__pyx_type, *__pyx_value, *__pyx_tb;
    __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);
    __Pyx_SafeReleaseBuffer(&__pyx_bstruct_mask);
    __Pyx_SafeReleaseBuffer(&__pyx_bstruct_values);
  __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);}
  __Pyx_AddTraceback("pandas._algos.pad_inplace_int32", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  goto __pyx_L2;
  __pyx_L0:;
  __Pyx_SafeReleaseBuffer(&__pyx_bstruct_mask);
  __Pyx_SafeReleaseBuffer(&__pyx_bstruct_values);
  __pyx_L2:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "pandas/src/generated.pyx":916
 * @cython.boundscheck(False)
 * @cython.wraparound(False)
 * def pad_inplace_int64(ndarray[int64_t] values,             # <<<<<<<<<<<<<<
 *                          ndarray[uint8_t, cast=True] mask,
 *                          limit=None):
 */

static PyObject *__pyx_pf_6pandas_6_algos_23pad_inplace_int64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_6pandas_6_algos_23pad_inplace_int64 = {__Pyx_NAMESTR("pad_inplace_int64"), (PyCFunction)__pyx_pf_6pandas_6_algos_23pad_inplace_int64, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(0)};
static PyObject *__pyx_pf_6pandas_6_algos_23pad_inplace_int64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyArrayObject *__pyx_v_values = 0;
  PyArrayObject *__pyx_v_mask = 0;
  PyObject *__pyx_v_limit = 0;
  Py_ssize_t __pyx_v_i;
  Py_ssize_t __pyx_v_N;
  __pyx_t_5numpy_int64_t __pyx_v_val;
  int __pyx_v_lim;
  int __pyx_v_fill_count;
  Py_buffer __pyx_bstruct_mask;
  Py_ssize_t __pyx_bstride_0_mask = 0;
  Py_ssize_t __pyx_bshape_0_mask = 0;
  Py_buffer __pyx_bstruct_values;
  Py_ssize_t __pyx_bstride_0_values = 0;
  Py_ssize_t __pyx_bshape_0_values = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  Py_ssize_t __pyx_t_1;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_t_4;
  long __pyx_t_5;
  Py_ssize_t __pyx_t_6;
  Py_ssize_t __pyx_t_7;
  __pyx_t_5numpy_uint8_t __pyx_t_8;
  Py_ssize_t __pyx_t_9;
  Py_ssize_t __pyx_t_10;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__values,&__pyx_n_s__mask,&__pyx_n_s__limit,0};
  __Pyx_RefNannySetupContext("pad_inplace_int64");
  __pyx_self = __pyx_self;
  {
    PyObject* values[3] = {0,0,0};

    /* "pandas/src/generated.pyx":918
 * def pad_inplace_int64(ndarray[int64_t] values,
 *                          ndarray[uint8_t, cast=True] mask,
 *                          limit=None):             # <<<<<<<<<<<<<<
 *     cdef Py_ssize_t i, N
 *     cdef int64_t val
 */
    values[2] = ((PyObject *)Py_None);
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  0:
        values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__values);
        if (likely(values[0])) kw_args--;
        else goto __pyx_L5_argtuple_error;
        case  1:
        values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__mask);
        if (likely(values[1])) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("pad_inplace_int64", 0, 2, 3, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 916; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
        }
        case  2:
        if (kw_args > 0) {
          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__limit);
          if (value) { values[2] = value; kw_args--; }
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "pad_inplace_int64") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 916; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
    } else {
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_values = ((PyArrayObject *)values[0]);
    __pyx_v_mask = ((PyArrayObject *)values[1]);
    __pyx_v_limit = values[2];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("pad_inplace_int64", 0, 2, 3, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 916; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("pandas._algos.pad_inplace_int64", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_bstruct_values.buf = NULL;
  __pyx_bstruct_mask.buf = NULL;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_values), __pyx_ptype_5numpy_ndarray, 1, "values", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 916; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_mask), __pyx_ptype_5numpy_ndarray, 1, "mask", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 917; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_values, (PyObject*)__pyx_v_values, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 916; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  }
  __pyx_bstride_0_values = __pyx_bstruct_values.strides[0];
  __pyx_bshape_0_values = __pyx_bstruct_values.shape[0];
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_mask, (PyObject*)__pyx_v_mask, &__Pyx_TypeInfo_nn___pyx_t_5numpy_uint8_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 1, __pyx_stack) == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 916; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  }
  __pyx_bstride_0_mask = __pyx_bstruct_mask.strides[0];
  __pyx_bshape_0_mask = __pyx_bstruct_mask.shape[0];

  /* "pandas/src/generated.pyx":921
 *     cdef Py_ssize_t i, N
 *     cdef int64_t val
 *     cdef int lim, fill_count = 0             # <<<<<<<<<<<<<<
 * 
 *     N = len(values)
 */
  __pyx_v_fill_count = 0;

  /* "pandas/src/generated.pyx":923
 *     cdef int lim, fill_count = 0
 * 
 *     N = len(values)             # <<<<<<<<<<<<<<
 * 
 *     if limit is None:
 */
  __pyx_t_1 = PyObject_Length(((PyObject *)__pyx_v_values)); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 923; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_v_N = __pyx_t_1;

  /* "pandas/src/generated.pyx":925
 *     N = len(values)
 * 
 *     if limit is None:             # <<<<<<<<<<<<<<
 *         lim = N
 *     else:
 */
  __pyx_t_2 = (__pyx_v_limit == Py_None);
  if (__pyx_t_2) {

    /* "pandas/src/generated.pyx":926
 * 
 *     if limit is None:
 *         lim = N             # <<<<<<<<<<<<<<
 *     else:
 *         if limit < 0:
 */
    __pyx_v_lim = __pyx_v_N;
    goto __pyx_L6;
  }
  /*else*/ {

    /* "pandas/src/generated.pyx":928
 *         lim = N
 *     else:
 *         if limit < 0:             # <<<<<<<<<<<<<<
 *             raise ValueError('Limit must be non-negative')
 *         lim = limit
 */
    __pyx_t_3 = PyObject_RichCompare(__pyx_v_limit, __pyx_int_0, Py_LT); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 928; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 928; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (__pyx_t_2) {

      /* "pandas/src/generated.pyx":929
 *     else:
 *         if limit < 0:
 *             raise ValueError('Limit must be non-negative')             # <<<<<<<<<<<<<<
 *         lim = limit
 * 
 */
      __pyx_t_3 = PyObject_Call(__pyx_builtin_ValueError, ((PyObject *)__pyx_k_tuple_25), NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 929; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_Raise(__pyx_t_3, 0, 0, 0);
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      {__pyx_filename = __pyx_f[0]; __pyx_lineno = 929; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      goto __pyx_L7;
    }
    __pyx_L7:;

    /* "pandas/src/generated.pyx":930
 *         if limit < 0:
 *             raise ValueError('Limit must be non-negative')
 *         lim = limit             # <<<<<<<<<<<<<<
 * 
 *     val = values[0]
 */
    __pyx_t_4 = __Pyx_PyInt_AsInt(__pyx_v_limit); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 930; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __pyx_v_lim = __pyx_t_4;
  }
  __pyx_L6:;

  /* "pandas/src/generated.pyx":932
 *         lim = limit
 * 
 *     val = values[0]             # <<<<<<<<<<<<<<
 *     for i in range(N):
 *         if mask[i]:
 */
  __pyx_t_5 = 0;
  __pyx_v_val = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_bstruct_values.buf, __pyx_t_5, __pyx_bstride_0_values));

  /* "pandas/src/generated.pyx":933
 * 
 *     val = values[0]
 *     for i in range(N):             # <<<<<<<<<<<<<<
 *         if mask[i]:
 *             if fill_count >= lim:
 */
  __pyx_t_1 = __pyx_v_N;
  for (__pyx_t_6 = 0; __pyx_t_6 < __pyx_t_1; __pyx_t_6+=1) {
    __pyx_v_i = __pyx_t_6;

    /* "pandas/src/generated.pyx":934
 *     val = values[0]
 *     for i in range(N):
 *         if mask[i]:             # <<<<<<<<<<<<<<
 *             if fill_count >= lim:
 *                 continue
 */
    __pyx_t_7 = __pyx_v_i;
    __pyx_t_8 = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_uint8_t *, __pyx_bstruct_mask.buf, __pyx_t_7, __pyx_bstride_0_mask));
    if (__pyx_t_8) {

      /* "pandas/src/generated.pyx":935
 *     for i in range(N):
 *         if mask[i]:
 *             if fill_count >= lim:             # <<<<<<<<<<<<<<
 *                 continue
 *             fill_count += 1
 */
      __pyx_t_2 = (__pyx_v_fill_count >= __pyx_v_lim);
      if (__pyx_t_2) {

        /* "pandas/src/generated.pyx":936
 *         if mask[i]:
 *             if fill_count >= lim:
 *                 continue             # <<<<<<<<<<<<<<
 *             fill_count += 1
 *             values[i] = val
 */
        goto __pyx_L8_continue;
        goto __pyx_L11;
      }
      __pyx_L11:;

      /* "pandas/src/generated.pyx":937
 *             if fill_count >= lim:
 *                 continue
 *             fill_count += 1             # <<<<<<<<<<<<<<
 *             values[i] = val
 *         else:
 */
      __pyx_v_fill_count = (__pyx_v_fill_count + 1);

      /* "pandas/src/generated.pyx":938
 *                 continue
 *             fill_count += 1
 *             values[i] = val             # <<<<<<<<<<<<<<
 *         else:
 *             fill_count = 0
 */
      __pyx_t_9 = __pyx_v_i;
      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_bstruct_values.buf, __pyx_t_9, __pyx_bstride_0_values) = __pyx_v_val;
      goto __pyx_L10;
    }
    /*else*/ {

      /* "pandas/src/generated.pyx":940
 *             values[i] = val
 *         else:
 *             fill_count = 0             # <<<<<<<<<<<<<<
 *             val = values[i]
 * 
 */
      __pyx_v_fill_count = 0;

      /* "pandas/src/generated.pyx":941
 *         else:
 *             fill_count = 0
 *             val = values[i]             # <<<<<<<<<<<<<<
 * 
 * @cython.boundscheck(False)
 */
      __pyx_t_10 = __pyx_v_i;
      __pyx_v_val = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_bstruct_values.buf, __pyx_t_10, __pyx_bstride_0_values));
    }
    __pyx_L10:;
    __pyx_L8_continue:;
  }

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  { PyObject *__pyx_type, *__pyx_value, *__pyx_tb;
    __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);
    __Pyx_SafeReleaseBuffer(&__pyx_bstruct_mask);
    __Pyx_SafeReleaseBuffer(&__pyx_bstruct_values);
  __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);}
  __Pyx_AddTraceback("pandas._algos.pad_inplace_int64", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  goto __pyx_L2;
  __pyx_L0:;
  __Pyx_SafeReleaseBuffer(&__pyx_bstruct_mask);
  __Pyx_SafeReleaseBuffer(&__pyx_bstruct_values);
  __pyx_L2:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "pandas/src/generated.pyx":945
 * @cython.boundscheck(False)
 * @cython.wraparound(False)
 * def pad_inplace_bool(ndarray[uint8_t] values,             # <<<<<<<<<<<<<<
 *                          ndarray[uint8_t, cast=True] mask,
 *                          limit=None):
 */

static PyObject *__pyx_pf_6pandas_6_algos_24pad_inplace_bool(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_6pandas_6_algos_24pad_inplace_bool = {__Pyx_NAMESTR("pad_inplace_bool"), (PyCFunction)__pyx_pf_6pandas_6_algos_24pad_inplace_bool, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(0)};
static PyObject *__pyx_pf_6pandas_6_algos_24pad_inplace_bool(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyArrayObject *__pyx_v_values = 0;
  PyArrayObject *__pyx_v_mask = 0;
  PyObject *__pyx_v_limit = 0;
  Py_ssize_t __pyx_v_i;
  Py_ssize_t __pyx_v_N;
  __pyx_t_5numpy_uint8_t __pyx_v_val;
  int __pyx_v_lim;
  int __pyx_v_fill_count;
  Py_buffer __pyx_bstruct_mask;
  Py_ssize_t __pyx_bstride_0_mask = 0;
  Py_ssize_t __pyx_bshape_0_mask = 0;
  Py_buffer __pyx_bstruct_values;
  Py_ssize_t __pyx_bstride_0_values = 0;
  Py_ssize_t __pyx_bshape_0_values = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  Py_ssize_t __pyx_t_1;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_t_4;
  long __pyx_t_5;
  Py_ssize_t __pyx_t_6;
  Py_ssize_t __pyx_t_7;
  __pyx_t_5numpy_uint8_t __pyx_t_8;
  Py_ssize_t __pyx_t_9;
  Py_ssize_t __pyx_t_10;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__values,&__pyx_n_s__mask,&__pyx_n_s__limit,0};
  __Pyx_RefNannySetupContext("pad_inplace_bool");
  __pyx_self = __pyx_self;
  {
    PyObject* values[3] = {0,0,0};

    /* "pandas/src/generated.pyx":947
 * def pad_inplace_bool(ndarray[uint8_t] values,
 *                          ndarray[uint8_t, cast=True] mask,
 *                          limit=None):             # <<<<<<<<<<<<<<
 *     cdef Py_ssize_t i, N
 *     cdef uint8_t val
 */
    values[2] = ((PyObject *)Py_None);
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  0:
        values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__values);
        if (likely(values[0])) kw_args--;
        else goto __pyx_L5_argtuple_error;
        case  1:
        values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__mask);
        if (likely(values[1])) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("pad_inplace_bool", 0, 2, 3, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 945; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
        }
        case  2:
        if (kw_args > 0) {
          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__limit);
          if (value) { values[2] = value; kw_args--; }
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "pad_inplace_bool") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 945; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
    } else {
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_values = ((PyArrayObject *)values[0]);
    __pyx_v_mask = ((PyArrayObject *)values[1]);
    __pyx_v_limit = values[2];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("pad_inplace_bool", 0, 2, 3, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 945; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("pandas._algos.pad_inplace_bool", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_bstruct_values.buf = NULL;
  __pyx_bstruct_mask.buf = NULL;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_values), __pyx_ptype_5numpy_ndarray, 1, "values", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 945; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_mask), __pyx_ptype_5numpy_ndarray, 1, "mask", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 946; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_values, (PyObject*)__pyx_v_values, &__Pyx_TypeInfo_nn___pyx_t_5numpy_uint8_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 945; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  }
  __pyx_bstride_0_values = __pyx_bstruct_values.strides[0];
  __pyx_bshape_0_values = __pyx_bstruct_values.shape[0];
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_mask, (PyObject*)__pyx_v_mask, &__Pyx_TypeInfo_nn___pyx_t_5numpy_uint8_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 1, __pyx_stack) == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 945; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  }
  __pyx_bstride_0_mask = __pyx_bstruct_mask.strides[0];
  __pyx_bshape_0_mask = __pyx_bstruct_mask.shape[0];

  /* "pandas/src/generated.pyx":950
 *     cdef Py_ssize_t i, N
 *     cdef uint8_t val
 *     cdef int lim, fill_count = 0             # <<<<<<<<<<<<<<
 * 
 *     N = len(values)
 */
  __pyx_v_fill_count = 0;

  /* "pandas/src/generated.pyx":952
 *     cdef int lim, fill_count = 0
 * 
 *     N = len(values)             # <<<<<<<<<<<<<<
 * 
 *     if limit is None:
 */
  __pyx_t_1 = PyObject_Length(((PyObject *)__pyx_v_values)); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 952; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_v_N = __pyx_t_1;

  /* "pandas/src/generated.pyx":954
 *     N = len(values)
 * 
 *     if limit is None:             # <<<<<<<<<<<<<<
 *         lim = N
 *     else:
 */
  __pyx_t_2 = (__pyx_v_limit == Py_None);
  if (__pyx_t_2) {

    /* "pandas/src/generated.pyx":955
 * 
 *     if limit is None:
 *         lim = N             # <<<<<<<<<<<<<<
 *     else:
 *         if limit < 0:
 */
    __pyx_v_lim = __pyx_v_N;
    goto __pyx_L6;
  }
  /*else*/ {

    /* "pandas/src/generated.pyx":957
 *         lim = N
 *     else:
 *         if limit < 0:             # <<<<<<<<<<<<<<
 *             raise ValueError('Limit must be non-negative')
 *         lim = limit
 */
    __pyx_t_3 = PyObject_RichCompare(__pyx_v_limit, __pyx_int_0, Py_LT); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 957; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 957; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (__pyx_t_2) {

      /* "pandas/src/generated.pyx":958
 *     else:
 *         if limit < 0:
 *             raise ValueError('Limit must be non-negative')             # <<<<<<<<<<<<<<
 *         lim = limit
 * 
 */
      __pyx_t_3 = PyObject_Call(__pyx_builtin_ValueError, ((PyObject *)__pyx_k_tuple_26), NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 958; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_Raise(__pyx_t_3, 0, 0, 0);
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      {__pyx_filename = __pyx_f[0]; __pyx_lineno = 958; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      goto __pyx_L7;
    }
    __pyx_L7:;

    /* "pandas/src/generated.pyx":959
 *         if limit < 0:
 *             raise ValueError('Limit must be non-negative')
 *         lim = limit             # <<<<<<<<<<<<<<
 * 
 *     val = values[0]
 */
    __pyx_t_4 = __Pyx_PyInt_AsInt(__pyx_v_limit); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 959; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __pyx_v_lim = __pyx_t_4;
  }
  __pyx_L6:;

  /* "pandas/src/generated.pyx":961
 *         lim = limit
 * 
 *     val = values[0]             # <<<<<<<<<<<<<<
 *     for i in range(N):
 *         if mask[i]:
 */
  __pyx_t_5 = 0;
  __pyx_v_val = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_uint8_t *, __pyx_bstruct_values.buf, __pyx_t_5, __pyx_bstride_0_values));

  /* "pandas/src/generated.pyx":962
 * 
 *     val = values[0]
 *     for i in range(N):             # <<<<<<<<<<<<<<
 *         if mask[i]:
 *             if fill_count >= lim:
 */
  __pyx_t_1 = __pyx_v_N;
  for (__pyx_t_6 = 0; __pyx_t_6 < __pyx_t_1; __pyx_t_6+=1) {
    __pyx_v_i = __pyx_t_6;

    /* "pandas/src/generated.pyx":963
 *     val = values[0]
 *     for i in range(N):
 *         if mask[i]:             # <<<<<<<<<<<<<<
 *             if fill_count >= lim:
 *                 continue
 */
    __pyx_t_7 = __pyx_v_i;
    __pyx_t_8 = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_uint8_t *, __pyx_bstruct_mask.buf, __pyx_t_7, __pyx_bstride_0_mask));
    if (__pyx_t_8) {

      /* "pandas/src/generated.pyx":964
 *     for i in range(N):
 *         if mask[i]:
 *             if fill_count >= lim:             # <<<<<<<<<<<<<<
 *                 continue
 *             fill_count += 1
 */
      __pyx_t_2 = (__pyx_v_fill_count >= __pyx_v_lim);
      if (__pyx_t_2) {

        /* "pandas/src/generated.pyx":965
 *         if mask[i]:
 *             if fill_count >= lim:
 *                 continue             # <<<<<<<<<<<<<<
 *             fill_count += 1
 *             values[i] = val
 */
        goto __pyx_L8_continue;
        goto __pyx_L11;
      }
      __pyx_L11:;

      /* "pandas/src/generated.pyx":966
 *             if fill_count >= lim:
 *                 continue
 *             fill_count += 1             # <<<<<<<<<<<<<<
 *             values[i] = val
 *         else:
 */
      __pyx_v_fill_count = (__pyx_v_fill_count + 1);

      /* "pandas/src/generated.pyx":967
 *                 continue
 *             fill_count += 1
 *             values[i] = val             # <<<<<<<<<<<<<<
 *         else:
 *             fill_count = 0
 */
      __pyx_t_9 = __pyx_v_i;
      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_uint8_t *, __pyx_bstruct_values.buf, __pyx_t_9, __pyx_bstride_0_values) = __pyx_v_val;
      goto __pyx_L10;
    }
    /*else*/ {

      /* "pandas/src/generated.pyx":969
 *             values[i] = val
 *         else:
 *             fill_count = 0             # <<<<<<<<<<<<<<
 *             val = values[i]
 * 
 */
      __pyx_v_fill_count = 0;

      /* "pandas/src/generated.pyx":970
 *         else:
 *             fill_count = 0
 *             val = values[i]             # <<<<<<<<<<<<<<
 * 
 * 
 */
      __pyx_t_10 = __pyx_v_i;
      __pyx_v_val = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_uint8_t *, __pyx_bstruct_values.buf, __pyx_t_10, __pyx_bstride_0_values));
    }
    __pyx_L10:;
    __pyx_L8_continue:;
  }

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  { PyObject *__pyx_type, *__pyx_value, *__pyx_tb;
    __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);
    __Pyx_SafeReleaseBuffer(&__pyx_bstruct_mask);
    __Pyx_SafeReleaseBuffer(&__pyx_bstruct_values);
  __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);}
  __Pyx_AddTraceback("pandas._algos.pad_inplace_bool", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  goto __pyx_L2;
  __pyx_L0:;
  __Pyx_SafeReleaseBuffer(&__pyx_bstruct_mask);
  __Pyx_SafeReleaseBuffer(&__pyx_bstruct_values);
  __pyx_L2:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "pandas/src/generated.pyx":975
 * @cython.boundscheck(False)
 * @cython.wraparound(False)
 * def backfill_inplace_float64(ndarray[float64_t] values,             # <<<<<<<<<<<<<<
 *                               ndarray[uint8_t, cast=True] mask,
 *                               limit=None):
 */

static PyObject *__pyx_pf_6pandas_6_algos_25backfill_inplace_float64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_6pandas_6_algos_25backfill_inplace_float64 = {__Pyx_NAMESTR("backfill_inplace_float64"), (PyCFunction)__pyx_pf_6pandas_6_algos_25backfill_inplace_float64, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(0)};
static PyObject *__pyx_pf_6pandas_6_algos_25backfill_inplace_float64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyArrayObject *__pyx_v_values = 0;
  PyArrayObject *__pyx_v_mask = 0;
  PyObject *__pyx_v_limit = 0;
  Py_ssize_t __pyx_v_i;
  Py_ssize_t __pyx_v_N;
  __pyx_t_5numpy_float64_t __pyx_v_val;
  int __pyx_v_lim;
  int __pyx_v_fill_count;
  Py_buffer __pyx_bstruct_mask;
  Py_ssize_t __pyx_bstride_0_mask = 0;
  Py_ssize_t __pyx_bshape_0_mask = 0;
  Py_buffer __pyx_bstruct_values;
  Py_ssize_t __pyx_bstride_0_values = 0;
  Py_ssize_t __pyx_bshape_0_values = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  Py_ssize_t __pyx_t_1;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_t_4;
  Py_ssize_t __pyx_t_5;
  Py_ssize_t __pyx_t_6;
  __pyx_t_5numpy_uint8_t __pyx_t_7;
  Py_ssize_t __pyx_t_8;
  Py_ssize_t __pyx_t_9;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__values,&__pyx_n_s__mask,&__pyx_n_s__limit,0};
  __Pyx_RefNannySetupContext("backfill_inplace_float64");
  __pyx_self = __pyx_self;
  {
    PyObject* values[3] = {0,0,0};

    /* "pandas/src/generated.pyx":977
 * def backfill_inplace_float64(ndarray[float64_t] values,
 *                               ndarray[uint8_t, cast=True] mask,
 *                               limit=None):             # <<<<<<<<<<<<<<
 *     cdef Py_ssize_t i, N
 *     cdef float64_t val
 */
    values[2] = ((PyObject *)Py_None);
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  0:
        values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__values);
        if (likely(values[0])) kw_args--;
        else goto __pyx_L5_argtuple_error;
        case  1:
        values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__mask);
        if (likely(values[1])) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("backfill_inplace_float64", 0, 2, 3, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 975; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
        }
        case  2:
        if (kw_args > 0) {
          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__limit);
          if (value) { values[2] = value; kw_args--; }
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "backfill_inplace_float64") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 975; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
    } else {
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_values = ((PyArrayObject *)values[0]);
    __pyx_v_mask = ((PyArrayObject *)values[1]);
    __pyx_v_limit = values[2];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("backfill_inplace_float64", 0, 2, 3, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 975; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("pandas._algos.backfill_inplace_float64", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_bstruct_values.buf = NULL;
  __pyx_bstruct_mask.buf = NULL;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_values), __pyx_ptype_5numpy_ndarray, 1, "values", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 975; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_mask), __pyx_ptype_5numpy_ndarray, 1, "mask", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 976; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_values, (PyObject*)__pyx_v_values, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 975; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  }
  __pyx_bstride_0_values = __pyx_bstruct_values.strides[0];
  __pyx_bshape_0_values = __pyx_bstruct_values.shape[0];
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_mask, (PyObject*)__pyx_v_mask, &__Pyx_TypeInfo_nn___pyx_t_5numpy_uint8_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 1, __pyx_stack) == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 975; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  }
  __pyx_bstride_0_mask = __pyx_bstruct_mask.strides[0];
  __pyx_bshape_0_mask = __pyx_bstruct_mask.shape[0];

  /* "pandas/src/generated.pyx":980
 *     cdef Py_ssize_t i, N
 *     cdef float64_t val
 *     cdef int lim, fill_count = 0             # <<<<<<<<<<<<<<
 * 
 *     N = len(values)
 */
  __pyx_v_fill_count = 0;

  /* "pandas/src/generated.pyx":982
 *     cdef int lim, fill_count = 0
 * 
 *     N = len(values)             # <<<<<<<<<<<<<<
 * 
 *     if limit is None:
 */
  __pyx_t_1 = PyObject_Length(((PyObject *)__pyx_v_values)); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 982; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_v_N = __pyx_t_1;

  /* "pandas/src/generated.pyx":984
 *     N = len(values)
 * 
 *     if limit is None:             # <<<<<<<<<<<<<<
 *         lim = N
 *     else:
 */
  __pyx_t_2 = (__pyx_v_limit == Py_None);
  if (__pyx_t_2) {

    /* "pandas/src/generated.pyx":985
 * 
 *     if limit is None:
 *         lim = N             # <<<<<<<<<<<<<<
 *     else:
 *         if limit < 0:
 */
    __pyx_v_lim = __pyx_v_N;
    goto __pyx_L6;
  }
  /*else*/ {

    /* "pandas/src/generated.pyx":987
 *         lim = N
 *     else:
 *         if limit < 0:             # <<<<<<<<<<<<<<
 *             raise ValueError('Limit must be non-negative')
 *         lim = limit
 */
    __pyx_t_3 = PyObject_RichCompare(__pyx_v_limit, __pyx_int_0, Py_LT); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 987; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 987; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (__pyx_t_2) {

      /* "pandas/src/generated.pyx":988
 *     else:
 *         if limit < 0:
 *             raise ValueError('Limit must be non-negative')             # <<<<<<<<<<<<<<
 *         lim = limit
 * 
 */
      __pyx_t_3 = PyObject_Call(__pyx_builtin_ValueError, ((PyObject *)__pyx_k_tuple_27), NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 988; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_Raise(__pyx_t_3, 0, 0, 0);
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      {__pyx_filename = __pyx_f[0]; __pyx_lineno = 988; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      goto __pyx_L7;
    }
    __pyx_L7:;

    /* "pandas/src/generated.pyx":989
 *         if limit < 0:
 *             raise ValueError('Limit must be non-negative')
 *         lim = limit             # <<<<<<<<<<<<<<
 * 
 *     val = values[N - 1]
 */
    __pyx_t_4 = __Pyx_PyInt_AsInt(__pyx_v_limit); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 989; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __pyx_v_lim = __pyx_t_4;
  }
  __pyx_L6:;

  /* "pandas/src/generated.pyx":991
 *         lim = limit
 * 
 *     val = values[N - 1]             # <<<<<<<<<<<<<<
 *     for i in range(N - 1, -1 , -1):
 *         if mask[i]:
 */
  __pyx_t_1 = (__pyx_v_N - 1);
  __pyx_v_val = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_values.buf, __pyx_t_1, __pyx_bstride_0_values));

  /* "pandas/src/generated.pyx":992
 * 
 *     val = values[N - 1]
 *     for i in range(N - 1, -1 , -1):             # <<<<<<<<<<<<<<
 *         if mask[i]:
 *             if fill_count >= lim:
 */
  for (__pyx_t_5 = (__pyx_v_N - 1); __pyx_t_5 > -1; __pyx_t_5-=1) {
    __pyx_v_i = __pyx_t_5;

    /* "pandas/src/generated.pyx":993
 *     val = values[N - 1]
 *     for i in range(N - 1, -1 , -1):
 *         if mask[i]:             # <<<<<<<<<<<<<<
 *             if fill_count >= lim:
 *                 continue
 */
    __pyx_t_6 = __pyx_v_i;
    __pyx_t_7 = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_uint8_t *, __pyx_bstruct_mask.buf, __pyx_t_6, __pyx_bstride_0_mask));
    if (__pyx_t_7) {

      /* "pandas/src/generated.pyx":994
 *     for i in range(N - 1, -1 , -1):
 *         if mask[i]:
 *             if fill_count >= lim:             # <<<<<<<<<<<<<<
 *                 continue
 *             fill_count += 1
 */
      __pyx_t_2 = (__pyx_v_fill_count >= __pyx_v_lim);
      if (__pyx_t_2) {

        /* "pandas/src/generated.pyx":995
 *         if mask[i]:
 *             if fill_count >= lim:
 *                 continue             # <<<<<<<<<<<<<<
 *             fill_count += 1
 *             values[i] = val
 */
        goto __pyx_L8_continue;
        goto __pyx_L11;
      }
      __pyx_L11:;

      /* "pandas/src/generated.pyx":996
 *             if fill_count >= lim:
 *                 continue
 *             fill_count += 1             # <<<<<<<<<<<<<<
 *             values[i] = val
 *         else:
 */
      __pyx_v_fill_count = (__pyx_v_fill_count + 1);

      /* "pandas/src/generated.pyx":997
 *                 continue
 *             fill_count += 1
 *             values[i] = val             # <<<<<<<<<<<<<<
 *         else:
 *             fill_count = 0
 */
      __pyx_t_8 = __pyx_v_i;
      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_values.buf, __pyx_t_8, __pyx_bstride_0_values) = __pyx_v_val;
      goto __pyx_L10;
    }
    /*else*/ {

      /* "pandas/src/generated.pyx":999
 *             values[i] = val
 *         else:
 *             fill_count = 0             # <<<<<<<<<<<<<<
 *             val = values[i]
 * @cython.boundscheck(False)
 */
      __pyx_v_fill_count = 0;

      /* "pandas/src/generated.pyx":1000
 *         else:
 *             fill_count = 0
 *             val = values[i]             # <<<<<<<<<<<<<<
 * @cython.boundscheck(False)
 * @cython.wraparound(False)
 */
      __pyx_t_9 = __pyx_v_i;
      __pyx_v_val = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_values.buf, __pyx_t_9, __pyx_bstride_0_values));
    }
    __pyx_L10:;
    __pyx_L8_continue:;
  }

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  { PyObject *__pyx_type, *__pyx_value, *__pyx_tb;
    __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);
    __Pyx_SafeReleaseBuffer(&__pyx_bstruct_mask);
    __Pyx_SafeReleaseBuffer(&__pyx_bstruct_values);
  __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);}
  __Pyx_AddTraceback("pandas._algos.backfill_inplace_float64", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  goto __pyx_L2;
  __pyx_L0:;
  __Pyx_SafeReleaseBuffer(&__pyx_bstruct_mask);
  __Pyx_SafeReleaseBuffer(&__pyx_bstruct_values);
  __pyx_L2:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "pandas/src/generated.pyx":1003
 * @cython.boundscheck(False)
 * @cython.wraparound(False)
 * def backfill_inplace_object(ndarray[object] values,             # <<<<<<<<<<<<<<
 *                               ndarray[uint8_t, cast=True] mask,
 *                               limit=None):
 */

static PyObject *__pyx_pf_6pandas_6_algos_26backfill_inplace_object(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_6pandas_6_algos_26backfill_inplace_object = {__Pyx_NAMESTR("backfill_inplace_object"), (PyCFunction)__pyx_pf_6pandas_6_algos_26backfill_inplace_object, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(0)};
static PyObject *__pyx_pf_6pandas_6_algos_26backfill_inplace_object(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyArrayObject *__pyx_v_values = 0;
  PyArrayObject *__pyx_v_mask = 0;
  PyObject *__pyx_v_limit = 0;
  Py_ssize_t __pyx_v_i;
  Py_ssize_t __pyx_v_N;
  PyObject *__pyx_v_val = 0;
  int __pyx_v_lim;
  int __pyx_v_fill_count;
  Py_buffer __pyx_bstruct_mask;
  Py_ssize_t __pyx_bstride_0_mask = 0;
  Py_ssize_t __pyx_bshape_0_mask = 0;
  Py_buffer __pyx_bstruct_values;
  Py_ssize_t __pyx_bstride_0_values = 0;
  Py_ssize_t __pyx_bshape_0_values = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  Py_ssize_t __pyx_t_1;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_t_4;
  Py_ssize_t __pyx_t_5;
  Py_ssize_t __pyx_t_6;
  __pyx_t_5numpy_uint8_t __pyx_t_7;
  Py_ssize_t __pyx_t_8;
  PyObject **__pyx_t_9;
  Py_ssize_t __pyx_t_10;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__values,&__pyx_n_s__mask,&__pyx_n_s__limit,0};
  __Pyx_RefNannySetupContext("backfill_inplace_object");
  __pyx_self = __pyx_self;
  {
    PyObject* values[3] = {0,0,0};

    /* "pandas/src/generated.pyx":1005
 * def backfill_inplace_object(ndarray[object] values,
 *                               ndarray[uint8_t, cast=True] mask,
 *                               limit=None):             # <<<<<<<<<<<<<<
 *     cdef Py_ssize_t i, N
 *     cdef object val
 */
    values[2] = ((PyObject *)Py_None);
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  0:
        values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__values);
        if (likely(values[0])) kw_args--;
        else goto __pyx_L5_argtuple_error;
        case  1:
        values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__mask);
        if (likely(values[1])) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("backfill_inplace_object", 0, 2, 3, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1003; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
        }
        case  2:
        if (kw_args > 0) {
          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__limit);
          if (value) { values[2] = value; kw_args--; }
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "backfill_inplace_object") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1003; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
    } else {
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_values = ((PyArrayObject *)values[0]);
    __pyx_v_mask = ((PyArrayObject *)values[1]);
    __pyx_v_limit = values[2];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("backfill_inplace_object", 0, 2, 3, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1003; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("pandas._algos.backfill_inplace_object", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_bstruct_values.buf = NULL;
  __pyx_bstruct_mask.buf = NULL;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_values), __pyx_ptype_5numpy_ndarray, 1, "values", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1003; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_mask), __pyx_ptype_5numpy_ndarray, 1, "mask", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1004; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_values, (PyObject*)__pyx_v_values, &__Pyx_TypeInfo_object, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1003; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  }
  __pyx_bstride_0_values = __pyx_bstruct_values.strides[0];
  __pyx_bshape_0_values = __pyx_bstruct_values.shape[0];
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_mask, (PyObject*)__pyx_v_mask, &__Pyx_TypeInfo_nn___pyx_t_5numpy_uint8_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 1, __pyx_stack) == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1003; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  }
  __pyx_bstride_0_mask = __pyx_bstruct_mask.strides[0];
  __pyx_bshape_0_mask = __pyx_bstruct_mask.shape[0];

  /* "pandas/src/generated.pyx":1008
 *     cdef Py_ssize_t i, N
 *     cdef object val
 *     cdef int lim, fill_count = 0             # <<<<<<<<<<<<<<
 * 
 *     N = len(values)
 */
  __pyx_v_fill_count = 0;

  /* "pandas/src/generated.pyx":1010
 *     cdef int lim, fill_count = 0
 * 
 *     N = len(values)             # <<<<<<<<<<<<<<
 * 
 *     if limit is None:
 */
  __pyx_t_1 = PyObject_Length(((PyObject *)__pyx_v_values)); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1010; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_v_N = __pyx_t_1;

  /* "pandas/src/generated.pyx":1012
 *     N = len(values)
 * 
 *     if limit is None:             # <<<<<<<<<<<<<<
 *         lim = N
 *     else:
 */
  __pyx_t_2 = (__pyx_v_limit == Py_None);
  if (__pyx_t_2) {

    /* "pandas/src/generated.pyx":1013
 * 
 *     if limit is None:
 *         lim = N             # <<<<<<<<<<<<<<
 *     else:
 *         if limit < 0:
 */
    __pyx_v_lim = __pyx_v_N;
    goto __pyx_L6;
  }
  /*else*/ {

    /* "pandas/src/generated.pyx":1015
 *         lim = N
 *     else:
 *         if limit < 0:             # <<<<<<<<<<<<<<
 *             raise ValueError('Limit must be non-negative')
 *         lim = limit
 */
    __pyx_t_3 = PyObject_RichCompare(__pyx_v_limit, __pyx_int_0, Py_LT); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1015; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1015; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (__pyx_t_2) {

      /* "pandas/src/generated.pyx":1016
 *     else:
 *         if limit < 0:
 *             raise ValueError('Limit must be non-negative')             # <<<<<<<<<<<<<<
 *         lim = limit
 * 
 */
      __pyx_t_3 = PyObject_Call(__pyx_builtin_ValueError, ((PyObject *)__pyx_k_tuple_28), NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1016; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_Raise(__pyx_t_3, 0, 0, 0);
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1016; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      goto __pyx_L7;
    }
    __pyx_L7:;

    /* "pandas/src/generated.pyx":1017
 *         if limit < 0:
 *             raise ValueError('Limit must be non-negative')
 *         lim = limit             # <<<<<<<<<<<<<<
 * 
 *     val = values[N - 1]
 */
    __pyx_t_4 = __Pyx_PyInt_AsInt(__pyx_v_limit); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1017; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __pyx_v_lim = __pyx_t_4;
  }
  __pyx_L6:;

  /* "pandas/src/generated.pyx":1019
 *         lim = limit
 * 
 *     val = values[N - 1]             # <<<<<<<<<<<<<<
 *     for i in range(N - 1, -1 , -1):
 *         if mask[i]:
 */
  __pyx_t_1 = (__pyx_v_N - 1);
  __pyx_t_3 = *__Pyx_BufPtrStrided1d(PyObject **, __pyx_bstruct_values.buf, __pyx_t_1, __pyx_bstride_0_values);
  __Pyx_INCREF((PyObject*)__pyx_t_3);
  __pyx_v_val = __pyx_t_3;
  __pyx_t_3 = 0;

  /* "pandas/src/generated.pyx":1020
 * 
 *     val = values[N - 1]
 *     for i in range(N - 1, -1 , -1):             # <<<<<<<<<<<<<<
 *         if mask[i]:
 *             if fill_count >= lim:
 */
  for (__pyx_t_5 = (__pyx_v_N - 1); __pyx_t_5 > -1; __pyx_t_5-=1) {
    __pyx_v_i = __pyx_t_5;

    /* "pandas/src/generated.pyx":1021
 *     val = values[N - 1]
 *     for i in range(N - 1, -1 , -1):
 *         if mask[i]:             # <<<<<<<<<<<<<<
 *             if fill_count >= lim:
 *                 continue
 */
    __pyx_t_6 = __pyx_v_i;
    __pyx_t_7 = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_uint8_t *, __pyx_bstruct_mask.buf, __pyx_t_6, __pyx_bstride_0_mask));
    if (__pyx_t_7) {

      /* "pandas/src/generated.pyx":1022
 *     for i in range(N - 1, -1 , -1):
 *         if mask[i]:
 *             if fill_count >= lim:             # <<<<<<<<<<<<<<
 *                 continue
 *             fill_count += 1
 */
      __pyx_t_2 = (__pyx_v_fill_count >= __pyx_v_lim);
      if (__pyx_t_2) {

        /* "pandas/src/generated.pyx":1023
 *         if mask[i]:
 *             if fill_count >= lim:
 *                 continue             # <<<<<<<<<<<<<<
 *             fill_count += 1
 *             values[i] = val
 */
        goto __pyx_L8_continue;
        goto __pyx_L11;
      }
      __pyx_L11:;

      /* "pandas/src/generated.pyx":1024
 *             if fill_count >= lim:
 *                 continue
 *             fill_count += 1             # <<<<<<<<<<<<<<
 *             values[i] = val
 *         else:
 */
      __pyx_v_fill_count = (__pyx_v_fill_count + 1);

      /* "pandas/src/generated.pyx":1025
 *                 continue
 *             fill_count += 1
 *             values[i] = val             # <<<<<<<<<<<<<<
 *         else:
 *             fill_count = 0
 */
      __pyx_t_8 = __pyx_v_i;
      __pyx_t_9 = __Pyx_BufPtrStrided1d(PyObject **, __pyx_bstruct_values.buf, __pyx_t_8, __pyx_bstride_0_values);
      __Pyx_GOTREF(*__pyx_t_9);
      __Pyx_DECREF(*__pyx_t_9); __Pyx_INCREF(__pyx_v_val);
      *__pyx_t_9 = __pyx_v_val;
      __Pyx_GIVEREF(*__pyx_t_9);
      goto __pyx_L10;
    }
    /*else*/ {

      /* "pandas/src/generated.pyx":1027
 *             values[i] = val
 *         else:
 *             fill_count = 0             # <<<<<<<<<<<<<<
 *             val = values[i]
 * @cython.boundscheck(False)
 */
      __pyx_v_fill_count = 0;

      /* "pandas/src/generated.pyx":1028
 *         else:
 *             fill_count = 0
 *             val = values[i]             # <<<<<<<<<<<<<<
 * @cython.boundscheck(False)
 * @cython.wraparound(False)
 */
      __pyx_t_10 = __pyx_v_i;
      __pyx_t_3 = *__Pyx_BufPtrStrided1d(PyObject **, __pyx_bstruct_values.buf, __pyx_t_10, __pyx_bstride_0_values);
      __Pyx_INCREF((PyObject*)__pyx_t_3);
      __Pyx_DECREF(__pyx_v_val);
      __pyx_v_val = __pyx_t_3;
      __pyx_t_3 = 0;
    }
    __pyx_L10:;
    __pyx_L8_continue:;
  }

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  { PyObject *__pyx_type, *__pyx_value, *__pyx_tb;
    __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);
    __Pyx_SafeReleaseBuffer(&__pyx_bstruct_mask);
    __Pyx_SafeReleaseBuffer(&__pyx_bstruct_values);
  __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);}
  __Pyx_AddTraceback("pandas._algos.backfill_inplace_object", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  goto __pyx_L2;
  __pyx_L0:;
  __Pyx_SafeReleaseBuffer(&__pyx_bstruct_mask);
  __Pyx_SafeReleaseBuffer(&__pyx_bstruct_values);
  __pyx_L2:;
  __Pyx_XDECREF(__pyx_v_val);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "pandas/src/generated.pyx":1031
 * @cython.boundscheck(False)
 * @cython.wraparound(False)
 * def backfill_inplace_int32(ndarray[int32_t] values,             # <<<<<<<<<<<<<<
 *                               ndarray[uint8_t, cast=True] mask,
 *                               limit=None):
 */

static PyObject *__pyx_pf_6pandas_6_algos_27backfill_inplace_int32(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_6pandas_6_algos_27backfill_inplace_int32 = {__Pyx_NAMESTR("backfill_inplace_int32"), (PyCFunction)__pyx_pf_6pandas_6_algos_27backfill_inplace_int32, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(0)};
static PyObject *__pyx_pf_6pandas_6_algos_27backfill_inplace_int32(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyArrayObject *__pyx_v_values = 0;
  PyArrayObject *__pyx_v_mask = 0;
  PyObject *__pyx_v_limit = 0;
  Py_ssize_t __pyx_v_i;
  Py_ssize_t __pyx_v_N;
  __pyx_t_5numpy_int32_t __pyx_v_val;
  int __pyx_v_lim;
  int __pyx_v_fill_count;
  Py_buffer __pyx_bstruct_mask;
  Py_ssize_t __pyx_bstride_0_mask = 0;
  Py_ssize_t __pyx_bshape_0_mask = 0;
  Py_buffer __pyx_bstruct_values;
  Py_ssize_t __pyx_bstride_0_values = 0;
  Py_ssize_t __pyx_bshape_0_values = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  Py_ssize_t __pyx_t_1;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_t_4;
  Py_ssize_t __pyx_t_5;
  Py_ssize_t __pyx_t_6;
  __pyx_t_5numpy_uint8_t __pyx_t_7;
  Py_ssize_t __pyx_t_8;
  Py_ssize_t __pyx_t_9;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__values,&__pyx_n_s__mask,&__pyx_n_s__limit,0};
  __Pyx_RefNannySetupContext("backfill_inplace_int32");
  __pyx_self = __pyx_self;
  {
    PyObject* values[3] = {0,0,0};

    /* "pandas/src/generated.pyx":1033
 * def backfill_inplace_int32(ndarray[int32_t] values,
 *                               ndarray[uint8_t, cast=True] mask,
 *                               limit=None):             # <<<<<<<<<<<<<<
 *     cdef Py_ssize_t i, N
 *     cdef int32_t val
 */
    values[2] = ((PyObject *)Py_None);
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  0:
        values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__values);
        if (likely(values[0])) kw_args--;
        else goto __pyx_L5_argtuple_error;
        case  1:
        values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__mask);
        if (likely(values[1])) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("backfill_inplace_int32", 0, 2, 3, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1031; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
        }
        case  2:
        if (kw_args > 0) {
          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__limit);
          if (value) { values[2] = value; kw_args--; }
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "backfill_inplace_int32") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1031; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
    } else {
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_values = ((PyArrayObject *)values[0]);
    __pyx_v_mask = ((PyArrayObject *)values[1]);
    __pyx_v_limit = values[2];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("backfill_inplace_int32", 0, 2, 3, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1031; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("pandas._algos.backfill_inplace_int32", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_bstruct_values.buf = NULL;
  __pyx_bstruct_mask.buf = NULL;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_values), __pyx_ptype_5numpy_ndarray, 1, "values", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1031; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_mask), __pyx_ptype_5numpy_ndarray, 1, "mask", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1032; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_values, (PyObject*)__pyx_v_values, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int32_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1031; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  }
  __pyx_bstride_0_values = __pyx_bstruct_values.strides[0];
  __pyx_bshape_0_values = __pyx_bstruct_values.shape[0];
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_mask, (PyObject*)__pyx_v_mask, &__Pyx_TypeInfo_nn___pyx_t_5numpy_uint8_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 1, __pyx_stack) == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1031; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  }
  __pyx_bstride_0_mask = __pyx_bstruct_mask.strides[0];
  __pyx_bshape_0_mask = __pyx_bstruct_mask.shape[0];

  /* "pandas/src/generated.pyx":1036
 *     cdef Py_ssize_t i, N
 *     cdef int32_t val
 *     cdef int lim, fill_count = 0             # <<<<<<<<<<<<<<
 * 
 *     N = len(values)
 */
  __pyx_v_fill_count = 0;

  /* "pandas/src/generated.pyx":1038
 *     cdef int lim, fill_count = 0
 * 
 *     N = len(values)             # <<<<<<<<<<<<<<
 * 
 *     if limit is None:
 */
  __pyx_t_1 = PyObject_Length(((PyObject *)__pyx_v_values)); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1038; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_v_N = __pyx_t_1;

  /* "pandas/src/generated.pyx":1040
 *     N = len(values)
 * 
 *     if limit is None:             # <<<<<<<<<<<<<<
 *         lim = N
 *     else:
 */
  __pyx_t_2 = (__pyx_v_limit == Py_None);
  if (__pyx_t_2) {

    /* "pandas/src/generated.pyx":1041
 * 
 *     if limit is None:
 *         lim = N             # <<<<<<<<<<<<<<
 *     else:
 *         if limit < 0:
 */
    __pyx_v_lim = __pyx_v_N;
    goto __pyx_L6;
  }
  /*else*/ {

    /* "pandas/src/generated.pyx":1043
 *         lim = N
 *     else:
 *         if limit < 0:             # <<<<<<<<<<<<<<
 *             raise ValueError('Limit must be non-negative')
 *         lim = limit
 */
    __pyx_t_3 = PyObject_RichCompare(__pyx_v_limit, __pyx_int_0, Py_LT); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1043; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1043; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (__pyx_t_2) {

      /* "pandas/src/generated.pyx":1044
 *     else:
 *         if limit < 0:
 *             raise ValueError('Limit must be non-negative')             # <<<<<<<<<<<<<<
 *         lim = limit
 * 
 */
      __pyx_t_3 = PyObject_Call(__pyx_builtin_ValueError, ((PyObject *)__pyx_k_tuple_29), NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1044; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_Raise(__pyx_t_3, 0, 0, 0);
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1044; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      goto __pyx_L7;
    }
    __pyx_L7:;

    /* "pandas/src/generated.pyx":1045
 *         if limit < 0:
 *             raise ValueError('Limit must be non-negative')
 *         lim = limit             # <<<<<<<<<<<<<<
 * 
 *     val = values[N - 1]
 */
    __pyx_t_4 = __Pyx_PyInt_AsInt(__pyx_v_limit); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1045; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __pyx_v_lim = __pyx_t_4;
  }
  __pyx_L6:;

  /* "pandas/src/generated.pyx":1047
 *         lim = limit
 * 
 *     val = values[N - 1]             # <<<<<<<<<<<<<<
 *     for i in range(N - 1, -1 , -1):
 *         if mask[i]:
 */
  __pyx_t_1 = (__pyx_v_N - 1);
  __pyx_v_val = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int32_t *, __pyx_bstruct_values.buf, __pyx_t_1, __pyx_bstride_0_values));

  /* "pandas/src/generated.pyx":1048
 * 
 *     val = values[N - 1]
 *     for i in range(N - 1, -1 , -1):             # <<<<<<<<<<<<<<
 *         if mask[i]:
 *             if fill_count >= lim:
 */
  for (__pyx_t_5 = (__pyx_v_N - 1); __pyx_t_5 > -1; __pyx_t_5-=1) {
    __pyx_v_i = __pyx_t_5;

    /* "pandas/src/generated.pyx":1049
 *     val = values[N - 1]
 *     for i in range(N - 1, -1 , -1):
 *         if mask[i]:             # <<<<<<<<<<<<<<
 *             if fill_count >= lim:
 *                 continue
 */
    __pyx_t_6 = __pyx_v_i;
    __pyx_t_7 = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_uint8_t *, __pyx_bstruct_mask.buf, __pyx_t_6, __pyx_bstride_0_mask));
    if (__pyx_t_7) {

      /* "pandas/src/generated.pyx":1050
 *     for i in range(N - 1, -1 , -1):
 *         if mask[i]:
 *             if fill_count >= lim:             # <<<<<<<<<<<<<<
 *                 continue
 *             fill_count += 1
 */
      __pyx_t_2 = (__pyx_v_fill_count >= __pyx_v_lim);
      if (__pyx_t_2) {

        /* "pandas/src/generated.pyx":1051
 *         if mask[i]:
 *             if fill_count >= lim:
 *                 continue             # <<<<<<<<<<<<<<
 *             fill_count += 1
 *             values[i] = val
 */
        goto __pyx_L8_continue;
        goto __pyx_L11;
      }
      __pyx_L11:;

      /* "pandas/src/generated.pyx":1052
 *             if fill_count >= lim:
 *                 continue
 *             fill_count += 1             # <<<<<<<<<<<<<<
 *             values[i] = val
 *         else:
 */
      __pyx_v_fill_count = (__pyx_v_fill_count + 1);

      /* "pandas/src/generated.pyx":1053
 *                 continue
 *             fill_count += 1
 *             values[i] = val             # <<<<<<<<<<<<<<
 *         else:
 *             fill_count = 0
 */
      __pyx_t_8 = __pyx_v_i;
      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int32_t *, __pyx_bstruct_values.buf, __pyx_t_8, __pyx_bstride_0_values) = __pyx_v_val;
      goto __pyx_L10;
    }
    /*else*/ {

      /* "pandas/src/generated.pyx":1055
 *             values[i] = val
 *         else:
 *             fill_count = 0             # <<<<<<<<<<<<<<
 *             val = values[i]
 * @cython.boundscheck(False)
 */
      __pyx_v_fill_count = 0;

      /* "pandas/src/generated.pyx":1056
 *         else:
 *             fill_count = 0
 *             val = values[i]             # <<<<<<<<<<<<<<
 * @cython.boundscheck(False)
 * @cython.wraparound(False)
 */
      __pyx_t_9 = __pyx_v_i;
      __pyx_v_val = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int32_t *, __pyx_bstruct_values.buf, __pyx_t_9, __pyx_bstride_0_values));
    }
    __pyx_L10:;
    __pyx_L8_continue:;
  }

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  { PyObject *__pyx_type, *__pyx_value, *__pyx_tb;
    __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);
    __Pyx_SafeReleaseBuffer(&__pyx_bstruct_mask);
    __Pyx_SafeReleaseBuffer(&__pyx_bstruct_values);
  __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);}
  __Pyx_AddTraceback("pandas._algos.backfill_inplace_int32", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  goto __pyx_L2;
  __pyx_L0:;
  __Pyx_SafeReleaseBuffer(&__pyx_bstruct_mask);
  __Pyx_SafeReleaseBuffer(&__pyx_bstruct_values);
  __pyx_L2:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "pandas/src/generated.pyx":1059
 * @cython.boundscheck(False)
 * @cython.wraparound(False)
 * def backfill_inplace_int64(ndarray[int64_t] values,             # <<<<<<<<<<<<<<
 *                               ndarray[uint8_t, cast=True] mask,
 *                               limit=None):
 */

static PyObject *__pyx_pf_6pandas_6_algos_28backfill_inplace_int64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_6pandas_6_algos_28backfill_inplace_int64 = {__Pyx_NAMESTR("backfill_inplace_int64"), (PyCFunction)__pyx_pf_6pandas_6_algos_28backfill_inplace_int64, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(0)};
static PyObject *__pyx_pf_6pandas_6_algos_28backfill_inplace_int64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyArrayObject *__pyx_v_values = 0;
  PyArrayObject *__pyx_v_mask = 0;
  PyObject *__pyx_v_limit = 0;
  Py_ssize_t __pyx_v_i;
  Py_ssize_t __pyx_v_N;
  __pyx_t_5numpy_int64_t __pyx_v_val;
  int __pyx_v_lim;
  int __pyx_v_fill_count;
  Py_buffer __pyx_bstruct_mask;
  Py_ssize_t __pyx_bstride_0_mask = 0;
  Py_ssize_t __pyx_bshape_0_mask = 0;
  Py_buffer __pyx_bstruct_values;
  Py_ssize_t __pyx_bstride_0_values = 0;
  Py_ssize_t __pyx_bshape_0_values = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  Py_ssize_t __pyx_t_1;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_t_4;
  Py_ssize_t __pyx_t_5;
  Py_ssize_t __pyx_t_6;
  __pyx_t_5numpy_uint8_t __pyx_t_7;
  Py_ssize_t __pyx_t_8;
  Py_ssize_t __pyx_t_9;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__values,&__pyx_n_s__mask,&__pyx_n_s__limit,0};
  __Pyx_RefNannySetupContext("backfill_inplace_int64");
  __pyx_self = __pyx_self;
  {
    PyObject* values[3] = {0,0,0};

    /* "pandas/src/generated.pyx":1061
 * def backfill_inplace_int64(ndarray[int64_t] values,
 *                               ndarray[uint8_t, cast=True] mask,
 *                               limit=None):             # <<<<<<<<<<<<<<
 *     cdef Py_ssize_t i, N
 *     cdef int64_t val
 */
    values[2] = ((PyObject *)Py_None);
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  0:
        values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__values);
        if (likely(values[0])) kw_args--;
        else goto __pyx_L5_argtuple_error;
        case  1:
        values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__mask);
        if (likely(values[1])) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("backfill_inplace_int64", 0, 2, 3, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1059; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
        }
        case  2:
        if (kw_args > 0) {
          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__limit);
          if (value) { values[2] = value; kw_args--; }
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "backfill_inplace_int64") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1059; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
    } else {
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_values = ((PyArrayObject *)values[0]);
    __pyx_v_mask = ((PyArrayObject *)values[1]);
    __pyx_v_limit = values[2];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("backfill_inplace_int64", 0, 2, 3, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1059; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("pandas._algos.backfill_inplace_int64", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_bstruct_values.buf = NULL;
  __pyx_bstruct_mask.buf = NULL;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_values), __pyx_ptype_5numpy_ndarray, 1, "values", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1059; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_mask), __pyx_ptype_5numpy_ndarray, 1, "mask", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1060; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_values, (PyObject*)__pyx_v_values, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1059; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  }
  __pyx_bstride_0_values = __pyx_bstruct_values.strides[0];
  __pyx_bshape_0_values = __pyx_bstruct_values.shape[0];
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_mask, (PyObject*)__pyx_v_mask, &__Pyx_TypeInfo_nn___pyx_t_5numpy_uint8_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 1, __pyx_stack) == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1059; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  }
  __pyx_bstride_0_mask = __pyx_bstruct_mask.strides[0];
  __pyx_bshape_0_mask = __pyx_bstruct_mask.shape[0];

  /* "pandas/src/generated.pyx":1064
 *     cdef Py_ssize_t i, N
 *     cdef int64_t val
 *     cdef int lim, fill_count = 0             # <<<<<<<<<<<<<<
 * 
 *     N = len(values)
 */
  __pyx_v_fill_count = 0;

  /* "pandas/src/generated.pyx":1066
 *     cdef int lim, fill_count = 0
 * 
 *     N = len(values)             # <<<<<<<<<<<<<<
 * 
 *     if limit is None:
 */
  __pyx_t_1 = PyObject_Length(((PyObject *)__pyx_v_values)); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1066; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_v_N = __pyx_t_1;

  /* "pandas/src/generated.pyx":1068
 *     N = len(values)
 * 
 *     if limit is None:             # <<<<<<<<<<<<<<
 *         lim = N
 *     else:
 */
  __pyx_t_2 = (__pyx_v_limit == Py_None);
  if (__pyx_t_2) {

    /* "pandas/src/generated.pyx":1069
 * 
 *     if limit is None:
 *         lim = N             # <<<<<<<<<<<<<<
 *     else:
 *         if limit < 0:
 */
    __pyx_v_lim = __pyx_v_N;
    goto __pyx_L6;
  }
  /*else*/ {

    /* "pandas/src/generated.pyx":1071
 *         lim = N
 *     else:
 *         if limit < 0:             # <<<<<<<<<<<<<<
 *             raise ValueError('Limit must be non-negative')
 *         lim = limit
 */
    __pyx_t_3 = PyObject_RichCompare(__pyx_v_limit, __pyx_int_0, Py_LT); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1071; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1071; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (__pyx_t_2) {

      /* "pandas/src/generated.pyx":1072
 *     else:
 *         if limit < 0:
 *             raise ValueError('Limit must be non-negative')             # <<<<<<<<<<<<<<
 *         lim = limit
 * 
 */
      __pyx_t_3 = PyObject_Call(__pyx_builtin_ValueError, ((PyObject *)__pyx_k_tuple_30), NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1072; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_Raise(__pyx_t_3, 0, 0, 0);
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1072; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      goto __pyx_L7;
    }
    __pyx_L7:;

    /* "pandas/src/generated.pyx":1073
 *         if limit < 0:
 *             raise ValueError('Limit must be non-negative')
 *         lim = limit             # <<<<<<<<<<<<<<
 * 
 *     val = values[N - 1]
 */
    __pyx_t_4 = __Pyx_PyInt_AsInt(__pyx_v_limit); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1073; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __pyx_v_lim = __pyx_t_4;
  }
  __pyx_L6:;

  /* "pandas/src/generated.pyx":1075
 *         lim = limit
 * 
 *     val = values[N - 1]             # <<<<<<<<<<<<<<
 *     for i in range(N - 1, -1 , -1):
 *         if mask[i]:
 */
  __pyx_t_1 = (__pyx_v_N - 1);
  __pyx_v_val = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_bstruct_values.buf, __pyx_t_1, __pyx_bstride_0_values));

  /* "pandas/src/generated.pyx":1076
 * 
 *     val = values[N - 1]
 *     for i in range(N - 1, -1 , -1):             # <<<<<<<<<<<<<<
 *         if mask[i]:
 *             if fill_count >= lim:
 */
  for (__pyx_t_5 = (__pyx_v_N - 1); __pyx_t_5 > -1; __pyx_t_5-=1) {
    __pyx_v_i = __pyx_t_5;

    /* "pandas/src/generated.pyx":1077
 *     val = values[N - 1]
 *     for i in range(N - 1, -1 , -1):
 *         if mask[i]:             # <<<<<<<<<<<<<<
 *             if fill_count >= lim:
 *                 continue
 */
    __pyx_t_6 = __pyx_v_i;
    __pyx_t_7 = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_uint8_t *, __pyx_bstruct_mask.buf, __pyx_t_6, __pyx_bstride_0_mask));
    if (__pyx_t_7) {

      /* "pandas/src/generated.pyx":1078
 *     for i in range(N - 1, -1 , -1):
 *         if mask[i]:
 *             if fill_count >= lim:             # <<<<<<<<<<<<<<
 *                 continue
 *             fill_count += 1
 */
      __pyx_t_2 = (__pyx_v_fill_count >= __pyx_v_lim);
      if (__pyx_t_2) {

        /* "pandas/src/generated.pyx":1079
 *         if mask[i]:
 *             if fill_count >= lim:
 *                 continue             # <<<<<<<<<<<<<<
 *             fill_count += 1
 *             values[i] = val
 */
        goto __pyx_L8_continue;
        goto __pyx_L11;
      }
      __pyx_L11:;

      /* "pandas/src/generated.pyx":1080
 *             if fill_count >= lim:
 *                 continue
 *             fill_count += 1             # <<<<<<<<<<<<<<
 *             values[i] = val
 *         else:
 */
      __pyx_v_fill_count = (__pyx_v_fill_count + 1);

      /* "pandas/src/generated.pyx":1081
 *                 continue
 *             fill_count += 1
 *             values[i] = val             # <<<<<<<<<<<<<<
 *         else:
 *             fill_count = 0
 */
      __pyx_t_8 = __pyx_v_i;
      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_bstruct_values.buf, __pyx_t_8, __pyx_bstride_0_values) = __pyx_v_val;
      goto __pyx_L10;
    }
    /*else*/ {

      /* "pandas/src/generated.pyx":1083
 *             values[i] = val
 *         else:
 *             fill_count = 0             # <<<<<<<<<<<<<<
 *             val = values[i]
 * @cython.boundscheck(False)
 */
      __pyx_v_fill_count = 0;

      /* "pandas/src/generated.pyx":1084
 *         else:
 *             fill_count = 0
 *             val = values[i]             # <<<<<<<<<<<<<<
 * @cython.boundscheck(False)
 * @cython.wraparound(False)
 */
      __pyx_t_9 = __pyx_v_i;
      __pyx_v_val = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_bstruct_values.buf, __pyx_t_9, __pyx_bstride_0_values));
    }
    __pyx_L10:;
    __pyx_L8_continue:;
  }

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  { PyObject *__pyx_type, *__pyx_value, *__pyx_tb;
    __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);
    __Pyx_SafeReleaseBuffer(&__pyx_bstruct_mask);
    __Pyx_SafeReleaseBuffer(&__pyx_bstruct_values);
  __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);}
  __Pyx_AddTraceback("pandas._algos.backfill_inplace_int64", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  goto __pyx_L2;
  __pyx_L0:;
  __Pyx_SafeReleaseBuffer(&__pyx_bstruct_mask);
  __Pyx_SafeReleaseBuffer(&__pyx_bstruct_values);
  __pyx_L2:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "pandas/src/generated.pyx":1087
 * @cython.boundscheck(False)
 * @cython.wraparound(False)
 * def backfill_inplace_bool(ndarray[uint8_t] values,             # <<<<<<<<<<<<<<
 *                               ndarray[uint8_t, cast=True] mask,
 *                               limit=None):
 */

static PyObject *__pyx_pf_6pandas_6_algos_29backfill_inplace_bool(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_6pandas_6_algos_29backfill_inplace_bool = {__Pyx_NAMESTR("backfill_inplace_bool"), (PyCFunction)__pyx_pf_6pandas_6_algos_29backfill_inplace_bool, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(0)};
static PyObject *__pyx_pf_6pandas_6_algos_29backfill_inplace_bool(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyArrayObject *__pyx_v_values = 0;
  PyArrayObject *__pyx_v_mask = 0;
  PyObject *__pyx_v_limit = 0;
  Py_ssize_t __pyx_v_i;
  Py_ssize_t __pyx_v_N;
  __pyx_t_5numpy_uint8_t __pyx_v_val;
  int __pyx_v_lim;
  int __pyx_v_fill_count;
  Py_buffer __pyx_bstruct_mask;
  Py_ssize_t __pyx_bstride_0_mask = 0;
  Py_ssize_t __pyx_bshape_0_mask = 0;
  Py_buffer __pyx_bstruct_values;
  Py_ssize_t __pyx_bstride_0_values = 0;
  Py_ssize_t __pyx_bshape_0_values = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  Py_ssize_t __pyx_t_1;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_t_4;
  Py_ssize_t __pyx_t_5;
  Py_ssize_t __pyx_t_6;
  __pyx_t_5numpy_uint8_t __pyx_t_7;
  Py_ssize_t __pyx_t_8;
  Py_ssize_t __pyx_t_9;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__values,&__pyx_n_s__mask,&__pyx_n_s__limit,0};
  __Pyx_RefNannySetupContext("backfill_inplace_bool");
  __pyx_self = __pyx_self;
  {
    PyObject* values[3] = {0,0,0};

    /* "pandas/src/generated.pyx":1089
 * def backfill_inplace_bool(ndarray[uint8_t] values,
 *                               ndarray[uint8_t, cast=True] mask,
 *                               limit=None):             # <<<<<<<<<<<<<<
 *     cdef Py_ssize_t i, N
 *     cdef uint8_t val
 */
    values[2] = ((PyObject *)Py_None);
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  0:
        values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__values);
        if (likely(values[0])) kw_args--;
        else goto __pyx_L5_argtuple_error;
        case  1:
        values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__mask);
        if (likely(values[1])) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("backfill_inplace_bool", 0, 2, 3, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1087; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
        }
        case  2:
        if (kw_args > 0) {
          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__limit);
          if (value) { values[2] = value; kw_args--; }
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "backfill_inplace_bool") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1087; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
    } else {
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_values = ((PyArrayObject *)values[0]);
    __pyx_v_mask = ((PyArrayObject *)values[1]);
    __pyx_v_limit = values[2];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("backfill_inplace_bool", 0, 2, 3, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1087; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("pandas._algos.backfill_inplace_bool", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_bstruct_values.buf = NULL;
  __pyx_bstruct_mask.buf = NULL;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_values), __pyx_ptype_5numpy_ndarray, 1, "values", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1087; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_mask), __pyx_ptype_5numpy_ndarray, 1, "mask", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1088; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_values, (PyObject*)__pyx_v_values, &__Pyx_TypeInfo_nn___pyx_t_5numpy_uint8_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1087; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  }
  __pyx_bstride_0_values = __pyx_bstruct_values.strides[0];
  __pyx_bshape_0_values = __pyx_bstruct_values.shape[0];
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_mask, (PyObject*)__pyx_v_mask, &__Pyx_TypeInfo_nn___pyx_t_5numpy_uint8_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 1, __pyx_stack) == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1087; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  }
  __pyx_bstride_0_mask = __pyx_bstruct_mask.strides[0];
  __pyx_bshape_0_mask = __pyx_bstruct_mask.shape[0];

  /* "pandas/src/generated.pyx":1092
 *     cdef Py_ssize_t i, N
 *     cdef uint8_t val
 *     cdef int lim, fill_count = 0             # <<<<<<<<<<<<<<
 * 
 *     N = len(values)
 */
  __pyx_v_fill_count = 0;

  /* "pandas/src/generated.pyx":1094
 *     cdef int lim, fill_count = 0
 * 
 *     N = len(values)             # <<<<<<<<<<<<<<
 * 
 *     if limit is None:
 */
  __pyx_t_1 = PyObject_Length(((PyObject *)__pyx_v_values)); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1094; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_v_N = __pyx_t_1;

  /* "pandas/src/generated.pyx":1096
 *     N = len(values)
 * 
 *     if limit is None:             # <<<<<<<<<<<<<<
 *         lim = N
 *     else:
 */
  __pyx_t_2 = (__pyx_v_limit == Py_None);
  if (__pyx_t_2) {

    /* "pandas/src/generated.pyx":1097
 * 
 *     if limit is None:
 *         lim = N             # <<<<<<<<<<<<<<
 *     else:
 *         if limit < 0:
 */
    __pyx_v_lim = __pyx_v_N;
    goto __pyx_L6;
  }
  /*else*/ {

    /* "pandas/src/generated.pyx":1099
 *         lim = N
 *     else:
 *         if limit < 0:             # <<<<<<<<<<<<<<
 *             raise ValueError('Limit must be non-negative')
 *         lim = limit
 */
    __pyx_t_3 = PyObject_RichCompare(__pyx_v_limit, __pyx_int_0, Py_LT); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1099; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1099; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (__pyx_t_2) {

      /* "pandas/src/generated.pyx":1100
 *     else:
 *         if limit < 0:
 *             raise ValueError('Limit must be non-negative')             # <<<<<<<<<<<<<<
 *         lim = limit
 * 
 */
      __pyx_t_3 = PyObject_Call(__pyx_builtin_ValueError, ((PyObject *)__pyx_k_tuple_31), NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1100; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_Raise(__pyx_t_3, 0, 0, 0);
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1100; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      goto __pyx_L7;
    }
    __pyx_L7:;

    /* "pandas/src/generated.pyx":1101
 *         if limit < 0:
 *             raise ValueError('Limit must be non-negative')
 *         lim = limit             # <<<<<<<<<<<<<<
 * 
 *     val = values[N - 1]
 */
    __pyx_t_4 = __Pyx_PyInt_AsInt(__pyx_v_limit); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1101; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __pyx_v_lim = __pyx_t_4;
  }
  __pyx_L6:;

  /* "pandas/src/generated.pyx":1103
 *         lim = limit
 * 
 *     val = values[N - 1]             # <<<<<<<<<<<<<<
 *     for i in range(N - 1, -1 , -1):
 *         if mask[i]:
 */
  __pyx_t_1 = (__pyx_v_N - 1);
  __pyx_v_val = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_uint8_t *, __pyx_bstruct_values.buf, __pyx_t_1, __pyx_bstride_0_values));

  /* "pandas/src/generated.pyx":1104
 * 
 *     val = values[N - 1]
 *     for i in range(N - 1, -1 , -1):             # <<<<<<<<<<<<<<
 *         if mask[i]:
 *             if fill_count >= lim:
 */
  for (__pyx_t_5 = (__pyx_v_N - 1); __pyx_t_5 > -1; __pyx_t_5-=1) {
    __pyx_v_i = __pyx_t_5;

    /* "pandas/src/generated.pyx":1105
 *     val = values[N - 1]
 *     for i in range(N - 1, -1 , -1):
 *         if mask[i]:             # <<<<<<<<<<<<<<
 *             if fill_count >= lim:
 *                 continue
 */
    __pyx_t_6 = __pyx_v_i;
    __pyx_t_7 = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_uint8_t *, __pyx_bstruct_mask.buf, __pyx_t_6, __pyx_bstride_0_mask));
    if (__pyx_t_7) {

      /* "pandas/src/generated.pyx":1106
 *     for i in range(N - 1, -1 , -1):
 *         if mask[i]:
 *             if fill_count >= lim:             # <<<<<<<<<<<<<<
 *                 continue
 *             fill_count += 1
 */
      __pyx_t_2 = (__pyx_v_fill_count >= __pyx_v_lim);
      if (__pyx_t_2) {

        /* "pandas/src/generated.pyx":1107
 *         if mask[i]:
 *             if fill_count >= lim:
 *                 continue             # <<<<<<<<<<<<<<
 *             fill_count += 1
 *             values[i] = val
 */
        goto __pyx_L8_continue;
        goto __pyx_L11;
      }
      __pyx_L11:;

      /* "pandas/src/generated.pyx":1108
 *             if fill_count >= lim:
 *                 continue
 *             fill_count += 1             # <<<<<<<<<<<<<<
 *             values[i] = val
 *         else:
 */
      __pyx_v_fill_count = (__pyx_v_fill_count + 1);

      /* "pandas/src/generated.pyx":1109
 *                 continue
 *             fill_count += 1
 *             values[i] = val             # <<<<<<<<<<<<<<
 *         else:
 *             fill_count = 0
 */
      __pyx_t_8 = __pyx_v_i;
      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_uint8_t *, __pyx_bstruct_values.buf, __pyx_t_8, __pyx_bstride_0_values) = __pyx_v_val;
      goto __pyx_L10;
    }
    /*else*/ {

      /* "pandas/src/generated.pyx":1111
 *             values[i] = val
 *         else:
 *             fill_count = 0             # <<<<<<<<<<<<<<
 *             val = values[i]
 * 
 */
      __pyx_v_fill_count = 0;

      /* "pandas/src/generated.pyx":1112
 *         else:
 *             fill_count = 0
 *             val = values[i]             # <<<<<<<<<<<<<<
 * 
 * @cython.boundscheck(False)
 */
      __pyx_t_9 = __pyx_v_i;
      __pyx_v_val = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_uint8_t *, __pyx_bstruct_values.buf, __pyx_t_9, __pyx_bstride_0_values));
    }
    __pyx_L10:;
    __pyx_L8_continue:;
  }

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  { PyObject *__pyx_type, *__pyx_value, *__pyx_tb;
    __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);
    __Pyx_SafeReleaseBuffer(&__pyx_bstruct_mask);
    __Pyx_SafeReleaseBuffer(&__pyx_bstruct_values);
  __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);}
  __Pyx_AddTraceback("pandas._algos.backfill_inplace_bool", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  goto __pyx_L2;
  __pyx_L0:;
  __Pyx_SafeReleaseBuffer(&__pyx_bstruct_mask);
  __Pyx_SafeReleaseBuffer(&__pyx_bstruct_values);
  __pyx_L2:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "pandas/src/generated.pyx":1116
 * @cython.boundscheck(False)
 * @cython.wraparound(False)
 * def pad_2d_inplace_float64(ndarray[float64_t, ndim=2] values,             # <<<<<<<<<<<<<<
 *                             ndarray[uint8_t, ndim=2] mask,
 *                             limit=None):
 */

static PyObject *__pyx_pf_6pandas_6_algos_30pad_2d_inplace_float64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_6pandas_6_algos_30pad_2d_inplace_float64 = {__Pyx_NAMESTR("pad_2d_inplace_float64"), (PyCFunction)__pyx_pf_6pandas_6_algos_30pad_2d_inplace_float64, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(0)};
static PyObject *__pyx_pf_6pandas_6_algos_30pad_2d_inplace_float64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyArrayObject *__pyx_v_values = 0;
  PyArrayObject *__pyx_v_mask = 0;
  PyObject *__pyx_v_limit = 0;
  Py_ssize_t __pyx_v_i;
  Py_ssize_t __pyx_v_j;
  Py_ssize_t __pyx_v_N;
  Py_ssize_t __pyx_v_K;
  __pyx_t_5numpy_float64_t __pyx_v_val;
  int __pyx_v_lim;
  int __pyx_v_fill_count;
  Py_buffer __pyx_bstruct_mask;
  Py_ssize_t __pyx_bstride_0_mask = 0;
  Py_ssize_t __pyx_bstride_1_mask = 0;
  Py_ssize_t __pyx_bshape_0_mask = 0;
  Py_ssize_t __pyx_bshape_1_mask = 0;
  Py_buffer __pyx_bstruct_values;
  Py_ssize_t __pyx_bstride_0_values = 0;
  Py_ssize_t __pyx_bstride_1_values = 0;
  Py_ssize_t __pyx_bshape_0_values = 0;
  Py_ssize_t __pyx_bshape_1_values = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *(*__pyx_t_5)(PyObject *);
  Py_ssize_t __pyx_t_6;
  Py_ssize_t __pyx_t_7;
  int __pyx_t_8;
  int __pyx_t_9;
  Py_ssize_t __pyx_t_10;
  long __pyx_t_11;
  Py_ssize_t __pyx_t_12;
  Py_ssize_t __pyx_t_13;
  Py_ssize_t __pyx_t_14;
  Py_ssize_t __pyx_t_15;
  __pyx_t_5numpy_uint8_t __pyx_t_16;
  Py_ssize_t __pyx_t_17;
  Py_ssize_t __pyx_t_18;
  Py_ssize_t __pyx_t_19;
  Py_ssize_t __pyx_t_20;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__values,&__pyx_n_s__mask,&__pyx_n_s__limit,0};
  __Pyx_RefNannySetupContext("pad_2d_inplace_float64");
  __pyx_self = __pyx_self;
  {
    PyObject* values[3] = {0,0,0};

    /* "pandas/src/generated.pyx":1118
 * def pad_2d_inplace_float64(ndarray[float64_t, ndim=2] values,
 *                             ndarray[uint8_t, ndim=2] mask,
 *                             limit=None):             # <<<<<<<<<<<<<<
 *     cdef Py_ssize_t i, j, N, K
 *     cdef float64_t val
 */
    values[2] = ((PyObject *)Py_None);
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  0:
        values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__values);
        if (likely(values[0])) kw_args--;
        else goto __pyx_L5_argtuple_error;
        case  1:
        values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__mask);
        if (likely(values[1])) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("pad_2d_inplace_float64", 0, 2, 3, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1116; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
        }
        case  2:
        if (kw_args > 0) {
          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__limit);
          if (value) { values[2] = value; kw_args--; }
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "pad_2d_inplace_float64") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1116; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
    } else {
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_values = ((PyArrayObject *)values[0]);
    __pyx_v_mask = ((PyArrayObject *)values[1]);
    __pyx_v_limit = values[2];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("pad_2d_inplace_float64", 0, 2, 3, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1116; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("pandas._algos.pad_2d_inplace_float64", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_bstruct_values.buf = NULL;
  __pyx_bstruct_mask.buf = NULL;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_values), __pyx_ptype_5numpy_ndarray, 1, "values", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1116; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_mask), __pyx_ptype_5numpy_ndarray, 1, "mask", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1117; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_values, (PyObject*)__pyx_v_values, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 2, 0, __pyx_stack) == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1116; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  }
  __pyx_bstride_0_values = __pyx_bstruct_values.strides[0]; __pyx_bstride_1_values = __pyx_bstruct_values.strides[1];
  __pyx_bshape_0_values = __pyx_bstruct_values.shape[0]; __pyx_bshape_1_values = __pyx_bstruct_values.shape[1];
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_mask, (PyObject*)__pyx_v_mask, &__Pyx_TypeInfo_nn___pyx_t_5numpy_uint8_t, PyBUF_FORMAT| PyBUF_STRIDES, 2, 0, __pyx_stack) == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1116; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  }
  __pyx_bstride_0_mask = __pyx_bstruct_mask.strides[0]; __pyx_bstride_1_mask = __pyx_bstruct_mask.strides[1];
  __pyx_bshape_0_mask = __pyx_bstruct_mask.shape[0]; __pyx_bshape_1_mask = __pyx_bstruct_mask.shape[1];

  /* "pandas/src/generated.pyx":1121
 *     cdef Py_ssize_t i, j, N, K
 *     cdef float64_t val
 *     cdef int lim, fill_count = 0             # <<<<<<<<<<<<<<
 * 
 *     K, N = (<object> values).shape
 */
  __pyx_v_fill_count = 0;

  /* "pandas/src/generated.pyx":1123
 *     cdef int lim, fill_count = 0
 * 
 *     K, N = (<object> values).shape             # <<<<<<<<<<<<<<
 * 
 *     if limit is None:
 */
  __pyx_t_1 = PyObject_GetAttr(((PyObject *)__pyx_v_values), __pyx_n_s__shape); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1123; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  if ((likely(PyTuple_CheckExact(__pyx_t_1))) || (PyList_CheckExact(__pyx_t_1))) {
    PyObject* sequence = __pyx_t_1;
    if (likely(PyTuple_CheckExact(sequence))) {
      if (unlikely(PyTuple_GET_SIZE(sequence) != 2)) {
        if (PyTuple_GET_SIZE(sequence) > 2) __Pyx_RaiseTooManyValuesError(2);
        else __Pyx_RaiseNeedMoreValuesError(PyTuple_GET_SIZE(sequence));
        {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1123; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      }
      __pyx_t_2 = PyTuple_GET_ITEM(sequence, 0); 
      __pyx_t_3 = PyTuple_GET_ITEM(sequence, 1); 
    } else {
      if (unlikely(PyList_GET_SIZE(sequence) != 2)) {
        if (PyList_GET_SIZE(sequence) > 2) __Pyx_RaiseTooManyValuesError(2);
        else __Pyx_RaiseNeedMoreValuesError(PyList_GET_SIZE(sequence));
        {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1123; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      }
      __pyx_t_2 = PyList_GET_ITEM(sequence, 0); 
      __pyx_t_3 = PyList_GET_ITEM(sequence, 1); 
    }
    __Pyx_INCREF(__pyx_t_2);
    __Pyx_INCREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  } else {
    Py_ssize_t index = -1;
    __pyx_t_4 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1123; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __pyx_t_5 = Py_TYPE(__pyx_t_4)->tp_iternext;
    index = 0; __pyx_t_2 = __pyx_t_5(__pyx_t_4); if (unlikely(!__pyx_t_2)) goto __pyx_L6_unpacking_failed;
    __Pyx_GOTREF(__pyx_t_2);
    index = 1; __pyx_t_3 = __pyx_t_5(__pyx_t_4); if (unlikely(!__pyx_t_3)) goto __pyx_L6_unpacking_failed;
    __Pyx_GOTREF(__pyx_t_3);
    if (__Pyx_IternextUnpackEndCheck(__pyx_t_5(__pyx_t_4), 2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1123; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    goto __pyx_L7_unpacking_done;
    __pyx_L6_unpacking_failed:;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    if (PyErr_Occurred() && PyErr_ExceptionMatches(PyExc_StopIteration)) PyErr_Clear();
    if (!PyErr_Occurred()) __Pyx_RaiseNeedMoreValuesError(index);
    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1123; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __pyx_L7_unpacking_done:;
  }
  __pyx_t_6 = __Pyx_PyIndex_AsSsize_t(__pyx_t_2); if (unlikely((__pyx_t_6 == (Py_ssize_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1123; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_7 = __Pyx_PyIndex_AsSsize_t(__pyx_t_3); if (unlikely((__pyx_t_7 == (Py_ssize_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1123; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_v_K = __pyx_t_6;
  __pyx_v_N = __pyx_t_7;

  /* "pandas/src/generated.pyx":1125
 *     K, N = (<object> values).shape
 * 
 *     if limit is None:             # <<<<<<<<<<<<<<
 *         lim = N
 *     else:
 */
  __pyx_t_8 = (__pyx_v_limit == Py_None);
  if (__pyx_t_8) {

    /* "pandas/src/generated.pyx":1126
 * 
 *     if limit is None:
 *         lim = N             # <<<<<<<<<<<<<<
 *     else:
 *         if limit < 0:
 */
    __pyx_v_lim = __pyx_v_N;
    goto __pyx_L8;
  }
  /*else*/ {

    /* "pandas/src/generated.pyx":1128
 *         lim = N
 *     else:
 *         if limit < 0:             # <<<<<<<<<<<<<<
 *             raise ValueError('Limit must be non-negative')
 *         lim = limit
 */
    __pyx_t_1 = PyObject_RichCompare(__pyx_v_limit, __pyx_int_0, Py_LT); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1128; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_8 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_8 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1128; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    if (__pyx_t_8) {

      /* "pandas/src/generated.pyx":1129
 *     else:
 *         if limit < 0:
 *             raise ValueError('Limit must be non-negative')             # <<<<<<<<<<<<<<
 *         lim = limit
 * 
 */
      __pyx_t_1 = PyObject_Call(__pyx_builtin_ValueError, ((PyObject *)__pyx_k_tuple_32), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1129; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_Raise(__pyx_t_1, 0, 0, 0);
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1129; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      goto __pyx_L9;
    }
    __pyx_L9:;

    /* "pandas/src/generated.pyx":1130
 *         if limit < 0:
 *             raise ValueError('Limit must be non-negative')
 *         lim = limit             # <<<<<<<<<<<<<<
 * 
 *     for j in range(K):
 */
    __pyx_t_9 = __Pyx_PyInt_AsInt(__pyx_v_limit); if (unlikely((__pyx_t_9 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1130; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __pyx_v_lim = __pyx_t_9;
  }
  __pyx_L8:;

  /* "pandas/src/generated.pyx":1132
 *         lim = limit
 * 
 *     for j in range(K):             # <<<<<<<<<<<<<<
 *         fill_count = 0
 *         val = values[j, 0]
 */
  __pyx_t_7 = __pyx_v_K;
  for (__pyx_t_6 = 0; __pyx_t_6 < __pyx_t_7; __pyx_t_6+=1) {
    __pyx_v_j = __pyx_t_6;

    /* "pandas/src/generated.pyx":1133
 * 
 *     for j in range(K):
 *         fill_count = 0             # <<<<<<<<<<<<<<
 *         val = values[j, 0]
 *         for i in range(N):
 */
    __pyx_v_fill_count = 0;

    /* "pandas/src/generated.pyx":1134
 *     for j in range(K):
 *         fill_count = 0
 *         val = values[j, 0]             # <<<<<<<<<<<<<<
 *         for i in range(N):
 *             if mask[j, i]:
 */
    __pyx_t_10 = __pyx_v_j;
    __pyx_t_11 = 0;
    __pyx_v_val = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_values.buf, __pyx_t_10, __pyx_bstride_0_values, __pyx_t_11, __pyx_bstride_1_values));

    /* "pandas/src/generated.pyx":1135
 *         fill_count = 0
 *         val = values[j, 0]
 *         for i in range(N):             # <<<<<<<<<<<<<<
 *             if mask[j, i]:
 *                 if fill_count >= lim:
 */
    __pyx_t_12 = __pyx_v_N;
    for (__pyx_t_13 = 0; __pyx_t_13 < __pyx_t_12; __pyx_t_13+=1) {
      __pyx_v_i = __pyx_t_13;

      /* "pandas/src/generated.pyx":1136
 *         val = values[j, 0]
 *         for i in range(N):
 *             if mask[j, i]:             # <<<<<<<<<<<<<<
 *                 if fill_count >= lim:
 *                     continue
 */
      __pyx_t_14 = __pyx_v_j;
      __pyx_t_15 = __pyx_v_i;
      __pyx_t_16 = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_uint8_t *, __pyx_bstruct_mask.buf, __pyx_t_14, __pyx_bstride_0_mask, __pyx_t_15, __pyx_bstride_1_mask));
      if (__pyx_t_16) {

        /* "pandas/src/generated.pyx":1137
 *         for i in range(N):
 *             if mask[j, i]:
 *                 if fill_count >= lim:             # <<<<<<<<<<<<<<
 *                     continue
 *                 fill_count += 1
 */
        __pyx_t_8 = (__pyx_v_fill_count >= __pyx_v_lim);
        if (__pyx_t_8) {

          /* "pandas/src/generated.pyx":1138
 *             if mask[j, i]:
 *                 if fill_count >= lim:
 *                     continue             # <<<<<<<<<<<<<<
 *                 fill_count += 1
 *                 values[j, i] = val
 */
          goto __pyx_L12_continue;
          goto __pyx_L15;
        }
        __pyx_L15:;

        /* "pandas/src/generated.pyx":1139
 *                 if fill_count >= lim:
 *                     continue
 *                 fill_count += 1             # <<<<<<<<<<<<<<
 *                 values[j, i] = val
 *             else:
 */
        __pyx_v_fill_count = (__pyx_v_fill_count + 1);

        /* "pandas/src/generated.pyx":1140
 *                     continue
 *                 fill_count += 1
 *                 values[j, i] = val             # <<<<<<<<<<<<<<
 *             else:
 *                 fill_count = 0
 */
        __pyx_t_17 = __pyx_v_j;
        __pyx_t_18 = __pyx_v_i;
        *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_values.buf, __pyx_t_17, __pyx_bstride_0_values, __pyx_t_18, __pyx_bstride_1_values) = __pyx_v_val;
        goto __pyx_L14;
      }
      /*else*/ {

        /* "pandas/src/generated.pyx":1142
 *                 values[j, i] = val
 *             else:
 *                 fill_count = 0             # <<<<<<<<<<<<<<
 *                 val = values[j, i]
 * @cython.boundscheck(False)
 */
        __pyx_v_fill_count = 0;

        /* "pandas/src/generated.pyx":1143
 *             else:
 *                 fill_count = 0
 *                 val = values[j, i]             # <<<<<<<<<<<<<<
 * @cython.boundscheck(False)
 * @cython.wraparound(False)
 */
        __pyx_t_19 = __pyx_v_j;
        __pyx_t_20 = __pyx_v_i;
        __pyx_v_val = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_values.buf, __pyx_t_19, __pyx_bstride_0_values, __pyx_t_20, __pyx_bstride_1_values));
      }
      __pyx_L14:;
      __pyx_L12_continue:;
    }
  }

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  { PyObject *__pyx_type, *__pyx_value, *__pyx_tb;
    __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);
    __Pyx_SafeReleaseBuffer(&__pyx_bstruct_mask);
    __Pyx_SafeReleaseBuffer(&__pyx_bstruct_values);
  __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);}
  __Pyx_AddTraceback("pandas._algos.pad_2d_inplace_float64", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  goto __pyx_L2;
  __pyx_L0:;
  __Pyx_SafeReleaseBuffer(&__pyx_bstruct_mask);
  __Pyx_SafeReleaseBuffer(&__pyx_bstruct_values);
  __pyx_L2:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "pandas/src/generated.pyx":1146
 * @cython.boundscheck(False)
 * @cython.wraparound(False)
 * def pad_2d_inplace_object(ndarray[object, ndim=2] values,             # <<<<<<<<<<<<<<
 *                             ndarray[uint8_t, ndim=2] mask,
 *                             limit=None):
 */

static PyObject *__pyx_pf_6pandas_6_algos_31pad_2d_inplace_object(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_6pandas_6_algos_31pad_2d_inplace_object = {__Pyx_NAMESTR("pad_2d_inplace_object"), (PyCFunction)__pyx_pf_6pandas_6_algos_31pad_2d_inplace_object, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(0)};
static PyObject *__pyx_pf_6pandas_6_algos_31pad_2d_inplace_object(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyArrayObject *__pyx_v_values = 0;
  PyArrayObject *__pyx_v_mask = 0;
  PyObject *__pyx_v_limit = 0;
  Py_ssize_t __pyx_v_i;
  Py_ssize_t __pyx_v_j;
  Py_ssize_t __pyx_v_N;
  Py_ssize_t __pyx_v_K;
  PyObject *__pyx_v_val = 0;
  int __pyx_v_lim;
  int __pyx_v_fill_count;
  Py_buffer __pyx_bstruct_mask;
  Py_ssize_t __pyx_bstride_0_mask = 0;
  Py_ssize_t __pyx_bstride_1_mask = 0;
  Py_ssize_t __pyx_bshape_0_mask = 0;
  Py_ssize_t __pyx_bshape_1_mask = 0;
  Py_buffer __pyx_bstruct_values;
  Py_ssize_t __pyx_bstride_0_values = 0;
  Py_ssize_t __pyx_bstride_1_values = 0;
  Py_ssize_t __pyx_bshape_0_values = 0;
  Py_ssize_t __pyx_bshape_1_values = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *(*__pyx_t_5)(PyObject *);
  Py_ssize_t __pyx_t_6;
  Py_ssize_t __pyx_t_7;
  int __pyx_t_8;
  int __pyx_t_9;
  Py_ssize_t __pyx_t_10;
  long __pyx_t_11;
  Py_ssize_t __pyx_t_12;
  Py_ssize_t __pyx_t_13;
  Py_ssize_t __pyx_t_14;
  Py_ssize_t __pyx_t_15;
  __pyx_t_5numpy_uint8_t __pyx_t_16;
  Py_ssize_t __pyx_t_17;
  Py_ssize_t __pyx_t_18;
  PyObject **__pyx_t_19;
  Py_ssize_t __pyx_t_20;
  Py_ssize_t __pyx_t_21;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__values,&__pyx_n_s__mask,&__pyx_n_s__limit,0};
  __Pyx_RefNannySetupContext("pad_2d_inplace_object");
  __pyx_self = __pyx_self;
  {
    PyObject* values[3] = {0,0,0};

    /* "pandas/src/generated.pyx":1148
 * def pad_2d_inplace_object(ndarray[object, ndim=2] values,
 *                             ndarray[uint8_t, ndim=2] mask,
 *                             limit=None):             # <<<<<<<<<<<<<<
 *     cdef Py_ssize_t i, j, N, K
 *     cdef object val
 */
    values[2] = ((PyObject *)Py_None);
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  0:
        values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__values);
        if (likely(values[0])) kw_args--;
        else goto __pyx_L5_argtuple_error;
        case  1:
        values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__mask);
        if (likely(values[1])) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("pad_2d_inplace_object", 0, 2, 3, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1146; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
        }
        case  2:
        if (kw_args > 0) {
          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__limit);
          if (value) { values[2] = value; kw_args--; }
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "pad_2d_inplace_object") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1146; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
    } else {
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_values = ((PyArrayObject *)values[0]);
    __pyx_v_mask = ((PyArrayObject *)values[1]);
    __pyx_v_limit = values[2];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("pad_2d_inplace_object", 0, 2, 3, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1146; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("pandas._algos.pad_2d_inplace_object", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_bstruct_values.buf = NULL;
  __pyx_bstruct_mask.buf = NULL;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_values), __pyx_ptype_5numpy_ndarray, 1, "values", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1146; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_mask), __pyx_ptype_5numpy_ndarray, 1, "mask", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1147; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_values, (PyObject*)__pyx_v_values, &__Pyx_TypeInfo_object, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 2, 0, __pyx_stack) == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1146; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  }
  __pyx_bstride_0_values = __pyx_bstruct_values.strides[0]; __pyx_bstride_1_values = __pyx_bstruct_values.strides[1];
  __pyx_bshape_0_values = __pyx_bstruct_values.shape[0]; __pyx_bshape_1_values = __pyx_bstruct_values.shape[1];
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_mask, (PyObject*)__pyx_v_mask, &__Pyx_TypeInfo_nn___pyx_t_5numpy_uint8_t, PyBUF_FORMAT| PyBUF_STRIDES, 2, 0, __pyx_stack) == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1146; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  }
  __pyx_bstride_0_mask = __pyx_bstruct_mask.strides[0]; __pyx_bstride_1_mask = __pyx_bstruct_mask.strides[1];
  __pyx_bshape_0_mask = __pyx_bstruct_mask.shape[0]; __pyx_bshape_1_mask = __pyx_bstruct_mask.shape[1];

  /* "pandas/src/generated.pyx":1151
 *     cdef Py_ssize_t i, j, N, K
 *     cdef object val
 *     cdef int lim, fill_count = 0             # <<<<<<<<<<<<<<
 * 
 *     K, N = (<object> values).shape
 */
  __pyx_v_fill_count = 0;

  /* "pandas/src/generated.pyx":1153
 *     cdef int lim, fill_count = 0
 * 
 *     K, N = (<object> values).shape             # <<<<<<<<<<<<<<
 * 
 *     if limit is None:
 */
  __pyx_t_1 = PyObject_GetAttr(((PyObject *)__pyx_v_values), __pyx_n_s__shape); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1153; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  if ((likely(PyTuple_CheckExact(__pyx_t_1))) || (PyList_CheckExact(__pyx_t_1))) {
    PyObject* sequence = __pyx_t_1;
    if (likely(PyTuple_CheckExact(sequence))) {
      if (unlikely(PyTuple_GET_SIZE(sequence) != 2)) {
        if (PyTuple_GET_SIZE(sequence) > 2) __Pyx_RaiseTooManyValuesError(2);
        else __Pyx_RaiseNeedMoreValuesError(PyTuple_GET_SIZE(sequence));
        {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1153; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      }
      __pyx_t_2 = PyTuple_GET_ITEM(sequence, 0); 
      __pyx_t_3 = PyTuple_GET_ITEM(sequence, 1); 
    } else {
      if (unlikely(PyList_GET_SIZE(sequence) != 2)) {
        if (PyList_GET_SIZE(sequence) > 2) __Pyx_RaiseTooManyValuesError(2);
        else __Pyx_RaiseNeedMoreValuesError(PyList_GET_SIZE(sequence));
        {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1153; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      }
      __pyx_t_2 = PyList_GET_ITEM(sequence, 0); 
      __pyx_t_3 = PyList_GET_ITEM(sequence, 1); 
    }
    __Pyx_INCREF(__pyx_t_2);
    __Pyx_INCREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  } else {
    Py_ssize_t index = -1;
    __pyx_t_4 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1153; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __pyx_t_5 = Py_TYPE(__pyx_t_4)->tp_iternext;
    index = 0; __pyx_t_2 = __pyx_t_5(__pyx_t_4); if (unlikely(!__pyx_t_2)) goto __pyx_L6_unpacking_failed;
    __Pyx_GOTREF(__pyx_t_2);
    index = 1; __pyx_t_3 = __pyx_t_5(__pyx_t_4); if (unlikely(!__pyx_t_3)) goto __pyx_L6_unpacking_failed;
    __Pyx_GOTREF(__pyx_t_3);
    if (__Pyx_IternextUnpackEndCheck(__pyx_t_5(__pyx_t_4), 2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1153; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    goto __pyx_L7_unpacking_done;
    __pyx_L6_unpacking_failed:;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    if (PyErr_Occurred() && PyErr_ExceptionMatches(PyExc_StopIteration)) PyErr_Clear();
    if (!PyErr_Occurred()) __Pyx_RaiseNeedMoreValuesError(index);
    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1153; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __pyx_L7_unpacking_done:;
  }
  __pyx_t_6 = __Pyx_PyIndex_AsSsize_t(__pyx_t_2); if (unlikely((__pyx_t_6 == (Py_ssize_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1153; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_7 = __Pyx_PyIndex_AsSsize_t(__pyx_t_3); if (unlikely((__pyx_t_7 == (Py_ssize_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1153; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_v_K = __pyx_t_6;
  __pyx_v_N = __pyx_t_7;

  /* "pandas/src/generated.pyx":1155
 *     K, N = (<object> values).shape
 * 
 *     if limit is None:             # <<<<<<<<<<<<<<
 *         lim = N
 *     else:
 */
  __pyx_t_8 = (__pyx_v_limit == Py_None);
  if (__pyx_t_8) {

    /* "pandas/src/generated.pyx":1156
 * 
 *     if limit is None:
 *         lim = N             # <<<<<<<<<<<<<<
 *     else:
 *         if limit < 0:
 */
    __pyx_v_lim = __pyx_v_N;
    goto __pyx_L8;
  }
  /*else*/ {

    /* "pandas/src/generated.pyx":1158
 *         lim = N
 *     else:
 *         if limit < 0:             # <<<<<<<<<<<<<<
 *             raise ValueError('Limit must be non-negative')
 *         lim = limit
 */
    __pyx_t_1 = PyObject_RichCompare(__pyx_v_limit, __pyx_int_0, Py_LT); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1158; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_8 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_8 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1158; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    if (__pyx_t_8) {

      /* "pandas/src/generated.pyx":1159
 *     else:
 *         if limit < 0:
 *             raise ValueError('Limit must be non-negative')             # <<<<<<<<<<<<<<
 *         lim = limit
 * 
 */
      __pyx_t_1 = PyObject_Call(__pyx_builtin_ValueError, ((PyObject *)__pyx_k_tuple_33), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1159; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_Raise(__pyx_t_1, 0, 0, 0);
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1159; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      goto __pyx_L9;
    }
    __pyx_L9:;

    /* "pandas/src/generated.pyx":1160
 *         if limit < 0:
 *             raise ValueError('Limit must be non-negative')
 *         lim = limit             # <<<<<<<<<<<<<<
 * 
 *     for j in range(K):
 */
    __pyx_t_9 = __Pyx_PyInt_AsInt(__pyx_v_limit); if (unlikely((__pyx_t_9 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1160; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __pyx_v_lim = __pyx_t_9;
  }
  __pyx_L8:;

  /* "pandas/src/generated.pyx":1162
 *         lim = limit
 * 
 *     for j in range(K):             # <<<<<<<<<<<<<<
 *         fill_count = 0
 *         val = values[j, 0]
 */
  __pyx_t_7 = __pyx_v_K;
  for (__pyx_t_6 = 0; __pyx_t_6 < __pyx_t_7; __pyx_t_6+=1) {
    __pyx_v_j = __pyx_t_6;

    /* "pandas/src/generated.pyx":1163
 * 
 *     for j in range(K):
 *         fill_count = 0             # <<<<<<<<<<<<<<
 *         val = values[j, 0]
 *         for i in range(N):
 */
    __pyx_v_fill_count = 0;

    /* "pandas/src/generated.pyx":1164
 *     for j in range(K):
 *         fill_count = 0
 *         val = values[j, 0]             # <<<<<<<<<<<<<<
 *         for i in range(N):
 *             if mask[j, i]:
 */
    __pyx_t_10 = __pyx_v_j;
    __pyx_t_11 = 0;
    __pyx_t_1 = *__Pyx_BufPtrStrided2d(PyObject **, __pyx_bstruct_values.buf, __pyx_t_10, __pyx_bstride_0_values, __pyx_t_11, __pyx_bstride_1_values);
    __Pyx_INCREF((PyObject*)__pyx_t_1);
    __Pyx_XDECREF(__pyx_v_val);
    __pyx_v_val = __pyx_t_1;
    __pyx_t_1 = 0;

    /* "pandas/src/generated.pyx":1165
 *         fill_count = 0
 *         val = values[j, 0]
 *         for i in range(N):             # <<<<<<<<<<<<<<
 *             if mask[j, i]:
 *                 if fill_count >= lim:
 */
    __pyx_t_12 = __pyx_v_N;
    for (__pyx_t_13 = 0; __pyx_t_13 < __pyx_t_12; __pyx_t_13+=1) {
      __pyx_v_i = __pyx_t_13;

      /* "pandas/src/generated.pyx":1166
 *         val = values[j, 0]
 *         for i in range(N):
 *             if mask[j, i]:             # <<<<<<<<<<<<<<
 *                 if fill_count >= lim:
 *                     continue
 */
      __pyx_t_14 = __pyx_v_j;
      __pyx_t_15 = __pyx_v_i;
      __pyx_t_16 = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_uint8_t *, __pyx_bstruct_mask.buf, __pyx_t_14, __pyx_bstride_0_mask, __pyx_t_15, __pyx_bstride_1_mask));
      if (__pyx_t_16) {

        /* "pandas/src/generated.pyx":1167
 *         for i in range(N):
 *             if mask[j, i]:
 *                 if fill_count >= lim:             # <<<<<<<<<<<<<<
 *                     continue
 *                 fill_count += 1
 */
        __pyx_t_8 = (__pyx_v_fill_count >= __pyx_v_lim);
        if (__pyx_t_8) {

          /* "pandas/src/generated.pyx":1168
 *             if mask[j, i]:
 *                 if fill_count >= lim:
 *                     continue             # <<<<<<<<<<<<<<
 *                 fill_count += 1
 *                 values[j, i] = val
 */
          goto __pyx_L12_continue;
          goto __pyx_L15;
        }
        __pyx_L15:;

        /* "pandas/src/generated.pyx":1169
 *                 if fill_count >= lim:
 *                     continue
 *                 fill_count += 1             # <<<<<<<<<<<<<<
 *                 values[j, i] = val
 *             else:
 */
        __pyx_v_fill_count = (__pyx_v_fill_count + 1);

        /* "pandas/src/generated.pyx":1170
 *                     continue
 *                 fill_count += 1
 *                 values[j, i] = val             # <<<<<<<<<<<<<<
 *             else:
 *                 fill_count = 0
 */
        __pyx_t_17 = __pyx_v_j;
        __pyx_t_18 = __pyx_v_i;
        __pyx_t_19 = __Pyx_BufPtrStrided2d(PyObject **, __pyx_bstruct_values.buf, __pyx_t_17, __pyx_bstride_0_values, __pyx_t_18, __pyx_bstride_1_values);
        __Pyx_GOTREF(*__pyx_t_19);
        __Pyx_DECREF(*__pyx_t_19); __Pyx_INCREF(__pyx_v_val);
        *__pyx_t_19 = __pyx_v_val;
        __Pyx_GIVEREF(*__pyx_t_19);
        goto __pyx_L14;
      }
      /*else*/ {

        /* "pandas/src/generated.pyx":1172
 *                 values[j, i] = val
 *             else:
 *                 fill_count = 0             # <<<<<<<<<<<<<<
 *                 val = values[j, i]
 * @cython.boundscheck(False)
 */
        __pyx_v_fill_count = 0;

        /* "pandas/src/generated.pyx":1173
 *             else:
 *                 fill_count = 0
 *                 val = values[j, i]             # <<<<<<<<<<<<<<
 * @cython.boundscheck(False)
 * @cython.wraparound(False)
 */
        __pyx_t_20 = __pyx_v_j;
        __pyx_t_21 = __pyx_v_i;
        __pyx_t_1 = *__Pyx_BufPtrStrided2d(PyObject **, __pyx_bstruct_values.buf, __pyx_t_20, __pyx_bstride_0_values, __pyx_t_21, __pyx_bstride_1_values);
        __Pyx_INCREF((PyObject*)__pyx_t_1);
        __Pyx_DECREF(__pyx_v_val);
        __pyx_v_val = __pyx_t_1;
        __pyx_t_1 = 0;
      }
      __pyx_L14:;
      __pyx_L12_continue:;
    }
  }

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  { PyObject *__pyx_type, *__pyx_value, *__pyx_tb;
    __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);
    __Pyx_SafeReleaseBuffer(&__pyx_bstruct_mask);
    __Pyx_SafeReleaseBuffer(&__pyx_bstruct_values);
  __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);}
  __Pyx_AddTraceback("pandas._algos.pad_2d_inplace_object", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  goto __pyx_L2;
  __pyx_L0:;
  __Pyx_SafeReleaseBuffer(&__pyx_bstruct_mask);
  __Pyx_SafeReleaseBuffer(&__pyx_bstruct_values);
  __pyx_L2:;
  __Pyx_XDECREF(__pyx_v_val);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "pandas/src/generated.pyx":1176
 * @cython.boundscheck(False)
 * @cython.wraparound(False)
 * def pad_2d_inplace_int32(ndarray[int32_t, ndim=2] values,             # <<<<<<<<<<<<<<
 *                             ndarray[uint8_t, ndim=2] mask,
 *                             limit=None):
 */

static PyObject *__pyx_pf_6pandas_6_algos_32pad_2d_inplace_int32(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_6pandas_6_algos_32pad_2d_inplace_int32 = {__Pyx_NAMESTR("pad_2d_inplace_int32"), (PyCFunction)__pyx_pf_6pandas_6_algos_32pad_2d_inplace_int32, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(0)};
static PyObject *__pyx_pf_6pandas_6_algos_32pad_2d_inplace_int32(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyArrayObject *__pyx_v_values = 0;
  PyArrayObject *__pyx_v_mask = 0;
  PyObject *__pyx_v_limit = 0;
  Py_ssize_t __pyx_v_i;
  Py_ssize_t __pyx_v_j;
  Py_ssize_t __pyx_v_N;
  Py_ssize_t __pyx_v_K;
  __pyx_t_5numpy_int32_t __pyx_v_val;
  int __pyx_v_lim;
  int __pyx_v_fill_count;
  Py_buffer __pyx_bstruct_mask;
  Py_ssize_t __pyx_bstride_0_mask = 0;
  Py_ssize_t __pyx_bstride_1_mask = 0;
  Py_ssize_t __pyx_bshape_0_mask = 0;
  Py_ssize_t __pyx_bshape_1_mask = 0;
  Py_buffer __pyx_bstruct_values;
  Py_ssize_t __pyx_bstride_0_values = 0;
  Py_ssize_t __pyx_bstride_1_values = 0;
  Py_ssize_t __pyx_bshape_0_values = 0;
  Py_ssize_t __pyx_bshape_1_values = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *(*__pyx_t_5)(PyObject *);
  Py_ssize_t __pyx_t_6;
  Py_ssize_t __pyx_t_7;
  int __pyx_t_8;
  int __pyx_t_9;
  Py_ssize_t __pyx_t_10;
  long __pyx_t_11;
  Py_ssize_t __pyx_t_12;
  Py_ssize_t __pyx_t_13;
  Py_ssize_t __pyx_t_14;
  Py_ssize_t __pyx_t_15;
  __pyx_t_5numpy_uint8_t __pyx_t_16;
  Py_ssize_t __pyx_t_17;
  Py_ssize_t __pyx_t_18;
  Py_ssize_t __pyx_t_19;
  Py_ssize_t __pyx_t_20;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__values,&__pyx_n_s__mask,&__pyx_n_s__limit,0};
  __Pyx_RefNannySetupContext("pad_2d_inplace_int32");
  __pyx_self = __pyx_self;
  {
    PyObject* values[3] = {0,0,0};

    /* "pandas/src/generated.pyx":1178
 * def pad_2d_inplace_int32(ndarray[int32_t, ndim=2] values,
 *                             ndarray[uint8_t, ndim=2] mask,
 *                             limit=None):             # <<<<<<<<<<<<<<
 *     cdef Py_ssize_t i, j, N, K
 *     cdef int32_t val
 */
    values[2] = ((PyObject *)Py_None);
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  0:
        values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__values);
        if (likely(values[0])) kw_args--;
        else goto __pyx_L5_argtuple_error;
        case  1:
        values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__mask);
        if (likely(values[1])) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("pad_2d_inplace_int32", 0, 2, 3, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1176; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
        }
        case  2:
        if (kw_args > 0) {
          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__limit);
          if (value) { values[2] = value; kw_args--; }
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "pad_2d_inplace_int32") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1176; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
    } else {
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_values = ((PyArrayObject *)values[0]);
    __pyx_v_mask = ((PyArrayObject *)values[1]);
    __pyx_v_limit = values[2];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("pad_2d_inplace_int32", 0, 2, 3, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1176; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("pandas._algos.pad_2d_inplace_int32", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_bstruct_values.buf = NULL;
  __pyx_bstruct_mask.buf = NULL;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_values), __pyx_ptype_5numpy_ndarray, 1, "values", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1176; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_mask), __pyx_ptype_5numpy_ndarray, 1, "mask", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1177; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_values, (PyObject*)__pyx_v_values, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int32_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 2, 0, __pyx_stack) == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1176; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  }
  __pyx_bstride_0_values = __pyx_bstruct_values.strides[0]; __pyx_bstride_1_values = __pyx_bstruct_values.strides[1];
  __pyx_bshape_0_values = __pyx_bstruct_values.shape[0]; __pyx_bshape_1_values = __pyx_bstruct_values.shape[1];
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_mask, (PyObject*)__pyx_v_mask, &__Pyx_TypeInfo_nn___pyx_t_5numpy_uint8_t, PyBUF_FORMAT| PyBUF_STRIDES, 2, 0, __pyx_stack) == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1176; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  }
  __pyx_bstride_0_mask = __pyx_bstruct_mask.strides[0]; __pyx_bstride_1_mask = __pyx_bstruct_mask.strides[1];
  __pyx_bshape_0_mask = __pyx_bstruct_mask.shape[0]; __pyx_bshape_1_mask = __pyx_bstruct_mask.shape[1];

  /* "pandas/src/generated.pyx":1181
 *     cdef Py_ssize_t i, j, N, K
 *     cdef int32_t val
 *     cdef int lim, fill_count = 0             # <<<<<<<<<<<<<<
 * 
 *     K, N = (<object> values).shape
 */
  __pyx_v_fill_count = 0;

  /* "pandas/src/generated.pyx":1183
 *     cdef int lim, fill_count = 0
 * 
 *     K, N = (<object> values).shape             # <<<<<<<<<<<<<<
 * 
 *     if limit is None:
 */
  __pyx_t_1 = PyObject_GetAttr(((PyObject *)__pyx_v_values), __pyx_n_s__shape); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1183; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  if ((likely(PyTuple_CheckExact(__pyx_t_1))) || (PyList_CheckExact(__pyx_t_1))) {
    PyObject* sequence = __pyx_t_1;
    if (likely(PyTuple_CheckExact(sequence))) {
      if (unlikely(PyTuple_GET_SIZE(sequence) != 2)) {
        if (PyTuple_GET_SIZE(sequence) > 2) __Pyx_RaiseTooManyValuesError(2);
        else __Pyx_RaiseNeedMoreValuesError(PyTuple_GET_SIZE(sequence));
        {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1183; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      }
      __pyx_t_2 = PyTuple_GET_ITEM(sequence, 0); 
      __pyx_t_3 = PyTuple_GET_ITEM(sequence, 1); 
    } else {
      if (unlikely(PyList_GET_SIZE(sequence) != 2)) {
        if (PyList_GET_SIZE(sequence) > 2) __Pyx_RaiseTooManyValuesError(2);
        else __Pyx_RaiseNeedMoreValuesError(PyList_GET_SIZE(sequence));
        {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1183; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      }
      __pyx_t_2 = PyList_GET_ITEM(sequence, 0); 
      __pyx_t_3 = PyList_GET_ITEM(sequence, 1); 
    }
    __Pyx_INCREF(__pyx_t_2);
    __Pyx_INCREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  } else {
    Py_ssize_t index = -1;
    __pyx_t_4 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1183; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __pyx_t_5 = Py_TYPE(__pyx_t_4)->tp_iternext;
    index = 0; __pyx_t_2 = __pyx_t_5(__pyx_t_4); if (unlikely(!__pyx_t_2)) goto __pyx_L6_unpacking_failed;
    __Pyx_GOTREF(__pyx_t_2);
    index = 1; __pyx_t_3 = __pyx_t_5(__pyx_t_4); if (unlikely(!__pyx_t_3)) goto __pyx_L6_unpacking_failed;
    __Pyx_GOTREF(__pyx_t_3);
    if (__Pyx_IternextUnpackEndCheck(__pyx_t_5(__pyx_t_4), 2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1183; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    goto __pyx_L7_unpacking_done;
    __pyx_L6_unpacking_failed:;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    if (PyErr_Occurred() && PyErr_ExceptionMatches(PyExc_StopIteration)) PyErr_Clear();
    if (!PyErr_Occurred()) __Pyx_RaiseNeedMoreValuesError(index);
    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1183; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __pyx_L7_unpacking_done:;
  }
  __pyx_t_6 = __Pyx_PyIndex_AsSsize_t(__pyx_t_2); if (unlikely((__pyx_t_6 == (Py_ssize_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1183; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_7 = __Pyx_PyIndex_AsSsize_t(__pyx_t_3); if (unlikely((__pyx_t_7 == (Py_ssize_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1183; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_v_K = __pyx_t_6;
  __pyx_v_N = __pyx_t_7;

  /* "pandas/src/generated.pyx":1185
 *     K, N = (<object> values).shape
 * 
 *     if limit is None:             # <<<<<<<<<<<<<<
 *         lim = N
 *     else:
 */
  __pyx_t_8 = (__pyx_v_limit == Py_None);
  if (__pyx_t_8) {

    /* "pandas/src/generated.pyx":1186
 * 
 *     if limit is None:
 *         lim = N             # <<<<<<<<<<<<<<
 *     else:
 *         if limit < 0:
 */
    __pyx_v_lim = __pyx_v_N;
    goto __pyx_L8;
  }
  /*else*/ {

    /* "pandas/src/generated.pyx":1188
 *         lim = N
 *     else:
 *         if limit < 0:             # <<<<<<<<<<<<<<
 *             raise ValueError('Limit must be non-negative')
 *         lim = limit
 */
    __pyx_t_1 = PyObject_RichCompare(__pyx_v_limit, __pyx_int_0, Py_LT); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1188; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_8 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_8 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1188; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    if (__pyx_t_8) {

      /* "pandas/src/generated.pyx":1189
 *     else:
 *         if limit < 0:
 *             raise ValueError('Limit must be non-negative')             # <<<<<<<<<<<<<<
 *         lim = limit
 * 
 */
      __pyx_t_1 = PyObject_Call(__pyx_builtin_ValueError, ((PyObject *)__pyx_k_tuple_34), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1189; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_Raise(__pyx_t_1, 0, 0, 0);
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1189; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      goto __pyx_L9;
    }
    __pyx_L9:;

    /* "pandas/src/generated.pyx":1190
 *         if limit < 0:
 *             raise ValueError('Limit must be non-negative')
 *         lim = limit             # <<<<<<<<<<<<<<
 * 
 *     for j in range(K):
 */
    __pyx_t_9 = __Pyx_PyInt_AsInt(__pyx_v_limit); if (unlikely((__pyx_t_9 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1190; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __pyx_v_lim = __pyx_t_9;
  }
  __pyx_L8:;

  /* "pandas/src/generated.pyx":1192
 *         lim = limit
 * 
 *     for j in range(K):             # <<<<<<<<<<<<<<
 *         fill_count = 0
 *         val = values[j, 0]
 */
  __pyx_t_7 = __pyx_v_K;
  for (__pyx_t_6 = 0; __pyx_t_6 < __pyx_t_7; __pyx_t_6+=1) {
    __pyx_v_j = __pyx_t_6;

    /* "pandas/src/generated.pyx":1193
 * 
 *     for j in range(K):
 *         fill_count = 0             # <<<<<<<<<<<<<<
 *         val = values[j, 0]
 *         for i in range(N):
 */
    __pyx_v_fill_count = 0;

    /* "pandas/src/generated.pyx":1194
 *     for j in range(K):
 *         fill_count = 0
 *         val = values[j, 0]             # <<<<<<<<<<<<<<
 *         for i in range(N):
 *             if mask[j, i]:
 */
    __pyx_t_10 = __pyx_v_j;
    __pyx_t_11 = 0;
    __pyx_v_val = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int32_t *, __pyx_bstruct_values.buf, __pyx_t_10, __pyx_bstride_0_values, __pyx_t_11, __pyx_bstride_1_values));

    /* "pandas/src/generated.pyx":1195
 *         fill_count = 0
 *         val = values[j, 0]
 *         for i in range(N):             # <<<<<<<<<<<<<<
 *             if mask[j, i]:
 *                 if fill_count >= lim:
 */
    __pyx_t_12 = __pyx_v_N;
    for (__pyx_t_13 = 0; __pyx_t_13 < __pyx_t_12; __pyx_t_13+=1) {
      __pyx_v_i = __pyx_t_13;

      /* "pandas/src/generated.pyx":1196
 *         val = values[j, 0]
 *         for i in range(N):
 *             if mask[j, i]:             # <<<<<<<<<<<<<<
 *                 if fill_count >= lim:
 *                     continue
 */
      __pyx_t_14 = __pyx_v_j;
      __pyx_t_15 = __pyx_v_i;
      __pyx_t_16 = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_uint8_t *, __pyx_bstruct_mask.buf, __pyx_t_14, __pyx_bstride_0_mask, __pyx_t_15, __pyx_bstride_1_mask));
      if (__pyx_t_16) {

        /* "pandas/src/generated.pyx":1197
 *         for i in range(N):
 *             if mask[j, i]:
 *                 if fill_count >= lim:             # <<<<<<<<<<<<<<
 *                     continue
 *                 fill_count += 1
 */
        __pyx_t_8 = (__pyx_v_fill_count >= __pyx_v_lim);
        if (__pyx_t_8) {

          /* "pandas/src/generated.pyx":1198
 *             if mask[j, i]:
 *                 if fill_count >= lim:
 *                     continue             # <<<<<<<<<<<<<<
 *                 fill_count += 1
 *                 values[j, i] = val
 */
          goto __pyx_L12_continue;
          goto __pyx_L15;
        }
        __pyx_L15:;

        /* "pandas/src/generated.pyx":1199
 *                 if fill_count >= lim:
 *                     continue
 *                 fill_count += 1             # <<<<<<<<<<<<<<
 *                 values[j, i] = val
 *             else:
 */
        __pyx_v_fill_count = (__pyx_v_fill_count + 1);

        /* "pandas/src/generated.pyx":1200
 *                     continue
 *                 fill_count += 1
 *                 values[j, i] = val             # <<<<<<<<<<<<<<
 *             else:
 *                 fill_count = 0
 */
        __pyx_t_17 = __pyx_v_j;
        __pyx_t_18 = __pyx_v_i;
        *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int32_t *, __pyx_bstruct_values.buf, __pyx_t_17, __pyx_bstride_0_values, __pyx_t_18, __pyx_bstride_1_values) = __pyx_v_val;
        goto __pyx_L14;
      }
      /*else*/ {

        /* "pandas/src/generated.pyx":1202
 *                 values[j, i] = val
 *             else:
 *                 fill_count = 0             # <<<<<<<<<<<<<<
 *                 val = values[j, i]
 * @cython.boundscheck(False)
 */
        __pyx_v_fill_count = 0;

        /* "pandas/src/generated.pyx":1203
 *             else:
 *                 fill_count = 0
 *                 val = values[j, i]             # <<<<<<<<<<<<<<
 * @cython.boundscheck(False)
 * @cython.wraparound(False)
 */
        __pyx_t_19 = __pyx_v_j;
        __pyx_t_20 = __pyx_v_i;
        __pyx_v_val = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int32_t *, __pyx_bstruct_values.buf, __pyx_t_19, __pyx_bstride_0_values, __pyx_t_20, __pyx_bstride_1_values));
      }
      __pyx_L14:;
      __pyx_L12_continue:;
    }
  }

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  { PyObject *__pyx_type, *__pyx_value, *__pyx_tb;
    __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);
    __Pyx_SafeReleaseBuffer(&__pyx_bstruct_mask);
    __Pyx_SafeReleaseBuffer(&__pyx_bstruct_values);
  __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);}
  __Pyx_AddTraceback("pandas._algos.pad_2d_inplace_int32", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  goto __pyx_L2;
  __pyx_L0:;
  __Pyx_SafeReleaseBuffer(&__pyx_bstruct_mask);
  __Pyx_SafeReleaseBuffer(&__pyx_bstruct_values);
  __pyx_L2:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "pandas/src/generated.pyx":1206
 * @cython.boundscheck(False)
 * @cython.wraparound(False)
 * def pad_2d_inplace_int64(ndarray[int64_t, ndim=2] values,             # <<<<<<<<<<<<<<
 *                             ndarray[uint8_t, ndim=2] mask,
 *                             limit=None):
 */

static PyObject *__pyx_pf_6pandas_6_algos_33pad_2d_inplace_int64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_6pandas_6_algos_33pad_2d_inplace_int64 = {__Pyx_NAMESTR("pad_2d_inplace_int64"), (PyCFunction)__pyx_pf_6pandas_6_algos_33pad_2d_inplace_int64, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(0)};
static PyObject *__pyx_pf_6pandas_6_algos_33pad_2d_inplace_int64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyArrayObject *__pyx_v_values = 0;
  PyArrayObject *__pyx_v_mask = 0;
  PyObject *__pyx_v_limit = 0;
  Py_ssize_t __pyx_v_i;
  Py_ssize_t __pyx_v_j;
  Py_ssize_t __pyx_v_N;
  Py_ssize_t __pyx_v_K;
  __pyx_t_5numpy_int64_t __pyx_v_val;
  int __pyx_v_lim;
  int __pyx_v_fill_count;
  Py_buffer __pyx_bstruct_mask;
  Py_ssize_t __pyx_bstride_0_mask = 0;
  Py_ssize_t __pyx_bstride_1_mask = 0;
  Py_ssize_t __pyx_bshape_0_mask = 0;
  Py_ssize_t __pyx_bshape_1_mask = 0;
  Py_buffer __pyx_bstruct_values;
  Py_ssize_t __pyx_bstride_0_values = 0;
  Py_ssize_t __pyx_bstride_1_values = 0;
  Py_ssize_t __pyx_bshape_0_values = 0;
  Py_ssize_t __pyx_bshape_1_values = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *(*__pyx_t_5)(PyObject *);
  Py_ssize_t __pyx_t_6;
  Py_ssize_t __pyx_t_7;
  int __pyx_t_8;
  int __pyx_t_9;
  Py_ssize_t __pyx_t_10;
  long __pyx_t_11;
  Py_ssize_t __pyx_t_12;
  Py_ssize_t __pyx_t_13;
  Py_ssize_t __pyx_t_14;
  Py_ssize_t __pyx_t_15;
  __pyx_t_5numpy_uint8_t __pyx_t_16;
  Py_ssize_t __pyx_t_17;
  Py_ssize_t __pyx_t_18;
  Py_ssize_t __pyx_t_19;
  Py_ssize_t __pyx_t_20;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__values,&__pyx_n_s__mask,&__pyx_n_s__limit,0};
  __Pyx_RefNannySetupContext("pad_2d_inplace_int64");
  __pyx_self = __pyx_self;
  {
    PyObject* values[3] = {0,0,0};

    /* "pandas/src/generated.pyx":1208
 * def pad_2d_inplace_int64(ndarray[int64_t, ndim=2] values,
 *                             ndarray[uint8_t, ndim=2] mask,
 *                             limit=None):             # <<<<<<<<<<<<<<
 *     cdef Py_ssize_t i, j, N, K
 *     cdef int64_t val
 */
    values[2] = ((PyObject *)Py_None);
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  0:
        values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__values);
        if (likely(values[0])) kw_args--;
        else goto __pyx_L5_argtuple_error;
        case  1:
        values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__mask);
        if (likely(values[1])) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("pad_2d_inplace_int64", 0, 2, 3, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1206; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
        }
        case  2:
        if (kw_args > 0) {
          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__limit);
          if (value) { values[2] = value; kw_args--; }
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "pad_2d_inplace_int64") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1206; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
    } else {
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_values = ((PyArrayObject *)values[0]);
    __pyx_v_mask = ((PyArrayObject *)values[1]);
    __pyx_v_limit = values[2];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("pad_2d_inplace_int64", 0, 2, 3, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1206; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("pandas._algos.pad_2d_inplace_int64", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_bstruct_values.buf = NULL;
  __pyx_bstruct_mask.buf = NULL;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_values), __pyx_ptype_5numpy_ndarray, 1, "values", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1206; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_mask), __pyx_ptype_5numpy_ndarray, 1, "mask", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1207; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_values, (PyObject*)__pyx_v_values, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 2, 0, __pyx_stack) == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1206; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  }
  __pyx_bstride_0_values = __pyx_bstruct_values.strides[0]; __pyx_bstride_1_values = __pyx_bstruct_values.strides[1];
  __pyx_bshape_0_values = __pyx_bstruct_values.shape[0]; __pyx_bshape_1_values = __pyx_bstruct_values.shape[1];
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_mask, (PyObject*)__pyx_v_mask, &__Pyx_TypeInfo_nn___pyx_t_5numpy_uint8_t, PyBUF_FORMAT| PyBUF_STRIDES, 2, 0, __pyx_stack) == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1206; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  }
  __pyx_bstride_0_mask = __pyx_bstruct_mask.strides[0]; __pyx_bstride_1_mask = __pyx_bstruct_mask.strides[1];
  __pyx_bshape_0_mask = __pyx_bstruct_mask.shape[0]; __pyx_bshape_1_mask = __pyx_bstruct_mask.shape[1];

  /* "pandas/src/generated.pyx":1211
 *     cdef Py_ssize_t i, j, N, K
 *     cdef int64_t val
 *     cdef int lim, fill_count = 0             # <<<<<<<<<<<<<<
 * 
 *     K, N = (<object> values).shape
 */
  __pyx_v_fill_count = 0;

  /* "pandas/src/generated.pyx":1213
 *     cdef int lim, fill_count = 0
 * 
 *     K, N = (<object> values).shape             # <<<<<<<<<<<<<<
 * 
 *     if limit is None:
 */
  __pyx_t_1 = PyObject_GetAttr(((PyObject *)__pyx_v_values), __pyx_n_s__shape); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1213; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  if ((likely(PyTuple_CheckExact(__pyx_t_1))) || (PyList_CheckExact(__pyx_t_1))) {
    PyObject* sequence = __pyx_t_1;
    if (likely(PyTuple_CheckExact(sequence))) {
      if (unlikely(PyTuple_GET_SIZE(sequence) != 2)) {
        if (PyTuple_GET_SIZE(sequence) > 2) __Pyx_RaiseTooManyValuesError(2);
        else __Pyx_RaiseNeedMoreValuesError(PyTuple_GET_SIZE(sequence));
        {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1213; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      }
      __pyx_t_2 = PyTuple_GET_ITEM(sequence, 0); 
      __pyx_t_3 = PyTuple_GET_ITEM(sequence, 1); 
    } else {
      if (unlikely(PyList_GET_SIZE(sequence) != 2)) {
        if (PyList_GET_SIZE(sequence) > 2) __Pyx_RaiseTooManyValuesError(2);
        else __Pyx_RaiseNeedMoreValuesError(PyList_GET_SIZE(sequence));
        {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1213; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      }
      __pyx_t_2 = PyList_GET_ITEM(sequence, 0); 
      __pyx_t_3 = PyList_GET_ITEM(sequence, 1); 
    }
    __Pyx_INCREF(__pyx_t_2);
    __Pyx_INCREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  } else {
    Py_ssize_t index = -1;
    __pyx_t_4 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1213; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __pyx_t_5 = Py_TYPE(__pyx_t_4)->tp_iternext;
    index = 0; __pyx_t_2 = __pyx_t_5(__pyx_t_4); if (unlikely(!__pyx_t_2)) goto __pyx_L6_unpacking_failed;
    __Pyx_GOTREF(__pyx_t_2);
    index = 1; __pyx_t_3 = __pyx_t_5(__pyx_t_4); if (unlikely(!__pyx_t_3)) goto __pyx_L6_unpacking_failed;
    __Pyx_GOTREF(__pyx_t_3);
    if (__Pyx_IternextUnpackEndCheck(__pyx_t_5(__pyx_t_4), 2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1213; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    goto __pyx_L7_unpacking_done;
    __pyx_L6_unpacking_failed:;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    if (PyErr_Occurred() && PyErr_ExceptionMatches(PyExc_StopIteration)) PyErr_Clear();
    if (!PyErr_Occurred()) __Pyx_RaiseNeedMoreValuesError(index);
    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1213; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __pyx_L7_unpacking_done:;
  }
  __pyx_t_6 = __Pyx_PyIndex_AsSsize_t(__pyx_t_2); if (unlikely((__pyx_t_6 == (Py_ssize_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1213; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_7 = __Pyx_PyIndex_AsSsize_t(__pyx_t_3); if (unlikely((__pyx_t_7 == (Py_ssize_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1213; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_v_K = __pyx_t_6;
  __pyx_v_N = __pyx_t_7;

  /* "pandas/src/generated.pyx":1215
 *     K, N = (<object> values).shape
 * 
 *     if limit is None:             # <<<<<<<<<<<<<<
 *         lim = N
 *     else:
 */
  __pyx_t_8 = (__pyx_v_limit == Py_None);
  if (__pyx_t_8) {

    /* "pandas/src/generated.pyx":1216
 * 
 *     if limit is None:
 *         lim = N             # <<<<<<<<<<<<<<
 *     else:
 *         if limit < 0:
 */
    __pyx_v_lim = __pyx_v_N;
    goto __pyx_L8;
  }
  /*else*/ {

    /* "pandas/src/generated.pyx":1218
 *         lim = N
 *     else:
 *         if limit < 0:             # <<<<<<<<<<<<<<
 *             raise ValueError('Limit must be non-negative')
 *         lim = limit
 */
    __pyx_t_1 = PyObject_RichCompare(__pyx_v_limit, __pyx_int_0, Py_LT); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1218; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_8 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_8 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1218; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    if (__pyx_t_8) {

      /* "pandas/src/generated.pyx":1219
 *     else:
 *         if limit < 0:
 *             raise ValueError('Limit must be non-negative')             # <<<<<<<<<<<<<<
 *         lim = limit
 * 
 */
      __pyx_t_1 = PyObject_Call(__pyx_builtin_ValueError, ((PyObject *)__pyx_k_tuple_35), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1219; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_Raise(__pyx_t_1, 0, 0, 0);
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1219; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      goto __pyx_L9;
    }
    __pyx_L9:;

    /* "pandas/src/generated.pyx":1220
 *         if limit < 0:
 *             raise ValueError('Limit must be non-negative')
 *         lim = limit             # <<<<<<<<<<<<<<
 * 
 *     for j in range(K):
 */
    __pyx_t_9 = __Pyx_PyInt_AsInt(__pyx_v_limit); if (unlikely((__pyx_t_9 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1220; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __pyx_v_lim = __pyx_t_9;
  }
  __pyx_L8:;

  /* "pandas/src/generated.pyx":1222
 *         lim = limit
 * 
 *     for j in range(K):             # <<<<<<<<<<<<<<
 *         fill_count = 0
 *         val = values[j, 0]
 */
  __pyx_t_7 = __pyx_v_K;
  for (__pyx_t_6 = 0; __pyx_t_6 < __pyx_t_7; __pyx_t_6+=1) {
    __pyx_v_j = __pyx_t_6;

    /* "pandas/src/generated.pyx":1223
 * 
 *     for j in range(K):
 *         fill_count = 0             # <<<<<<<<<<<<<<
 *         val = values[j, 0]
 *         for i in range(N):
 */
    __pyx_v_fill_count = 0;

    /* "pandas/src/generated.pyx":1224
 *     for j in range(K):
 *         fill_count = 0
 *         val = values[j, 0]             # <<<<<<<<<<<<<<
 *         for i in range(N):
 *             if mask[j, i]:
 */
    __pyx_t_10 = __pyx_v_j;
    __pyx_t_11 = 0;
    __pyx_v_val = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_bstruct_values.buf, __pyx_t_10, __pyx_bstride_0_values, __pyx_t_11, __pyx_bstride_1_values));

    /* "pandas/src/generated.pyx":1225
 *         fill_count = 0
 *         val = values[j, 0]
 *         for i in range(N):             # <<<<<<<<<<<<<<
 *             if mask[j, i]:
 *                 if fill_count >= lim:
 */
    __pyx_t_12 = __pyx_v_N;
    for (__pyx_t_13 = 0; __pyx_t_13 < __pyx_t_12; __pyx_t_13+=1) {
      __pyx_v_i = __pyx_t_13;

      /* "pandas/src/generated.pyx":1226
 *         val = values[j, 0]
 *         for i in range(N):
 *             if mask[j, i]:             # <<<<<<<<<<<<<<
 *                 if fill_count >= lim:
 *                     continue
 */
      __pyx_t_14 = __pyx_v_j;
      __pyx_t_15 = __pyx_v_i;
      __pyx_t_16 = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_uint8_t *, __pyx_bstruct_mask.buf, __pyx_t_14, __pyx_bstride_0_mask, __pyx_t_15, __pyx_bstride_1_mask));
      if (__pyx_t_16) {

        /* "pandas/src/generated.pyx":1227
 *         for i in range(N):
 *             if mask[j, i]:
 *                 if fill_count >= lim:             # <<<<<<<<<<<<<<
 *                     continue
 *                 fill_count += 1
 */
        __pyx_t_8 = (__pyx_v_fill_count >= __pyx_v_lim);
        if (__pyx_t_8) {

          /* "pandas/src/generated.pyx":1228
 *             if mask[j, i]:
 *                 if fill_count >= lim:
 *                     continue             # <<<<<<<<<<<<<<
 *                 fill_count += 1
 *                 values[j, i] = val
 */
          goto __pyx_L12_continue;
          goto __pyx_L15;
        }
        __pyx_L15:;

        /* "pandas/src/generated.pyx":1229
 *                 if fill_count >= lim:
 *                     continue
 *                 fill_count += 1             # <<<<<<<<<<<<<<
 *                 values[j, i] = val
 *             else:
 */
        __pyx_v_fill_count = (__pyx_v_fill_count + 1);

        /* "pandas/src/generated.pyx":1230
 *                     continue
 *                 fill_count += 1
 *                 values[j, i] = val             # <<<<<<<<<<<<<<
 *             else:
 *                 fill_count = 0
 */
        __pyx_t_17 = __pyx_v_j;
        __pyx_t_18 = __pyx_v_i;
        *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_bstruct_values.buf, __pyx_t_17, __pyx_bstride_0_values, __pyx_t_18, __pyx_bstride_1_values) = __pyx_v_val;
        goto __pyx_L14;
      }
      /*else*/ {

        /* "pandas/src/generated.pyx":1232
 *                 values[j, i] = val
 *             else:
 *                 fill_count = 0             # <<<<<<<<<<<<<<
 *                 val = values[j, i]
 * @cython.boundscheck(False)
 */
        __pyx_v_fill_count = 0;

        /* "pandas/src/generated.pyx":1233
 *             else:
 *                 fill_count = 0
 *                 val = values[j, i]             # <<<<<<<<<<<<<<
 * @cython.boundscheck(False)
 * @cython.wraparound(False)
 */
        __pyx_t_19 = __pyx_v_j;
        __pyx_t_20 = __pyx_v_i;
        __pyx_v_val = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_bstruct_values.buf, __pyx_t_19, __pyx_bstride_0_values, __pyx_t_20, __pyx_bstride_1_values));
      }
      __pyx_L14:;
      __pyx_L12_continue:;
    }
  }

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  { PyObject *__pyx_type, *__pyx_value, *__pyx_tb;
    __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);
    __Pyx_SafeReleaseBuffer(&__pyx_bstruct_mask);
    __Pyx_SafeReleaseBuffer(&__pyx_bstruct_values);
  __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);}
  __Pyx_AddTraceback("pandas._algos.pad_2d_inplace_int64", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  goto __pyx_L2;
  __pyx_L0:;
  __Pyx_SafeReleaseBuffer(&__pyx_bstruct_mask);
  __Pyx_SafeReleaseBuffer(&__pyx_bstruct_values);
  __pyx_L2:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "pandas/src/generated.pyx":1236
 * @cython.boundscheck(False)
 * @cython.wraparound(False)
 * def pad_2d_inplace_bool(ndarray[uint8_t, ndim=2] values,             # <<<<<<<<<<<<<<
 *                             ndarray[uint8_t, ndim=2] mask,
 *                             limit=None):
 */

static PyObject *__pyx_pf_6pandas_6_algos_34pad_2d_inplace_bool(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_6pandas_6_algos_34pad_2d_inplace_bool = {__Pyx_NAMESTR("pad_2d_inplace_bool"), (PyCFunction)__pyx_pf_6pandas_6_algos_34pad_2d_inplace_bool, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(0)};
static PyObject *__pyx_pf_6pandas_6_algos_34pad_2d_inplace_bool(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyArrayObject *__pyx_v_values = 0;
  PyArrayObject *__pyx_v_mask = 0;
  PyObject *__pyx_v_limit = 0;
  Py_ssize_t __pyx_v_i;
  Py_ssize_t __pyx_v_j;
  Py_ssize_t __pyx_v_N;
  Py_ssize_t __pyx_v_K;
  __pyx_t_5numpy_uint8_t __pyx_v_val;
  int __pyx_v_lim;
  int __pyx_v_fill_count;
  Py_buffer __pyx_bstruct_mask;
  Py_ssize_t __pyx_bstride_0_mask = 0;
  Py_ssize_t __pyx_bstride_1_mask = 0;
  Py_ssize_t __pyx_bshape_0_mask = 0;
  Py_ssize_t __pyx_bshape_1_mask = 0;
  Py_buffer __pyx_bstruct_values;
  Py_ssize_t __pyx_bstride_0_values = 0;
  Py_ssize_t __pyx_bstride_1_values = 0;
  Py_ssize_t __pyx_bshape_0_values = 0;
  Py_ssize_t __pyx_bshape_1_values = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *(*__pyx_t_5)(PyObject *);
  Py_ssize_t __pyx_t_6;
  Py_ssize_t __pyx_t_7;
  int __pyx_t_8;
  int __pyx_t_9;
  Py_ssize_t __pyx_t_10;
  long __pyx_t_11;
  Py_ssize_t __pyx_t_12;
  Py_ssize_t __pyx_t_13;
  Py_ssize_t __pyx_t_14;
  Py_ssize_t __pyx_t_15;
  __pyx_t_5numpy_uint8_t __pyx_t_16;
  Py_ssize_t __pyx_t_17;
  Py_ssize_t __pyx_t_18;
  Py_ssize_t __pyx_t_19;
  Py_ssize_t __pyx_t_20;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__values,&__pyx_n_s__mask,&__pyx_n_s__limit,0};
  __Pyx_RefNannySetupContext("pad_2d_inplace_bool");
  __pyx_self = __pyx_self;
  {
    PyObject* values[3] = {0,0,0};

    /* "pandas/src/generated.pyx":1238
 * def pad_2d_inplace_bool(ndarray[uint8_t, ndim=2] values,
 *                             ndarray[uint8_t, ndim=2] mask,
 *                             limit=None):             # <<<<<<<<<<<<<<
 *     cdef Py_ssize_t i, j, N, K
 *     cdef uint8_t val
 */
    values[2] = ((PyObject *)Py_None);
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  0:
        values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__values);
        if (likely(values[0])) kw_args--;
        else goto __pyx_L5_argtuple_error;
        case  1:
        values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__mask);
        if (likely(values[1])) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("pad_2d_inplace_bool", 0, 2, 3, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1236; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
        }
        case  2:
        if (kw_args > 0) {
          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__limit);
          if (value) { values[2] = value; kw_args--; }
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "pad_2d_inplace_bool") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1236; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
    } else {
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_values = ((PyArrayObject *)values[0]);
    __pyx_v_mask = ((PyArrayObject *)values[1]);
    __pyx_v_limit = values[2];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("pad_2d_inplace_bool", 0, 2, 3, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1236; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("pandas._algos.pad_2d_inplace_bool", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_bstruct_values.buf = NULL;
  __pyx_bstruct_mask.buf = NULL;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_values), __pyx_ptype_5numpy_ndarray, 1, "values", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1236; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_mask), __pyx_ptype_5numpy_ndarray, 1, "mask", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1237; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_values, (PyObject*)__pyx_v_values, &__Pyx_TypeInfo_nn___pyx_t_5numpy_uint8_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 2, 0, __pyx_stack) == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1236; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  }
  __pyx_bstride_0_values = __pyx_bstruct_values.strides[0]; __pyx_bstride_1_values = __pyx_bstruct_values.strides[1];
  __pyx_bshape_0_values = __pyx_bstruct_values.shape[0]; __pyx_bshape_1_values = __pyx_bstruct_values.shape[1];
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_mask, (PyObject*)__pyx_v_mask, &__Pyx_TypeInfo_nn___pyx_t_5numpy_uint8_t, PyBUF_FORMAT| PyBUF_STRIDES, 2, 0, __pyx_stack) == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1236; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  }
  __pyx_bstride_0_mask = __pyx_bstruct_mask.strides[0]; __pyx_bstride_1_mask = __pyx_bstruct_mask.strides[1];
  __pyx_bshape_0_mask = __pyx_bstruct_mask.shape[0]; __pyx_bshape_1_mask = __pyx_bstruct_mask.shape[1];

  /* "pandas/src/generated.pyx":1241
 *     cdef Py_ssize_t i, j, N, K
 *     cdef uint8_t val
 *     cdef int lim, fill_count = 0             # <<<<<<<<<<<<<<
 * 
 *     K, N = (<object> values).shape
 */
  __pyx_v_fill_count = 0;

  /* "pandas/src/generated.pyx":1243
 *     cdef int lim, fill_count = 0
 * 
 *     K, N = (<object> values).shape             # <<<<<<<<<<<<<<
 * 
 *     if limit is None:
 */
  __pyx_t_1 = PyObject_GetAttr(((PyObject *)__pyx_v_values), __pyx_n_s__shape); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1243; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  if ((likely(PyTuple_CheckExact(__pyx_t_1))) || (PyList_CheckExact(__pyx_t_1))) {
    PyObject* sequence = __pyx_t_1;
    if (likely(PyTuple_CheckExact(sequence))) {
      if (unlikely(PyTuple_GET_SIZE(sequence) != 2)) {
        if (PyTuple_GET_SIZE(sequence) > 2) __Pyx_RaiseTooManyValuesError(2);
        else __Pyx_RaiseNeedMoreValuesError(PyTuple_GET_SIZE(sequence));
        {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1243; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      }
      __pyx_t_2 = PyTuple_GET_ITEM(sequence, 0); 
      __pyx_t_3 = PyTuple_GET_ITEM(sequence, 1); 
    } else {
      if (unlikely(PyList_GET_SIZE(sequence) != 2)) {
        if (PyList_GET_SIZE(sequence) > 2) __Pyx_RaiseTooManyValuesError(2);
        else __Pyx_RaiseNeedMoreValuesError(PyList_GET_SIZE(sequence));
        {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1243; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      }
      __pyx_t_2 = PyList_GET_ITEM(sequence, 0); 
      __pyx_t_3 = PyList_GET_ITEM(sequence, 1); 
    }
    __Pyx_INCREF(__pyx_t_2);
    __Pyx_INCREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  } else {
    Py_ssize_t index = -1;
    __pyx_t_4 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1243; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __pyx_t_5 = Py_TYPE(__pyx_t_4)->tp_iternext;
    index = 0; __pyx_t_2 = __pyx_t_5(__pyx_t_4); if (unlikely(!__pyx_t_2)) goto __pyx_L6_unpacking_failed;
    __Pyx_GOTREF(__pyx_t_2);
    index = 1; __pyx_t_3 = __pyx_t_5(__pyx_t_4); if (unlikely(!__pyx_t_3)) goto __pyx_L6_unpacking_failed;
    __Pyx_GOTREF(__pyx_t_3);
    if (__Pyx_IternextUnpackEndCheck(__pyx_t_5(__pyx_t_4), 2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1243; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    goto __pyx_L7_unpacking_done;
    __pyx_L6_unpacking_failed:;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    if (PyErr_Occurred() && PyErr_ExceptionMatches(PyExc_StopIteration)) PyErr_Clear();
    if (!PyErr_Occurred()) __Pyx_RaiseNeedMoreValuesError(index);
    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1243; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __pyx_L7_unpacking_done:;
  }
  __pyx_t_6 = __Pyx_PyIndex_AsSsize_t(__pyx_t_2); if (unlikely((__pyx_t_6 == (Py_ssize_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1243; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_7 = __Pyx_PyIndex_AsSsize_t(__pyx_t_3); if (unlikely((__pyx_t_7 == (Py_ssize_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1243; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_v_K = __pyx_t_6;
  __pyx_v_N = __pyx_t_7;

  /* "pandas/src/generated.pyx":1245
 *     K, N = (<object> values).shape
 * 
 *     if limit is None:             # <<<<<<<<<<<<<<
 *         lim = N
 *     else:
 */
  __pyx_t_8 = (__pyx_v_limit == Py_None);
  if (__pyx_t_8) {

    /* "pandas/src/generated.pyx":1246
 * 
 *     if limit is None:
 *         lim = N             # <<<<<<<<<<<<<<
 *     else:
 *         if limit < 0:
 */
    __pyx_v_lim = __pyx_v_N;
    goto __pyx_L8;
  }
  /*else*/ {

    /* "pandas/src/generated.pyx":1248
 *         lim = N
 *     else:
 *         if limit < 0:             # <<<<<<<<<<<<<<
 *             raise ValueError('Limit must be non-negative')
 *         lim = limit
 */
    __pyx_t_1 = PyObject_RichCompare(__pyx_v_limit, __pyx_int_0, Py_LT); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1248; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_8 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_8 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1248; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    if (__pyx_t_8) {

      /* "pandas/src/generated.pyx":1249
 *     else:
 *         if limit < 0:
 *             raise ValueError('Limit must be non-negative')             # <<<<<<<<<<<<<<
 *         lim = limit
 * 
 */
      __pyx_t_1 = PyObject_Call(__pyx_builtin_ValueError, ((PyObject *)__pyx_k_tuple_36), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1249; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_Raise(__pyx_t_1, 0, 0, 0);
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1249; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      goto __pyx_L9;
    }
    __pyx_L9:;

    /* "pandas/src/generated.pyx":1250
 *         if limit < 0:
 *             raise ValueError('Limit must be non-negative')
 *         lim = limit             # <<<<<<<<<<<<<<
 * 
 *     for j in range(K):
 */
    __pyx_t_9 = __Pyx_PyInt_AsInt(__pyx_v_limit); if (unlikely((__pyx_t_9 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1250; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __pyx_v_lim = __pyx_t_9;
  }
  __pyx_L8:;

  /* "pandas/src/generated.pyx":1252
 *         lim = limit
 * 
 *     for j in range(K):             # <<<<<<<<<<<<<<
 *         fill_count = 0
 *         val = values[j, 0]
 */
  __pyx_t_7 = __pyx_v_K;
  for (__pyx_t_6 = 0; __pyx_t_6 < __pyx_t_7; __pyx_t_6+=1) {
    __pyx_v_j = __pyx_t_6;

    /* "pandas/src/generated.pyx":1253
 * 
 *     for j in range(K):
 *         fill_count = 0             # <<<<<<<<<<<<<<
 *         val = values[j, 0]
 *         for i in range(N):
 */
    __pyx_v_fill_count = 0;

    /* "pandas/src/generated.pyx":1254
 *     for j in range(K):
 *         fill_count = 0
 *         val = values[j, 0]             # <<<<<<<<<<<<<<
 *         for i in range(N):
 *             if mask[j, i]:
 */
    __pyx_t_10 = __pyx_v_j;
    __pyx_t_11 = 0;
    __pyx_v_val = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_uint8_t *, __pyx_bstruct_values.buf, __pyx_t_10, __pyx_bstride_0_values, __pyx_t_11, __pyx_bstride_1_values));

    /* "pandas/src/generated.pyx":1255
 *         fill_count = 0
 *         val = values[j, 0]
 *         for i in range(N):             # <<<<<<<<<<<<<<
 *             if mask[j, i]:
 *                 if fill_count >= lim:
 */
    __pyx_t_12 = __pyx_v_N;
    for (__pyx_t_13 = 0; __pyx_t_13 < __pyx_t_12; __pyx_t_13+=1) {
      __pyx_v_i = __pyx_t_13;

      /* "pandas/src/generated.pyx":1256
 *         val = values[j, 0]
 *         for i in range(N):
 *             if mask[j, i]:             # <<<<<<<<<<<<<<
 *                 if fill_count >= lim:
 *                     continue
 */
      __pyx_t_14 = __pyx_v_j;
      __pyx_t_15 = __pyx_v_i;
      __pyx_t_16 = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_uint8_t *, __pyx_bstruct_mask.buf, __pyx_t_14, __pyx_bstride_0_mask, __pyx_t_15, __pyx_bstride_1_mask));
      if (__pyx_t_16) {

        /* "pandas/src/generated.pyx":1257
 *         for i in range(N):
 *             if mask[j, i]:
 *                 if fill_count >= lim:             # <<<<<<<<<<<<<<
 *                     continue
 *                 fill_count += 1
 */
        __pyx_t_8 = (__pyx_v_fill_count >= __pyx_v_lim);
        if (__pyx_t_8) {

          /* "pandas/src/generated.pyx":1258
 *             if mask[j, i]:
 *                 if fill_count >= lim:
 *                     continue             # <<<<<<<<<<<<<<
 *                 fill_count += 1
 *                 values[j, i] = val
 */
          goto __pyx_L12_continue;
          goto __pyx_L15;
        }
        __pyx_L15:;

        /* "pandas/src/generated.pyx":1259
 *                 if fill_count >= lim:
 *                     continue
 *                 fill_count += 1             # <<<<<<<<<<<<<<
 *                 values[j, i] = val
 *             else:
 */
        __pyx_v_fill_count = (__pyx_v_fill_count + 1);

        /* "pandas/src/generated.pyx":1260
 *                     continue
 *                 fill_count += 1
 *                 values[j, i] = val             # <<<<<<<<<<<<<<
 *             else:
 *                 fill_count = 0
 */
        __pyx_t_17 = __pyx_v_j;
        __pyx_t_18 = __pyx_v_i;
        *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_uint8_t *, __pyx_bstruct_values.buf, __pyx_t_17, __pyx_bstride_0_values, __pyx_t_18, __pyx_bstride_1_values) = __pyx_v_val;
        goto __pyx_L14;
      }
      /*else*/ {

        /* "pandas/src/generated.pyx":1262
 *                 values[j, i] = val
 *             else:
 *                 fill_count = 0             # <<<<<<<<<<<<<<
 *                 val = values[j, i]
 * 
 */
        __pyx_v_fill_count = 0;

        /* "pandas/src/generated.pyx":1263
 *             else:
 *                 fill_count = 0
 *                 val = values[j, i]             # <<<<<<<<<<<<<<
 * 
 * @cython.boundscheck(False)
 */
        __pyx_t_19 = __pyx_v_j;
        __pyx_t_20 = __pyx_v_i;
        __pyx_v_val = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_uint8_t *, __pyx_bstruct_values.buf, __pyx_t_19, __pyx_bstride_0_values, __pyx_t_20, __pyx_bstride_1_values));
      }
      __pyx_L14:;
      __pyx_L12_continue:;
    }
  }

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  { PyObject *__pyx_type, *__pyx_value, *__pyx_tb;
    __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);
    __Pyx_SafeReleaseBuffer(&__pyx_bstruct_mask);
    __Pyx_SafeReleaseBuffer(&__pyx_bstruct_values);
  __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);}
  __Pyx_AddTraceback("pandas._algos.pad_2d_inplace_bool", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  goto __pyx_L2;
  __pyx_L0:;
  __Pyx_SafeReleaseBuffer(&__pyx_bstruct_mask);
  __Pyx_SafeReleaseBuffer(&__pyx_bstruct_values);
  __pyx_L2:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "pandas/src/generated.pyx":1267
 * @cython.boundscheck(False)
 * @cython.wraparound(False)
 * def backfill_2d_inplace_float64(ndarray[float64_t, ndim=2] values,             # <<<<<<<<<<<<<<
 *                                  ndarray[uint8_t, ndim=2] mask,
 *                                  limit=None):
 */

static PyObject *__pyx_pf_6pandas_6_algos_35backfill_2d_inplace_float64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_6pandas_6_algos_35backfill_2d_inplace_float64 = {__Pyx_NAMESTR("backfill_2d_inplace_float64"), (PyCFunction)__pyx_pf_6pandas_6_algos_35backfill_2d_inplace_float64, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(0)};
static PyObject *__pyx_pf_6pandas_6_algos_35backfill_2d_inplace_float64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyArrayObject *__pyx_v_values = 0;
  PyArrayObject *__pyx_v_mask = 0;
  PyObject *__pyx_v_limit = 0;
  Py_ssize_t __pyx_v_i;
  Py_ssize_t __pyx_v_j;
  Py_ssize_t __pyx_v_N;
  Py_ssize_t __pyx_v_K;
  __pyx_t_5numpy_float64_t __pyx_v_val;
  int __pyx_v_lim;
  int __pyx_v_fill_count;
  Py_buffer __pyx_bstruct_mask;
  Py_ssize_t __pyx_bstride_0_mask = 0;
  Py_ssize_t __pyx_bstride_1_mask = 0;
  Py_ssize_t __pyx_bshape_0_mask = 0;
  Py_ssize_t __pyx_bshape_1_mask = 0;
  Py_buffer __pyx_bstruct_values;
  Py_ssize_t __pyx_bstride_0_values = 0;
  Py_ssize_t __pyx_bstride_1_values = 0;
  Py_ssize_t __pyx_bshape_0_values = 0;
  Py_ssize_t __pyx_bshape_1_values = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *(*__pyx_t_5)(PyObject *);
  Py_ssize_t __pyx_t_6;
  Py_ssize_t __pyx_t_7;
  int __pyx_t_8;
  int __pyx_t_9;
  Py_ssize_t __pyx_t_10;
  Py_ssize_t __pyx_t_11;
  Py_ssize_t __pyx_t_12;
  Py_ssize_t __pyx_t_13;
  Py_ssize_t __pyx_t_14;
  __pyx_t_5numpy_uint8_t __pyx_t_15;
  Py_ssize_t __pyx_t_16;
  Py_ssize_t __pyx_t_17;
  Py_ssize_t __pyx_t_18;
  Py_ssize_t __pyx_t_19;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__values,&__pyx_n_s__mask,&__pyx_n_s__limit,0};
  __Pyx_RefNannySetupContext("backfill_2d_inplace_float64");
  __pyx_self = __pyx_self;
  {
    PyObject* values[3] = {0,0,0};

    /* "pandas/src/generated.pyx":1269
 * def backfill_2d_inplace_float64(ndarray[float64_t, ndim=2] values,
 *                                  ndarray[uint8_t, ndim=2] mask,
 *                                  limit=None):             # <<<<<<<<<<<<<<
 *     cdef Py_ssize_t i, j, N, K
 *     cdef float64_t val
 */
    values[2] = ((PyObject *)Py_None);
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  0:
        values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__values);
        if (likely(values[0])) kw_args--;
        else goto __pyx_L5_argtuple_error;
        case  1:
        values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__mask);
        if (likely(values[1])) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("backfill_2d_inplace_float64", 0, 2, 3, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1267; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
        }
        case  2:
        if (kw_args > 0) {
          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__limit);
          if (value) { values[2] = value; kw_args--; }
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "backfill_2d_inplace_float64") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1267; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
    } else {
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_values = ((PyArrayObject *)values[0]);
    __pyx_v_mask = ((PyArrayObject *)values[1]);
    __pyx_v_limit = values[2];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("backfill_2d_inplace_float64", 0, 2, 3, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1267; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("pandas._algos.backfill_2d_inplace_float64", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_bstruct_values.buf = NULL;
  __pyx_bstruct_mask.buf = NULL;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_values), __pyx_ptype_5numpy_ndarray, 1, "values", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1267; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_mask), __pyx_ptype_5numpy_ndarray, 1, "mask", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1268; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_values, (PyObject*)__pyx_v_values, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 2, 0, __pyx_stack) == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1267; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  }
  __pyx_bstride_0_values = __pyx_bstruct_values.strides[0]; __pyx_bstride_1_values = __pyx_bstruct_values.strides[1];
  __pyx_bshape_0_values = __pyx_bstruct_values.shape[0]; __pyx_bshape_1_values = __pyx_bstruct_values.shape[1];
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_mask, (PyObject*)__pyx_v_mask, &__Pyx_TypeInfo_nn___pyx_t_5numpy_uint8_t, PyBUF_FORMAT| PyBUF_STRIDES, 2, 0, __pyx_stack) == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1267; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  }
  __pyx_bstride_0_mask = __pyx_bstruct_mask.strides[0]; __pyx_bstride_1_mask = __pyx_bstruct_mask.strides[1];
  __pyx_bshape_0_mask = __pyx_bstruct_mask.shape[0]; __pyx_bshape_1_mask = __pyx_bstruct_mask.shape[1];

  /* "pandas/src/generated.pyx":1272
 *     cdef Py_ssize_t i, j, N, K
 *     cdef float64_t val
 *     cdef int lim, fill_count = 0             # <<<<<<<<<<<<<<
 * 
 *     K, N = (<object> values).shape
 */
  __pyx_v_fill_count = 0;

  /* "pandas/src/generated.pyx":1274
 *     cdef int lim, fill_count = 0
 * 
 *     K, N = (<object> values).shape             # <<<<<<<<<<<<<<
 * 
 *     if limit is None:
 */
  __pyx_t_1 = PyObject_GetAttr(((PyObject *)__pyx_v_values), __pyx_n_s__shape); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1274; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  if ((likely(PyTuple_CheckExact(__pyx_t_1))) || (PyList_CheckExact(__pyx_t_1))) {
    PyObject* sequence = __pyx_t_1;
    if (likely(PyTuple_CheckExact(sequence))) {
      if (unlikely(PyTuple_GET_SIZE(sequence) != 2)) {
        if (PyTuple_GET_SIZE(sequence) > 2) __Pyx_RaiseTooManyValuesError(2);
        else __Pyx_RaiseNeedMoreValuesError(PyTuple_GET_SIZE(sequence));
        {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1274; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      }
      __pyx_t_2 = PyTuple_GET_ITEM(sequence, 0); 
      __pyx_t_3 = PyTuple_GET_ITEM(sequence, 1); 
    } else {
      if (unlikely(PyList_GET_SIZE(sequence) != 2)) {
        if (PyList_GET_SIZE(sequence) > 2) __Pyx_RaiseTooManyValuesError(2);
        else __Pyx_RaiseNeedMoreValuesError(PyList_GET_SIZE(sequence));
        {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1274; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      }
      __pyx_t_2 = PyList_GET_ITEM(sequence, 0); 
      __pyx_t_3 = PyList_GET_ITEM(sequence, 1); 
    }
    __Pyx_INCREF(__pyx_t_2);
    __Pyx_INCREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  } else {
    Py_ssize_t index = -1;
    __pyx_t_4 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1274; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __pyx_t_5 = Py_TYPE(__pyx_t_4)->tp_iternext;
    index = 0; __pyx_t_2 = __pyx_t_5(__pyx_t_4); if (unlikely(!__pyx_t_2)) goto __pyx_L6_unpacking_failed;
    __Pyx_GOTREF(__pyx_t_2);
    index = 1; __pyx_t_3 = __pyx_t_5(__pyx_t_4); if (unlikely(!__pyx_t_3)) goto __pyx_L6_unpacking_failed;
    __Pyx_GOTREF(__pyx_t_3);
    if (__Pyx_IternextUnpackEndCheck(__pyx_t_5(__pyx_t_4), 2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1274; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    goto __pyx_L7_unpacking_done;
    __pyx_L6_unpacking_failed:;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    if (PyErr_Occurred() && PyErr_ExceptionMatches(PyExc_StopIteration)) PyErr_Clear();
    if (!PyErr_Occurred()) __Pyx_RaiseNeedMoreValuesError(index);
    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1274; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __pyx_L7_unpacking_done:;
  }
  __pyx_t_6 = __Pyx_PyIndex_AsSsize_t(__pyx_t_2); if (unlikely((__pyx_t_6 == (Py_ssize_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1274; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_7 = __Pyx_PyIndex_AsSsize_t(__pyx_t_3); if (unlikely((__pyx_t_7 == (Py_ssize_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1274; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_v_K = __pyx_t_6;
  __pyx_v_N = __pyx_t_7;

  /* "pandas/src/generated.pyx":1276
 *     K, N = (<object> values).shape
 * 
 *     if limit is None:             # <<<<<<<<<<<<<<
 *         lim = N
 *     else:
 */
  __pyx_t_8 = (__pyx_v_limit == Py_None);
  if (__pyx_t_8) {

    /* "pandas/src/generated.pyx":1277
 * 
 *     if limit is None:
 *         lim = N             # <<<<<<<<<<<<<<
 *     else:
 *         if limit < 0:
 */
    __pyx_v_lim = __pyx_v_N;
    goto __pyx_L8;
  }
  /*else*/ {

    /* "pandas/src/generated.pyx":1279
 *         lim = N
 *     else:
 *         if limit < 0:             # <<<<<<<<<<<<<<
 *             raise ValueError('Limit must be non-negative')
 *         lim = limit
 */
    __pyx_t_1 = PyObject_RichCompare(__pyx_v_limit, __pyx_int_0, Py_LT); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1279; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_8 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_8 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1279; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    if (__pyx_t_8) {

      /* "pandas/src/generated.pyx":1280
 *     else:
 *         if limit < 0:
 *             raise ValueError('Limit must be non-negative')             # <<<<<<<<<<<<<<
 *         lim = limit
 * 
 */
      __pyx_t_1 = PyObject_Call(__pyx_builtin_ValueError, ((PyObject *)__pyx_k_tuple_37), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1280; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_Raise(__pyx_t_1, 0, 0, 0);
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1280; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      goto __pyx_L9;
    }
    __pyx_L9:;

    /* "pandas/src/generated.pyx":1281
 *         if limit < 0:
 *             raise ValueError('Limit must be non-negative')
 *         lim = limit             # <<<<<<<<<<<<<<
 * 
 *     for j in range(K):
 */
    __pyx_t_9 = __Pyx_PyInt_AsInt(__pyx_v_limit); if (unlikely((__pyx_t_9 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1281; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __pyx_v_lim = __pyx_t_9;
  }
  __pyx_L8:;

  /* "pandas/src/generated.pyx":1283
 *         lim = limit
 * 
 *     for j in range(K):             # <<<<<<<<<<<<<<
 *         fill_count = 0
 *         val = values[j, N - 1]
 */
  __pyx_t_7 = __pyx_v_K;
  for (__pyx_t_6 = 0; __pyx_t_6 < __pyx_t_7; __pyx_t_6+=1) {
    __pyx_v_j = __pyx_t_6;

    /* "pandas/src/generated.pyx":1284
 * 
 *     for j in range(K):
 *         fill_count = 0             # <<<<<<<<<<<<<<
 *         val = values[j, N - 1]
 *         for i in range(N - 1, -1 , -1):
 */
    __pyx_v_fill_count = 0;

    /* "pandas/src/generated.pyx":1285
 *     for j in range(K):
 *         fill_count = 0
 *         val = values[j, N - 1]             # <<<<<<<<<<<<<<
 *         for i in range(N - 1, -1 , -1):
 *             if mask[j, i]:
 */
    __pyx_t_10 = __pyx_v_j;
    __pyx_t_11 = (__pyx_v_N - 1);
    __pyx_v_val = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_values.buf, __pyx_t_10, __pyx_bstride_0_values, __pyx_t_11, __pyx_bstride_1_values));

    /* "pandas/src/generated.pyx":1286
 *         fill_count = 0
 *         val = values[j, N - 1]
 *         for i in range(N - 1, -1 , -1):             # <<<<<<<<<<<<<<
 *             if mask[j, i]:
 *                 if fill_count >= lim:
 */
    for (__pyx_t_12 = (__pyx_v_N - 1); __pyx_t_12 > -1; __pyx_t_12-=1) {
      __pyx_v_i = __pyx_t_12;

      /* "pandas/src/generated.pyx":1287
 *         val = values[j, N - 1]
 *         for i in range(N - 1, -1 , -1):
 *             if mask[j, i]:             # <<<<<<<<<<<<<<
 *                 if fill_count >= lim:
 *                     continue
 */
      __pyx_t_13 = __pyx_v_j;
      __pyx_t_14 = __pyx_v_i;
      __pyx_t_15 = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_uint8_t *, __pyx_bstruct_mask.buf, __pyx_t_13, __pyx_bstride_0_mask, __pyx_t_14, __pyx_bstride_1_mask));
      if (__pyx_t_15) {

        /* "pandas/src/generated.pyx":1288
 *         for i in range(N - 1, -1 , -1):
 *             if mask[j, i]:
 *                 if fill_count >= lim:             # <<<<<<<<<<<<<<
 *                     continue
 *                 fill_count += 1
 */
        __pyx_t_8 = (__pyx_v_fill_count >= __pyx_v_lim);
        if (__pyx_t_8) {

          /* "pandas/src/generated.pyx":1289
 *             if mask[j, i]:
 *                 if fill_count >= lim:
 *                     continue             # <<<<<<<<<<<<<<
 *                 fill_count += 1
 *                 values[j, i] = val
 */
          goto __pyx_L12_continue;
          goto __pyx_L15;
        }
        __pyx_L15:;

        /* "pandas/src/generated.pyx":1290
 *                 if fill_count >= lim:
 *                     continue
 *                 fill_count += 1             # <<<<<<<<<<<<<<
 *                 values[j, i] = val
 *             else:
 */
        __pyx_v_fill_count = (__pyx_v_fill_count + 1);

        /* "pandas/src/generated.pyx":1291
 *                     continue
 *                 fill_count += 1
 *                 values[j, i] = val             # <<<<<<<<<<<<<<
 *             else:
 *                 fill_count = 0
 */
        __pyx_t_16 = __pyx_v_j;
        __pyx_t_17 = __pyx_v_i;
        *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_values.buf, __pyx_t_16, __pyx_bstride_0_values, __pyx_t_17, __pyx_bstride_1_values) = __pyx_v_val;
        goto __pyx_L14;
      }
      /*else*/ {

        /* "pandas/src/generated.pyx":1293
 *                 values[j, i] = val
 *             else:
 *                 fill_count = 0             # <<<<<<<<<<<<<<
 *                 val = values[j, i]
 * @cython.boundscheck(False)
 */
        __pyx_v_fill_count = 0;

        /* "pandas/src/generated.pyx":1294
 *             else:
 *                 fill_count = 0
 *                 val = values[j, i]             # <<<<<<<<<<<<<<
 * @cython.boundscheck(False)
 * @cython.wraparound(False)
 */
        __pyx_t_18 = __pyx_v_j;
        __pyx_t_19 = __pyx_v_i;
        __pyx_v_val = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_values.buf, __pyx_t_18, __pyx_bstride_0_values, __pyx_t_19, __pyx_bstride_1_values));
      }
      __pyx_L14:;
      __pyx_L12_continue:;
    }
  }

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  { PyObject *__pyx_type, *__pyx_value, *__pyx_tb;
    __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);
    __Pyx_SafeReleaseBuffer(&__pyx_bstruct_mask);
    __Pyx_SafeReleaseBuffer(&__pyx_bstruct_values);
  __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);}
  __Pyx_AddTraceback("pandas._algos.backfill_2d_inplace_float64", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  goto __pyx_L2;
  __pyx_L0:;
  __Pyx_SafeReleaseBuffer(&__pyx_bstruct_mask);
  __Pyx_SafeReleaseBuffer(&__pyx_bstruct_values);
  __pyx_L2:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "pandas/src/generated.pyx":1297
 * @cython.boundscheck(False)
 * @cython.wraparound(False)
 * def backfill_2d_inplace_object(ndarray[object, ndim=2] values,             # <<<<<<<<<<<<<<
 *                                  ndarray[uint8_t, ndim=2] mask,
 *                                  limit=None):
 */

static PyObject *__pyx_pf_6pandas_6_algos_36backfill_2d_inplace_object(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_6pandas_6_algos_36backfill_2d_inplace_object = {__Pyx_NAMESTR("backfill_2d_inplace_object"), (PyCFunction)__pyx_pf_6pandas_6_algos_36backfill_2d_inplace_object, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(0)};
static PyObject *__pyx_pf_6pandas_6_algos_36backfill_2d_inplace_object(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyArrayObject *__pyx_v_values = 0;
  PyArrayObject *__pyx_v_mask = 0;
  PyObject *__pyx_v_limit = 0;
  Py_ssize_t __pyx_v_i;
  Py_ssize_t __pyx_v_j;
  Py_ssize_t __pyx_v_N;
  Py_ssize_t __pyx_v_K;
  PyObject *__pyx_v_val = 0;
  int __pyx_v_lim;
  int __pyx_v_fill_count;
  Py_buffer __pyx_bstruct_mask;
  Py_ssize_t __pyx_bstride_0_mask = 0;
  Py_ssize_t __pyx_bstride_1_mask = 0;
  Py_ssize_t __pyx_bshape_0_mask = 0;
  Py_ssize_t __pyx_bshape_1_mask = 0;
  Py_buffer __pyx_bstruct_values;
  Py_ssize_t __pyx_bstride_0_values = 0;
  Py_ssize_t __pyx_bstride_1_values = 0;
  Py_ssize_t __pyx_bshape_0_values = 0;
  Py_ssize_t __pyx_bshape_1_values = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *(*__pyx_t_5)(PyObject *);
  Py_ssize_t __pyx_t_6;
  Py_ssize_t __pyx_t_7;
  int __pyx_t_8;
  int __pyx_t_9;
  Py_ssize_t __pyx_t_10;
  Py_ssize_t __pyx_t_11;
  Py_ssize_t __pyx_t_12;
  Py_ssize_t __pyx_t_13;
  Py_ssize_t __pyx_t_14;
  __pyx_t_5numpy_uint8_t __pyx_t_15;
  Py_ssize_t __pyx_t_16;
  Py_ssize_t __pyx_t_17;
  PyObject **__pyx_t_18;
  Py_ssize_t __pyx_t_19;
  Py_ssize_t __pyx_t_20;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__values,&__pyx_n_s__mask,&__pyx_n_s__limit,0};
  __Pyx_RefNannySetupContext("backfill_2d_inplace_object");
  __pyx_self = __pyx_self;
  {
    PyObject* values[3] = {0,0,0};

    /* "pandas/src/generated.pyx":1299
 * def backfill_2d_inplace_object(ndarray[object, ndim=2] values,
 *                                  ndarray[uint8_t, ndim=2] mask,
 *                                  limit=None):             # <<<<<<<<<<<<<<
 *     cdef Py_ssize_t i, j, N, K
 *     cdef object val
 */
    values[2] = ((PyObject *)Py_None);
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  0:
        values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__values);
        if (likely(values[0])) kw_args--;
        else goto __pyx_L5_argtuple_error;
        case  1:
        values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__mask);
        if (likely(values[1])) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("backfill_2d_inplace_object", 0, 2, 3, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1297; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
        }
        case  2:
        if (kw_args > 0) {
          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__limit);
          if (value) { values[2] = value; kw_args--; }
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "backfill_2d_inplace_object") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1297; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
    } else {
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_values = ((PyArrayObject *)values[0]);
    __pyx_v_mask = ((PyArrayObject *)values[1]);
    __pyx_v_limit = values[2];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("backfill_2d_inplace_object", 0, 2, 3, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1297; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("pandas._algos.backfill_2d_inplace_object", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_bstruct_values.buf = NULL;
  __pyx_bstruct_mask.buf = NULL;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_values), __pyx_ptype_5numpy_ndarray, 1, "values", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1297; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_mask), __pyx_ptype_5numpy_ndarray, 1, "mask", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1298; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_values, (PyObject*)__pyx_v_values, &__Pyx_TypeInfo_object, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 2, 0, __pyx_stack) == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1297; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  }
  __pyx_bstride_0_values = __pyx_bstruct_values.strides[0]; __pyx_bstride_1_values = __pyx_bstruct_values.strides[1];
  __pyx_bshape_0_values = __pyx_bstruct_values.shape[0]; __pyx_bshape_1_values = __pyx_bstruct_values.shape[1];
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_mask, (PyObject*)__pyx_v_mask, &__Pyx_TypeInfo_nn___pyx_t_5numpy_uint8_t, PyBUF_FORMAT| PyBUF_STRIDES, 2, 0, __pyx_stack) == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1297; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  }
  __pyx_bstride_0_mask = __pyx_bstruct_mask.strides[0]; __pyx_bstride_1_mask = __pyx_bstruct_mask.strides[1];
  __pyx_bshape_0_mask = __pyx_bstruct_mask.shape[0]; __pyx_bshape_1_mask = __pyx_bstruct_mask.shape[1];

  /* "pandas/src/generated.pyx":1302
 *     cdef Py_ssize_t i, j, N, K
 *     cdef object val
 *     cdef int lim, fill_count = 0             # <<<<<<<<<<<<<<
 * 
 *     K, N = (<object> values).shape
 */
  __pyx_v_fill_count = 0;

  /* "pandas/src/generated.pyx":1304
 *     cdef int lim, fill_count = 0
 * 
 *     K, N = (<object> values).shape             # <<<<<<<<<<<<<<
 * 
 *     if limit is None:
 */
  __pyx_t_1 = PyObject_GetAttr(((PyObject *)__pyx_v_values), __pyx_n_s__shape); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1304; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  if ((likely(PyTuple_CheckExact(__pyx_t_1))) || (PyList_CheckExact(__pyx_t_1))) {
    PyObject* sequence = __pyx_t_1;
    if (likely(PyTuple_CheckExact(sequence))) {
      if (unlikely(PyTuple_GET_SIZE(sequence) != 2)) {
        if (PyTuple_GET_SIZE(sequence) > 2) __Pyx_RaiseTooManyValuesError(2);
        else __Pyx_RaiseNeedMoreValuesError(PyTuple_GET_SIZE(sequence));
        {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1304; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      }
      __pyx_t_2 = PyTuple_GET_ITEM(sequence, 0); 
      __pyx_t_3 = PyTuple_GET_ITEM(sequence, 1); 
    } else {
      if (unlikely(PyList_GET_SIZE(sequence) != 2)) {
        if (PyList_GET_SIZE(sequence) > 2) __Pyx_RaiseTooManyValuesError(2);
        else __Pyx_RaiseNeedMoreValuesError(PyList_GET_SIZE(sequence));
        {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1304; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      }
      __pyx_t_2 = PyList_GET_ITEM(sequence, 0); 
      __pyx_t_3 = PyList_GET_ITEM(sequence, 1); 
    }
    __Pyx_INCREF(__pyx_t_2);
    __Pyx_INCREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  } else {
    Py_ssize_t index = -1;
    __pyx_t_4 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1304; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __pyx_t_5 = Py_TYPE(__pyx_t_4)->tp_iternext;
    index = 0; __pyx_t_2 = __pyx_t_5(__pyx_t_4); if (unlikely(!__pyx_t_2)) goto __pyx_L6_unpacking_failed;
    __Pyx_GOTREF(__pyx_t_2);
    index = 1; __pyx_t_3 = __pyx_t_5(__pyx_t_4); if (unlikely(!__pyx_t_3)) goto __pyx_L6_unpacking_failed;
    __Pyx_GOTREF(__pyx_t_3);
    if (__Pyx_IternextUnpackEndCheck(__pyx_t_5(__pyx_t_4), 2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1304; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    goto __pyx_L7_unpacking_done;
    __pyx_L6_unpacking_failed:;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    if (PyErr_Occurred() && PyErr_ExceptionMatches(PyExc_StopIteration)) PyErr_Clear();
    if (!PyErr_Occurred()) __Pyx_RaiseNeedMoreValuesError(index);
    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1304; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __pyx_L7_unpacking_done:;
  }
  __pyx_t_6 = __Pyx_PyIndex_AsSsize_t(__pyx_t_2); if (unlikely((__pyx_t_6 == (Py_ssize_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1304; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_7 = __Pyx_PyIndex_AsSsize_t(__pyx_t_3); if (unlikely((__pyx_t_7 == (Py_ssize_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1304; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_v_K = __pyx_t_6;
  __pyx_v_N = __pyx_t_7;

  /* "pandas/src/generated.pyx":1306
 *     K, N = (<object> values).shape
 * 
 *     if limit is None:             # <<<<<<<<<<<<<<
 *         lim = N
 *     else:
 */
  __pyx_t_8 = (__pyx_v_limit == Py_None);
  if (__pyx_t_8) {

    /* "pandas/src/generated.pyx":1307
 * 
 *     if limit is None:
 *         lim = N             # <<<<<<<<<<<<<<
 *     else:
 *         if limit < 0:
 */
    __pyx_v_lim = __pyx_v_N;
    goto __pyx_L8;
  }
  /*else*/ {

    /* "pandas/src/generated.pyx":1309
 *         lim = N
 *     else:
 *         if limit < 0:             # <<<<<<<<<<<<<<
 *             raise ValueError('Limit must be non-negative')
 *         lim = limit
 */
    __pyx_t_1 = PyObject_RichCompare(__pyx_v_limit, __pyx_int_0, Py_LT); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1309; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_8 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_8 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1309; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    if (__pyx_t_8) {

      /* "pandas/src/generated.pyx":1310
 *     else:
 *         if limit < 0:
 *             raise ValueError('Limit must be non-negative')             # <<<<<<<<<<<<<<
 *         lim = limit
 * 
 */
      __pyx_t_1 = PyObject_Call(__pyx_builtin_ValueError, ((PyObject *)__pyx_k_tuple_38), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1310; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_Raise(__pyx_t_1, 0, 0, 0);
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1310; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      goto __pyx_L9;
    }
    __pyx_L9:;

    /* "pandas/src/generated.pyx":1311
 *         if limit < 0:
 *             raise ValueError('Limit must be non-negative')
 *         lim = limit             # <<<<<<<<<<<<<<
 * 
 *     for j in range(K):
 */
    __pyx_t_9 = __Pyx_PyInt_AsInt(__pyx_v_limit); if (unlikely((__pyx_t_9 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1311; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __pyx_v_lim = __pyx_t_9;
  }
  __pyx_L8:;

  /* "pandas/src/generated.pyx":1313
 *         lim = limit
 * 
 *     for j in range(K):             # <<<<<<<<<<<<<<
 *         fill_count = 0
 *         val = values[j, N - 1]
 */
  __pyx_t_7 = __pyx_v_K;
  for (__pyx_t_6 = 0; __pyx_t_6 < __pyx_t_7; __pyx_t_6+=1) {
    __pyx_v_j = __pyx_t_6;

    /* "pandas/src/generated.pyx":1314
 * 
 *     for j in range(K):
 *         fill_count = 0             # <<<<<<<<<<<<<<
 *         val = values[j, N - 1]
 *         for i in range(N - 1, -1 , -1):
 */
    __pyx_v_fill_count = 0;

    /* "pandas/src/generated.pyx":1315
 *     for j in range(K):
 *         fill_count = 0
 *         val = values[j, N - 1]             # <<<<<<<<<<<<<<
 *         for i in range(N - 1, -1 , -1):
 *             if mask[j, i]:
 */
    __pyx_t_10 = __pyx_v_j;
    __pyx_t_11 = (__pyx_v_N - 1);
    __pyx_t_1 = *__Pyx_BufPtrStrided2d(PyObject **, __pyx_bstruct_values.buf, __pyx_t_10, __pyx_bstride_0_values, __pyx_t_11, __pyx_bstride_1_values);
    __Pyx_INCREF((PyObject*)__pyx_t_1);
    __Pyx_XDECREF(__pyx_v_val);
    __pyx_v_val = __pyx_t_1;
    __pyx_t_1 = 0;

    /* "pandas/src/generated.pyx":1316
 *         fill_count = 0
 *         val = values[j, N - 1]
 *         for i in range(N - 1, -1 , -1):             # <<<<<<<<<<<<<<
 *             if mask[j, i]:
 *                 if fill_count >= lim:
 */
    for (__pyx_t_12 = (__pyx_v_N - 1); __pyx_t_12 > -1; __pyx_t_12-=1) {
      __pyx_v_i = __pyx_t_12;

      /* "pandas/src/generated.pyx":1317
 *         val = values[j, N - 1]
 *         for i in range(N - 1, -1 , -1):
 *             if mask[j, i]:             # <<<<<<<<<<<<<<
 *                 if fill_count >= lim:
 *                     continue
 */
      __pyx_t_13 = __pyx_v_j;
      __pyx_t_14 = __pyx_v_i;
      __pyx_t_15 = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_uint8_t *, __pyx_bstruct_mask.buf, __pyx_t_13, __pyx_bstride_0_mask, __pyx_t_14, __pyx_bstride_1_mask));
      if (__pyx_t_15) {

        /* "pandas/src/generated.pyx":1318
 *         for i in range(N - 1, -1 , -1):
 *             if mask[j, i]:
 *                 if fill_count >= lim:             # <<<<<<<<<<<<<<
 *                     continue
 *                 fill_count += 1
 */
        __pyx_t_8 = (__pyx_v_fill_count >= __pyx_v_lim);
        if (__pyx_t_8) {

          /* "pandas/src/generated.pyx":1319
 *             if mask[j, i]:
 *                 if fill_count >= lim:
 *                     continue             # <<<<<<<<<<<<<<
 *                 fill_count += 1
 *                 values[j, i] = val
 */
          goto __pyx_L12_continue;
          goto __pyx_L15;
        }
        __pyx_L15:;

        /* "pandas/src/generated.pyx":1320
 *                 if fill_count >= lim:
 *                     continue
 *                 fill_count += 1             # <<<<<<<<<<<<<<
 *                 values[j, i] = val
 *             else:
 */
        __pyx_v_fill_count = (__pyx_v_fill_count + 1);

        /* "pandas/src/generated.pyx":1321
 *                     continue
 *                 fill_count += 1
 *                 values[j, i] = val             # <<<<<<<<<<<<<<
 *             else:
 *                 fill_count = 0
 */
        __pyx_t_16 = __pyx_v_j;
        __pyx_t_17 = __pyx_v_i;
        __pyx_t_18 = __Pyx_BufPtrStrided2d(PyObject **, __pyx_bstruct_values.buf, __pyx_t_16, __pyx_bstride_0_values, __pyx_t_17, __pyx_bstride_1_values);
        __Pyx_GOTREF(*__pyx_t_18);
        __Pyx_DECREF(*__pyx_t_18); __Pyx_INCREF(__pyx_v_val);
        *__pyx_t_18 = __pyx_v_val;
        __Pyx_GIVEREF(*__pyx_t_18);
        goto __pyx_L14;
      }
      /*else*/ {

        /* "pandas/src/generated.pyx":1323
 *                 values[j, i] = val
 *             else:
 *                 fill_count = 0             # <<<<<<<<<<<<<<
 *                 val = values[j, i]
 * @cython.boundscheck(False)
 */
        __pyx_v_fill_count = 0;

        /* "pandas/src/generated.pyx":1324
 *             else:
 *                 fill_count = 0
 *                 val = values[j, i]             # <<<<<<<<<<<<<<
 * @cython.boundscheck(False)
 * @cython.wraparound(False)
 */
        __pyx_t_19 = __pyx_v_j;
        __pyx_t_20 = __pyx_v_i;
        __pyx_t_1 = *__Pyx_BufPtrStrided2d(PyObject **, __pyx_bstruct_values.buf, __pyx_t_19, __pyx_bstride_0_values, __pyx_t_20, __pyx_bstride_1_values);
        __Pyx_INCREF((PyObject*)__pyx_t_1);
        __Pyx_DECREF(__pyx_v_val);
        __pyx_v_val = __pyx_t_1;
        __pyx_t_1 = 0;
      }
      __pyx_L14:;
      __pyx_L12_continue:;
    }
  }

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  { PyObject *__pyx_type, *__pyx_value, *__pyx_tb;
    __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);
    __Pyx_SafeReleaseBuffer(&__pyx_bstruct_mask);
    __Pyx_SafeReleaseBuffer(&__pyx_bstruct_values);
  __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);}
  __Pyx_AddTraceback("pandas._algos.backfill_2d_inplace_object", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  goto __pyx_L2;
  __pyx_L0:;
  __Pyx_SafeReleaseBuffer(&__pyx_bstruct_mask);
  __Pyx_SafeReleaseBuffer(&__pyx_bstruct_values);
  __pyx_L2:;
  __Pyx_XDECREF(__pyx_v_val);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "pandas/src/generated.pyx":1327
 * @cython.boundscheck(False)
 * @cython.wraparound(False)
 * def backfill_2d_inplace_int32(ndarray[int32_t, ndim=2] values,             # <<<<<<<<<<<<<<
 *                                  ndarray[uint8_t, ndim=2] mask,
 *                                  limit=None):
 */

static PyObject *__pyx_pf_6pandas_6_algos_37backfill_2d_inplace_int32(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_6pandas_6_algos_37backfill_2d_inplace_int32 = {__Pyx_NAMESTR("backfill_2d_inplace_int32"), (PyCFunction)__pyx_pf_6pandas_6_algos_37backfill_2d_inplace_int32, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(0)};
static PyObject *__pyx_pf_6pandas_6_algos_37backfill_2d_inplace_int32(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyArrayObject *__pyx_v_values = 0;
  PyArrayObject *__pyx_v_mask = 0;
  PyObject *__pyx_v_limit = 0;
  Py_ssize_t __pyx_v_i;
  Py_ssize_t __pyx_v_j;
  Py_ssize_t __pyx_v_N;
  Py_ssize_t __pyx_v_K;
  __pyx_t_5numpy_int32_t __pyx_v_val;
  int __pyx_v_lim;
  int __pyx_v_fill_count;
  Py_buffer __pyx_bstruct_mask;
  Py_ssize_t __pyx_bstride_0_mask = 0;
  Py_ssize_t __pyx_bstride_1_mask = 0;
  Py_ssize_t __pyx_bshape_0_mask = 0;
  Py_ssize_t __pyx_bshape_1_mask = 0;
  Py_buffer __pyx_bstruct_values;
  Py_ssize_t __pyx_bstride_0_values = 0;
  Py_ssize_t __pyx_bstride_1_values = 0;
  Py_ssize_t __pyx_bshape_0_values = 0;
  Py_ssize_t __pyx_bshape_1_values = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *(*__pyx_t_5)(PyObject *);
  Py_ssize_t __pyx_t_6;
  Py_ssize_t __pyx_t_7;
  int __pyx_t_8;
  int __pyx_t_9;
  Py_ssize_t __pyx_t_10;
  Py_ssize_t __pyx_t_11;
  Py_ssize_t __pyx_t_12;
  Py_ssize_t __pyx_t_13;
  Py_ssize_t __pyx_t_14;
  __pyx_t_5numpy_uint8_t __pyx_t_15;
  Py_ssize_t __pyx_t_16;
  Py_ssize_t __pyx_t_17;
  Py_ssize_t __pyx_t_18;
  Py_ssize_t __pyx_t_19;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__values,&__pyx_n_s__mask,&__pyx_n_s__limit,0};
  __Pyx_RefNannySetupContext("backfill_2d_inplace_int32");
  __pyx_self = __pyx_self;
  {
    PyObject* values[3] = {0,0,0};

    /* "pandas/src/generated.pyx":1329
 * def backfill_2d_inplace_int32(ndarray[int32_t, ndim=2] values,
 *                                  ndarray[uint8_t, ndim=2] mask,
 *                                  limit=None):             # <<<<<<<<<<<<<<
 *     cdef Py_ssize_t i, j, N, K
 *     cdef int32_t val
 */
    values[2] = ((PyObject *)Py_None);
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  0:
        values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__values);
        if (likely(values[0])) kw_args--;
        else goto __pyx_L5_argtuple_error;
        case  1:
        values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__mask);
        if (likely(values[1])) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("backfill_2d_inplace_int32", 0, 2, 3, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1327; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
        }
        case  2:
        if (kw_args > 0) {
          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__limit);
          if (value) { values[2] = value; kw_args--; }
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "backfill_2d_inplace_int32") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1327; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
    } else {
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_values = ((PyArrayObject *)values[0]);
    __pyx_v_mask = ((PyArrayObject *)values[1]);
    __pyx_v_limit = values[2];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("backfill_2d_inplace_int32", 0, 2, 3, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1327; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("pandas._algos.backfill_2d_inplace_int32", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_bstruct_values.buf = NULL;
  __pyx_bstruct_mask.buf = NULL;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_values), __pyx_ptype_5numpy_ndarray, 1, "values", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1327; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_mask), __pyx_ptype_5numpy_ndarray, 1, "mask", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1328; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_values, (PyObject*)__pyx_v_values, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int32_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 2, 0, __pyx_stack) == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1327; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  }
  __pyx_bstride_0_values = __pyx_bstruct_values.strides[0]; __pyx_bstride_1_values = __pyx_bstruct_values.strides[1];
  __pyx_bshape_0_values = __pyx_bstruct_values.shape[0]; __pyx_bshape_1_values = __pyx_bstruct_values.shape[1];
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_mask, (PyObject*)__pyx_v_mask, &__Pyx_TypeInfo_nn___pyx_t_5numpy_uint8_t, PyBUF_FORMAT| PyBUF_STRIDES, 2, 0, __pyx_stack) == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1327; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  }
  __pyx_bstride_0_mask = __pyx_bstruct_mask.strides[0]; __pyx_bstride_1_mask = __pyx_bstruct_mask.strides[1];
  __pyx_bshape_0_mask = __pyx_bstruct_mask.shape[0]; __pyx_bshape_1_mask = __pyx_bstruct_mask.shape[1];

  /* "pandas/src/generated.pyx":1332
 *     cdef Py_ssize_t i, j, N, K
 *     cdef int32_t val
 *     cdef int lim, fill_count = 0             # <<<<<<<<<<<<<<
 * 
 *     K, N = (<object> values).shape
 */
  __pyx_v_fill_count = 0;

  /* "pandas/src/generated.pyx":1334
 *     cdef int lim, fill_count = 0
 * 
 *     K, N = (<object> values).shape             # <<<<<<<<<<<<<<
 * 
 *     if limit is None:
 */
  __pyx_t_1 = PyObject_GetAttr(((PyObject *)__pyx_v_values), __pyx_n_s__shape); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1334; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  if ((likely(PyTuple_CheckExact(__pyx_t_1))) || (PyList_CheckExact(__pyx_t_1))) {
    PyObject* sequence = __pyx_t_1;
    if (likely(PyTuple_CheckExact(sequence))) {
      if (unlikely(PyTuple_GET_SIZE(sequence) != 2)) {
        if (PyTuple_GET_SIZE(sequence) > 2) __Pyx_RaiseTooManyValuesError(2);
        else __Pyx_RaiseNeedMoreValuesError(PyTuple_GET_SIZE(sequence));
        {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1334; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      }
      __pyx_t_2 = PyTuple_GET_ITEM(sequence, 0); 
      __pyx_t_3 = PyTuple_GET_ITEM(sequence, 1); 
    } else {
      if (unlikely(PyList_GET_SIZE(sequence) != 2)) {
        if (PyList_GET_SIZE(sequence) > 2) __Pyx_RaiseTooManyValuesError(2);
        else __Pyx_RaiseNeedMoreValuesError(PyList_GET_SIZE(sequence));
        {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1334; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      }
      __pyx_t_2 = PyList_GET_ITEM(sequence, 0); 
      __pyx_t_3 = PyList_GET_ITEM(sequence, 1); 
    }
    __Pyx_INCREF(__pyx_t_2);
    __Pyx_INCREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  } else {
    Py_ssize_t index = -1;
    __pyx_t_4 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1334; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __pyx_t_5 = Py_TYPE(__pyx_t_4)->tp_iternext;
    index = 0; __pyx_t_2 = __pyx_t_5(__pyx_t_4); if (unlikely(!__pyx_t_2)) goto __pyx_L6_unpacking_failed;
    __Pyx_GOTREF(__pyx_t_2);
    index = 1; __pyx_t_3 = __pyx_t_5(__pyx_t_4); if (unlikely(!__pyx_t_3)) goto __pyx_L6_unpacking_failed;
    __Pyx_GOTREF(__pyx_t_3);
    if (__Pyx_IternextUnpackEndCheck(__pyx_t_5(__pyx_t_4), 2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1334; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    goto __pyx_L7_unpacking_done;
    __pyx_L6_unpacking_failed:;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    if (PyErr_Occurred() && PyErr_ExceptionMatches(PyExc_StopIteration)) PyErr_Clear();
    if (!PyErr_Occurred()) __Pyx_RaiseNeedMoreValuesError(index);
    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1334; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __pyx_L7_unpacking_done:;
  }
  __pyx_t_6 = __Pyx_PyIndex_AsSsize_t(__pyx_t_2); if (unlikely((__pyx_t_6 == (Py_ssize_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1334; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_7 = __Pyx_PyIndex_AsSsize_t(__pyx_t_3); if (unlikely((__pyx_t_7 == (Py_ssize_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1334; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_v_K = __pyx_t_6;
  __pyx_v_N = __pyx_t_7;

  /* "pandas/src/generated.pyx":1336
 *     K, N = (<object> values).shape
 * 
 *     if limit is None:             # <<<<<<<<<<<<<<
 *         lim = N
 *     else:
 */
  __pyx_t_8 = (__pyx_v_limit == Py_None);
  if (__pyx_t_8) {

    /* "pandas/src/generated.pyx":1337
 * 
 *     if limit is None:
 *         lim = N             # <<<<<<<<<<<<<<
 *     else:
 *         if limit < 0:
 */
    __pyx_v_lim = __pyx_v_N;
    goto __pyx_L8;
  }
  /*else*/ {

    /* "pandas/src/generated.pyx":1339
 *         lim = N
 *     else:
 *         if limit < 0:             # <<<<<<<<<<<<<<
 *             raise ValueError('Limit must be non-negative')
 *         lim = limit
 */
    __pyx_t_1 = PyObject_RichCompare(__pyx_v_limit, __pyx_int_0, Py_LT); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1339; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_8 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_8 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1339; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    if (__pyx_t_8) {

      /* "pandas/src/generated.pyx":1340
 *     else:
 *         if limit < 0:
 *             raise ValueError('Limit must be non-negative')             # <<<<<<<<<<<<<<
 *         lim = limit
 * 
 */
      __pyx_t_1 = PyObject_Call(__pyx_builtin_ValueError, ((PyObject *)__pyx_k_tuple_39), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1340; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_Raise(__pyx_t_1, 0, 0, 0);
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1340; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      goto __pyx_L9;
    }
    __pyx_L9:;

    /* "pandas/src/generated.pyx":1341
 *         if limit < 0:
 *             raise ValueError('Limit must be non-negative')
 *         lim = limit             # <<<<<<<<<<<<<<
 * 
 *     for j in range(K):
 */
    __pyx_t_9 = __Pyx_PyInt_AsInt(__pyx_v_limit); if (unlikely((__pyx_t_9 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1341; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __pyx_v_lim = __pyx_t_9;
  }
  __pyx_L8:;

  /* "pandas/src/generated.pyx":1343
 *         lim = limit
 * 
 *     for j in range(K):             # <<<<<<<<<<<<<<
 *         fill_count = 0
 *         val = values[j, N - 1]
 */
  __pyx_t_7 = __pyx_v_K;
  for (__pyx_t_6 = 0; __pyx_t_6 < __pyx_t_7; __pyx_t_6+=1) {
    __pyx_v_j = __pyx_t_6;

    /* "pandas/src/generated.pyx":1344
 * 
 *     for j in range(K):
 *         fill_count = 0             # <<<<<<<<<<<<<<
 *         val = values[j, N - 1]
 *         for i in range(N - 1, -1 , -1):
 */
    __pyx_v_fill_count = 0;

    /* "pandas/src/generated.pyx":1345
 *     for j in range(K):
 *         fill_count = 0
 *         val = values[j, N - 1]             # <<<<<<<<<<<<<<
 *         for i in range(N - 1, -1 , -1):
 *             if mask[j, i]:
 */
    __pyx_t_10 = __pyx_v_j;
    __pyx_t_11 = (__pyx_v_N - 1);
    __pyx_v_val = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int32_t *, __pyx_bstruct_values.buf, __pyx_t_10, __pyx_bstride_0_values, __pyx_t_11, __pyx_bstride_1_values));

    /* "pandas/src/generated.pyx":1346
 *         fill_count = 0
 *         val = values[j, N - 1]
 *         for i in range(N - 1, -1 , -1):             # <<<<<<<<<<<<<<
 *             if mask[j, i]:
 *                 if fill_count >= lim:
 */
    for (__pyx_t_12 = (__pyx_v_N - 1); __pyx_t_12 > -1; __pyx_t_12-=1) {
      __pyx_v_i = __pyx_t_12;

      /* "pandas/src/generated.pyx":1347
 *         val = values[j, N - 1]
 *         for i in range(N - 1, -1 , -1):
 *             if mask[j, i]:             # <<<<<<<<<<<<<<
 *                 if fill_count >= lim:
 *                     continue
 */
      __pyx_t_13 = __pyx_v_j;
      __pyx_t_14 = __pyx_v_i;
      __pyx_t_15 = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_uint8_t *, __pyx_bstruct_mask.buf, __pyx_t_13, __pyx_bstride_0_mask, __pyx_t_14, __pyx_bstride_1_mask));
      if (__pyx_t_15) {

        /* "pandas/src/generated.pyx":1348
 *         for i in range(N - 1, -1 , -1):
 *             if mask[j, i]:
 *                 if fill_count >= lim:             # <<<<<<<<<<<<<<
 *                     continue
 *                 fill_count += 1
 */
        __pyx_t_8 = (__pyx_v_fill_count >= __pyx_v_lim);
        if (__pyx_t_8) {

          /* "pandas/src/generated.pyx":1349
 *             if mask[j, i]:
 *                 if fill_count >= lim:
 *                     continue             # <<<<<<<<<<<<<<
 *                 fill_count += 1
 *                 values[j, i] = val
 */
          goto __pyx_L12_continue;
          goto __pyx_L15;
        }
        __pyx_L15:;

        /* "pandas/src/generated.pyx":1350
 *                 if fill_count >= lim:
 *                     continue
 *                 fill_count += 1             # <<<<<<<<<<<<<<
 *                 values[j, i] = val
 *             else:
 */
        __pyx_v_fill_count = (__pyx_v_fill_count + 1);

        /* "pandas/src/generated.pyx":1351
 *                     continue
 *                 fill_count += 1
 *                 values[j, i] = val             # <<<<<<<<<<<<<<
 *             else:
 *                 fill_count = 0
 */
        __pyx_t_16 = __pyx_v_j;
        __pyx_t_17 = __pyx_v_i;
        *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int32_t *, __pyx_bstruct_values.buf, __pyx_t_16, __pyx_bstride_0_values, __pyx_t_17, __pyx_bstride_1_values) = __pyx_v_val;
        goto __pyx_L14;
      }
      /*else*/ {

        /* "pandas/src/generated.pyx":1353
 *                 values[j, i] = val
 *             else:
 *                 fill_count = 0             # <<<<<<<<<<<<<<
 *                 val = values[j, i]
 * @cython.boundscheck(False)
 */
        __pyx_v_fill_count = 0;

        /* "pandas/src/generated.pyx":1354
 *             else:
 *                 fill_count = 0
 *                 val = values[j, i]             # <<<<<<<<<<<<<<
 * @cython.boundscheck(False)
 * @cython.wraparound(False)
 */
        __pyx_t_18 = __pyx_v_j;
        __pyx_t_19 = __pyx_v_i;
        __pyx_v_val = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int32_t *, __pyx_bstruct_values.buf, __pyx_t_18, __pyx_bstride_0_values, __pyx_t_19, __pyx_bstride_1_values));
      }
      __pyx_L14:;
      __pyx_L12_continue:;
    }
  }

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  { PyObject *__pyx_type, *__pyx_value, *__pyx_tb;
    __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);
    __Pyx_SafeReleaseBuffer(&__pyx_bstruct_mask);
    __Pyx_SafeReleaseBuffer(&__pyx_bstruct_values);
  __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);}
  __Pyx_AddTraceback("pandas._algos.backfill_2d_inplace_int32", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  goto __pyx_L2;
  __pyx_L0:;
  __Pyx_SafeReleaseBuffer(&__pyx_bstruct_mask);
  __Pyx_SafeReleaseBuffer(&__pyx_bstruct_values);
  __pyx_L2:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "pandas/src/generated.pyx":1357
 * @cython.boundscheck(False)
 * @cython.wraparound(False)
 * def backfill_2d_inplace_int64(ndarray[int64_t, ndim=2] values,             # <<<<<<<<<<<<<<
 *                                  ndarray[uint8_t, ndim=2] mask,
 *                                  limit=None):
 */

static PyObject *__pyx_pf_6pandas_6_algos_38backfill_2d_inplace_int64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_6pandas_6_algos_38backfill_2d_inplace_int64 = {__Pyx_NAMESTR("backfill_2d_inplace_int64"), (PyCFunction)__pyx_pf_6pandas_6_algos_38backfill_2d_inplace_int64, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(0)};
static PyObject *__pyx_pf_6pandas_6_algos_38backfill_2d_inplace_int64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyArrayObject *__pyx_v_values = 0;
  PyArrayObject *__pyx_v_mask = 0;
  PyObject *__pyx_v_limit = 0;
  Py_ssize_t __pyx_v_i;
  Py_ssize_t __pyx_v_j;
  Py_ssize_t __pyx_v_N;
  Py_ssize_t __pyx_v_K;
  __pyx_t_5numpy_int64_t __pyx_v_val;
  int __pyx_v_lim;
  int __pyx_v_fill_count;
  Py_buffer __pyx_bstruct_mask;
  Py_ssize_t __pyx_bstride_0_mask = 0;
  Py_ssize_t __pyx_bstride_1_mask = 0;
  Py_ssize_t __pyx_bshape_0_mask = 0;
  Py_ssize_t __pyx_bshape_1_mask = 0;
  Py_buffer __pyx_bstruct_values;
  Py_ssize_t __pyx_bstride_0_values = 0;
  Py_ssize_t __pyx_bstride_1_values = 0;
  Py_ssize_t __pyx_bshape_0_values = 0;
  Py_ssize_t __pyx_bshape_1_values = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *(*__pyx_t_5)(PyObject *);
  Py_ssize_t __pyx_t_6;
  Py_ssize_t __pyx_t_7;
  int __pyx_t_8;
  int __pyx_t_9;
  Py_ssize_t __pyx_t_10;
  Py_ssize_t __pyx_t_11;
  Py_ssize_t __pyx_t_12;
  Py_ssize_t __pyx_t_13;
  Py_ssize_t __pyx_t_14;
  __pyx_t_5numpy_uint8_t __pyx_t_15;
  Py_ssize_t __pyx_t_16;
  Py_ssize_t __pyx_t_17;
  Py_ssize_t __pyx_t_18;
  Py_ssize_t __pyx_t_19;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__values,&__pyx_n_s__mask,&__pyx_n_s__limit,0};
  __Pyx_RefNannySetupContext("backfill_2d_inplace_int64");
  __pyx_self = __pyx_self;
  {
    PyObject* values[3] = {0,0,0};

    /* "pandas/src/generated.pyx":1359
 * def backfill_2d_inplace_int64(ndarray[int64_t, ndim=2] values,
 *                                  ndarray[uint8_t, ndim=2] mask,
 *                                  limit=None):             # <<<<<<<<<<<<<<
 *     cdef Py_ssize_t i, j, N, K
 *     cdef int64_t val
 */
    values[2] = ((PyObject *)Py_None);
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  0:
        values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__values);
        if (likely(values[0])) kw_args--;
        else goto __pyx_L5_argtuple_error;
        case  1:
        values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__mask);
        if (likely(values[1])) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("backfill_2d_inplace_int64", 0, 2, 3, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1357; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
        }
        case  2:
        if (kw_args > 0) {
          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__limit);
          if (value) { values[2] = value; kw_args--; }
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "backfill_2d_inplace_int64") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1357; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
    } else {
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_values = ((PyArrayObject *)values[0]);
    __pyx_v_mask = ((PyArrayObject *)values[1]);
    __pyx_v_limit = values[2];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("backfill_2d_inplace_int64", 0, 2, 3, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1357; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("pandas._algos.backfill_2d_inplace_int64", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_bstruct_values.buf = NULL;
  __pyx_bstruct_mask.buf = NULL;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_values), __pyx_ptype_5numpy_ndarray, 1, "values", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1357; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_mask), __pyx_ptype_5numpy_ndarray, 1, "mask", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1358; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_values, (PyObject*)__pyx_v_values, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 2, 0, __pyx_stack) == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1357; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  }
  __pyx_bstride_0_values = __pyx_bstruct_values.strides[0]; __pyx_bstride_1_values = __pyx_bstruct_values.strides[1];
  __pyx_bshape_0_values = __pyx_bstruct_values.shape[0]; __pyx_bshape_1_values = __pyx_bstruct_values.shape[1];
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_mask, (PyObject*)__pyx_v_mask, &__Pyx_TypeInfo_nn___pyx_t_5numpy_uint8_t, PyBUF_FORMAT| PyBUF_STRIDES, 2, 0, __pyx_stack) == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1357; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  }
  __pyx_bstride_0_mask = __pyx_bstruct_mask.strides[0]; __pyx_bstride_1_mask = __pyx_bstruct_mask.strides[1];
  __pyx_bshape_0_mask = __pyx_bstruct_mask.shape[0]; __pyx_bshape_1_mask = __pyx_bstruct_mask.shape[1];

  /* "pandas/src/generated.pyx":1362
 *     cdef Py_ssize_t i, j, N, K
 *     cdef int64_t val
 *     cdef int lim, fill_count = 0             # <<<<<<<<<<<<<<
 * 
 *     K, N = (<object> values).shape
 */
  __pyx_v_fill_count = 0;

  /* "pandas/src/generated.pyx":1364
 *     cdef int lim, fill_count = 0
 * 
 *     K, N = (<object> values).shape             # <<<<<<<<<<<<<<
 * 
 *     if limit is None:
 */
  __pyx_t_1 = PyObject_GetAttr(((PyObject *)__pyx_v_values), __pyx_n_s__shape); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1364; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  if ((likely(PyTuple_CheckExact(__pyx_t_1))) || (PyList_CheckExact(__pyx_t_1))) {
    PyObject* sequence = __pyx_t_1;
    if (likely(PyTuple_CheckExact(sequence))) {
      if (unlikely(PyTuple_GET_SIZE(sequence) != 2)) {
        if (PyTuple_GET_SIZE(sequence) > 2) __Pyx_RaiseTooManyValuesError(2);
        else __Pyx_RaiseNeedMoreValuesError(PyTuple_GET_SIZE(sequence));
        {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1364; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      }
      __pyx_t_2 = PyTuple_GET_ITEM(sequence, 0); 
      __pyx_t_3 = PyTuple_GET_ITEM(sequence, 1); 
    } else {
      if (unlikely(PyList_GET_SIZE(sequence) != 2)) {
        if (PyList_GET_SIZE(sequence) > 2) __Pyx_RaiseTooManyValuesError(2);
        else __Pyx_RaiseNeedMoreValuesError(PyList_GET_SIZE(sequence));
        {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1364; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      }
      __pyx_t_2 = PyList_GET_ITEM(sequence, 0); 
      __pyx_t_3 = PyList_GET_ITEM(sequence, 1); 
    }
    __Pyx_INCREF(__pyx_t_2);
    __Pyx_INCREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  } else {
    Py_ssize_t index = -1;
    __pyx_t_4 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1364; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __pyx_t_5 = Py_TYPE(__pyx_t_4)->tp_iternext;
    index = 0; __pyx_t_2 = __pyx_t_5(__pyx_t_4); if (unlikely(!__pyx_t_2)) goto __pyx_L6_unpacking_failed;
    __Pyx_GOTREF(__pyx_t_2);
    index = 1; __pyx_t_3 = __pyx_t_5(__pyx_t_4); if (unlikely(!__pyx_t_3)) goto __pyx_L6_unpacking_failed;
    __Pyx_GOTREF(__pyx_t_3);
    if (__Pyx_IternextUnpackEndCheck(__pyx_t_5(__pyx_t_4), 2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1364; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    goto __pyx_L7_unpacking_done;
    __pyx_L6_unpacking_failed:;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    if (PyErr_Occurred() && PyErr_ExceptionMatches(PyExc_StopIteration)) PyErr_Clear();
    if (!PyErr_Occurred()) __Pyx_RaiseNeedMoreValuesError(index);
    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1364; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __pyx_L7_unpacking_done:;
  }
  __pyx_t_6 = __Pyx_PyIndex_AsSsize_t(__pyx_t_2); if (unlikely((__pyx_t_6 == (Py_ssize_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1364; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_7 = __Pyx_PyIndex_AsSsize_t(__pyx_t_3); if (unlikely((__pyx_t_7 == (Py_ssize_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1364; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_v_K = __pyx_t_6;
  __pyx_v_N = __pyx_t_7;

  /* "pandas/src/generated.pyx":1366
 *     K, N = (<object> values).shape
 * 
 *     if limit is None:             # <<<<<<<<<<<<<<
 *         lim = N
 *     else:
 */
  __pyx_t_8 = (__pyx_v_limit == Py_None);
  if (__pyx_t_8) {

    /* "pandas/src/generated.pyx":1367
 * 
 *     if limit is None:
 *         lim = N             # <<<<<<<<<<<<<<
 *     else:
 *         if limit < 0:
 */
    __pyx_v_lim = __pyx_v_N;
    goto __pyx_L8;
  }
  /*else*/ {

    /* "pandas/src/generated.pyx":1369
 *         lim = N
 *     else:
 *         if limit < 0:             # <<<<<<<<<<<<<<
 *             raise ValueError('Limit must be non-negative')
 *         lim = limit
 */
    __pyx_t_1 = PyObject_RichCompare(__pyx_v_limit, __pyx_int_0, Py_LT); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1369; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_8 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_8 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1369; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    if (__pyx_t_8) {

      /* "pandas/src/generated.pyx":1370
 *     else:
 *         if limit < 0:
 *             raise ValueError('Limit must be non-negative')             # <<<<<<<<<<<<<<
 *         lim = limit
 * 
 */
      __pyx_t_1 = PyObject_Call(__pyx_builtin_ValueError, ((PyObject *)__pyx_k_tuple_40), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1370; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_Raise(__pyx_t_1, 0, 0, 0);
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1370; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      goto __pyx_L9;
    }
    __pyx_L9:;

    /* "pandas/src/generated.pyx":1371
 *         if limit < 0:
 *             raise ValueError('Limit must be non-negative')
 *         lim = limit             # <<<<<<<<<<<<<<
 * 
 *     for j in range(K):
 */
    __pyx_t_9 = __Pyx_PyInt_AsInt(__pyx_v_limit); if (unlikely((__pyx_t_9 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1371; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __pyx_v_lim = __pyx_t_9;
  }
  __pyx_L8:;

  /* "pandas/src/generated.pyx":1373
 *         lim = limit
 * 
 *     for j in range(K):             # <<<<<<<<<<<<<<
 *         fill_count = 0
 *         val = values[j, N - 1]
 */
  __pyx_t_7 = __pyx_v_K;
  for (__pyx_t_6 = 0; __pyx_t_6 < __pyx_t_7; __pyx_t_6+=1) {
    __pyx_v_j = __pyx_t_6;

    /* "pandas/src/generated.pyx":1374
 * 
 *     for j in range(K):
 *         fill_count = 0             # <<<<<<<<<<<<<<
 *         val = values[j, N - 1]
 *         for i in range(N - 1, -1 , -1):
 */
    __pyx_v_fill_count = 0;

    /* "pandas/src/generated.pyx":1375
 *     for j in range(K):
 *         fill_count = 0
 *         val = values[j, N - 1]             # <<<<<<<<<<<<<<
 *         for i in range(N - 1, -1 , -1):
 *             if mask[j, i]:
 */
    __pyx_t_10 = __pyx_v_j;
    __pyx_t_11 = (__pyx_v_N - 1);
    __pyx_v_val = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_bstruct_values.buf, __pyx_t_10, __pyx_bstride_0_values, __pyx_t_11, __pyx_bstride_1_values));

    /* "pandas/src/generated.pyx":1376
 *         fill_count = 0
 *         val = values[j, N - 1]
 *         for i in range(N - 1, -1 , -1):             # <<<<<<<<<<<<<<
 *             if mask[j, i]:
 *                 if fill_count >= lim:
 */
    for (__pyx_t_12 = (__pyx_v_N - 1); __pyx_t_12 > -1; __pyx_t_12-=1) {
      __pyx_v_i = __pyx_t_12;

      /* "pandas/src/generated.pyx":1377
 *         val = values[j, N - 1]
 *         for i in range(N - 1, -1 , -1):
 *             if mask[j, i]:             # <<<<<<<<<<<<<<
 *                 if fill_count >= lim:
 *                     continue
 */
      __pyx_t_13 = __pyx_v_j;
      __pyx_t_14 = __pyx_v_i;
      __pyx_t_15 = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_uint8_t *, __pyx_bstruct_mask.buf, __pyx_t_13, __pyx_bstride_0_mask, __pyx_t_14, __pyx_bstride_1_mask));
      if (__pyx_t_15) {

        /* "pandas/src/generated.pyx":1378
 *         for i in range(N - 1, -1 , -1):
 *             if mask[j, i]:
 *                 if fill_count >= lim:             # <<<<<<<<<<<<<<
 *                     continue
 *                 fill_count += 1
 */
        __pyx_t_8 = (__pyx_v_fill_count >= __pyx_v_lim);
        if (__pyx_t_8) {

          /* "pandas/src/generated.pyx":1379
 *             if mask[j, i]:
 *                 if fill_count >= lim:
 *                     continue             # <<<<<<<<<<<<<<
 *                 fill_count += 1
 *                 values[j, i] = val
 */
          goto __pyx_L12_continue;
          goto __pyx_L15;
        }
        __pyx_L15:;

        /* "pandas/src/generated.pyx":1380
 *                 if fill_count >= lim:
 *                     continue
 *                 fill_count += 1             # <<<<<<<<<<<<<<
 *                 values[j, i] = val
 *             else:
 */
        __pyx_v_fill_count = (__pyx_v_fill_count + 1);

        /* "pandas/src/generated.pyx":1381
 *                     continue
 *                 fill_count += 1
 *                 values[j, i] = val             # <<<<<<<<<<<<<<
 *             else:
 *                 fill_count = 0
 */
        __pyx_t_16 = __pyx_v_j;
        __pyx_t_17 = __pyx_v_i;
        *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_bstruct_values.buf, __pyx_t_16, __pyx_bstride_0_values, __pyx_t_17, __pyx_bstride_1_values) = __pyx_v_val;
        goto __pyx_L14;
      }
      /*else*/ {

        /* "pandas/src/generated.pyx":1383
 *                 values[j, i] = val
 *             else:
 *                 fill_count = 0             # <<<<<<<<<<<<<<
 *                 val = values[j, i]
 * @cython.boundscheck(False)
 */
        __pyx_v_fill_count = 0;

        /* "pandas/src/generated.pyx":1384
 *             else:
 *                 fill_count = 0
 *                 val = values[j, i]             # <<<<<<<<<<<<<<
 * @cython.boundscheck(False)
 * @cython.wraparound(False)
 */
        __pyx_t_18 = __pyx_v_j;
        __pyx_t_19 = __pyx_v_i;
        __pyx_v_val = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_bstruct_values.buf, __pyx_t_18, __pyx_bstride_0_values, __pyx_t_19, __pyx_bstride_1_values));
      }
      __pyx_L14:;
      __pyx_L12_continue:;
    }
  }

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  { PyObject *__pyx_type, *__pyx_value, *__pyx_tb;
    __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);
    __Pyx_SafeReleaseBuffer(&__pyx_bstruct_mask);
    __Pyx_SafeReleaseBuffer(&__pyx_bstruct_values);
  __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);}
  __Pyx_AddTraceback("pandas._algos.backfill_2d_inplace_int64", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  goto __pyx_L2;
  __pyx_L0:;
  __Pyx_SafeReleaseBuffer(&__pyx_bstruct_mask);
  __Pyx_SafeReleaseBuffer(&__pyx_bstruct_values);
  __pyx_L2:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "pandas/src/generated.pyx":1387
 * @cython.boundscheck(False)
 * @cython.wraparound(False)
 * def backfill_2d_inplace_bool(ndarray[uint8_t, ndim=2] values,             # <<<<<<<<<<<<<<
 *                                  ndarray[uint8_t, ndim=2] mask,
 *                                  limit=None):
 */

static PyObject *__pyx_pf_6pandas_6_algos_39backfill_2d_inplace_bool(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_6pandas_6_algos_39backfill_2d_inplace_bool = {__Pyx_NAMESTR("backfill_2d_inplace_bool"), (PyCFunction)__pyx_pf_6pandas_6_algos_39backfill_2d_inplace_bool, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(0)};
static PyObject *__pyx_pf_6pandas_6_algos_39backfill_2d_inplace_bool(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyArrayObject *__pyx_v_values = 0;
  PyArrayObject *__pyx_v_mask = 0;
  PyObject *__pyx_v_limit = 0;
  Py_ssize_t __pyx_v_i;
  Py_ssize_t __pyx_v_j;
  Py_ssize_t __pyx_v_N;
  Py_ssize_t __pyx_v_K;
  __pyx_t_5numpy_uint8_t __pyx_v_val;
  int __pyx_v_lim;
  int __pyx_v_fill_count;
  Py_buffer __pyx_bstruct_mask;
  Py_ssize_t __pyx_bstride_0_mask = 0;
  Py_ssize_t __pyx_bstride_1_mask = 0;
  Py_ssize_t __pyx_bshape_0_mask = 0;
  Py_ssize_t __pyx_bshape_1_mask = 0;
  Py_buffer __pyx_bstruct_values;
  Py_ssize_t __pyx_bstride_0_values = 0;
  Py_ssize_t __pyx_bstride_1_values = 0;
  Py_ssize_t __pyx_bshape_0_values = 0;
  Py_ssize_t __pyx_bshape_1_values = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *(*__pyx_t_5)(PyObject *);
  Py_ssize_t __pyx_t_6;
  Py_ssize_t __pyx_t_7;
  int __pyx_t_8;
  int __pyx_t_9;
  Py_ssize_t __pyx_t_10;
  Py_ssize_t __pyx_t_11;
  Py_ssize_t __pyx_t_12;
  Py_ssize_t __pyx_t_13;
  Py_ssize_t __pyx_t_14;
  __pyx_t_5numpy_uint8_t __pyx_t_15;
  Py_ssize_t __pyx_t_16;
  Py_ssize_t __pyx_t_17;
  Py_ssize_t __pyx_t_18;
  Py_ssize_t __pyx_t_19;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__values,&__pyx_n_s__mask,&__pyx_n_s__limit,0};
  __Pyx_RefNannySetupContext("backfill_2d_inplace_bool");
  __pyx_self = __pyx_self;
  {
    PyObject* values[3] = {0,0,0};

    /* "pandas/src/generated.pyx":1389
 * def backfill_2d_inplace_bool(ndarray[uint8_t, ndim=2] values,
 *                                  ndarray[uint8_t, ndim=2] mask,
 *                                  limit=None):             # <<<<<<<<<<<<<<
 *     cdef Py_ssize_t i, j, N, K
 *     cdef uint8_t val
 */
    values[2] = ((PyObject *)Py_None);
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  0:
        values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__values);
        if (likely(values[0])) kw_args--;
        else goto __pyx_L5_argtuple_error;
        case  1:
        values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__mask);
        if (likely(values[1])) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("backfill_2d_inplace_bool", 0, 2, 3, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1387; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
        }
        case  2:
        if (kw_args > 0) {
          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__limit);
          if (value) { values[2] = value; kw_args--; }
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "backfill_2d_inplace_bool") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1387; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
    } else {
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_values = ((PyArrayObject *)values[0]);
    __pyx_v_mask = ((PyArrayObject *)values[1]);
    __pyx_v_limit = values[2];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("backfill_2d_inplace_bool", 0, 2, 3, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1387; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("pandas._algos.backfill_2d_inplace_bool", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_bstruct_values.buf = NULL;
  __pyx_bstruct_mask.buf = NULL;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_values), __pyx_ptype_5numpy_ndarray, 1, "values", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1387; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_mask), __pyx_ptype_5numpy_ndarray, 1, "mask", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1388; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_values, (PyObject*)__pyx_v_values, &__Pyx_TypeInfo_nn___pyx_t_5numpy_uint8_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 2, 0, __pyx_stack) == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1387; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  }
  __pyx_bstride_0_values = __pyx_bstruct_values.strides[0]; __pyx_bstride_1_values = __pyx_bstruct_values.strides[1];
  __pyx_bshape_0_values = __pyx_bstruct_values.shape[0]; __pyx_bshape_1_values = __pyx_bstruct_values.shape[1];
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_mask, (PyObject*)__pyx_v_mask, &__Pyx_TypeInfo_nn___pyx_t_5numpy_uint8_t, PyBUF_FORMAT| PyBUF_STRIDES, 2, 0, __pyx_stack) == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1387; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  }
  __pyx_bstride_0_mask = __pyx_bstruct_mask.strides[0]; __pyx_bstride_1_mask = __pyx_bstruct_mask.strides[1];
  __pyx_bshape_0_mask = __pyx_bstruct_mask.shape[0]; __pyx_bshape_1_mask = __pyx_bstruct_mask.shape[1];

  /* "pandas/src/generated.pyx":1392
 *     cdef Py_ssize_t i, j, N, K
 *     cdef uint8_t val
 *     cdef int lim, fill_count = 0             # <<<<<<<<<<<<<<
 * 
 *     K, N = (<object> values).shape
 */
  __pyx_v_fill_count = 0;

  /* "pandas/src/generated.pyx":1394
 *     cdef int lim, fill_count = 0
 * 
 *     K, N = (<object> values).shape             # <<<<<<<<<<<<<<
 * 
 *     if limit is None:
 */
  __pyx_t_1 = PyObject_GetAttr(((PyObject *)__pyx_v_values), __pyx_n_s__shape); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1394; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  if ((likely(PyTuple_CheckExact(__pyx_t_1))) || (PyList_CheckExact(__pyx_t_1))) {
    PyObject* sequence = __pyx_t_1;
    if (likely(PyTuple_CheckExact(sequence))) {
      if (unlikely(PyTuple_GET_SIZE(sequence) != 2)) {
        if (PyTuple_GET_SIZE(sequence) > 2) __Pyx_RaiseTooManyValuesError(2);
        else __Pyx_RaiseNeedMoreValuesError(PyTuple_GET_SIZE(sequence));
        {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1394; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      }
      __pyx_t_2 = PyTuple_GET_ITEM(sequence, 0); 
      __pyx_t_3 = PyTuple_GET_ITEM(sequence, 1); 
    } else {
      if (unlikely(PyList_GET_SIZE(sequence) != 2)) {
        if (PyList_GET_SIZE(sequence) > 2) __Pyx_RaiseTooManyValuesError(2);
        else __Pyx_RaiseNeedMoreValuesError(PyList_GET_SIZE(sequence));
        {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1394; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      }
      __pyx_t_2 = PyList_GET_ITEM(sequence, 0); 
      __pyx_t_3 = PyList_GET_ITEM(sequence, 1); 
    }
    __Pyx_INCREF(__pyx_t_2);
    __Pyx_INCREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  } else {
    Py_ssize_t index = -1;
    __pyx_t_4 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1394; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __pyx_t_5 = Py_TYPE(__pyx_t_4)->tp_iternext;
    index = 0; __pyx_t_2 = __pyx_t_5(__pyx_t_4); if (unlikely(!__pyx_t_2)) goto __pyx_L6_unpacking_failed;
    __Pyx_GOTREF(__pyx_t_2);
    index = 1; __pyx_t_3 = __pyx_t_5(__pyx_t_4); if (unlikely(!__pyx_t_3)) goto __pyx_L6_unpacking_failed;
    __Pyx_GOTREF(__pyx_t_3);
    if (__Pyx_IternextUnpackEndCheck(__pyx_t_5(__pyx_t_4), 2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1394; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    goto __pyx_L7_unpacking_done;
    __pyx_L6_unpacking_failed:;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    if (PyErr_Occurred() && PyErr_ExceptionMatches(PyExc_StopIteration)) PyErr_Clear();
    if (!PyErr_Occurred()) __Pyx_RaiseNeedMoreValuesError(index);
    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1394; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __pyx_L7_unpacking_done:;
  }
  __pyx_t_6 = __Pyx_PyIndex_AsSsize_t(__pyx_t_2); if (unlikely((__pyx_t_6 == (Py_ssize_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1394; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_7 = __Pyx_PyIndex_AsSsize_t(__pyx_t_3); if (unlikely((__pyx_t_7 == (Py_ssize_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1394; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_v_K = __pyx_t_6;
  __pyx_v_N = __pyx_t_7;

  /* "pandas/src/generated.pyx":1396
 *     K, N = (<object> values).shape
 * 
 *     if limit is None:             # <<<<<<<<<<<<<<
 *         lim = N
 *     else:
 */
  __pyx_t_8 = (__pyx_v_limit == Py_None);
  if (__pyx_t_8) {

    /* "pandas/src/generated.pyx":1397
 * 
 *     if limit is None:
 *         lim = N             # <<<<<<<<<<<<<<
 *     else:
 *         if limit < 0:
 */
    __pyx_v_lim = __pyx_v_N;
    goto __pyx_L8;
  }
  /*else*/ {

    /* "pandas/src/generated.pyx":1399
 *         lim = N
 *     else:
 *         if limit < 0:             # <<<<<<<<<<<<<<
 *             raise ValueError('Limit must be non-negative')
 *         lim = limit
 */
    __pyx_t_1 = PyObject_RichCompare(__pyx_v_limit, __pyx_int_0, Py_LT); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1399; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_8 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_8 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1399; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    if (__pyx_t_8) {

      /* "pandas/src/generated.pyx":1400
 *     else:
 *         if limit < 0:
 *             raise ValueError('Limit must be non-negative')             # <<<<<<<<<<<<<<
 *         lim = limit
 * 
 */
      __pyx_t_1 = PyObject_Call(__pyx_builtin_ValueError, ((PyObject *)__pyx_k_tuple_41), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1400; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_Raise(__pyx_t_1, 0, 0, 0);
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1400; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      goto __pyx_L9;
    }
    __pyx_L9:;

    /* "pandas/src/generated.pyx":1401
 *         if limit < 0:
 *             raise ValueError('Limit must be non-negative')
 *         lim = limit             # <<<<<<<<<<<<<<
 * 
 *     for j in range(K):
 */
    __pyx_t_9 = __Pyx_PyInt_AsInt(__pyx_v_limit); if (unlikely((__pyx_t_9 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1401; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __pyx_v_lim = __pyx_t_9;
  }
  __pyx_L8:;

  /* "pandas/src/generated.pyx":1403
 *         lim = limit
 * 
 *     for j in range(K):             # <<<<<<<<<<<<<<
 *         fill_count = 0
 *         val = values[j, N - 1]
 */
  __pyx_t_7 = __pyx_v_K;
  for (__pyx_t_6 = 0; __pyx_t_6 < __pyx_t_7; __pyx_t_6+=1) {
    __pyx_v_j = __pyx_t_6;

    /* "pandas/src/generated.pyx":1404
 * 
 *     for j in range(K):
 *         fill_count = 0             # <<<<<<<<<<<<<<
 *         val = values[j, N - 1]
 *         for i in range(N - 1, -1 , -1):
 */
    __pyx_v_fill_count = 0;

    /* "pandas/src/generated.pyx":1405
 *     for j in range(K):
 *         fill_count = 0
 *         val = values[j, N - 1]             # <<<<<<<<<<<<<<
 *         for i in range(N - 1, -1 , -1):
 *             if mask[j, i]:
 */
    __pyx_t_10 = __pyx_v_j;
    __pyx_t_11 = (__pyx_v_N - 1);
    __pyx_v_val = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_uint8_t *, __pyx_bstruct_values.buf, __pyx_t_10, __pyx_bstride_0_values, __pyx_t_11, __pyx_bstride_1_values));

    /* "pandas/src/generated.pyx":1406
 *         fill_count = 0
 *         val = values[j, N - 1]
 *         for i in range(N - 1, -1 , -1):             # <<<<<<<<<<<<<<
 *             if mask[j, i]:
 *                 if fill_count >= lim:
 */
    for (__pyx_t_12 = (__pyx_v_N - 1); __pyx_t_12 > -1; __pyx_t_12-=1) {
      __pyx_v_i = __pyx_t_12;

      /* "pandas/src/generated.pyx":1407
 *         val = values[j, N - 1]
 *         for i in range(N - 1, -1 , -1):
 *             if mask[j, i]:             # <<<<<<<<<<<<<<
 *                 if fill_count >= lim:
 *                     continue
 */
      __pyx_t_13 = __pyx_v_j;
      __pyx_t_14 = __pyx_v_i;
      __pyx_t_15 = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_uint8_t *, __pyx_bstruct_mask.buf, __pyx_t_13, __pyx_bstride_0_mask, __pyx_t_14, __pyx_bstride_1_mask));
      if (__pyx_t_15) {

        /* "pandas/src/generated.pyx":1408
 *         for i in range(N - 1, -1 , -1):
 *             if mask[j, i]:
 *                 if fill_count >= lim:             # <<<<<<<<<<<<<<
 *                     continue
 *                 fill_count += 1
 */
        __pyx_t_8 = (__pyx_v_fill_count >= __pyx_v_lim);
        if (__pyx_t_8) {

          /* "pandas/src/generated.pyx":1409
 *             if mask[j, i]:
 *                 if fill_count >= lim:
 *                     continue             # <<<<<<<<<<<<<<
 *                 fill_count += 1
 *                 values[j, i] = val
 */
          goto __pyx_L12_continue;
          goto __pyx_L15;
        }
        __pyx_L15:;

        /* "pandas/src/generated.pyx":1410
 *                 if fill_count >= lim:
 *                     continue
 *                 fill_count += 1             # <<<<<<<<<<<<<<
 *                 values[j, i] = val
 *             else:
 */
        __pyx_v_fill_count = (__pyx_v_fill_count + 1);

        /* "pandas/src/generated.pyx":1411
 *                     continue
 *                 fill_count += 1
 *                 values[j, i] = val             # <<<<<<<<<<<<<<
 *             else:
 *                 fill_count = 0
 */
        __pyx_t_16 = __pyx_v_j;
        __pyx_t_17 = __pyx_v_i;
        *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_uint8_t *, __pyx_bstruct_values.buf, __pyx_t_16, __pyx_bstride_0_values, __pyx_t_17, __pyx_bstride_1_values) = __pyx_v_val;
        goto __pyx_L14;
      }
      /*else*/ {

        /* "pandas/src/generated.pyx":1413
 *                 values[j, i] = val
 *             else:
 *                 fill_count = 0             # <<<<<<<<<<<<<<
 *                 val = values[j, i]
 * 
 */
        __pyx_v_fill_count = 0;

        /* "pandas/src/generated.pyx":1414
 *             else:
 *                 fill_count = 0
 *                 val = values[j, i]             # <<<<<<<<<<<<<<
 * 
 * @cython.wraparound(False)
 */
        __pyx_t_18 = __pyx_v_j;
        __pyx_t_19 = __pyx_v_i;
        __pyx_v_val = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_uint8_t *, __pyx_bstruct_values.buf, __pyx_t_18, __pyx_bstride_0_values, __pyx_t_19, __pyx_bstride_1_values));
      }
      __pyx_L14:;
      __pyx_L12_continue:;
    }
  }

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  { PyObject *__pyx_type, *__pyx_value, *__pyx_tb;
    __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);
    __Pyx_SafeReleaseBuffer(&__pyx_bstruct_mask);
    __Pyx_SafeReleaseBuffer(&__pyx_bstruct_values);
  __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);}
  __Pyx_AddTraceback("pandas._algos.backfill_2d_inplace_bool", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  goto __pyx_L2;
  __pyx_L0:;
  __Pyx_SafeReleaseBuffer(&__pyx_bstruct_mask);
  __Pyx_SafeReleaseBuffer(&__pyx_bstruct_values);
  __pyx_L2:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "pandas/src/generated.pyx":1417
 * 
 * @cython.wraparound(False)
 * def take_1d_float64(ndarray[float64_t] values,             # <<<<<<<<<<<<<<
 *                      ndarray[int64_t] indexer,
 *                      out=None, fill_value=np.nan):
 */

static PyObject *__pyx_pf_6pandas_6_algos_40take_1d_float64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_6pandas_6_algos_40take_1d_float64 = {__Pyx_NAMESTR("take_1d_float64"), (PyCFunction)__pyx_pf_6pandas_6_algos_40take_1d_float64, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(0)};
static PyObject *__pyx_pf_6pandas_6_algos_40take_1d_float64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyArrayObject *__pyx_v_values = 0;
  PyArrayObject *__pyx_v_indexer = 0;
  PyObject *__pyx_v_out = 0;
  PyObject *__pyx_v_fill_value = 0;
  Py_ssize_t __pyx_v_i;
  Py_ssize_t __pyx_v_n;
  Py_ssize_t __pyx_v_idx;
  PyArrayObject *__pyx_v_outbuf = 0;
  __pyx_t_5numpy_float64_t __pyx_v_fv;
  Py_buffer __pyx_bstruct_outbuf;
  Py_ssize_t __pyx_bstride_0_outbuf = 0;
  Py_ssize_t __pyx_bshape_0_outbuf = 0;
  Py_buffer __pyx_bstruct_indexer;
  Py_ssize_t __pyx_bstride_0_indexer = 0;
  Py_ssize_t __pyx_bshape_0_indexer = 0;
  Py_buffer __pyx_bstruct_values;
  Py_ssize_t __pyx_bstride_0_values = 0;
  Py_ssize_t __pyx_bshape_0_values = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  Py_ssize_t __pyx_t_1;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  PyArrayObject *__pyx_t_7 = NULL;
  int __pyx_t_8;
  PyObject *__pyx_t_9 = NULL;
  PyObject *__pyx_t_10 = NULL;
  PyObject *__pyx_t_11 = NULL;
  int __pyx_t_12;
  Py_ssize_t __pyx_t_13;
  Py_ssize_t __pyx_t_14;
  Py_ssize_t __pyx_t_15;
  Py_ssize_t __pyx_t_16;
  __pyx_t_5numpy_float64_t __pyx_t_17;
  Py_ssize_t __pyx_t_18;
  Py_ssize_t __pyx_t_19;
  Py_ssize_t __pyx_t_20;
  Py_ssize_t __pyx_t_21;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__values,&__pyx_n_s__indexer,&__pyx_n_s__out,&__pyx_n_s__fill_value,0};
  __Pyx_RefNannySetupContext("take_1d_float64");
  __pyx_self = __pyx_self;
  {
    PyObject* values[4] = {0,0,0,0};

    /* "pandas/src/generated.pyx":1419
 * def take_1d_float64(ndarray[float64_t] values,
 *                      ndarray[int64_t] indexer,
 *                      out=None, fill_value=np.nan):             # <<<<<<<<<<<<<<
 *     cdef:
 *         Py_ssize_t i, n, idx
 */
    values[2] = ((PyObject *)Py_None);
    values[3] = __pyx_k_42;
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  0:
        values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__values);
        if (likely(values[0])) kw_args--;
        else goto __pyx_L5_argtuple_error;
        case  1:
        values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__indexer);
        if (likely(values[1])) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("take_1d_float64", 0, 2, 4, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1417; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
        }
        case  2:
        if (kw_args > 0) {
          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__out);
          if (value) { values[2] = value; kw_args--; }
        }
        case  3:
        if (kw_args > 0) {
          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__fill_value);
          if (value) { values[3] = value; kw_args--; }
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "take_1d_float64") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1417; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
    } else {
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_values = ((PyArrayObject *)values[0]);
    __pyx_v_indexer = ((PyArrayObject *)values[1]);
    __pyx_v_out = values[2];
    __pyx_v_fill_value = values[3];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("take_1d_float64", 0, 2, 4, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1417; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("pandas._algos.take_1d_float64", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_bstruct_outbuf.buf = NULL;
  __pyx_bstruct_values.buf = NULL;
  __pyx_bstruct_indexer.buf = NULL;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_values), __pyx_ptype_5numpy_ndarray, 1, "values", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1417; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_indexer), __pyx_ptype_5numpy_ndarray, 1, "indexer", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1418; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_values, (PyObject*)__pyx_v_values, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1417; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  }
  __pyx_bstride_0_values = __pyx_bstruct_values.strides[0];
  __pyx_bshape_0_values = __pyx_bstruct_values.shape[0];
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_indexer, (PyObject*)__pyx_v_indexer, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1417; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  }
  __pyx_bstride_0_indexer = __pyx_bstruct_indexer.strides[0];
  __pyx_bshape_0_indexer = __pyx_bstruct_indexer.shape[0];

  /* "pandas/src/generated.pyx":1425
 *         float64_t fv
 * 
 *     n = len(indexer)             # <<<<<<<<<<<<<<
 * 
 *     if out is None:
 */
  __pyx_t_1 = PyObject_Length(((PyObject *)__pyx_v_indexer)); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1425; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_v_n = __pyx_t_1;

  /* "pandas/src/generated.pyx":1427
 *     n = len(indexer)
 * 
 *     if out is None:             # <<<<<<<<<<<<<<
 *         outbuf = np.empty(n, dtype=values.dtype)
 *     else:
 */
  __pyx_t_2 = (__pyx_v_out == Py_None);
  if (__pyx_t_2) {

    /* "pandas/src/generated.pyx":1428
 * 
 *     if out is None:
 *         outbuf = np.empty(n, dtype=values.dtype)             # <<<<<<<<<<<<<<
 *     else:
 *         outbuf = out
 */
    __pyx_t_3 = __Pyx_GetName(__pyx_m, __pyx_n_s__np); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1428; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_4 = PyObject_GetAttr(__pyx_t_3, __pyx_n_s__empty); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1428; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __pyx_t_3 = PyInt_FromSsize_t(__pyx_v_n); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1428; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1428; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(((PyObject *)__pyx_t_5));
    PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_3);
    __Pyx_GIVEREF(__pyx_t_3);
    __pyx_t_3 = 0;
    __pyx_t_3 = PyDict_New(); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1428; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(((PyObject *)__pyx_t_3));
    __pyx_t_6 = PyObject_GetAttr(((PyObject *)__pyx_v_values), __pyx_n_s__dtype); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1428; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_6);
    if (PyDict_SetItem(__pyx_t_3, ((PyObject *)__pyx_n_s__dtype), __pyx_t_6) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1428; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    __pyx_t_6 = PyEval_CallObjectWithKeywords(__pyx_t_4, ((PyObject *)__pyx_t_5), ((PyObject *)__pyx_t_3)); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1428; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_6);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_DECREF(((PyObject *)__pyx_t_5)); __pyx_t_5 = 0;
    __Pyx_DECREF(((PyObject *)__pyx_t_3)); __pyx_t_3 = 0;
    if (!(likely(((__pyx_t_6) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_6, __pyx_ptype_5numpy_ndarray))))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1428; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __pyx_t_7 = ((PyArrayObject *)__pyx_t_6);
    {
      __Pyx_BufFmt_StackElem __pyx_stack[1];
      __Pyx_SafeReleaseBuffer(&__pyx_bstruct_outbuf);
      __pyx_t_8 = __Pyx_GetBufferAndValidate(&__pyx_bstruct_outbuf, (PyObject*)__pyx_t_7, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack);
      if (unlikely(__pyx_t_8 < 0)) {
        PyErr_Fetch(&__pyx_t_9, &__pyx_t_10, &__pyx_t_11);
        if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_outbuf, (PyObject*)__pyx_v_outbuf, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) {
          Py_XDECREF(__pyx_t_9); Py_XDECREF(__pyx_t_10); Py_XDECREF(__pyx_t_11);
          __Pyx_RaiseBufferFallbackError();
        } else {
          PyErr_Restore(__pyx_t_9, __pyx_t_10, __pyx_t_11);
        }
      }
      __pyx_bstride_0_outbuf = __pyx_bstruct_outbuf.strides[0];
      __pyx_bshape_0_outbuf = __pyx_bstruct_outbuf.shape[0];
      if (unlikely(__pyx_t_8 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1428; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    }
    __pyx_t_7 = 0;
    __pyx_v_outbuf = ((PyArrayObject *)__pyx_t_6);
    __pyx_t_6 = 0;
    goto __pyx_L6;
  }
  /*else*/ {

    /* "pandas/src/generated.pyx":1430
 *         outbuf = np.empty(n, dtype=values.dtype)
 *     else:
 *         outbuf = out             # <<<<<<<<<<<<<<
 * 
 *     if False and _checknan(fill_value):
 */
    if (!(likely(((__pyx_v_out) == Py_None) || likely(__Pyx_TypeTest(__pyx_v_out, __pyx_ptype_5numpy_ndarray))))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1430; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __pyx_t_7 = ((PyArrayObject *)__pyx_v_out);
    {
      __Pyx_BufFmt_StackElem __pyx_stack[1];
      __Pyx_SafeReleaseBuffer(&__pyx_bstruct_outbuf);
      __pyx_t_8 = __Pyx_GetBufferAndValidate(&__pyx_bstruct_outbuf, (PyObject*)__pyx_t_7, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack);
      if (unlikely(__pyx_t_8 < 0)) {
        PyErr_Fetch(&__pyx_t_11, &__pyx_t_10, &__pyx_t_9);
        if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_outbuf, (PyObject*)__pyx_v_outbuf, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) {
          Py_XDECREF(__pyx_t_11); Py_XDECREF(__pyx_t_10); Py_XDECREF(__pyx_t_9);
          __Pyx_RaiseBufferFallbackError();
        } else {
          PyErr_Restore(__pyx_t_11, __pyx_t_10, __pyx_t_9);
        }
      }
      __pyx_bstride_0_outbuf = __pyx_bstruct_outbuf.strides[0];
      __pyx_bshape_0_outbuf = __pyx_bstruct_outbuf.shape[0];
      if (unlikely(__pyx_t_8 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1430; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    }
    __pyx_t_7 = 0;
    __Pyx_INCREF(__pyx_v_out);
    __pyx_v_outbuf = ((PyArrayObject *)__pyx_v_out);
  }
  __pyx_L6:;

  /* "pandas/src/generated.pyx":1432
 *         outbuf = out
 * 
 *     if False and _checknan(fill_value):             # <<<<<<<<<<<<<<
 *         for i in range(n):
 *             idx = indexer[i]
 */
  if (0) {
    __pyx_t_2 = __pyx_f_4util__checknan(__pyx_v_fill_value);
    __pyx_t_12 = __pyx_t_2;
  } else {
    __pyx_t_12 = 0;
  }
  if (__pyx_t_12) {

    /* "pandas/src/generated.pyx":1433
 * 
 *     if False and _checknan(fill_value):
 *         for i in range(n):             # <<<<<<<<<<<<<<
 *             idx = indexer[i]
 *             if idx == -1:
 */
    __pyx_t_1 = __pyx_v_n;
    for (__pyx_t_13 = 0; __pyx_t_13 < __pyx_t_1; __pyx_t_13+=1) {
      __pyx_v_i = __pyx_t_13;

      /* "pandas/src/generated.pyx":1434
 *     if False and _checknan(fill_value):
 *         for i in range(n):
 *             idx = indexer[i]             # <<<<<<<<<<<<<<
 *             if idx == -1:
 *                 raise ValueError('No NA values allowed')
 */
      __pyx_t_14 = __pyx_v_i;
      __pyx_t_8 = -1;
      if (__pyx_t_14 < 0) {
        __pyx_t_8 = 0;
      } else if (unlikely(__pyx_t_14 >= __pyx_bshape_0_indexer)) __pyx_t_8 = 0;
      if (unlikely(__pyx_t_8 != -1)) {
        __Pyx_RaiseBufferIndexError(__pyx_t_8);
        {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1434; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      }
      __pyx_v_idx = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_bstruct_indexer.buf, __pyx_t_14, __pyx_bstride_0_indexer));

      /* "pandas/src/generated.pyx":1435
 *         for i in range(n):
 *             idx = indexer[i]
 *             if idx == -1:             # <<<<<<<<<<<<<<
 *                 raise ValueError('No NA values allowed')
 *             else:
 */
      __pyx_t_12 = (__pyx_v_idx == -1);
      if (__pyx_t_12) {

        /* "pandas/src/generated.pyx":1436
 *             idx = indexer[i]
 *             if idx == -1:
 *                 raise ValueError('No NA values allowed')             # <<<<<<<<<<<<<<
 *             else:
 *                 outbuf[i] = values[idx]
 */
        __pyx_t_6 = PyObject_Call(__pyx_builtin_ValueError, ((PyObject *)__pyx_k_tuple_44), NULL); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1436; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_GOTREF(__pyx_t_6);
        __Pyx_Raise(__pyx_t_6, 0, 0, 0);
        __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
        {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1436; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        goto __pyx_L10;
      }
      /*else*/ {

        /* "pandas/src/generated.pyx":1438
 *                 raise ValueError('No NA values allowed')
 *             else:
 *                 outbuf[i] = values[idx]             # <<<<<<<<<<<<<<
 *     else:
 *         fv = fill_value
 */
        __pyx_t_15 = __pyx_v_idx;
        __pyx_t_8 = -1;
        if (__pyx_t_15 < 0) {
          __pyx_t_8 = 0;
        } else if (unlikely(__pyx_t_15 >= __pyx_bshape_0_values)) __pyx_t_8 = 0;
        if (unlikely(__pyx_t_8 != -1)) {
          __Pyx_RaiseBufferIndexError(__pyx_t_8);
          {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1438; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        }
        __pyx_t_16 = __pyx_v_i;
        __pyx_t_8 = -1;
        if (__pyx_t_16 < 0) {
          __pyx_t_8 = 0;
        } else if (unlikely(__pyx_t_16 >= __pyx_bshape_0_outbuf)) __pyx_t_8 = 0;
        if (unlikely(__pyx_t_8 != -1)) {
          __Pyx_RaiseBufferIndexError(__pyx_t_8);
          {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1438; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        }
        *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_outbuf.buf, __pyx_t_16, __pyx_bstride_0_outbuf) = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_values.buf, __pyx_t_15, __pyx_bstride_0_values));
      }
      __pyx_L10:;
    }
    goto __pyx_L7;
  }
  /*else*/ {

    /* "pandas/src/generated.pyx":1440
 *                 outbuf[i] = values[idx]
 *     else:
 *         fv = fill_value             # <<<<<<<<<<<<<<
 *         for i in range(n):
 *             idx = indexer[i]
 */
    __pyx_t_17 = __pyx_PyFloat_AsDouble(__pyx_v_fill_value); if (unlikely((__pyx_t_17 == (npy_float64)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1440; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __pyx_v_fv = __pyx_t_17;

    /* "pandas/src/generated.pyx":1441
 *     else:
 *         fv = fill_value
 *         for i in range(n):             # <<<<<<<<<<<<<<
 *             idx = indexer[i]
 *             if idx == -1:
 */
    __pyx_t_1 = __pyx_v_n;
    for (__pyx_t_13 = 0; __pyx_t_13 < __pyx_t_1; __pyx_t_13+=1) {
      __pyx_v_i = __pyx_t_13;

      /* "pandas/src/generated.pyx":1442
 *         fv = fill_value
 *         for i in range(n):
 *             idx = indexer[i]             # <<<<<<<<<<<<<<
 *             if idx == -1:
 *                 outbuf[i] = fv
 */
      __pyx_t_18 = __pyx_v_i;
      __pyx_t_8 = -1;
      if (__pyx_t_18 < 0) {
        __pyx_t_8 = 0;
      } else if (unlikely(__pyx_t_18 >= __pyx_bshape_0_indexer)) __pyx_t_8 = 0;
      if (unlikely(__pyx_t_8 != -1)) {
        __Pyx_RaiseBufferIndexError(__pyx_t_8);
        {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1442; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      }
      __pyx_v_idx = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_bstruct_indexer.buf, __pyx_t_18, __pyx_bstride_0_indexer));

      /* "pandas/src/generated.pyx":1443
 *         for i in range(n):
 *             idx = indexer[i]
 *             if idx == -1:             # <<<<<<<<<<<<<<
 *                 outbuf[i] = fv
 *             else:
 */
      __pyx_t_12 = (__pyx_v_idx == -1);
      if (__pyx_t_12) {

        /* "pandas/src/generated.pyx":1444
 *             idx = indexer[i]
 *             if idx == -1:
 *                 outbuf[i] = fv             # <<<<<<<<<<<<<<
 *             else:
 *                 outbuf[i] = values[idx]
 */
        __pyx_t_19 = __pyx_v_i;
        __pyx_t_8 = -1;
        if (__pyx_t_19 < 0) {
          __pyx_t_8 = 0;
        } else if (unlikely(__pyx_t_19 >= __pyx_bshape_0_outbuf)) __pyx_t_8 = 0;
        if (unlikely(__pyx_t_8 != -1)) {
          __Pyx_RaiseBufferIndexError(__pyx_t_8);
          {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1444; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        }
        *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_outbuf.buf, __pyx_t_19, __pyx_bstride_0_outbuf) = __pyx_v_fv;
        goto __pyx_L13;
      }
      /*else*/ {

        /* "pandas/src/generated.pyx":1446
 *                 outbuf[i] = fv
 *             else:
 *                 outbuf[i] = values[idx]             # <<<<<<<<<<<<<<
 * 
 * @cython.wraparound(False)
 */
        __pyx_t_20 = __pyx_v_idx;
        __pyx_t_8 = -1;
        if (__pyx_t_20 < 0) {
          __pyx_t_8 = 0;
        } else if (unlikely(__pyx_t_20 >= __pyx_bshape_0_values)) __pyx_t_8 = 0;
        if (unlikely(__pyx_t_8 != -1)) {
          __Pyx_RaiseBufferIndexError(__pyx_t_8);
          {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1446; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        }
        __pyx_t_21 = __pyx_v_i;
        __pyx_t_8 = -1;
        if (__pyx_t_21 < 0) {
          __pyx_t_8 = 0;
        } else if (unlikely(__pyx_t_21 >= __pyx_bshape_0_outbuf)) __pyx_t_8 = 0;
        if (unlikely(__pyx_t_8 != -1)) {
          __Pyx_RaiseBufferIndexError(__pyx_t_8);
          {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1446; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        }
        *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_outbuf.buf, __pyx_t_21, __pyx_bstride_0_outbuf) = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_values.buf, __pyx_t_20, __pyx_bstride_0_values));
      }
      __pyx_L13:;
    }
  }
  __pyx_L7:;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  { PyObject *__pyx_type, *__pyx_value, *__pyx_tb;
    __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);
    __Pyx_SafeReleaseBuffer(&__pyx_bstruct_outbuf);
    __Pyx_SafeReleaseBuffer(&__pyx_bstruct_indexer);
    __Pyx_SafeReleaseBuffer(&__pyx_bstruct_values);
  __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);}
  __Pyx_AddTraceback("pandas._algos.take_1d_float64", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  goto __pyx_L2;
  __pyx_L0:;
  __Pyx_SafeReleaseBuffer(&__pyx_bstruct_outbuf);
  __Pyx_SafeReleaseBuffer(&__pyx_bstruct_indexer);
  __Pyx_SafeReleaseBuffer(&__pyx_bstruct_values);
  __pyx_L2:;
  __Pyx_XDECREF((PyObject *)__pyx_v_outbuf);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "pandas/src/generated.pyx":1449
 * 
 * @cython.wraparound(False)
 * def take_1d_object(ndarray[object] values,             # <<<<<<<<<<<<<<
 *                      ndarray[int64_t] indexer,
 *                      out=None, fill_value=np.nan):
 */

static PyObject *__pyx_pf_6pandas_6_algos_41take_1d_object(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_6pandas_6_algos_41take_1d_object = {__Pyx_NAMESTR("take_1d_object"), (PyCFunction)__pyx_pf_6pandas_6_algos_41take_1d_object, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(0)};
static PyObject *__pyx_pf_6pandas_6_algos_41take_1d_object(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyArrayObject *__pyx_v_values = 0;
  PyArrayObject *__pyx_v_indexer = 0;
  PyObject *__pyx_v_out = 0;
  PyObject *__pyx_v_fill_value = 0;
  Py_ssize_t __pyx_v_i;
  Py_ssize_t __pyx_v_n;
  Py_ssize_t __pyx_v_idx;
  PyArrayObject *__pyx_v_outbuf = 0;
  PyObject *__pyx_v_fv = 0;
  Py_buffer __pyx_bstruct_outbuf;
  Py_ssize_t __pyx_bstride_0_outbuf = 0;
  Py_ssize_t __pyx_bshape_0_outbuf = 0;
  Py_buffer __pyx_bstruct_indexer;
  Py_ssize_t __pyx_bstride_0_indexer = 0;
  Py_ssize_t __pyx_bshape_0_indexer = 0;
  Py_buffer __pyx_bstruct_values;
  Py_ssize_t __pyx_bstride_0_values = 0;
  Py_ssize_t __pyx_bshape_0_values = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  Py_ssize_t __pyx_t_1;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  PyArrayObject *__pyx_t_7 = NULL;
  int __pyx_t_8;
  PyObject *__pyx_t_9 = NULL;
  PyObject *__pyx_t_10 = NULL;
  PyObject *__pyx_t_11 = NULL;
  int __pyx_t_12;
  Py_ssize_t __pyx_t_13;
  Py_ssize_t __pyx_t_14;
  Py_ssize_t __pyx_t_15;
  Py_ssize_t __pyx_t_16;
  PyObject **__pyx_t_17;
  Py_ssize_t __pyx_t_18;
  Py_ssize_t __pyx_t_19;
  Py_ssize_t __pyx_t_20;
  Py_ssize_t __pyx_t_21;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__values,&__pyx_n_s__indexer,&__pyx_n_s__out,&__pyx_n_s__fill_value,0};
  __Pyx_RefNannySetupContext("take_1d_object");
  __pyx_self = __pyx_self;
  {
    PyObject* values[4] = {0,0,0,0};

    /* "pandas/src/generated.pyx":1451
 * def take_1d_object(ndarray[object] values,
 *                      ndarray[int64_t] indexer,
 *                      out=None, fill_value=np.nan):             # <<<<<<<<<<<<<<
 *     cdef:
 *         Py_ssize_t i, n, idx
 */
    values[2] = ((PyObject *)Py_None);
    values[3] = __pyx_k_45;
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  0:
        values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__values);
        if (likely(values[0])) kw_args--;
        else goto __pyx_L5_argtuple_error;
        case  1:
        values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__indexer);
        if (likely(values[1])) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("take_1d_object", 0, 2, 4, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1449; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
        }
        case  2:
        if (kw_args > 0) {
          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__out);
          if (value) { values[2] = value; kw_args--; }
        }
        case  3:
        if (kw_args > 0) {
          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__fill_value);
          if (value) { values[3] = value; kw_args--; }
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "take_1d_object") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1449; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
    } else {
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_values = ((PyArrayObject *)values[0]);
    __pyx_v_indexer = ((PyArrayObject *)values[1]);
    __pyx_v_out = values[2];
    __pyx_v_fill_value = values[3];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("take_1d_object", 0, 2, 4, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1449; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("pandas._algos.take_1d_object", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_bstruct_outbuf.buf = NULL;
  __pyx_bstruct_values.buf = NULL;
  __pyx_bstruct_indexer.buf = NULL;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_values), __pyx_ptype_5numpy_ndarray, 1, "values", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1449; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_indexer), __pyx_ptype_5numpy_ndarray, 1, "indexer", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1450; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_values, (PyObject*)__pyx_v_values, &__Pyx_TypeInfo_object, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1449; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  }
  __pyx_bstride_0_values = __pyx_bstruct_values.strides[0];
  __pyx_bshape_0_values = __pyx_bstruct_values.shape[0];
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_indexer, (PyObject*)__pyx_v_indexer, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1449; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  }
  __pyx_bstride_0_indexer = __pyx_bstruct_indexer.strides[0];
  __pyx_bshape_0_indexer = __pyx_bstruct_indexer.shape[0];

  /* "pandas/src/generated.pyx":1457
 *         object fv
 * 
 *     n = len(indexer)             # <<<<<<<<<<<<<<
 * 
 *     if out is None:
 */
  __pyx_t_1 = PyObject_Length(((PyObject *)__pyx_v_indexer)); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1457; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_v_n = __pyx_t_1;

  /* "pandas/src/generated.pyx":1459
 *     n = len(indexer)
 * 
 *     if out is None:             # <<<<<<<<<<<<<<
 *         outbuf = np.empty(n, dtype=values.dtype)
 *     else:
 */
  __pyx_t_2 = (__pyx_v_out == Py_None);
  if (__pyx_t_2) {

    /* "pandas/src/generated.pyx":1460
 * 
 *     if out is None:
 *         outbuf = np.empty(n, dtype=values.dtype)             # <<<<<<<<<<<<<<
 *     else:
 *         outbuf = out
 */
    __pyx_t_3 = __Pyx_GetName(__pyx_m, __pyx_n_s__np); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1460; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_4 = PyObject_GetAttr(__pyx_t_3, __pyx_n_s__empty); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1460; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __pyx_t_3 = PyInt_FromSsize_t(__pyx_v_n); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1460; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1460; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(((PyObject *)__pyx_t_5));
    PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_3);
    __Pyx_GIVEREF(__pyx_t_3);
    __pyx_t_3 = 0;
    __pyx_t_3 = PyDict_New(); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1460; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(((PyObject *)__pyx_t_3));
    __pyx_t_6 = PyObject_GetAttr(((PyObject *)__pyx_v_values), __pyx_n_s__dtype); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1460; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_6);
    if (PyDict_SetItem(__pyx_t_3, ((PyObject *)__pyx_n_s__dtype), __pyx_t_6) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1460; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    __pyx_t_6 = PyEval_CallObjectWithKeywords(__pyx_t_4, ((PyObject *)__pyx_t_5), ((PyObject *)__pyx_t_3)); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1460; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_6);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_DECREF(((PyObject *)__pyx_t_5)); __pyx_t_5 = 0;
    __Pyx_DECREF(((PyObject *)__pyx_t_3)); __pyx_t_3 = 0;
    if (!(likely(((__pyx_t_6) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_6, __pyx_ptype_5numpy_ndarray))))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1460; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __pyx_t_7 = ((PyArrayObject *)__pyx_t_6);
    {
      __Pyx_BufFmt_StackElem __pyx_stack[1];
      __Pyx_SafeReleaseBuffer(&__pyx_bstruct_outbuf);
      __pyx_t_8 = __Pyx_GetBufferAndValidate(&__pyx_bstruct_outbuf, (PyObject*)__pyx_t_7, &__Pyx_TypeInfo_object, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack);
      if (unlikely(__pyx_t_8 < 0)) {
        PyErr_Fetch(&__pyx_t_9, &__pyx_t_10, &__pyx_t_11);
        if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_outbuf, (PyObject*)__pyx_v_outbuf, &__Pyx_TypeInfo_object, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) {
          Py_XDECREF(__pyx_t_9); Py_XDECREF(__pyx_t_10); Py_XDECREF(__pyx_t_11);
          __Pyx_RaiseBufferFallbackError();
        } else {
          PyErr_Restore(__pyx_t_9, __pyx_t_10, __pyx_t_11);
        }
      }
      __pyx_bstride_0_outbuf = __pyx_bstruct_outbuf.strides[0];
      __pyx_bshape_0_outbuf = __pyx_bstruct_outbuf.shape[0];
      if (unlikely(__pyx_t_8 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1460; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    }
    __pyx_t_7 = 0;
    __pyx_v_outbuf = ((PyArrayObject *)__pyx_t_6);
    __pyx_t_6 = 0;
    goto __pyx_L6;
  }
  /*else*/ {

    /* "pandas/src/generated.pyx":1462
 *         outbuf = np.empty(n, dtype=values.dtype)
 *     else:
 *         outbuf = out             # <<<<<<<<<<<<<<
 * 
 *     if False and _checknan(fill_value):
 */
    if (!(likely(((__pyx_v_out) == Py_None) || likely(__Pyx_TypeTest(__pyx_v_out, __pyx_ptype_5numpy_ndarray))))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1462; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __pyx_t_7 = ((PyArrayObject *)__pyx_v_out);
    {
      __Pyx_BufFmt_StackElem __pyx_stack[1];
      __Pyx_SafeReleaseBuffer(&__pyx_bstruct_outbuf);
      __pyx_t_8 = __Pyx_GetBufferAndValidate(&__pyx_bstruct_outbuf, (PyObject*)__pyx_t_7, &__Pyx_TypeInfo_object, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack);
      if (unlikely(__pyx_t_8 < 0)) {
        PyErr_Fetch(&__pyx_t_11, &__pyx_t_10, &__pyx_t_9);
        if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_outbuf, (PyObject*)__pyx_v_outbuf, &__Pyx_TypeInfo_object, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) {
          Py_XDECREF(__pyx_t_11); Py_XDECREF(__pyx_t_10); Py_XDECREF(__pyx_t_9);
          __Pyx_RaiseBufferFallbackError();
        } else {
          PyErr_Restore(__pyx_t_11, __pyx_t_10, __pyx_t_9);
        }
      }
      __pyx_bstride_0_outbuf = __pyx_bstruct_outbuf.strides[0];
      __pyx_bshape_0_outbuf = __pyx_bstruct_outbuf.shape[0];
      if (unlikely(__pyx_t_8 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1462; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    }
    __pyx_t_7 = 0;
    __Pyx_INCREF(__pyx_v_out);
    __pyx_v_outbuf = ((PyArrayObject *)__pyx_v_out);
  }
  __pyx_L6:;

  /* "pandas/src/generated.pyx":1464
 *         outbuf = out
 * 
 *     if False and _checknan(fill_value):             # <<<<<<<<<<<<<<
 *         for i in range(n):
 *             idx = indexer[i]
 */
  if (0) {
    __pyx_t_2 = __pyx_f_4util__checknan(__pyx_v_fill_value);
    __pyx_t_12 = __pyx_t_2;
  } else {
    __pyx_t_12 = 0;
  }
  if (__pyx_t_12) {

    /* "pandas/src/generated.pyx":1465
 * 
 *     if False and _checknan(fill_value):
 *         for i in range(n):             # <<<<<<<<<<<<<<
 *             idx = indexer[i]
 *             if idx == -1:
 */
    __pyx_t_1 = __pyx_v_n;
    for (__pyx_t_13 = 0; __pyx_t_13 < __pyx_t_1; __pyx_t_13+=1) {
      __pyx_v_i = __pyx_t_13;

      /* "pandas/src/generated.pyx":1466
 *     if False and _checknan(fill_value):
 *         for i in range(n):
 *             idx = indexer[i]             # <<<<<<<<<<<<<<
 *             if idx == -1:
 *                 raise ValueError('No NA values allowed')
 */
      __pyx_t_14 = __pyx_v_i;
      __pyx_t_8 = -1;
      if (__pyx_t_14 < 0) {
        __pyx_t_8 = 0;
      } else if (unlikely(__pyx_t_14 >= __pyx_bshape_0_indexer)) __pyx_t_8 = 0;
      if (unlikely(__pyx_t_8 != -1)) {
        __Pyx_RaiseBufferIndexError(__pyx_t_8);
        {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1466; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      }
      __pyx_v_idx = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_bstruct_indexer.buf, __pyx_t_14, __pyx_bstride_0_indexer));

      /* "pandas/src/generated.pyx":1467
 *         for i in range(n):
 *             idx = indexer[i]
 *             if idx == -1:             # <<<<<<<<<<<<<<
 *                 raise ValueError('No NA values allowed')
 *             else:
 */
      __pyx_t_12 = (__pyx_v_idx == -1);
      if (__pyx_t_12) {

        /* "pandas/src/generated.pyx":1468
 *             idx = indexer[i]
 *             if idx == -1:
 *                 raise ValueError('No NA values allowed')             # <<<<<<<<<<<<<<
 *             else:
 *                 outbuf[i] = values[idx]
 */
        __pyx_t_6 = PyObject_Call(__pyx_builtin_ValueError, ((PyObject *)__pyx_k_tuple_46), NULL); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1468; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_GOTREF(__pyx_t_6);
        __Pyx_Raise(__pyx_t_6, 0, 0, 0);
        __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
        {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1468; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        goto __pyx_L10;
      }
      /*else*/ {

        /* "pandas/src/generated.pyx":1470
 *                 raise ValueError('No NA values allowed')
 *             else:
 *                 outbuf[i] = values[idx]             # <<<<<<<<<<<<<<
 *     else:
 *         fv = fill_value
 */
        __pyx_t_15 = __pyx_v_idx;
        __pyx_t_8 = -1;
        if (__pyx_t_15 < 0) {
          __pyx_t_8 = 0;
        } else if (unlikely(__pyx_t_15 >= __pyx_bshape_0_values)) __pyx_t_8 = 0;
        if (unlikely(__pyx_t_8 != -1)) {
          __Pyx_RaiseBufferIndexError(__pyx_t_8);
          {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1470; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        }
        __pyx_t_6 = *__Pyx_BufPtrStrided1d(PyObject **, __pyx_bstruct_values.buf, __pyx_t_15, __pyx_bstride_0_values);
        __Pyx_INCREF((PyObject*)__pyx_t_6);
        __pyx_t_16 = __pyx_v_i;
        __pyx_t_8 = -1;
        if (__pyx_t_16 < 0) {
          __pyx_t_8 = 0;
        } else if (unlikely(__pyx_t_16 >= __pyx_bshape_0_outbuf)) __pyx_t_8 = 0;
        if (unlikely(__pyx_t_8 != -1)) {
          __Pyx_RaiseBufferIndexError(__pyx_t_8);
          {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1470; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        }
        __pyx_t_17 = __Pyx_BufPtrStrided1d(PyObject **, __pyx_bstruct_outbuf.buf, __pyx_t_16, __pyx_bstride_0_outbuf);
        __Pyx_GOTREF(*__pyx_t_17);
        __Pyx_DECREF(*__pyx_t_17); __Pyx_INCREF(__pyx_t_6);
        *__pyx_t_17 = __pyx_t_6;
        __Pyx_GIVEREF(*__pyx_t_17);
        __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      }
      __pyx_L10:;
    }
    goto __pyx_L7;
  }
  /*else*/ {

    /* "pandas/src/generated.pyx":1472
 *                 outbuf[i] = values[idx]
 *     else:
 *         fv = fill_value             # <<<<<<<<<<<<<<
 *         for i in range(n):
 *             idx = indexer[i]
 */
    __Pyx_INCREF(__pyx_v_fill_value);
    __pyx_v_fv = __pyx_v_fill_value;

    /* "pandas/src/generated.pyx":1473
 *     else:
 *         fv = fill_value
 *         for i in range(n):             # <<<<<<<<<<<<<<
 *             idx = indexer[i]
 *             if idx == -1:
 */
    __pyx_t_1 = __pyx_v_n;
    for (__pyx_t_13 = 0; __pyx_t_13 < __pyx_t_1; __pyx_t_13+=1) {
      __pyx_v_i = __pyx_t_13;

      /* "pandas/src/generated.pyx":1474
 *         fv = fill_value
 *         for i in range(n):
 *             idx = indexer[i]             # <<<<<<<<<<<<<<
 *             if idx == -1:
 *                 outbuf[i] = fv
 */
      __pyx_t_18 = __pyx_v_i;
      __pyx_t_8 = -1;
      if (__pyx_t_18 < 0) {
        __pyx_t_8 = 0;
      } else if (unlikely(__pyx_t_18 >= __pyx_bshape_0_indexer)) __pyx_t_8 = 0;
      if (unlikely(__pyx_t_8 != -1)) {
        __Pyx_RaiseBufferIndexError(__pyx_t_8);
        {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1474; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      }
      __pyx_v_idx = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_bstruct_indexer.buf, __pyx_t_18, __pyx_bstride_0_indexer));

      /* "pandas/src/generated.pyx":1475
 *         for i in range(n):
 *             idx = indexer[i]
 *             if idx == -1:             # <<<<<<<<<<<<<<
 *                 outbuf[i] = fv
 *             else:
 */
      __pyx_t_12 = (__pyx_v_idx == -1);
      if (__pyx_t_12) {

        /* "pandas/src/generated.pyx":1476
 *             idx = indexer[i]
 *             if idx == -1:
 *                 outbuf[i] = fv             # <<<<<<<<<<<<<<
 *             else:
 *                 outbuf[i] = values[idx]
 */
        __pyx_t_19 = __pyx_v_i;
        __pyx_t_8 = -1;
        if (__pyx_t_19 < 0) {
          __pyx_t_8 = 0;
        } else if (unlikely(__pyx_t_19 >= __pyx_bshape_0_outbuf)) __pyx_t_8 = 0;
        if (unlikely(__pyx_t_8 != -1)) {
          __Pyx_RaiseBufferIndexError(__pyx_t_8);
          {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1476; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        }
        __pyx_t_17 = __Pyx_BufPtrStrided1d(PyObject **, __pyx_bstruct_outbuf.buf, __pyx_t_19, __pyx_bstride_0_outbuf);
        __Pyx_GOTREF(*__pyx_t_17);
        __Pyx_DECREF(*__pyx_t_17); __Pyx_INCREF(__pyx_v_fv);
        *__pyx_t_17 = __pyx_v_fv;
        __Pyx_GIVEREF(*__pyx_t_17);
        goto __pyx_L13;
      }
      /*else*/ {

        /* "pandas/src/generated.pyx":1478
 *                 outbuf[i] = fv
 *             else:
 *                 outbuf[i] = values[idx]             # <<<<<<<<<<<<<<
 * 
 * @cython.wraparound(False)
 */
        __pyx_t_20 = __pyx_v_idx;
        __pyx_t_8 = -1;
        if (__pyx_t_20 < 0) {
          __pyx_t_8 = 0;
        } else if (unlikely(__pyx_t_20 >= __pyx_bshape_0_values)) __pyx_t_8 = 0;
        if (unlikely(__pyx_t_8 != -1)) {
          __Pyx_RaiseBufferIndexError(__pyx_t_8);
          {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1478; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        }
        __pyx_t_6 = *__Pyx_BufPtrStrided1d(PyObject **, __pyx_bstruct_values.buf, __pyx_t_20, __pyx_bstride_0_values);
        __Pyx_INCREF((PyObject*)__pyx_t_6);
        __pyx_t_21 = __pyx_v_i;
        __pyx_t_8 = -1;
        if (__pyx_t_21 < 0) {
          __pyx_t_8 = 0;
        } else if (unlikely(__pyx_t_21 >= __pyx_bshape_0_outbuf)) __pyx_t_8 = 0;
        if (unlikely(__pyx_t_8 != -1)) {
          __Pyx_RaiseBufferIndexError(__pyx_t_8);
          {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1478; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        }
        __pyx_t_17 = __Pyx_BufPtrStrided1d(PyObject **, __pyx_bstruct_outbuf.buf, __pyx_t_21, __pyx_bstride_0_outbuf);
        __Pyx_GOTREF(*__pyx_t_17);
        __Pyx_DECREF(*__pyx_t_17); __Pyx_INCREF(__pyx_t_6);
        *__pyx_t_17 = __pyx_t_6;
        __Pyx_GIVEREF(*__pyx_t_17);
        __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      }
      __pyx_L13:;
    }
  }
  __pyx_L7:;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  { PyObject *__pyx_type, *__pyx_value, *__pyx_tb;
    __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);
    __Pyx_SafeReleaseBuffer(&__pyx_bstruct_outbuf);
    __Pyx_SafeReleaseBuffer(&__pyx_bstruct_indexer);
    __Pyx_SafeReleaseBuffer(&__pyx_bstruct_values);
  __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);}
  __Pyx_AddTraceback("pandas._algos.take_1d_object", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  goto __pyx_L2;
  __pyx_L0:;
  __Pyx_SafeReleaseBuffer(&__pyx_bstruct_outbuf);
  __Pyx_SafeReleaseBuffer(&__pyx_bstruct_indexer);
  __Pyx_SafeReleaseBuffer(&__pyx_bstruct_values);
  __pyx_L2:;
  __Pyx_XDECREF((PyObject *)__pyx_v_outbuf);
  __Pyx_XDECREF(__pyx_v_fv);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "pandas/src/generated.pyx":1481
 * 
 * @cython.wraparound(False)
 * def take_1d_int32(ndarray[int32_t] values,             # <<<<<<<<<<<<<<
 *                      ndarray[int64_t] indexer,
 *                      out=None, fill_value=np.nan):
 */

static PyObject *__pyx_pf_6pandas_6_algos_42take_1d_int32(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_6pandas_6_algos_42take_1d_int32 = {__Pyx_NAMESTR("take_1d_int32"), (PyCFunction)__pyx_pf_6pandas_6_algos_42take_1d_int32, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(0)};
static PyObject *__pyx_pf_6pandas_6_algos_42take_1d_int32(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyArrayObject *__pyx_v_values = 0;
  PyArrayObject *__pyx_v_indexer = 0;
  PyObject *__pyx_v_out = 0;
  PyObject *__pyx_v_fill_value = 0;
  Py_ssize_t __pyx_v_i;
  Py_ssize_t __pyx_v_n;
  Py_ssize_t __pyx_v_idx;
  PyArrayObject *__pyx_v_outbuf = 0;
  __pyx_t_5numpy_int32_t __pyx_v_fv;
  Py_buffer __pyx_bstruct_outbuf;
  Py_ssize_t __pyx_bstride_0_outbuf = 0;
  Py_ssize_t __pyx_bshape_0_outbuf = 0;
  Py_buffer __pyx_bstruct_indexer;
  Py_ssize_t __pyx_bstride_0_indexer = 0;
  Py_ssize_t __pyx_bshape_0_indexer = 0;
  Py_buffer __pyx_bstruct_values;
  Py_ssize_t __pyx_bstride_0_values = 0;
  Py_ssize_t __pyx_bshape_0_values = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  Py_ssize_t __pyx_t_1;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  PyArrayObject *__pyx_t_7 = NULL;
  int __pyx_t_8;
  PyObject *__pyx_t_9 = NULL;
  PyObject *__pyx_t_10 = NULL;
  PyObject *__pyx_t_11 = NULL;
  int __pyx_t_12;
  Py_ssize_t __pyx_t_13;
  Py_ssize_t __pyx_t_14;
  Py_ssize_t __pyx_t_15;
  Py_ssize_t __pyx_t_16;
  __pyx_t_5numpy_int32_t __pyx_t_17;
  Py_ssize_t __pyx_t_18;
  Py_ssize_t __pyx_t_19;
  Py_ssize_t __pyx_t_20;
  Py_ssize_t __pyx_t_21;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__values,&__pyx_n_s__indexer,&__pyx_n_s__out,&__pyx_n_s__fill_value,0};
  __Pyx_RefNannySetupContext("take_1d_int32");
  __pyx_self = __pyx_self;
  {
    PyObject* values[4] = {0,0,0,0};

    /* "pandas/src/generated.pyx":1483
 * def take_1d_int32(ndarray[int32_t] values,
 *                      ndarray[int64_t] indexer,
 *                      out=None, fill_value=np.nan):             # <<<<<<<<<<<<<<
 *     cdef:
 *         Py_ssize_t i, n, idx
 */
    values[2] = ((PyObject *)Py_None);
    values[3] = __pyx_k_47;
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  0:
        values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__values);
        if (likely(values[0])) kw_args--;
        else goto __pyx_L5_argtuple_error;
        case  1:
        values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__indexer);
        if (likely(values[1])) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("take_1d_int32", 0, 2, 4, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1481; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
        }
        case  2:
        if (kw_args > 0) {
          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__out);
          if (value) { values[2] = value; kw_args--; }
        }
        case  3:
        if (kw_args > 0) {
          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__fill_value);
          if (value) { values[3] = value; kw_args--; }
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "take_1d_int32") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1481; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
    } else {
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_values = ((PyArrayObject *)values[0]);
    __pyx_v_indexer = ((PyArrayObject *)values[1]);
    __pyx_v_out = values[2];
    __pyx_v_fill_value = values[3];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("take_1d_int32", 0, 2, 4, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1481; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("pandas._algos.take_1d_int32", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_bstruct_outbuf.buf = NULL;
  __pyx_bstruct_values.buf = NULL;
  __pyx_bstruct_indexer.buf = NULL;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_values), __pyx_ptype_5numpy_ndarray, 1, "values", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1481; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_indexer), __pyx_ptype_5numpy_ndarray, 1, "indexer", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1482; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_values, (PyObject*)__pyx_v_values, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int32_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1481; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  }
  __pyx_bstride_0_values = __pyx_bstruct_values.strides[0];
  __pyx_bshape_0_values = __pyx_bstruct_values.shape[0];
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_indexer, (PyObject*)__pyx_v_indexer, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1481; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  }
  __pyx_bstride_0_indexer = __pyx_bstruct_indexer.strides[0];
  __pyx_bshape_0_indexer = __pyx_bstruct_indexer.shape[0];

  /* "pandas/src/generated.pyx":1489
 *         int32_t fv
 * 
 *     n = len(indexer)             # <<<<<<<<<<<<<<
 * 
 *     if out is None:
 */
  __pyx_t_1 = PyObject_Length(((PyObject *)__pyx_v_indexer)); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1489; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_v_n = __pyx_t_1;

  /* "pandas/src/generated.pyx":1491
 *     n = len(indexer)
 * 
 *     if out is None:             # <<<<<<<<<<<<<<
 *         outbuf = np.empty(n, dtype=values.dtype)
 *     else:
 */
  __pyx_t_2 = (__pyx_v_out == Py_None);
  if (__pyx_t_2) {

    /* "pandas/src/generated.pyx":1492
 * 
 *     if out is None:
 *         outbuf = np.empty(n, dtype=values.dtype)             # <<<<<<<<<<<<<<
 *     else:
 *         outbuf = out
 */
    __pyx_t_3 = __Pyx_GetName(__pyx_m, __pyx_n_s__np); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1492; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_4 = PyObject_GetAttr(__pyx_t_3, __pyx_n_s__empty); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1492; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __pyx_t_3 = PyInt_FromSsize_t(__pyx_v_n); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1492; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1492; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(((PyObject *)__pyx_t_5));
    PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_3);
    __Pyx_GIVEREF(__pyx_t_3);
    __pyx_t_3 = 0;
    __pyx_t_3 = PyDict_New(); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1492; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(((PyObject *)__pyx_t_3));
    __pyx_t_6 = PyObject_GetAttr(((PyObject *)__pyx_v_values), __pyx_n_s__dtype); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1492; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_6);
    if (PyDict_SetItem(__pyx_t_3, ((PyObject *)__pyx_n_s__dtype), __pyx_t_6) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1492; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    __pyx_t_6 = PyEval_CallObjectWithKeywords(__pyx_t_4, ((PyObject *)__pyx_t_5), ((PyObject *)__pyx_t_3)); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1492; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_6);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_DECREF(((PyObject *)__pyx_t_5)); __pyx_t_5 = 0;
    __Pyx_DECREF(((PyObject *)__pyx_t_3)); __pyx_t_3 = 0;
    if (!(likely(((__pyx_t_6) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_6, __pyx_ptype_5numpy_ndarray))))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1492; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __pyx_t_7 = ((PyArrayObject *)__pyx_t_6);
    {
      __Pyx_BufFmt_StackElem __pyx_stack[1];
      __Pyx_SafeReleaseBuffer(&__pyx_bstruct_outbuf);
      __pyx_t_8 = __Pyx_GetBufferAndValidate(&__pyx_bstruct_outbuf, (PyObject*)__pyx_t_7, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int32_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack);
      if (unlikely(__pyx_t_8 < 0)) {
        PyErr_Fetch(&__pyx_t_9, &__pyx_t_10, &__pyx_t_11);
        if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_outbuf, (PyObject*)__pyx_v_outbuf, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int32_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) {
          Py_XDECREF(__pyx_t_9); Py_XDECREF(__pyx_t_10); Py_XDECREF(__pyx_t_11);
          __Pyx_RaiseBufferFallbackError();
        } else {
          PyErr_Restore(__pyx_t_9, __pyx_t_10, __pyx_t_11);
        }
      }
      __pyx_bstride_0_outbuf = __pyx_bstruct_outbuf.strides[0];
      __pyx_bshape_0_outbuf = __pyx_bstruct_outbuf.shape[0];
      if (unlikely(__pyx_t_8 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1492; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    }
    __pyx_t_7 = 0;
    __pyx_v_outbuf = ((PyArrayObject *)__pyx_t_6);
    __pyx_t_6 = 0;
    goto __pyx_L6;
  }
  /*else*/ {

    /* "pandas/src/generated.pyx":1494
 *         outbuf = np.empty(n, dtype=values.dtype)
 *     else:
 *         outbuf = out             # <<<<<<<<<<<<<<
 * 
 *     if True and _checknan(fill_value):
 */
    if (!(likely(((__pyx_v_out) == Py_None) || likely(__Pyx_TypeTest(__pyx_v_out, __pyx_ptype_5numpy_ndarray))))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1494; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __pyx_t_7 = ((PyArrayObject *)__pyx_v_out);
    {
      __Pyx_BufFmt_StackElem __pyx_stack[1];
      __Pyx_SafeReleaseBuffer(&__pyx_bstruct_outbuf);
      __pyx_t_8 = __Pyx_GetBufferAndValidate(&__pyx_bstruct_outbuf, (PyObject*)__pyx_t_7, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int32_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack);
      if (unlikely(__pyx_t_8 < 0)) {
        PyErr_Fetch(&__pyx_t_11, &__pyx_t_10, &__pyx_t_9);
        if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_outbuf, (PyObject*)__pyx_v_outbuf, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int32_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) {
          Py_XDECREF(__pyx_t_11); Py_XDECREF(__pyx_t_10); Py_XDECREF(__pyx_t_9);
          __Pyx_RaiseBufferFallbackError();
        } else {
          PyErr_Restore(__pyx_t_11, __pyx_t_10, __pyx_t_9);
        }
      }
      __pyx_bstride_0_outbuf = __pyx_bstruct_outbuf.strides[0];
      __pyx_bshape_0_outbuf = __pyx_bstruct_outbuf.shape[0];
      if (unlikely(__pyx_t_8 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1494; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    }
    __pyx_t_7 = 0;
    __Pyx_INCREF(__pyx_v_out);
    __pyx_v_outbuf = ((PyArrayObject *)__pyx_v_out);
  }
  __pyx_L6:;

  /* "pandas/src/generated.pyx":1496
 *         outbuf = out
 * 
 *     if True and _checknan(fill_value):             # <<<<<<<<<<<<<<
 *         for i in range(n):
 *             idx = indexer[i]
 */
  if (1) {
    __pyx_t_2 = __pyx_f_4util__checknan(__pyx_v_fill_value);
    __pyx_t_12 = __pyx_t_2;
  } else {
    __pyx_t_12 = 1;
  }
  if (__pyx_t_12) {

    /* "pandas/src/generated.pyx":1497
 * 
 *     if True and _checknan(fill_value):
 *         for i in range(n):             # <<<<<<<<<<<<<<
 *             idx = indexer[i]
 *             if idx == -1:
 */
    __pyx_t_1 = __pyx_v_n;
    for (__pyx_t_13 = 0; __pyx_t_13 < __pyx_t_1; __pyx_t_13+=1) {
      __pyx_v_i = __pyx_t_13;

      /* "pandas/src/generated.pyx":1498
 *     if True and _checknan(fill_value):
 *         for i in range(n):
 *             idx = indexer[i]             # <<<<<<<<<<<<<<
 *             if idx == -1:
 *                 raise ValueError('No NA values allowed')
 */
      __pyx_t_14 = __pyx_v_i;
      __pyx_t_8 = -1;
      if (__pyx_t_14 < 0) {
        __pyx_t_8 = 0;
      } else if (unlikely(__pyx_t_14 >= __pyx_bshape_0_indexer)) __pyx_t_8 = 0;
      if (unlikely(__pyx_t_8 != -1)) {
        __Pyx_RaiseBufferIndexError(__pyx_t_8);
        {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1498; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      }
      __pyx_v_idx = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_bstruct_indexer.buf, __pyx_t_14, __pyx_bstride_0_indexer));

      /* "pandas/src/generated.pyx":1499
 *         for i in range(n):
 *             idx = indexer[i]
 *             if idx == -1:             # <<<<<<<<<<<<<<
 *                 raise ValueError('No NA values allowed')
 *             else:
 */
      __pyx_t_12 = (__pyx_v_idx == -1);
      if (__pyx_t_12) {

        /* "pandas/src/generated.pyx":1500
 *             idx = indexer[i]
 *             if idx == -1:
 *                 raise ValueError('No NA values allowed')             # <<<<<<<<<<<<<<
 *             else:
 *                 outbuf[i] = values[idx]
 */
        __pyx_t_6 = PyObject_Call(__pyx_builtin_ValueError, ((PyObject *)__pyx_k_tuple_48), NULL); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1500; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_GOTREF(__pyx_t_6);
        __Pyx_Raise(__pyx_t_6, 0, 0, 0);
        __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
        {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1500; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        goto __pyx_L10;
      }
      /*else*/ {

        /* "pandas/src/generated.pyx":1502
 *                 raise ValueError('No NA values allowed')
 *             else:
 *                 outbuf[i] = values[idx]             # <<<<<<<<<<<<<<
 *     else:
 *         fv = fill_value
 */
        __pyx_t_15 = __pyx_v_idx;
        __pyx_t_8 = -1;
        if (__pyx_t_15 < 0) {
          __pyx_t_8 = 0;
        } else if (unlikely(__pyx_t_15 >= __pyx_bshape_0_values)) __pyx_t_8 = 0;
        if (unlikely(__pyx_t_8 != -1)) {
          __Pyx_RaiseBufferIndexError(__pyx_t_8);
          {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1502; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        }
        __pyx_t_16 = __pyx_v_i;
        __pyx_t_8 = -1;
        if (__pyx_t_16 < 0) {
          __pyx_t_8 = 0;
        } else if (unlikely(__pyx_t_16 >= __pyx_bshape_0_outbuf)) __pyx_t_8 = 0;
        if (unlikely(__pyx_t_8 != -1)) {
          __Pyx_RaiseBufferIndexError(__pyx_t_8);
          {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1502; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        }
        *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int32_t *, __pyx_bstruct_outbuf.buf, __pyx_t_16, __pyx_bstride_0_outbuf) = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int32_t *, __pyx_bstruct_values.buf, __pyx_t_15, __pyx_bstride_0_values));
      }
      __pyx_L10:;
    }
    goto __pyx_L7;
  }
  /*else*/ {

    /* "pandas/src/generated.pyx":1504
 *                 outbuf[i] = values[idx]
 *     else:
 *         fv = fill_value             # <<<<<<<<<<<<<<
 *         for i in range(n):
 *             idx = indexer[i]
 */
    __pyx_t_17 = __Pyx_PyInt_from_py_npy_int32(__pyx_v_fill_value); if (unlikely((__pyx_t_17 == (npy_int32)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1504; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __pyx_v_fv = __pyx_t_17;

    /* "pandas/src/generated.pyx":1505
 *     else:
 *         fv = fill_value
 *         for i in range(n):             # <<<<<<<<<<<<<<
 *             idx = indexer[i]
 *             if idx == -1:
 */
    __pyx_t_1 = __pyx_v_n;
    for (__pyx_t_13 = 0; __pyx_t_13 < __pyx_t_1; __pyx_t_13+=1) {
      __pyx_v_i = __pyx_t_13;

      /* "pandas/src/generated.pyx":1506
 *         fv = fill_value
 *         for i in range(n):
 *             idx = indexer[i]             # <<<<<<<<<<<<<<
 *             if idx == -1:
 *                 outbuf[i] = fv
 */
      __pyx_t_18 = __pyx_v_i;
      __pyx_t_8 = -1;
      if (__pyx_t_18 < 0) {
        __pyx_t_8 = 0;
      } else if (unlikely(__pyx_t_18 >= __pyx_bshape_0_indexer)) __pyx_t_8 = 0;
      if (unlikely(__pyx_t_8 != -1)) {
        __Pyx_RaiseBufferIndexError(__pyx_t_8);
        {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1506; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      }
      __pyx_v_idx = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_bstruct_indexer.buf, __pyx_t_18, __pyx_bstride_0_indexer));

      /* "pandas/src/generated.pyx":1507
 *         for i in range(n):
 *             idx = indexer[i]
 *             if idx == -1:             # <<<<<<<<<<<<<<
 *                 outbuf[i] = fv
 *             else:
 */
      __pyx_t_12 = (__pyx_v_idx == -1);
      if (__pyx_t_12) {

        /* "pandas/src/generated.pyx":1508
 *             idx = indexer[i]
 *             if idx == -1:
 *                 outbuf[i] = fv             # <<<<<<<<<<<<<<
 *             else:
 *                 outbuf[i] = values[idx]
 */
        __pyx_t_19 = __pyx_v_i;
        __pyx_t_8 = -1;
        if (__pyx_t_19 < 0) {
          __pyx_t_8 = 0;
        } else if (unlikely(__pyx_t_19 >= __pyx_bshape_0_outbuf)) __pyx_t_8 = 0;
        if (unlikely(__pyx_t_8 != -1)) {
          __Pyx_RaiseBufferIndexError(__pyx_t_8);
          {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1508; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        }
        *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int32_t *, __pyx_bstruct_outbuf.buf, __pyx_t_19, __pyx_bstride_0_outbuf) = __pyx_v_fv;
        goto __pyx_L13;
      }
      /*else*/ {

        /* "pandas/src/generated.pyx":1510
 *                 outbuf[i] = fv
 *             else:
 *                 outbuf[i] = values[idx]             # <<<<<<<<<<<<<<
 * 
 * @cython.wraparound(False)
 */
        __pyx_t_20 = __pyx_v_idx;
        __pyx_t_8 = -1;
        if (__pyx_t_20 < 0) {
          __pyx_t_8 = 0;
        } else if (unlikely(__pyx_t_20 >= __pyx_bshape_0_values)) __pyx_t_8 = 0;
        if (unlikely(__pyx_t_8 != -1)) {
          __Pyx_RaiseBufferIndexError(__pyx_t_8);
          {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1510; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        }
        __pyx_t_21 = __pyx_v_i;
        __pyx_t_8 = -1;
        if (__pyx_t_21 < 0) {
          __pyx_t_8 = 0;
        } else if (unlikely(__pyx_t_21 >= __pyx_bshape_0_outbuf)) __pyx_t_8 = 0;
        if (unlikely(__pyx_t_8 != -1)) {
          __Pyx_RaiseBufferIndexError(__pyx_t_8);
          {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1510; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        }
        *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int32_t *, __pyx_bstruct_outbuf.buf, __pyx_t_21, __pyx_bstride_0_outbuf) = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int32_t *, __pyx_bstruct_values.buf, __pyx_t_20, __pyx_bstride_0_values));
      }
      __pyx_L13:;
    }
  }
  __pyx_L7:;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  { PyObject *__pyx_type, *__pyx_value, *__pyx_tb;
    __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);
    __Pyx_SafeReleaseBuffer(&__pyx_bstruct_outbuf);
    __Pyx_SafeReleaseBuffer(&__pyx_bstruct_indexer);
    __Pyx_SafeReleaseBuffer(&__pyx_bstruct_values);
  __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);}
  __Pyx_AddTraceback("pandas._algos.take_1d_int32", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  goto __pyx_L2;
  __pyx_L0:;
  __Pyx_SafeReleaseBuffer(&__pyx_bstruct_outbuf);
  __Pyx_SafeReleaseBuffer(&__pyx_bstruct_indexer);
  __Pyx_SafeReleaseBuffer(&__pyx_bstruct_values);
  __pyx_L2:;
  __Pyx_XDECREF((PyObject *)__pyx_v_outbuf);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "pandas/src/generated.pyx":1513
 * 
 * @cython.wraparound(False)
 * def take_1d_int64(ndarray[int64_t] values,             # <<<<<<<<<<<<<<
 *                      ndarray[int64_t] indexer,
 *                      out=None, fill_value=np.nan):
 */

static PyObject *__pyx_pf_6pandas_6_algos_43take_1d_int64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_6pandas_6_algos_43take_1d_int64 = {__Pyx_NAMESTR("take_1d_int64"), (PyCFunction)__pyx_pf_6pandas_6_algos_43take_1d_int64, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(0)};
static PyObject *__pyx_pf_6pandas_6_algos_43take_1d_int64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyArrayObject *__pyx_v_values = 0;
  PyArrayObject *__pyx_v_indexer = 0;
  PyObject *__pyx_v_out = 0;
  PyObject *__pyx_v_fill_value = 0;
  Py_ssize_t __pyx_v_i;
  Py_ssize_t __pyx_v_n;
  Py_ssize_t __pyx_v_idx;
  PyArrayObject *__pyx_v_outbuf = 0;
  __pyx_t_5numpy_int64_t __pyx_v_fv;
  Py_buffer __pyx_bstruct_outbuf;
  Py_ssize_t __pyx_bstride_0_outbuf = 0;
  Py_ssize_t __pyx_bshape_0_outbuf = 0;
  Py_buffer __pyx_bstruct_indexer;
  Py_ssize_t __pyx_bstride_0_indexer = 0;
  Py_ssize_t __pyx_bshape_0_indexer = 0;
  Py_buffer __pyx_bstruct_values;
  Py_ssize_t __pyx_bstride_0_values = 0;
  Py_ssize_t __pyx_bshape_0_values = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  Py_ssize_t __pyx_t_1;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  PyArrayObject *__pyx_t_7 = NULL;
  int __pyx_t_8;
  PyObject *__pyx_t_9 = NULL;
  PyObject *__pyx_t_10 = NULL;
  PyObject *__pyx_t_11 = NULL;
  int __pyx_t_12;
  Py_ssize_t __pyx_t_13;
  Py_ssize_t __pyx_t_14;
  Py_ssize_t __pyx_t_15;
  Py_ssize_t __pyx_t_16;
  __pyx_t_5numpy_int64_t __pyx_t_17;
  Py_ssize_t __pyx_t_18;
  Py_ssize_t __pyx_t_19;
  Py_ssize_t __pyx_t_20;
  Py_ssize_t __pyx_t_21;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__values,&__pyx_n_s__indexer,&__pyx_n_s__out,&__pyx_n_s__fill_value,0};
  __Pyx_RefNannySetupContext("take_1d_int64");
  __pyx_self = __pyx_self;
  {
    PyObject* values[4] = {0,0,0,0};

    /* "pandas/src/generated.pyx":1515
 * def take_1d_int64(ndarray[int64_t] values,
 *                      ndarray[int64_t] indexer,
 *                      out=None, fill_value=np.nan):             # <<<<<<<<<<<<<<
 *     cdef:
 *         Py_ssize_t i, n, idx
 */
    values[2] = ((PyObject *)Py_None);
    values[3] = __pyx_k_49;
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  0:
        values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__values);
        if (likely(values[0])) kw_args--;
        else goto __pyx_L5_argtuple_error;
        case  1:
        values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__indexer);
        if (likely(values[1])) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("take_1d_int64", 0, 2, 4, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1513; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
        }
        case  2:
        if (kw_args > 0) {
          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__out);
          if (value) { values[2] = value; kw_args--; }
        }
        case  3:
        if (kw_args > 0) {
          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__fill_value);
          if (value) { values[3] = value; kw_args--; }
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "take_1d_int64") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1513; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
    } else {
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_values = ((PyArrayObject *)values[0]);
    __pyx_v_indexer = ((PyArrayObject *)values[1]);
    __pyx_v_out = values[2];
    __pyx_v_fill_value = values[3];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("take_1d_int64", 0, 2, 4, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1513; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("pandas._algos.take_1d_int64", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_bstruct_outbuf.buf = NULL;
  __pyx_bstruct_values.buf = NULL;
  __pyx_bstruct_indexer.buf = NULL;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_values), __pyx_ptype_5numpy_ndarray, 1, "values", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1513; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_indexer), __pyx_ptype_5numpy_ndarray, 1, "indexer", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1514; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_values, (PyObject*)__pyx_v_values, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1513; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  }
  __pyx_bstride_0_values = __pyx_bstruct_values.strides[0];
  __pyx_bshape_0_values = __pyx_bstruct_values.shape[0];
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_indexer, (PyObject*)__pyx_v_indexer, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1513; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  }
  __pyx_bstride_0_indexer = __pyx_bstruct_indexer.strides[0];
  __pyx_bshape_0_indexer = __pyx_bstruct_indexer.shape[0];

  /* "pandas/src/generated.pyx":1521
 *         int64_t fv
 * 
 *     n = len(indexer)             # <<<<<<<<<<<<<<
 * 
 *     if out is None:
 */
  __pyx_t_1 = PyObject_Length(((PyObject *)__pyx_v_indexer)); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1521; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_v_n = __pyx_t_1;

  /* "pandas/src/generated.pyx":1523
 *     n = len(indexer)
 * 
 *     if out is None:             # <<<<<<<<<<<<<<
 *         outbuf = np.empty(n, dtype=values.dtype)
 *     else:
 */
  __pyx_t_2 = (__pyx_v_out == Py_None);
  if (__pyx_t_2) {

    /* "pandas/src/generated.pyx":1524
 * 
 *     if out is None:
 *         outbuf = np.empty(n, dtype=values.dtype)             # <<<<<<<<<<<<<<
 *     else:
 *         outbuf = out
 */
    __pyx_t_3 = __Pyx_GetName(__pyx_m, __pyx_n_s__np); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1524; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_4 = PyObject_GetAttr(__pyx_t_3, __pyx_n_s__empty); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1524; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __pyx_t_3 = PyInt_FromSsize_t(__pyx_v_n); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1524; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1524; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(((PyObject *)__pyx_t_5));
    PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_3);
    __Pyx_GIVEREF(__pyx_t_3);
    __pyx_t_3 = 0;
    __pyx_t_3 = PyDict_New(); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1524; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(((PyObject *)__pyx_t_3));
    __pyx_t_6 = PyObject_GetAttr(((PyObject *)__pyx_v_values), __pyx_n_s__dtype); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1524; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_6);
    if (PyDict_SetItem(__pyx_t_3, ((PyObject *)__pyx_n_s__dtype), __pyx_t_6) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1524; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    __pyx_t_6 = PyEval_CallObjectWithKeywords(__pyx_t_4, ((PyObject *)__pyx_t_5), ((PyObject *)__pyx_t_3)); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1524; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_6);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_DECREF(((PyObject *)__pyx_t_5)); __pyx_t_5 = 0;
    __Pyx_DECREF(((PyObject *)__pyx_t_3)); __pyx_t_3 = 0;
    if (!(likely(((__pyx_t_6) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_6, __pyx_ptype_5numpy_ndarray))))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1524; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __pyx_t_7 = ((PyArrayObject *)__pyx_t_6);
    {
      __Pyx_BufFmt_StackElem __pyx_stack[1];
      __Pyx_SafeReleaseBuffer(&__pyx_bstruct_outbuf);
      __pyx_t_8 = __Pyx_GetBufferAndValidate(&__pyx_bstruct_outbuf, (PyObject*)__pyx_t_7, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack);
      if (unlikely(__pyx_t_8 < 0)) {
        PyErr_Fetch(&__pyx_t_9, &__pyx_t_10, &__pyx_t_11);
        if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_outbuf, (PyObject*)__pyx_v_outbuf, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) {
          Py_XDECREF(__pyx_t_9); Py_XDECREF(__pyx_t_10); Py_XDECREF(__pyx_t_11);
          __Pyx_RaiseBufferFallbackError();
        } else {
          PyErr_Restore(__pyx_t_9, __pyx_t_10, __pyx_t_11);
        }
      }
      __pyx_bstride_0_outbuf = __pyx_bstruct_outbuf.strides[0];
      __pyx_bshape_0_outbuf = __pyx_bstruct_outbuf.shape[0];
      if (unlikely(__pyx_t_8 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1524; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    }
    __pyx_t_7 = 0;
    __pyx_v_outbuf = ((PyArrayObject *)__pyx_t_6);
    __pyx_t_6 = 0;
    goto __pyx_L6;
  }
  /*else*/ {

    /* "pandas/src/generated.pyx":1526
 *         outbuf = np.empty(n, dtype=values.dtype)
 *     else:
 *         outbuf = out             # <<<<<<<<<<<<<<
 * 
 *     if True and _checknan(fill_value):
 */
    if (!(likely(((__pyx_v_out) == Py_None) || likely(__Pyx_TypeTest(__pyx_v_out, __pyx_ptype_5numpy_ndarray))))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1526; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __pyx_t_7 = ((PyArrayObject *)__pyx_v_out);
    {
      __Pyx_BufFmt_StackElem __pyx_stack[1];
      __Pyx_SafeReleaseBuffer(&__pyx_bstruct_outbuf);
      __pyx_t_8 = __Pyx_GetBufferAndValidate(&__pyx_bstruct_outbuf, (PyObject*)__pyx_t_7, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack);
      if (unlikely(__pyx_t_8 < 0)) {
        PyErr_Fetch(&__pyx_t_11, &__pyx_t_10, &__pyx_t_9);
        if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_outbuf, (PyObject*)__pyx_v_outbuf, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) {
          Py_XDECREF(__pyx_t_11); Py_XDECREF(__pyx_t_10); Py_XDECREF(__pyx_t_9);
          __Pyx_RaiseBufferFallbackError();
        } else {
          PyErr_Restore(__pyx_t_11, __pyx_t_10, __pyx_t_9);
        }
      }
      __pyx_bstride_0_outbuf = __pyx_bstruct_outbuf.strides[0];
      __pyx_bshape_0_outbuf = __pyx_bstruct_outbuf.shape[0];
      if (unlikely(__pyx_t_8 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1526; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    }
    __pyx_t_7 = 0;
    __Pyx_INCREF(__pyx_v_out);
    __pyx_v_outbuf = ((PyArrayObject *)__pyx_v_out);
  }
  __pyx_L6:;

  /* "pandas/src/generated.pyx":1528
 *         outbuf = out
 * 
 *     if True and _checknan(fill_value):             # <<<<<<<<<<<<<<
 *         for i in range(n):
 *             idx = indexer[i]
 */
  if (1) {
    __pyx_t_2 = __pyx_f_4util__checknan(__pyx_v_fill_value);
    __pyx_t_12 = __pyx_t_2;
  } else {
    __pyx_t_12 = 1;
  }
  if (__pyx_t_12) {

    /* "pandas/src/generated.pyx":1529
 * 
 *     if True and _checknan(fill_value):
 *         for i in range(n):             # <<<<<<<<<<<<<<
 *             idx = indexer[i]
 *             if idx == -1:
 */
    __pyx_t_1 = __pyx_v_n;
    for (__pyx_t_13 = 0; __pyx_t_13 < __pyx_t_1; __pyx_t_13+=1) {
      __pyx_v_i = __pyx_t_13;

      /* "pandas/src/generated.pyx":1530
 *     if True and _checknan(fill_value):
 *         for i in range(n):
 *             idx = indexer[i]             # <<<<<<<<<<<<<<
 *             if idx == -1:
 *                 raise ValueError('No NA values allowed')
 */
      __pyx_t_14 = __pyx_v_i;
      __pyx_t_8 = -1;
      if (__pyx_t_14 < 0) {
        __pyx_t_8 = 0;
      } else if (unlikely(__pyx_t_14 >= __pyx_bshape_0_indexer)) __pyx_t_8 = 0;
      if (unlikely(__pyx_t_8 != -1)) {
        __Pyx_RaiseBufferIndexError(__pyx_t_8);
        {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1530; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      }
      __pyx_v_idx = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_bstruct_indexer.buf, __pyx_t_14, __pyx_bstride_0_indexer));

      /* "pandas/src/generated.pyx":1531
 *         for i in range(n):
 *             idx = indexer[i]
 *             if idx == -1:             # <<<<<<<<<<<<<<
 *                 raise ValueError('No NA values allowed')
 *             else:
 */
      __pyx_t_12 = (__pyx_v_idx == -1);
      if (__pyx_t_12) {

        /* "pandas/src/generated.pyx":1532
 *             idx = indexer[i]
 *             if idx == -1:
 *                 raise ValueError('No NA values allowed')             # <<<<<<<<<<<<<<
 *             else:
 *                 outbuf[i] = values[idx]
 */
        __pyx_t_6 = PyObject_Call(__pyx_builtin_ValueError, ((PyObject *)__pyx_k_tuple_50), NULL); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1532; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_GOTREF(__pyx_t_6);
        __Pyx_Raise(__pyx_t_6, 0, 0, 0);
        __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
        {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1532; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        goto __pyx_L10;
      }
      /*else*/ {

        /* "pandas/src/generated.pyx":1534
 *                 raise ValueError('No NA values allowed')
 *             else:
 *                 outbuf[i] = values[idx]             # <<<<<<<<<<<<<<
 *     else:
 *         fv = fill_value
 */
        __pyx_t_15 = __pyx_v_idx;
        __pyx_t_8 = -1;
        if (__pyx_t_15 < 0) {
          __pyx_t_8 = 0;
        } else if (unlikely(__pyx_t_15 >= __pyx_bshape_0_values)) __pyx_t_8 = 0;
        if (unlikely(__pyx_t_8 != -1)) {
          __Pyx_RaiseBufferIndexError(__pyx_t_8);
          {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1534; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        }
        __pyx_t_16 = __pyx_v_i;
        __pyx_t_8 = -1;
        if (__pyx_t_16 < 0) {
          __pyx_t_8 = 0;
        } else if (unlikely(__pyx_t_16 >= __pyx_bshape_0_outbuf)) __pyx_t_8 = 0;
        if (unlikely(__pyx_t_8 != -1)) {
          __Pyx_RaiseBufferIndexError(__pyx_t_8);
          {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1534; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        }
        *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_bstruct_outbuf.buf, __pyx_t_16, __pyx_bstride_0_outbuf) = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_bstruct_values.buf, __pyx_t_15, __pyx_bstride_0_values));
      }
      __pyx_L10:;
    }
    goto __pyx_L7;
  }
  /*else*/ {

    /* "pandas/src/generated.pyx":1536
 *                 outbuf[i] = values[idx]
 *     else:
 *         fv = fill_value             # <<<<<<<<<<<<<<
 *         for i in range(n):
 *             idx = indexer[i]
 */
    __pyx_t_17 = __Pyx_PyInt_from_py_npy_int64(__pyx_v_fill_value); if (unlikely((__pyx_t_17 == (npy_int64)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1536; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __pyx_v_fv = __pyx_t_17;

    /* "pandas/src/generated.pyx":1537
 *     else:
 *         fv = fill_value
 *         for i in range(n):             # <<<<<<<<<<<<<<
 *             idx = indexer[i]
 *             if idx == -1:
 */
    __pyx_t_1 = __pyx_v_n;
    for (__pyx_t_13 = 0; __pyx_t_13 < __pyx_t_1; __pyx_t_13+=1) {
      __pyx_v_i = __pyx_t_13;

      /* "pandas/src/generated.pyx":1538
 *         fv = fill_value
 *         for i in range(n):
 *             idx = indexer[i]             # <<<<<<<<<<<<<<
 *             if idx == -1:
 *                 outbuf[i] = fv
 */
      __pyx_t_18 = __pyx_v_i;
      __pyx_t_8 = -1;
      if (__pyx_t_18 < 0) {
        __pyx_t_8 = 0;
      } else if (unlikely(__pyx_t_18 >= __pyx_bshape_0_indexer)) __pyx_t_8 = 0;
      if (unlikely(__pyx_t_8 != -1)) {
        __Pyx_RaiseBufferIndexError(__pyx_t_8);
        {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1538; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      }
      __pyx_v_idx = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_bstruct_indexer.buf, __pyx_t_18, __pyx_bstride_0_indexer));

      /* "pandas/src/generated.pyx":1539
 *         for i in range(n):
 *             idx = indexer[i]
 *             if idx == -1:             # <<<<<<<<<<<<<<
 *                 outbuf[i] = fv
 *             else:
 */
      __pyx_t_12 = (__pyx_v_idx == -1);
      if (__pyx_t_12) {

        /* "pandas/src/generated.pyx":1540
 *             idx = indexer[i]
 *             if idx == -1:
 *                 outbuf[i] = fv             # <<<<<<<<<<<<<<
 *             else:
 *                 outbuf[i] = values[idx]
 */
        __pyx_t_19 = __pyx_v_i;
        __pyx_t_8 = -1;
        if (__pyx_t_19 < 0) {
          __pyx_t_8 = 0;
        } else if (unlikely(__pyx_t_19 >= __pyx_bshape_0_outbuf)) __pyx_t_8 = 0;
        if (unlikely(__pyx_t_8 != -1)) {
          __Pyx_RaiseBufferIndexError(__pyx_t_8);
          {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1540; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        }
        *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_bstruct_outbuf.buf, __pyx_t_19, __pyx_bstride_0_outbuf) = __pyx_v_fv;
        goto __pyx_L13;
      }
      /*else*/ {

        /* "pandas/src/generated.pyx":1542
 *                 outbuf[i] = fv
 *             else:
 *                 outbuf[i] = values[idx]             # <<<<<<<<<<<<<<
 * 
 * @cython.wraparound(False)
 */
        __pyx_t_20 = __pyx_v_idx;
        __pyx_t_8 = -1;
        if (__pyx_t_20 < 0) {
          __pyx_t_8 = 0;
        } else if (unlikely(__pyx_t_20 >= __pyx_bshape_0_values)) __pyx_t_8 = 0;
        if (unlikely(__pyx_t_8 != -1)) {
          __Pyx_RaiseBufferIndexError(__pyx_t_8);
          {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1542; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        }
        __pyx_t_21 = __pyx_v_i;
        __pyx_t_8 = -1;
        if (__pyx_t_21 < 0) {
          __pyx_t_8 = 0;
        } else if (unlikely(__pyx_t_21 >= __pyx_bshape_0_outbuf)) __pyx_t_8 = 0;
        if (unlikely(__pyx_t_8 != -1)) {
          __Pyx_RaiseBufferIndexError(__pyx_t_8);
          {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1542; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        }
        *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_bstruct_outbuf.buf, __pyx_t_21, __pyx_bstride_0_outbuf) = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_bstruct_values.buf, __pyx_t_20, __pyx_bstride_0_values));
      }
      __pyx_L13:;
    }
  }
  __pyx_L7:;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  { PyObject *__pyx_type, *__pyx_value, *__pyx_tb;
    __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);
    __Pyx_SafeReleaseBuffer(&__pyx_bstruct_outbuf);
    __Pyx_SafeReleaseBuffer(&__pyx_bstruct_indexer);
    __Pyx_SafeReleaseBuffer(&__pyx_bstruct_values);
  __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);}
  __Pyx_AddTraceback("pandas._algos.take_1d_int64", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  goto __pyx_L2;
  __pyx_L0:;
  __Pyx_SafeReleaseBuffer(&__pyx_bstruct_outbuf);
  __Pyx_SafeReleaseBuffer(&__pyx_bstruct_indexer);
  __Pyx_SafeReleaseBuffer(&__pyx_bstruct_values);
  __pyx_L2:;
  __Pyx_XDECREF((PyObject *)__pyx_v_outbuf);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "pandas/src/generated.pyx":1545
 * 
 * @cython.wraparound(False)
 * def take_1d_bool(ndarray[uint8_t] values,             # <<<<<<<<<<<<<<
 *                      ndarray[int64_t] indexer,
 *                      out=None, fill_value=np.nan):
 */

static PyObject *__pyx_pf_6pandas_6_algos_44take_1d_bool(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_6pandas_6_algos_44take_1d_bool = {__Pyx_NAMESTR("take_1d_bool"), (PyCFunction)__pyx_pf_6pandas_6_algos_44take_1d_bool, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(0)};
static PyObject *__pyx_pf_6pandas_6_algos_44take_1d_bool(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyArrayObject *__pyx_v_values = 0;
  PyArrayObject *__pyx_v_indexer = 0;
  PyObject *__pyx_v_out = 0;
  PyObject *__pyx_v_fill_value = 0;
  Py_ssize_t __pyx_v_i;
  Py_ssize_t __pyx_v_n;
  Py_ssize_t __pyx_v_idx;
  PyArrayObject *__pyx_v_outbuf = 0;
  __pyx_t_5numpy_uint8_t __pyx_v_fv;
  Py_buffer __pyx_bstruct_outbuf;
  Py_ssize_t __pyx_bstride_0_outbuf = 0;
  Py_ssize_t __pyx_bshape_0_outbuf = 0;
  Py_buffer __pyx_bstruct_indexer;
  Py_ssize_t __pyx_bstride_0_indexer = 0;
  Py_ssize_t __pyx_bshape_0_indexer = 0;
  Py_buffer __pyx_bstruct_values;
  Py_ssize_t __pyx_bstride_0_values = 0;
  Py_ssize_t __pyx_bshape_0_values = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  Py_ssize_t __pyx_t_1;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  PyArrayObject *__pyx_t_7 = NULL;
  int __pyx_t_8;
  PyObject *__pyx_t_9 = NULL;
  PyObject *__pyx_t_10 = NULL;
  PyObject *__pyx_t_11 = NULL;
  int __pyx_t_12;
  Py_ssize_t __pyx_t_13;
  Py_ssize_t __pyx_t_14;
  Py_ssize_t __pyx_t_15;
  Py_ssize_t __pyx_t_16;
  __pyx_t_5numpy_uint8_t __pyx_t_17;
  Py_ssize_t __pyx_t_18;
  Py_ssize_t __pyx_t_19;
  Py_ssize_t __pyx_t_20;
  Py_ssize_t __pyx_t_21;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__values,&__pyx_n_s__indexer,&__pyx_n_s__out,&__pyx_n_s__fill_value,0};
  __Pyx_RefNannySetupContext("take_1d_bool");
  __pyx_self = __pyx_self;
  {
    PyObject* values[4] = {0,0,0,0};

    /* "pandas/src/generated.pyx":1547
 * def take_1d_bool(ndarray[uint8_t] values,
 *                      ndarray[int64_t] indexer,
 *                      out=None, fill_value=np.nan):             # <<<<<<<<<<<<<<
 *     cdef:
 *         Py_ssize_t i, n, idx
 */
    values[2] = ((PyObject *)Py_None);
    values[3] = __pyx_k_51;
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  0:
        values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__values);
        if (likely(values[0])) kw_args--;
        else goto __pyx_L5_argtuple_error;
        case  1:
        values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__indexer);
        if (likely(values[1])) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("take_1d_bool", 0, 2, 4, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1545; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
        }
        case  2:
        if (kw_args > 0) {
          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__out);
          if (value) { values[2] = value; kw_args--; }
        }
        case  3:
        if (kw_args > 0) {
          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__fill_value);
          if (value) { values[3] = value; kw_args--; }
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "take_1d_bool") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1545; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
    } else {
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_values = ((PyArrayObject *)values[0]);
    __pyx_v_indexer = ((PyArrayObject *)values[1]);
    __pyx_v_out = values[2];
    __pyx_v_fill_value = values[3];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("take_1d_bool", 0, 2, 4, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1545; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("pandas._algos.take_1d_bool", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_bstruct_outbuf.buf = NULL;
  __pyx_bstruct_values.buf = NULL;
  __pyx_bstruct_indexer.buf = NULL;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_values), __pyx_ptype_5numpy_ndarray, 1, "values", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1545; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_indexer), __pyx_ptype_5numpy_ndarray, 1, "indexer", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1546; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_values, (PyObject*)__pyx_v_values, &__Pyx_TypeInfo_nn___pyx_t_5numpy_uint8_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1545; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  }
  __pyx_bstride_0_values = __pyx_bstruct_values.strides[0];
  __pyx_bshape_0_values = __pyx_bstruct_values.shape[0];
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_indexer, (PyObject*)__pyx_v_indexer, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1545; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  }
  __pyx_bstride_0_indexer = __pyx_bstruct_indexer.strides[0];
  __pyx_bshape_0_indexer = __pyx_bstruct_indexer.shape[0];

  /* "pandas/src/generated.pyx":1553
 *         uint8_t fv
 * 
 *     n = len(indexer)             # <<<<<<<<<<<<<<
 * 
 *     if out is None:
 */
  __pyx_t_1 = PyObject_Length(((PyObject *)__pyx_v_indexer)); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1553; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_v_n = __pyx_t_1;

  /* "pandas/src/generated.pyx":1555
 *     n = len(indexer)
 * 
 *     if out is None:             # <<<<<<<<<<<<<<
 *         outbuf = np.empty(n, dtype=values.dtype)
 *     else:
 */
  __pyx_t_2 = (__pyx_v_out == Py_None);
  if (__pyx_t_2) {

    /* "pandas/src/generated.pyx":1556
 * 
 *     if out is None:
 *         outbuf = np.empty(n, dtype=values.dtype)             # <<<<<<<<<<<<<<
 *     else:
 *         outbuf = out
 */
    __pyx_t_3 = __Pyx_GetName(__pyx_m, __pyx_n_s__np); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1556; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_4 = PyObject_GetAttr(__pyx_t_3, __pyx_n_s__empty); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1556; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __pyx_t_3 = PyInt_FromSsize_t(__pyx_v_n); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1556; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1556; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(((PyObject *)__pyx_t_5));
    PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_3);
    __Pyx_GIVEREF(__pyx_t_3);
    __pyx_t_3 = 0;
    __pyx_t_3 = PyDict_New(); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1556; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(((PyObject *)__pyx_t_3));
    __pyx_t_6 = PyObject_GetAttr(((PyObject *)__pyx_v_values), __pyx_n_s__dtype); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1556; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_6);
    if (PyDict_SetItem(__pyx_t_3, ((PyObject *)__pyx_n_s__dtype), __pyx_t_6) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1556; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    __pyx_t_6 = PyEval_CallObjectWithKeywords(__pyx_t_4, ((PyObject *)__pyx_t_5), ((PyObject *)__pyx_t_3)); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1556; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_6);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_DECREF(((PyObject *)__pyx_t_5)); __pyx_t_5 = 0;
    __Pyx_DECREF(((PyObject *)__pyx_t_3)); __pyx_t_3 = 0;
    if (!(likely(((__pyx_t_6) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_6, __pyx_ptype_5numpy_ndarray))))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1556; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __pyx_t_7 = ((PyArrayObject *)__pyx_t_6);
    {
      __Pyx_BufFmt_StackElem __pyx_stack[1];
      __Pyx_SafeReleaseBuffer(&__pyx_bstruct_outbuf);
      __pyx_t_8 = __Pyx_GetBufferAndValidate(&__pyx_bstruct_outbuf, (PyObject*)__pyx_t_7, &__Pyx_TypeInfo_nn___pyx_t_5numpy_uint8_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack);
      if (unlikely(__pyx_t_8 < 0)) {
        PyErr_Fetch(&__pyx_t_9, &__pyx_t_10, &__pyx_t_11);
        if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_outbuf, (PyObject*)__pyx_v_outbuf, &__Pyx_TypeInfo_nn___pyx_t_5numpy_uint8_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) {
          Py_XDECREF(__pyx_t_9); Py_XDECREF(__pyx_t_10); Py_XDECREF(__pyx_t_11);
          __Pyx_RaiseBufferFallbackError();
        } else {
          PyErr_Restore(__pyx_t_9, __pyx_t_10, __pyx_t_11);
        }
      }
      __pyx_bstride_0_outbuf = __pyx_bstruct_outbuf.strides[0];
      __pyx_bshape_0_outbuf = __pyx_bstruct_outbuf.shape[0];
      if (unlikely(__pyx_t_8 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1556; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    }
    __pyx_t_7 = 0;
    __pyx_v_outbuf = ((PyArrayObject *)__pyx_t_6);
    __pyx_t_6 = 0;
    goto __pyx_L6;
  }
  /*else*/ {

    /* "pandas/src/generated.pyx":1558
 *         outbuf = np.empty(n, dtype=values.dtype)
 *     else:
 *         outbuf = out             # <<<<<<<<<<<<<<
 * 
 *     if True and _checknan(fill_value):
 */
    if (!(likely(((__pyx_v_out) == Py_None) || likely(__Pyx_TypeTest(__pyx_v_out, __pyx_ptype_5numpy_ndarray))))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1558; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __pyx_t_7 = ((PyArrayObject *)__pyx_v_out);
    {
      __Pyx_BufFmt_StackElem __pyx_stack[1];
      __Pyx_SafeReleaseBuffer(&__pyx_bstruct_outbuf);
      __pyx_t_8 = __Pyx_GetBufferAndValidate(&__pyx_bstruct_outbuf, (PyObject*)__pyx_t_7, &__Pyx_TypeInfo_nn___pyx_t_5numpy_uint8_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack);
      if (unlikely(__pyx_t_8 < 0)) {
        PyErr_Fetch(&__pyx_t_11, &__pyx_t_10, &__pyx_t_9);
        if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_outbuf, (PyObject*)__pyx_v_outbuf, &__Pyx_TypeInfo_nn___pyx_t_5numpy_uint8_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) {
          Py_XDECREF(__pyx_t_11); Py_XDECREF(__pyx_t_10); Py_XDECREF(__pyx_t_9);
          __Pyx_RaiseBufferFallbackError();
        } else {
          PyErr_Restore(__pyx_t_11, __pyx_t_10, __pyx_t_9);
        }
      }
      __pyx_bstride_0_outbuf = __pyx_bstruct_outbuf.strides[0];
      __pyx_bshape_0_outbuf = __pyx_bstruct_outbuf.shape[0];
      if (unlikely(__pyx_t_8 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1558; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    }
    __pyx_t_7 = 0;
    __Pyx_INCREF(__pyx_v_out);
    __pyx_v_outbuf = ((PyArrayObject *)__pyx_v_out);
  }
  __pyx_L6:;

  /* "pandas/src/generated.pyx":1560
 *         outbuf = out
 * 
 *     if True and _checknan(fill_value):             # <<<<<<<<<<<<<<
 *         for i in range(n):
 *             idx = indexer[i]
 */
  if (1) {
    __pyx_t_2 = __pyx_f_4util__checknan(__pyx_v_fill_value);
    __pyx_t_12 = __pyx_t_2;
  } else {
    __pyx_t_12 = 1;
  }
  if (__pyx_t_12) {

    /* "pandas/src/generated.pyx":1561
 * 
 *     if True and _checknan(fill_value):
 *         for i in range(n):             # <<<<<<<<<<<<<<
 *             idx = indexer[i]
 *             if idx == -1:
 */
    __pyx_t_1 = __pyx_v_n;
    for (__pyx_t_13 = 0; __pyx_t_13 < __pyx_t_1; __pyx_t_13+=1) {
      __pyx_v_i = __pyx_t_13;

      /* "pandas/src/generated.pyx":1562
 *     if True and _checknan(fill_value):
 *         for i in range(n):
 *             idx = indexer[i]             # <<<<<<<<<<<<<<
 *             if idx == -1:
 *                 raise ValueError('No NA values allowed')
 */
      __pyx_t_14 = __pyx_v_i;
      __pyx_t_8 = -1;
      if (__pyx_t_14 < 0) {
        __pyx_t_8 = 0;
      } else if (unlikely(__pyx_t_14 >= __pyx_bshape_0_indexer)) __pyx_t_8 = 0;
      if (unlikely(__pyx_t_8 != -1)) {
        __Pyx_RaiseBufferIndexError(__pyx_t_8);
        {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1562; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      }
      __pyx_v_idx = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_bstruct_indexer.buf, __pyx_t_14, __pyx_bstride_0_indexer));

      /* "pandas/src/generated.pyx":1563
 *         for i in range(n):
 *             idx = indexer[i]
 *             if idx == -1:             # <<<<<<<<<<<<<<
 *                 raise ValueError('No NA values allowed')
 *             else:
 */
      __pyx_t_12 = (__pyx_v_idx == -1);
      if (__pyx_t_12) {

        /* "pandas/src/generated.pyx":1564
 *             idx = indexer[i]
 *             if idx == -1:
 *                 raise ValueError('No NA values allowed')             # <<<<<<<<<<<<<<
 *             else:
 *                 outbuf[i] = values[idx]
 */
        __pyx_t_6 = PyObject_Call(__pyx_builtin_ValueError, ((PyObject *)__pyx_k_tuple_52), NULL); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1564; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_GOTREF(__pyx_t_6);
        __Pyx_Raise(__pyx_t_6, 0, 0, 0);
        __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
        {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1564; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        goto __pyx_L10;
      }
      /*else*/ {

        /* "pandas/src/generated.pyx":1566
 *                 raise ValueError('No NA values allowed')
 *             else:
 *                 outbuf[i] = values[idx]             # <<<<<<<<<<<<<<
 *     else:
 *         fv = fill_value
 */
        __pyx_t_15 = __pyx_v_idx;
        __pyx_t_8 = -1;
        if (__pyx_t_15 < 0) {
          __pyx_t_8 = 0;
        } else if (unlikely(__pyx_t_15 >= __pyx_bshape_0_values)) __pyx_t_8 = 0;
        if (unlikely(__pyx_t_8 != -1)) {
          __Pyx_RaiseBufferIndexError(__pyx_t_8);
          {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1566; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        }
        __pyx_t_16 = __pyx_v_i;
        __pyx_t_8 = -1;
        if (__pyx_t_16 < 0) {
          __pyx_t_8 = 0;
        } else if (unlikely(__pyx_t_16 >= __pyx_bshape_0_outbuf)) __pyx_t_8 = 0;
        if (unlikely(__pyx_t_8 != -1)) {
          __Pyx_RaiseBufferIndexError(__pyx_t_8);
          {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1566; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        }
        *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_uint8_t *, __pyx_bstruct_outbuf.buf, __pyx_t_16, __pyx_bstride_0_outbuf) = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_uint8_t *, __pyx_bstruct_values.buf, __pyx_t_15, __pyx_bstride_0_values));
      }
      __pyx_L10:;
    }
    goto __pyx_L7;
  }
  /*else*/ {

    /* "pandas/src/generated.pyx":1568
 *                 outbuf[i] = values[idx]
 *     else:
 *         fv = fill_value             # <<<<<<<<<<<<<<
 *         for i in range(n):
 *             idx = indexer[i]
 */
    __pyx_t_17 = __Pyx_PyInt_from_py_npy_uint8(__pyx_v_fill_value); if (unlikely((__pyx_t_17 == (npy_uint8)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1568; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __pyx_v_fv = __pyx_t_17;

    /* "pandas/src/generated.pyx":1569
 *     else:
 *         fv = fill_value
 *         for i in range(n):             # <<<<<<<<<<<<<<
 *             idx = indexer[i]
 *             if idx == -1:
 */
    __pyx_t_1 = __pyx_v_n;
    for (__pyx_t_13 = 0; __pyx_t_13 < __pyx_t_1; __pyx_t_13+=1) {
      __pyx_v_i = __pyx_t_13;

      /* "pandas/src/generated.pyx":1570
 *         fv = fill_value
 *         for i in range(n):
 *             idx = indexer[i]             # <<<<<<<<<<<<<<
 *             if idx == -1:
 *                 outbuf[i] = fv
 */
      __pyx_t_18 = __pyx_v_i;
      __pyx_t_8 = -1;
      if (__pyx_t_18 < 0) {
        __pyx_t_8 = 0;
      } else if (unlikely(__pyx_t_18 >= __pyx_bshape_0_indexer)) __pyx_t_8 = 0;
      if (unlikely(__pyx_t_8 != -1)) {
        __Pyx_RaiseBufferIndexError(__pyx_t_8);
        {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1570; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      }
      __pyx_v_idx = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_bstruct_indexer.buf, __pyx_t_18, __pyx_bstride_0_indexer));

      /* "pandas/src/generated.pyx":1571
 *         for i in range(n):
 *             idx = indexer[i]
 *             if idx == -1:             # <<<<<<<<<<<<<<
 *                 outbuf[i] = fv
 *             else:
 */
      __pyx_t_12 = (__pyx_v_idx == -1);
      if (__pyx_t_12) {

        /* "pandas/src/generated.pyx":1572
 *             idx = indexer[i]
 *             if idx == -1:
 *                 outbuf[i] = fv             # <<<<<<<<<<<<<<
 *             else:
 *                 outbuf[i] = values[idx]
 */
        __pyx_t_19 = __pyx_v_i;
        __pyx_t_8 = -1;
        if (__pyx_t_19 < 0) {
          __pyx_t_8 = 0;
        } else if (unlikely(__pyx_t_19 >= __pyx_bshape_0_outbuf)) __pyx_t_8 = 0;
        if (unlikely(__pyx_t_8 != -1)) {
          __Pyx_RaiseBufferIndexError(__pyx_t_8);
          {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1572; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        }
        *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_uint8_t *, __pyx_bstruct_outbuf.buf, __pyx_t_19, __pyx_bstride_0_outbuf) = __pyx_v_fv;
        goto __pyx_L13;
      }
      /*else*/ {

        /* "pandas/src/generated.pyx":1574
 *                 outbuf[i] = fv
 *             else:
 *                 outbuf[i] = values[idx]             # <<<<<<<<<<<<<<
 * 
 * 
 */
        __pyx_t_20 = __pyx_v_idx;
        __pyx_t_8 = -1;
        if (__pyx_t_20 < 0) {
          __pyx_t_8 = 0;
        } else if (unlikely(__pyx_t_20 >= __pyx_bshape_0_values)) __pyx_t_8 = 0;
        if (unlikely(__pyx_t_8 != -1)) {
          __Pyx_RaiseBufferIndexError(__pyx_t_8);
          {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1574; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        }
        __pyx_t_21 = __pyx_v_i;
        __pyx_t_8 = -1;
        if (__pyx_t_21 < 0) {
          __pyx_t_8 = 0;
        } else if (unlikely(__pyx_t_21 >= __pyx_bshape_0_outbuf)) __pyx_t_8 = 0;
        if (unlikely(__pyx_t_8 != -1)) {
          __Pyx_RaiseBufferIndexError(__pyx_t_8);
          {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1574; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        }
        *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_uint8_t *, __pyx_bstruct_outbuf.buf, __pyx_t_21, __pyx_bstride_0_outbuf) = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_uint8_t *, __pyx_bstruct_values.buf, __pyx_t_20, __pyx_bstride_0_values));
      }
      __pyx_L13:;
    }
  }
  __pyx_L7:;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  { PyObject *__pyx_type, *__pyx_value, *__pyx_tb;
    __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);
    __Pyx_SafeReleaseBuffer(&__pyx_bstruct_outbuf);
    __Pyx_SafeReleaseBuffer(&__pyx_bstruct_indexer);
    __Pyx_SafeReleaseBuffer(&__pyx_bstruct_values);
  __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);}
  __Pyx_AddTraceback("pandas._algos.take_1d_bool", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  goto __pyx_L2;
  __pyx_L0:;
  __Pyx_SafeReleaseBuffer(&__pyx_bstruct_outbuf);
  __Pyx_SafeReleaseBuffer(&__pyx_bstruct_indexer);
  __Pyx_SafeReleaseBuffer(&__pyx_bstruct_values);
  __pyx_L2:;
  __Pyx_XDECREF((PyObject *)__pyx_v_outbuf);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "pandas/src/generated.pyx":1579
 * @cython.boundscheck(False)
 * @cython.wraparound(False)
 * def is_monotonic_float64(ndarray[float64_t] arr):             # <<<<<<<<<<<<<<
 *     '''
 *     Returns
 */

static PyObject *__pyx_pf_6pandas_6_algos_45is_monotonic_float64(PyObject *__pyx_self, PyObject *__pyx_v_arr); /*proto*/
static char __pyx_doc_6pandas_6_algos_45is_monotonic_float64[] = "\n    Returns\n    -------\n    is_monotonic, is_unique\n    ";
static PyMethodDef __pyx_mdef_6pandas_6_algos_45is_monotonic_float64 = {__Pyx_NAMESTR("is_monotonic_float64"), (PyCFunction)__pyx_pf_6pandas_6_algos_45is_monotonic_float64, METH_O, __Pyx_DOCSTR(__pyx_doc_6pandas_6_algos_45is_monotonic_float64)};
static PyObject *__pyx_pf_6pandas_6_algos_45is_monotonic_float64(PyObject *__pyx_self, PyObject *__pyx_v_arr) {
  Py_ssize_t __pyx_v_i;
  Py_ssize_t __pyx_v_n;
  __pyx_t_5numpy_float64_t __pyx_v_prev;
  __pyx_t_5numpy_float64_t __pyx_v_cur;
  int __pyx_v_is_unique;
  Py_buffer __pyx_bstruct_arr;
  Py_ssize_t __pyx_bstride_0_arr = 0;
  Py_ssize_t __pyx_bshape_0_arr = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  Py_ssize_t __pyx_t_1;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  long __pyx_t_6;
  Py_ssize_t __pyx_t_7;
  Py_ssize_t __pyx_t_8;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("is_monotonic_float64");
  __pyx_self = __pyx_self;
  __pyx_bstruct_arr.buf = NULL;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_arr), __pyx_ptype_5numpy_ndarray, 1, "arr", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1579; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_arr, (PyObject*)__pyx_v_arr, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1579; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  }
  __pyx_bstride_0_arr = __pyx_bstruct_arr.strides[0];
  __pyx_bshape_0_arr = __pyx_bstruct_arr.shape[0];

  /* "pandas/src/generated.pyx":1588
 *         Py_ssize_t i, n
 *         float64_t prev, cur
 *         bint is_unique = 1             # <<<<<<<<<<<<<<
 * 
 *     n = len(arr)
 */
  __pyx_v_is_unique = 1;

  /* "pandas/src/generated.pyx":1590
 *         bint is_unique = 1
 * 
 *     n = len(arr)             # <<<<<<<<<<<<<<
 * 
 *     if n < 2:
 */
  __pyx_t_1 = PyObject_Length(__pyx_v_arr); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1590; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_v_n = __pyx_t_1;

  /* "pandas/src/generated.pyx":1592
 *     n = len(arr)
 * 
 *     if n < 2:             # <<<<<<<<<<<<<<
 *         return True, True
 * 
 */
  __pyx_t_2 = (__pyx_v_n < 2);
  if (__pyx_t_2) {

    /* "pandas/src/generated.pyx":1593
 * 
 *     if n < 2:
 *         return True, True             # <<<<<<<<<<<<<<
 * 
 *     prev = arr[0]
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_3 = __Pyx_PyBool_FromLong(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1593; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_4 = __Pyx_PyBool_FromLong(1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1593; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_5 = PyTuple_New(2); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1593; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(((PyObject *)__pyx_t_5));
    PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_3);
    __Pyx_GIVEREF(__pyx_t_3);
    PyTuple_SET_ITEM(__pyx_t_5, 1, __pyx_t_4);
    __Pyx_GIVEREF(__pyx_t_4);
    __pyx_t_3 = 0;
    __pyx_t_4 = 0;
    __pyx_r = ((PyObject *)__pyx_t_5);
    __pyx_t_5 = 0;
    goto __pyx_L0;
    goto __pyx_L5;
  }
  __pyx_L5:;

  /* "pandas/src/generated.pyx":1595
 *         return True, True
 * 
 *     prev = arr[0]             # <<<<<<<<<<<<<<
 *     for i in range(1, n):
 *         cur = arr[i]
 */
  __pyx_t_6 = 0;
  __pyx_v_prev = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_arr.buf, __pyx_t_6, __pyx_bstride_0_arr));

  /* "pandas/src/generated.pyx":1596
 * 
 *     prev = arr[0]
 *     for i in range(1, n):             # <<<<<<<<<<<<<<
 *         cur = arr[i]
 *         if cur < prev:
 */
  __pyx_t_1 = __pyx_v_n;
  for (__pyx_t_7 = 1; __pyx_t_7 < __pyx_t_1; __pyx_t_7+=1) {
    __pyx_v_i = __pyx_t_7;

    /* "pandas/src/generated.pyx":1597
 *     prev = arr[0]
 *     for i in range(1, n):
 *         cur = arr[i]             # <<<<<<<<<<<<<<
 *         if cur < prev:
 *             return False, None
 */
    __pyx_t_8 = __pyx_v_i;
    __pyx_v_cur = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_arr.buf, __pyx_t_8, __pyx_bstride_0_arr));

    /* "pandas/src/generated.pyx":1598
 *     for i in range(1, n):
 *         cur = arr[i]
 *         if cur < prev:             # <<<<<<<<<<<<<<
 *             return False, None
 *         elif cur == prev:
 */
    __pyx_t_2 = (__pyx_v_cur < __pyx_v_prev);
    if (__pyx_t_2) {

      /* "pandas/src/generated.pyx":1599
 *         cur = arr[i]
 *         if cur < prev:
 *             return False, None             # <<<<<<<<<<<<<<
 *         elif cur == prev:
 *             is_unique = 0
 */
      __Pyx_XDECREF(__pyx_r);
      __pyx_t_5 = __Pyx_PyBool_FromLong(0); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1599; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_5);
      __pyx_t_4 = PyTuple_New(2); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1599; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(((PyObject *)__pyx_t_4));
      PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_5);
      __Pyx_GIVEREF(__pyx_t_5);
      __Pyx_INCREF(Py_None);
      PyTuple_SET_ITEM(__pyx_t_4, 1, Py_None);
      __Pyx_GIVEREF(Py_None);
      __pyx_t_5 = 0;
      __pyx_r = ((PyObject *)__pyx_t_4);
      __pyx_t_4 = 0;
      goto __pyx_L0;
      goto __pyx_L8;
    }

    /* "pandas/src/generated.pyx":1600
 *         if cur < prev:
 *             return False, None
 *         elif cur == prev:             # <<<<<<<<<<<<<<
 *             is_unique = 0
 *         prev = cur
 */
    __pyx_t_2 = (__pyx_v_cur == __pyx_v_prev);
    if (__pyx_t_2) {

      /* "pandas/src/generated.pyx":1601
 *             return False, None
 *         elif cur == prev:
 *             is_unique = 0             # <<<<<<<<<<<<<<
 *         prev = cur
 *     return True, is_unique
 */
      __pyx_v_is_unique = 0;
      goto __pyx_L8;
    }
    __pyx_L8:;

    /* "pandas/src/generated.pyx":1602
 *         elif cur == prev:
 *             is_unique = 0
 *         prev = cur             # <<<<<<<<<<<<<<
 *     return True, is_unique
 * @cython.boundscheck(False)
 */
    __pyx_v_prev = __pyx_v_cur;
  }

  /* "pandas/src/generated.pyx":1603
 *             is_unique = 0
 *         prev = cur
 *     return True, is_unique             # <<<<<<<<<<<<<<
 * @cython.boundscheck(False)
 * @cython.wraparound(False)
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_4 = __Pyx_PyBool_FromLong(1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1603; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_5 = __Pyx_PyBool_FromLong(__pyx_v_is_unique); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1603; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1603; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_3));
  PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_4);
  __Pyx_GIVEREF(__pyx_t_4);
  PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_t_5);
  __Pyx_GIVEREF(__pyx_t_5);
  __pyx_t_4 = 0;
  __pyx_t_5 = 0;
  __pyx_r = ((PyObject *)__pyx_t_3);
  __pyx_t_3 = 0;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  { PyObject *__pyx_type, *__pyx_value, *__pyx_tb;
    __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);
    __Pyx_SafeReleaseBuffer(&__pyx_bstruct_arr);
  __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);}
  __Pyx_AddTraceback("pandas._algos.is_monotonic_float64", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  goto __pyx_L2;
  __pyx_L0:;
  __Pyx_SafeReleaseBuffer(&__pyx_bstruct_arr);
  __pyx_L2:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "pandas/src/generated.pyx":1606
 * @cython.boundscheck(False)
 * @cython.wraparound(False)
 * def is_monotonic_object(ndarray[object] arr):             # <<<<<<<<<<<<<<
 *     '''
 *     Returns
 */

static PyObject *__pyx_pf_6pandas_6_algos_46is_monotonic_object(PyObject *__pyx_self, PyObject *__pyx_v_arr); /*proto*/
static char __pyx_doc_6pandas_6_algos_46is_monotonic_object[] = "\n    Returns\n    -------\n    is_monotonic, is_unique\n    ";
static PyMethodDef __pyx_mdef_6pandas_6_algos_46is_monotonic_object = {__Pyx_NAMESTR("is_monotonic_object"), (PyCFunction)__pyx_pf_6pandas_6_algos_46is_monotonic_object, METH_O, __Pyx_DOCSTR(__pyx_doc_6pandas_6_algos_46is_monotonic_object)};
static PyObject *__pyx_pf_6pandas_6_algos_46is_monotonic_object(PyObject *__pyx_self, PyObject *__pyx_v_arr) {
  Py_ssize_t __pyx_v_i;
  Py_ssize_t __pyx_v_n;
  PyObject *__pyx_v_prev = 0;
  PyObject *__pyx_v_cur = 0;
  int __pyx_v_is_unique;
  Py_buffer __pyx_bstruct_arr;
  Py_ssize_t __pyx_bstride_0_arr = 0;
  Py_ssize_t __pyx_bshape_0_arr = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  Py_ssize_t __pyx_t_1;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  long __pyx_t_6;
  Py_ssize_t __pyx_t_7;
  Py_ssize_t __pyx_t_8;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("is_monotonic_object");
  __pyx_self = __pyx_self;
  __pyx_bstruct_arr.buf = NULL;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_arr), __pyx_ptype_5numpy_ndarray, 1, "arr", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1606; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_arr, (PyObject*)__pyx_v_arr, &__Pyx_TypeInfo_object, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1606; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  }
  __pyx_bstride_0_arr = __pyx_bstruct_arr.strides[0];
  __pyx_bshape_0_arr = __pyx_bstruct_arr.shape[0];

  /* "pandas/src/generated.pyx":1615
 *         Py_ssize_t i, n
 *         object prev, cur
 *         bint is_unique = 1             # <<<<<<<<<<<<<<
 * 
 *     n = len(arr)
 */
  __pyx_v_is_unique = 1;

  /* "pandas/src/generated.pyx":1617
 *         bint is_unique = 1
 * 
 *     n = len(arr)             # <<<<<<<<<<<<<<
 * 
 *     if n < 2:
 */
  __pyx_t_1 = PyObject_Length(__pyx_v_arr); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1617; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_v_n = __pyx_t_1;

  /* "pandas/src/generated.pyx":1619
 *     n = len(arr)
 * 
 *     if n < 2:             # <<<<<<<<<<<<<<
 *         return True, True
 * 
 */
  __pyx_t_2 = (__pyx_v_n < 2);
  if (__pyx_t_2) {

    /* "pandas/src/generated.pyx":1620
 * 
 *     if n < 2:
 *         return True, True             # <<<<<<<<<<<<<<
 * 
 *     prev = arr[0]
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_3 = __Pyx_PyBool_FromLong(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1620; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_4 = __Pyx_PyBool_FromLong(1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1620; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_5 = PyTuple_New(2); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1620; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(((PyObject *)__pyx_t_5));
    PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_3);
    __Pyx_GIVEREF(__pyx_t_3);
    PyTuple_SET_ITEM(__pyx_t_5, 1, __pyx_t_4);
    __Pyx_GIVEREF(__pyx_t_4);
    __pyx_t_3 = 0;
    __pyx_t_4 = 0;
    __pyx_r = ((PyObject *)__pyx_t_5);
    __pyx_t_5 = 0;
    goto __pyx_L0;
    goto __pyx_L5;
  }
  __pyx_L5:;

  /* "pandas/src/generated.pyx":1622
 *         return True, True
 * 
 *     prev = arr[0]             # <<<<<<<<<<<<<<
 *     for i in range(1, n):
 *         cur = arr[i]
 */
  __pyx_t_6 = 0;
  __pyx_t_5 = *__Pyx_BufPtrStrided1d(PyObject **, __pyx_bstruct_arr.buf, __pyx_t_6, __pyx_bstride_0_arr);
  __Pyx_INCREF((PyObject*)__pyx_t_5);
  __pyx_v_prev = __pyx_t_5;
  __pyx_t_5 = 0;

  /* "pandas/src/generated.pyx":1623
 * 
 *     prev = arr[0]
 *     for i in range(1, n):             # <<<<<<<<<<<<<<
 *         cur = arr[i]
 *         if cur < prev:
 */
  __pyx_t_1 = __pyx_v_n;
  for (__pyx_t_7 = 1; __pyx_t_7 < __pyx_t_1; __pyx_t_7+=1) {
    __pyx_v_i = __pyx_t_7;

    /* "pandas/src/generated.pyx":1624
 *     prev = arr[0]
 *     for i in range(1, n):
 *         cur = arr[i]             # <<<<<<<<<<<<<<
 *         if cur < prev:
 *             return False, None
 */
    __pyx_t_8 = __pyx_v_i;
    __pyx_t_5 = *__Pyx_BufPtrStrided1d(PyObject **, __pyx_bstruct_arr.buf, __pyx_t_8, __pyx_bstride_0_arr);
    __Pyx_INCREF((PyObject*)__pyx_t_5);
    __Pyx_XDECREF(__pyx_v_cur);
    __pyx_v_cur = __pyx_t_5;
    __pyx_t_5 = 0;

    /* "pandas/src/generated.pyx":1625
 *     for i in range(1, n):
 *         cur = arr[i]
 *         if cur < prev:             # <<<<<<<<<<<<<<
 *             return False, None
 *         elif cur == prev:
 */
    __pyx_t_5 = PyObject_RichCompare(__pyx_v_cur, __pyx_v_prev, Py_LT); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1625; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_5); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1625; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    if (__pyx_t_2) {

      /* "pandas/src/generated.pyx":1626
 *         cur = arr[i]
 *         if cur < prev:
 *             return False, None             # <<<<<<<<<<<<<<
 *         elif cur == prev:
 *             is_unique = 0
 */
      __Pyx_XDECREF(__pyx_r);
      __pyx_t_5 = __Pyx_PyBool_FromLong(0); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1626; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_5);
      __pyx_t_4 = PyTuple_New(2); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1626; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(((PyObject *)__pyx_t_4));
      PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_5);
      __Pyx_GIVEREF(__pyx_t_5);
      __Pyx_INCREF(Py_None);
      PyTuple_SET_ITEM(__pyx_t_4, 1, Py_None);
      __Pyx_GIVEREF(Py_None);
      __pyx_t_5 = 0;
      __pyx_r = ((PyObject *)__pyx_t_4);
      __pyx_t_4 = 0;
      goto __pyx_L0;
      goto __pyx_L8;
    }

    /* "pandas/src/generated.pyx":1627
 *         if cur < prev:
 *             return False, None
 *         elif cur == prev:             # <<<<<<<<<<<<<<
 *             is_unique = 0
 *         prev = cur
 */
    __pyx_t_4 = PyObject_RichCompare(__pyx_v_cur, __pyx_v_prev, Py_EQ); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1627; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1627; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    if (__pyx_t_2) {

      /* "pandas/src/generated.pyx":1628
 *             return False, None
 *         elif cur == prev:
 *             is_unique = 0             # <<<<<<<<<<<<<<
 *         prev = cur
 *     return True, is_unique
 */
      __pyx_v_is_unique = 0;
      goto __pyx_L8;
    }
    __pyx_L8:;

    /* "pandas/src/generated.pyx":1629
 *         elif cur == prev:
 *             is_unique = 0
 *         prev = cur             # <<<<<<<<<<<<<<
 *     return True, is_unique
 * @cython.boundscheck(False)
 */
    __Pyx_INCREF(__pyx_v_cur);
    __Pyx_DECREF(__pyx_v_prev);
    __pyx_v_prev = __pyx_v_cur;
  }

  /* "pandas/src/generated.pyx":1630
 *             is_unique = 0
 *         prev = cur
 *     return True, is_unique             # <<<<<<<<<<<<<<
 * @cython.boundscheck(False)
 * @cython.wraparound(False)
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_4 = __Pyx_PyBool_FromLong(1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1630; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_5 = __Pyx_PyBool_FromLong(__pyx_v_is_unique); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1630; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1630; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_3));
  PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_4);
  __Pyx_GIVEREF(__pyx_t_4);
  PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_t_5);
  __Pyx_GIVEREF(__pyx_t_5);
  __pyx_t_4 = 0;
  __pyx_t_5 = 0;
  __pyx_r = ((PyObject *)__pyx_t_3);
  __pyx_t_3 = 0;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  { PyObject *__pyx_type, *__pyx_value, *__pyx_tb;
    __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);
    __Pyx_SafeReleaseBuffer(&__pyx_bstruct_arr);
  __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);}
  __Pyx_AddTraceback("pandas._algos.is_monotonic_object", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  goto __pyx_L2;
  __pyx_L0:;
  __Pyx_SafeReleaseBuffer(&__pyx_bstruct_arr);
  __pyx_L2:;
  __Pyx_XDECREF(__pyx_v_prev);
  __Pyx_XDECREF(__pyx_v_cur);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "pandas/src/generated.pyx":1633
 * @cython.boundscheck(False)
 * @cython.wraparound(False)
 * def is_monotonic_int32(ndarray[int32_t] arr):             # <<<<<<<<<<<<<<
 *     '''
 *     Returns
 */

static PyObject *__pyx_pf_6pandas_6_algos_47is_monotonic_int32(PyObject *__pyx_self, PyObject *__pyx_v_arr); /*proto*/
static char __pyx_doc_6pandas_6_algos_47is_monotonic_int32[] = "\n    Returns\n    -------\n    is_monotonic, is_unique\n    ";
static PyMethodDef __pyx_mdef_6pandas_6_algos_47is_monotonic_int32 = {__Pyx_NAMESTR("is_monotonic_int32"), (PyCFunction)__pyx_pf_6pandas_6_algos_47is_monotonic_int32, METH_O, __Pyx_DOCSTR(__pyx_doc_6pandas_6_algos_47is_monotonic_int32)};
static PyObject *__pyx_pf_6pandas_6_algos_47is_monotonic_int32(PyObject *__pyx_self, PyObject *__pyx_v_arr) {
  Py_ssize_t __pyx_v_i;
  Py_ssize_t __pyx_v_n;
  __pyx_t_5numpy_int32_t __pyx_v_prev;
  __pyx_t_5numpy_int32_t __pyx_v_cur;
  int __pyx_v_is_unique;
  Py_buffer __pyx_bstruct_arr;
  Py_ssize_t __pyx_bstride_0_arr = 0;
  Py_ssize_t __pyx_bshape_0_arr = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  Py_ssize_t __pyx_t_1;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  long __pyx_t_6;
  Py_ssize_t __pyx_t_7;
  Py_ssize_t __pyx_t_8;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("is_monotonic_int32");
  __pyx_self = __pyx_self;
  __pyx_bstruct_arr.buf = NULL;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_arr), __pyx_ptype_5numpy_ndarray, 1, "arr", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1633; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_arr, (PyObject*)__pyx_v_arr, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int32_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1633; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  }
  __pyx_bstride_0_arr = __pyx_bstruct_arr.strides[0];
  __pyx_bshape_0_arr = __pyx_bstruct_arr.shape[0];

  /* "pandas/src/generated.pyx":1642
 *         Py_ssize_t i, n
 *         int32_t prev, cur
 *         bint is_unique = 1             # <<<<<<<<<<<<<<
 * 
 *     n = len(arr)
 */
  __pyx_v_is_unique = 1;

  /* "pandas/src/generated.pyx":1644
 *         bint is_unique = 1
 * 
 *     n = len(arr)             # <<<<<<<<<<<<<<
 * 
 *     if n < 2:
 */
  __pyx_t_1 = PyObject_Length(__pyx_v_arr); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1644; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_v_n = __pyx_t_1;

  /* "pandas/src/generated.pyx":1646
 *     n = len(arr)
 * 
 *     if n < 2:             # <<<<<<<<<<<<<<
 *         return True, True
 * 
 */
  __pyx_t_2 = (__pyx_v_n < 2);
  if (__pyx_t_2) {

    /* "pandas/src/generated.pyx":1647
 * 
 *     if n < 2:
 *         return True, True             # <<<<<<<<<<<<<<
 * 
 *     prev = arr[0]
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_3 = __Pyx_PyBool_FromLong(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1647; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_4 = __Pyx_PyBool_FromLong(1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1647; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_5 = PyTuple_New(2); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1647; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(((PyObject *)__pyx_t_5));
    PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_3);
    __Pyx_GIVEREF(__pyx_t_3);
    PyTuple_SET_ITEM(__pyx_t_5, 1, __pyx_t_4);
    __Pyx_GIVEREF(__pyx_t_4);
    __pyx_t_3 = 0;
    __pyx_t_4 = 0;
    __pyx_r = ((PyObject *)__pyx_t_5);
    __pyx_t_5 = 0;
    goto __pyx_L0;
    goto __pyx_L5;
  }
  __pyx_L5:;

  /* "pandas/src/generated.pyx":1649
 *         return True, True
 * 
 *     prev = arr[0]             # <<<<<<<<<<<<<<
 *     for i in range(1, n):
 *         cur = arr[i]
 */
  __pyx_t_6 = 0;
  __pyx_v_prev = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int32_t *, __pyx_bstruct_arr.buf, __pyx_t_6, __pyx_bstride_0_arr));

  /* "pandas/src/generated.pyx":1650
 * 
 *     prev = arr[0]
 *     for i in range(1, n):             # <<<<<<<<<<<<<<
 *         cur = arr[i]
 *         if cur < prev:
 */
  __pyx_t_1 = __pyx_v_n;
  for (__pyx_t_7 = 1; __pyx_t_7 < __pyx_t_1; __pyx_t_7+=1) {
    __pyx_v_i = __pyx_t_7;

    /* "pandas/src/generated.pyx":1651
 *     prev = arr[0]
 *     for i in range(1, n):
 *         cur = arr[i]             # <<<<<<<<<<<<<<
 *         if cur < prev:
 *             return False, None
 */
    __pyx_t_8 = __pyx_v_i;
    __pyx_v_cur = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int32_t *, __pyx_bstruct_arr.buf, __pyx_t_8, __pyx_bstride_0_arr));

    /* "pandas/src/generated.pyx":1652
 *     for i in range(1, n):
 *         cur = arr[i]
 *         if cur < prev:             # <<<<<<<<<<<<<<
 *             return False, None
 *         elif cur == prev:
 */
    __pyx_t_2 = (__pyx_v_cur < __pyx_v_prev);
    if (__pyx_t_2) {

      /* "pandas/src/generated.pyx":1653
 *         cur = arr[i]
 *         if cur < prev:
 *             return False, None             # <<<<<<<<<<<<<<
 *         elif cur == prev:
 *             is_unique = 0
 */
      __Pyx_XDECREF(__pyx_r);
      __pyx_t_5 = __Pyx_PyBool_FromLong(0); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1653; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_5);
      __pyx_t_4 = PyTuple_New(2); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1653; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(((PyObject *)__pyx_t_4));
      PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_5);
      __Pyx_GIVEREF(__pyx_t_5);
      __Pyx_INCREF(Py_None);
      PyTuple_SET_ITEM(__pyx_t_4, 1, Py_None);
      __Pyx_GIVEREF(Py_None);
      __pyx_t_5 = 0;
      __pyx_r = ((PyObject *)__pyx_t_4);
      __pyx_t_4 = 0;
      goto __pyx_L0;
      goto __pyx_L8;
    }

    /* "pandas/src/generated.pyx":1654
 *         if cur < prev:
 *             return False, None
 *         elif cur == prev:             # <<<<<<<<<<<<<<
 *             is_unique = 0
 *         prev = cur
 */
    __pyx_t_2 = (__pyx_v_cur == __pyx_v_prev);
    if (__pyx_t_2) {

      /* "pandas/src/generated.pyx":1655
 *             return False, None
 *         elif cur == prev:
 *             is_unique = 0             # <<<<<<<<<<<<<<
 *         prev = cur
 *     return True, is_unique
 */
      __pyx_v_is_unique = 0;
      goto __pyx_L8;
    }
    __pyx_L8:;

    /* "pandas/src/generated.pyx":1656
 *         elif cur == prev:
 *             is_unique = 0
 *         prev = cur             # <<<<<<<<<<<<<<
 *     return True, is_unique
 * @cython.boundscheck(False)
 */
    __pyx_v_prev = __pyx_v_cur;
  }

  /* "pandas/src/generated.pyx":1657
 *             is_unique = 0
 *         prev = cur
 *     return True, is_unique             # <<<<<<<<<<<<<<
 * @cython.boundscheck(False)
 * @cython.wraparound(False)
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_4 = __Pyx_PyBool_FromLong(1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1657; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_5 = __Pyx_PyBool_FromLong(__pyx_v_is_unique); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1657; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1657; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_3));
  PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_4);
  __Pyx_GIVEREF(__pyx_t_4);
  PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_t_5);
  __Pyx_GIVEREF(__pyx_t_5);
  __pyx_t_4 = 0;
  __pyx_t_5 = 0;
  __pyx_r = ((PyObject *)__pyx_t_3);
  __pyx_t_3 = 0;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  { PyObject *__pyx_type, *__pyx_value, *__pyx_tb;
    __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);
    __Pyx_SafeReleaseBuffer(&__pyx_bstruct_arr);
  __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);}
  __Pyx_AddTraceback("pandas._algos.is_monotonic_int32", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  goto __pyx_L2;
  __pyx_L0:;
  __Pyx_SafeReleaseBuffer(&__pyx_bstruct_arr);
  __pyx_L2:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "pandas/src/generated.pyx":1660
 * @cython.boundscheck(False)
 * @cython.wraparound(False)
 * def is_monotonic_int64(ndarray[int64_t] arr):             # <<<<<<<<<<<<<<
 *     '''
 *     Returns
 */

static PyObject *__pyx_pf_6pandas_6_algos_48is_monotonic_int64(PyObject *__pyx_self, PyObject *__pyx_v_arr); /*proto*/
static char __pyx_doc_6pandas_6_algos_48is_monotonic_int64[] = "\n    Returns\n    -------\n    is_monotonic, is_unique\n    ";
static PyMethodDef __pyx_mdef_6pandas_6_algos_48is_monotonic_int64 = {__Pyx_NAMESTR("is_monotonic_int64"), (PyCFunction)__pyx_pf_6pandas_6_algos_48is_monotonic_int64, METH_O, __Pyx_DOCSTR(__pyx_doc_6pandas_6_algos_48is_monotonic_int64)};
static PyObject *__pyx_pf_6pandas_6_algos_48is_monotonic_int64(PyObject *__pyx_self, PyObject *__pyx_v_arr) {
  Py_ssize_t __pyx_v_i;
  Py_ssize_t __pyx_v_n;
  __pyx_t_5numpy_int64_t __pyx_v_prev;
  __pyx_t_5numpy_int64_t __pyx_v_cur;
  int __pyx_v_is_unique;
  Py_buffer __pyx_bstruct_arr;
  Py_ssize_t __pyx_bstride_0_arr = 0;
  Py_ssize_t __pyx_bshape_0_arr = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  Py_ssize_t __pyx_t_1;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  long __pyx_t_6;
  Py_ssize_t __pyx_t_7;
  Py_ssize_t __pyx_t_8;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("is_monotonic_int64");
  __pyx_self = __pyx_self;
  __pyx_bstruct_arr.buf = NULL;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_arr), __pyx_ptype_5numpy_ndarray, 1, "arr", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1660; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_arr, (PyObject*)__pyx_v_arr, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1660; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  }
  __pyx_bstride_0_arr = __pyx_bstruct_arr.strides[0];
  __pyx_bshape_0_arr = __pyx_bstruct_arr.shape[0];

  /* "pandas/src/generated.pyx":1669
 *         Py_ssize_t i, n
 *         int64_t prev, cur
 *         bint is_unique = 1             # <<<<<<<<<<<<<<
 * 
 *     n = len(arr)
 */
  __pyx_v_is_unique = 1;

  /* "pandas/src/generated.pyx":1671
 *         bint is_unique = 1
 * 
 *     n = len(arr)             # <<<<<<<<<<<<<<
 * 
 *     if n < 2:
 */
  __pyx_t_1 = PyObject_Length(__pyx_v_arr); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1671; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_v_n = __pyx_t_1;

  /* "pandas/src/generated.pyx":1673
 *     n = len(arr)
 * 
 *     if n < 2:             # <<<<<<<<<<<<<<
 *         return True, True
 * 
 */
  __pyx_t_2 = (__pyx_v_n < 2);
  if (__pyx_t_2) {

    /* "pandas/src/generated.pyx":1674
 * 
 *     if n < 2:
 *         return True, True             # <<<<<<<<<<<<<<
 * 
 *     prev = arr[0]
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_3 = __Pyx_PyBool_FromLong(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1674; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_4 = __Pyx_PyBool_FromLong(1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1674; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_5 = PyTuple_New(2); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1674; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(((PyObject *)__pyx_t_5));
    PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_3);
    __Pyx_GIVEREF(__pyx_t_3);
    PyTuple_SET_ITEM(__pyx_t_5, 1, __pyx_t_4);
    __Pyx_GIVEREF(__pyx_t_4);
    __pyx_t_3 = 0;
    __pyx_t_4 = 0;
    __pyx_r = ((PyObject *)__pyx_t_5);
    __pyx_t_5 = 0;
    goto __pyx_L0;
    goto __pyx_L5;
  }
  __pyx_L5:;

  /* "pandas/src/generated.pyx":1676
 *         return True, True
 * 
 *     prev = arr[0]             # <<<<<<<<<<<<<<
 *     for i in range(1, n):
 *         cur = arr[i]
 */
  __pyx_t_6 = 0;
  __pyx_v_prev = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_bstruct_arr.buf, __pyx_t_6, __pyx_bstride_0_arr));

  /* "pandas/src/generated.pyx":1677
 * 
 *     prev = arr[0]
 *     for i in range(1, n):             # <<<<<<<<<<<<<<
 *         cur = arr[i]
 *         if cur < prev:
 */
  __pyx_t_1 = __pyx_v_n;
  for (__pyx_t_7 = 1; __pyx_t_7 < __pyx_t_1; __pyx_t_7+=1) {
    __pyx_v_i = __pyx_t_7;

    /* "pandas/src/generated.pyx":1678
 *     prev = arr[0]
 *     for i in range(1, n):
 *         cur = arr[i]             # <<<<<<<<<<<<<<
 *         if cur < prev:
 *             return False, None
 */
    __pyx_t_8 = __pyx_v_i;
    __pyx_v_cur = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_bstruct_arr.buf, __pyx_t_8, __pyx_bstride_0_arr));

    /* "pandas/src/generated.pyx":1679
 *     for i in range(1, n):
 *         cur = arr[i]
 *         if cur < prev:             # <<<<<<<<<<<<<<
 *             return False, None
 *         elif cur == prev:
 */
    __pyx_t_2 = (__pyx_v_cur < __pyx_v_prev);
    if (__pyx_t_2) {

      /* "pandas/src/generated.pyx":1680
 *         cur = arr[i]
 *         if cur < prev:
 *             return False, None             # <<<<<<<<<<<<<<
 *         elif cur == prev:
 *             is_unique = 0
 */
      __Pyx_XDECREF(__pyx_r);
      __pyx_t_5 = __Pyx_PyBool_FromLong(0); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1680; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_5);
      __pyx_t_4 = PyTuple_New(2); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1680; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(((PyObject *)__pyx_t_4));
      PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_5);
      __Pyx_GIVEREF(__pyx_t_5);
      __Pyx_INCREF(Py_None);
      PyTuple_SET_ITEM(__pyx_t_4, 1, Py_None);
      __Pyx_GIVEREF(Py_None);
      __pyx_t_5 = 0;
      __pyx_r = ((PyObject *)__pyx_t_4);
      __pyx_t_4 = 0;
      goto __pyx_L0;
      goto __pyx_L8;
    }

    /* "pandas/src/generated.pyx":1681
 *         if cur < prev:
 *             return False, None
 *         elif cur == prev:             # <<<<<<<<<<<<<<
 *             is_unique = 0
 *         prev = cur
 */
    __pyx_t_2 = (__pyx_v_cur == __pyx_v_prev);
    if (__pyx_t_2) {

      /* "pandas/src/generated.pyx":1682
 *             return False, None
 *         elif cur == prev:
 *             is_unique = 0             # <<<<<<<<<<<<<<
 *         prev = cur
 *     return True, is_unique
 */
      __pyx_v_is_unique = 0;
      goto __pyx_L8;
    }
    __pyx_L8:;

    /* "pandas/src/generated.pyx":1683
 *         elif cur == prev:
 *             is_unique = 0
 *         prev = cur             # <<<<<<<<<<<<<<
 *     return True, is_unique
 * @cython.boundscheck(False)
 */
    __pyx_v_prev = __pyx_v_cur;
  }

  /* "pandas/src/generated.pyx":1684
 *             is_unique = 0
 *         prev = cur
 *     return True, is_unique             # <<<<<<<<<<<<<<
 * @cython.boundscheck(False)
 * @cython.wraparound(False)
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_4 = __Pyx_PyBool_FromLong(1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1684; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_5 = __Pyx_PyBool_FromLong(__pyx_v_is_unique); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1684; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1684; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_3));
  PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_4);
  __Pyx_GIVEREF(__pyx_t_4);
  PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_t_5);
  __Pyx_GIVEREF(__pyx_t_5);
  __pyx_t_4 = 0;
  __pyx_t_5 = 0;
  __pyx_r = ((PyObject *)__pyx_t_3);
  __pyx_t_3 = 0;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  { PyObject *__pyx_type, *__pyx_value, *__pyx_tb;
    __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);
    __Pyx_SafeReleaseBuffer(&__pyx_bstruct_arr);
  __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);}
  __Pyx_AddTraceback("pandas._algos.is_monotonic_int64", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  goto __pyx_L2;
  __pyx_L0:;
  __Pyx_SafeReleaseBuffer(&__pyx_bstruct_arr);
  __pyx_L2:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "pandas/src/generated.pyx":1687
 * @cython.boundscheck(False)
 * @cython.wraparound(False)
 * def is_monotonic_bool(ndarray[uint8_t] arr):             # <<<<<<<<<<<<<<
 *     '''
 *     Returns
 */

static PyObject *__pyx_pf_6pandas_6_algos_49is_monotonic_bool(PyObject *__pyx_self, PyObject *__pyx_v_arr); /*proto*/
static char __pyx_doc_6pandas_6_algos_49is_monotonic_bool[] = "\n    Returns\n    -------\n    is_monotonic, is_unique\n    ";
static PyMethodDef __pyx_mdef_6pandas_6_algos_49is_monotonic_bool = {__Pyx_NAMESTR("is_monotonic_bool"), (PyCFunction)__pyx_pf_6pandas_6_algos_49is_monotonic_bool, METH_O, __Pyx_DOCSTR(__pyx_doc_6pandas_6_algos_49is_monotonic_bool)};
static PyObject *__pyx_pf_6pandas_6_algos_49is_monotonic_bool(PyObject *__pyx_self, PyObject *__pyx_v_arr) {
  Py_ssize_t __pyx_v_i;
  Py_ssize_t __pyx_v_n;
  __pyx_t_5numpy_uint8_t __pyx_v_prev;
  __pyx_t_5numpy_uint8_t __pyx_v_cur;
  int __pyx_v_is_unique;
  Py_buffer __pyx_bstruct_arr;
  Py_ssize_t __pyx_bstride_0_arr = 0;
  Py_ssize_t __pyx_bshape_0_arr = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  Py_ssize_t __pyx_t_1;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  long __pyx_t_6;
  Py_ssize_t __pyx_t_7;
  Py_ssize_t __pyx_t_8;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("is_monotonic_bool");
  __pyx_self = __pyx_self;
  __pyx_bstruct_arr.buf = NULL;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_arr), __pyx_ptype_5numpy_ndarray, 1, "arr", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1687; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_arr, (PyObject*)__pyx_v_arr, &__Pyx_TypeInfo_nn___pyx_t_5numpy_uint8_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1687; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  }
  __pyx_bstride_0_arr = __pyx_bstruct_arr.strides[0];
  __pyx_bshape_0_arr = __pyx_bstruct_arr.shape[0];

  /* "pandas/src/generated.pyx":1696
 *         Py_ssize_t i, n
 *         uint8_t prev, cur
 *         bint is_unique = 1             # <<<<<<<<<<<<<<
 * 
 *     n = len(arr)
 */
  __pyx_v_is_unique = 1;

  /* "pandas/src/generated.pyx":1698
 *         bint is_unique = 1
 * 
 *     n = len(arr)             # <<<<<<<<<<<<<<
 * 
 *     if n < 2:
 */
  __pyx_t_1 = PyObject_Length(__pyx_v_arr); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1698; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_v_n = __pyx_t_1;

  /* "pandas/src/generated.pyx":1700
 *     n = len(arr)
 * 
 *     if n < 2:             # <<<<<<<<<<<<<<
 *         return True, True
 * 
 */
  __pyx_t_2 = (__pyx_v_n < 2);
  if (__pyx_t_2) {

    /* "pandas/src/generated.pyx":1701
 * 
 *     if n < 2:
 *         return True, True             # <<<<<<<<<<<<<<
 * 
 *     prev = arr[0]
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_3 = __Pyx_PyBool_FromLong(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1701; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_4 = __Pyx_PyBool_FromLong(1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1701; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_5 = PyTuple_New(2); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1701; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(((PyObject *)__pyx_t_5));
    PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_3);
    __Pyx_GIVEREF(__pyx_t_3);
    PyTuple_SET_ITEM(__pyx_t_5, 1, __pyx_t_4);
    __Pyx_GIVEREF(__pyx_t_4);
    __pyx_t_3 = 0;
    __pyx_t_4 = 0;
    __pyx_r = ((PyObject *)__pyx_t_5);
    __pyx_t_5 = 0;
    goto __pyx_L0;
    goto __pyx_L5;
  }
  __pyx_L5:;

  /* "pandas/src/generated.pyx":1703
 *         return True, True
 * 
 *     prev = arr[0]             # <<<<<<<<<<<<<<
 *     for i in range(1, n):
 *         cur = arr[i]
 */
  __pyx_t_6 = 0;
  __pyx_v_prev = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_uint8_t *, __pyx_bstruct_arr.buf, __pyx_t_6, __pyx_bstride_0_arr));

  /* "pandas/src/generated.pyx":1704
 * 
 *     prev = arr[0]
 *     for i in range(1, n):             # <<<<<<<<<<<<<<
 *         cur = arr[i]
 *         if cur < prev:
 */
  __pyx_t_1 = __pyx_v_n;
  for (__pyx_t_7 = 1; __pyx_t_7 < __pyx_t_1; __pyx_t_7+=1) {
    __pyx_v_i = __pyx_t_7;

    /* "pandas/src/generated.pyx":1705
 *     prev = arr[0]
 *     for i in range(1, n):
 *         cur = arr[i]             # <<<<<<<<<<<<<<
 *         if cur < prev:
 *             return False, None
 */
    __pyx_t_8 = __pyx_v_i;
    __pyx_v_cur = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_uint8_t *, __pyx_bstruct_arr.buf, __pyx_t_8, __pyx_bstride_0_arr));

    /* "pandas/src/generated.pyx":1706
 *     for i in range(1, n):
 *         cur = arr[i]
 *         if cur < prev:             # <<<<<<<<<<<<<<
 *             return False, None
 *         elif cur == prev:
 */
    __pyx_t_2 = (__pyx_v_cur < __pyx_v_prev);
    if (__pyx_t_2) {

      /* "pandas/src/generated.pyx":1707
 *         cur = arr[i]
 *         if cur < prev:
 *             return False, None             # <<<<<<<<<<<<<<
 *         elif cur == prev:
 *             is_unique = 0
 */
      __Pyx_XDECREF(__pyx_r);
      __pyx_t_5 = __Pyx_PyBool_FromLong(0); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1707; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_5);
      __pyx_t_4 = PyTuple_New(2); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1707; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(((PyObject *)__pyx_t_4));
      PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_5);
      __Pyx_GIVEREF(__pyx_t_5);
      __Pyx_INCREF(Py_None);
      PyTuple_SET_ITEM(__pyx_t_4, 1, Py_None);
      __Pyx_GIVEREF(Py_None);
      __pyx_t_5 = 0;
      __pyx_r = ((PyObject *)__pyx_t_4);
      __pyx_t_4 = 0;
      goto __pyx_L0;
      goto __pyx_L8;
    }

    /* "pandas/src/generated.pyx":1708
 *         if cur < prev:
 *             return False, None
 *         elif cur == prev:             # <<<<<<<<<<<<<<
 *             is_unique = 0
 *         prev = cur
 */
    __pyx_t_2 = (__pyx_v_cur == __pyx_v_prev);
    if (__pyx_t_2) {

      /* "pandas/src/generated.pyx":1709
 *             return False, None
 *         elif cur == prev:
 *             is_unique = 0             # <<<<<<<<<<<<<<
 *         prev = cur
 *     return True, is_unique
 */
      __pyx_v_is_unique = 0;
      goto __pyx_L8;
    }
    __pyx_L8:;

    /* "pandas/src/generated.pyx":1710
 *         elif cur == prev:
 *             is_unique = 0
 *         prev = cur             # <<<<<<<<<<<<<<
 *     return True, is_unique
 * 
 */
    __pyx_v_prev = __pyx_v_cur;
  }

  /* "pandas/src/generated.pyx":1711
 *             is_unique = 0
 *         prev = cur
 *     return True, is_unique             # <<<<<<<<<<<<<<
 * 
 * @cython.wraparound(False)
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_4 = __Pyx_PyBool_FromLong(1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1711; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_5 = __Pyx_PyBool_FromLong(__pyx_v_is_unique); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1711; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1711; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_3));
  PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_4);
  __Pyx_GIVEREF(__pyx_t_4);
  PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_t_5);
  __Pyx_GIVEREF(__pyx_t_5);
  __pyx_t_4 = 0;
  __pyx_t_5 = 0;
  __pyx_r = ((PyObject *)__pyx_t_3);
  __pyx_t_3 = 0;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  { PyObject *__pyx_type, *__pyx_value, *__pyx_tb;
    __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);
    __Pyx_SafeReleaseBuffer(&__pyx_bstruct_arr);
  __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);}
  __Pyx_AddTraceback("pandas._algos.is_monotonic_bool", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  goto __pyx_L2;
  __pyx_L0:;
  __Pyx_SafeReleaseBuffer(&__pyx_bstruct_arr);
  __pyx_L2:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "pandas/src/generated.pyx":1715
 * @cython.wraparound(False)
 * @cython.boundscheck(False)
 * def groupby_float64(ndarray[float64_t] index, ndarray labels):             # <<<<<<<<<<<<<<
 *     cdef dict result = {}
 *     cdef Py_ssize_t i, length
 */

static PyObject *__pyx_pf_6pandas_6_algos_50groupby_float64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_6pandas_6_algos_50groupby_float64 = {__Pyx_NAMESTR("groupby_float64"), (PyCFunction)__pyx_pf_6pandas_6_algos_50groupby_float64, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(0)};
static PyObject *__pyx_pf_6pandas_6_algos_50groupby_float64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyArrayObject *__pyx_v_index = 0;
  PyArrayObject *__pyx_v_labels = 0;
  PyObject *__pyx_v_result = 0;
  Py_ssize_t __pyx_v_i;
  Py_ssize_t __pyx_v_length;
  PyObject *__pyx_v_members = 0;
  PyObject *__pyx_v_idx = 0;
  PyObject *__pyx_v_key = 0;
  Py_buffer __pyx_bstruct_index;
  Py_ssize_t __pyx_bstride_0_index = 0;
  Py_ssize_t __pyx_bshape_0_index = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  Py_ssize_t __pyx_t_2;
  Py_ssize_t __pyx_t_3;
  int __pyx_t_4;
  Py_ssize_t __pyx_t_5;
  int __pyx_t_6;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__index,&__pyx_n_s__labels,0};
  __Pyx_RefNannySetupContext("groupby_float64");
  __pyx_self = __pyx_self;
  {
    PyObject* values[2] = {0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  0:
        values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__index);
        if (likely(values[0])) kw_args--;
        else goto __pyx_L5_argtuple_error;
        case  1:
        values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__labels);
        if (likely(values[1])) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("groupby_float64", 1, 2, 2, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1715; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "groupby_float64") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1715; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
    }
    __pyx_v_index = ((PyArrayObject *)values[0]);
    __pyx_v_labels = ((PyArrayObject *)values[1]);
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("groupby_float64", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1715; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("pandas._algos.groupby_float64", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_bstruct_index.buf = NULL;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_index), __pyx_ptype_5numpy_ndarray, 1, "index", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1715; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_labels), __pyx_ptype_5numpy_ndarray, 1, "labels", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1715; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_index, (PyObject*)__pyx_v_index, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1715; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  }
  __pyx_bstride_0_index = __pyx_bstruct_index.strides[0];
  __pyx_bshape_0_index = __pyx_bstruct_index.shape[0];

  /* "pandas/src/generated.pyx":1716
 * @cython.boundscheck(False)
 * def groupby_float64(ndarray[float64_t] index, ndarray labels):
 *     cdef dict result = {}             # <<<<<<<<<<<<<<
 *     cdef Py_ssize_t i, length
 *     cdef list members
 */
  __pyx_t_1 = PyDict_New(); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1716; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_1));
  __pyx_v_result = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "pandas/src/generated.pyx":1721
 *     cdef object idx, key
 * 
 *     length = len(index)             # <<<<<<<<<<<<<<
 * 
 *     for i in range(length):
 */
  __pyx_t_2 = PyObject_Length(((PyObject *)__pyx_v_index)); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1721; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_v_length = __pyx_t_2;

  /* "pandas/src/generated.pyx":1723
 *     length = len(index)
 * 
 *     for i in range(length):             # <<<<<<<<<<<<<<
 *         key = util.get_value_1d(labels, i)
 * 
 */
  __pyx_t_2 = __pyx_v_length;
  for (__pyx_t_3 = 0; __pyx_t_3 < __pyx_t_2; __pyx_t_3+=1) {
    __pyx_v_i = __pyx_t_3;

    /* "pandas/src/generated.pyx":1724
 * 
 *     for i in range(length):
 *         key = util.get_value_1d(labels, i)             # <<<<<<<<<<<<<<
 * 
 *         if _checknull(key):
 */
    __pyx_t_1 = get_value_1d(__pyx_v_labels, __pyx_v_i); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1724; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_XDECREF(__pyx_v_key);
    __pyx_v_key = __pyx_t_1;
    __pyx_t_1 = 0;

    /* "pandas/src/generated.pyx":1726
 *         key = util.get_value_1d(labels, i)
 * 
 *         if _checknull(key):             # <<<<<<<<<<<<<<
 *             continue
 * 
 */
    __pyx_t_4 = __pyx_f_4util__checknull(__pyx_v_key);
    if (__pyx_t_4) {

      /* "pandas/src/generated.pyx":1727
 * 
 *         if _checknull(key):
 *             continue             # <<<<<<<<<<<<<<
 * 
 *         idx = index[i]
 */
      goto __pyx_L6_continue;
      goto __pyx_L8;
    }
    __pyx_L8:;

    /* "pandas/src/generated.pyx":1729
 *             continue
 * 
 *         idx = index[i]             # <<<<<<<<<<<<<<
 *         if key in result:
 *             members = result[key]
 */
    __pyx_t_5 = __pyx_v_i;
    __pyx_t_1 = PyFloat_FromDouble((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_index.buf, __pyx_t_5, __pyx_bstride_0_index))); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1729; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_XDECREF(__pyx_v_idx);
    __pyx_v_idx = __pyx_t_1;
    __pyx_t_1 = 0;

    /* "pandas/src/generated.pyx":1730
 * 
 *         idx = index[i]
 *         if key in result:             # <<<<<<<<<<<<<<
 *             members = result[key]
 *             members.append(idx)
 */
    if (unlikely(((PyObject *)__pyx_v_result) == Py_None)) {
      PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable"); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1730; __pyx_clineno = __LINE__; goto __pyx_L1_error;} 
    }
    __pyx_t_4 = ((PyDict_Contains(((PyObject *)__pyx_v_result), __pyx_v_key))); if (unlikely(__pyx_t_4 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1730; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    if (__pyx_t_4) {

      /* "pandas/src/generated.pyx":1731
 *         idx = index[i]
 *         if key in result:
 *             members = result[key]             # <<<<<<<<<<<<<<
 *             members.append(idx)
 *         else:
 */
      __pyx_t_1 = __Pyx_PyDict_GetItem(((PyObject *)__pyx_v_result), __pyx_v_key); if (!__pyx_t_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1731; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_1);
      if (!(likely(PyList_CheckExact(__pyx_t_1))||((__pyx_t_1) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected list, got %.200s", Py_TYPE(__pyx_t_1)->tp_name), 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1731; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_XDECREF(((PyObject *)__pyx_v_members));
      __pyx_v_members = ((PyObject*)__pyx_t_1);
      __pyx_t_1 = 0;

      /* "pandas/src/generated.pyx":1732
 *         if key in result:
 *             members = result[key]
 *             members.append(idx)             # <<<<<<<<<<<<<<
 *         else:
 *             result[key] = [idx]
 */
      if (unlikely(((PyObject *)__pyx_v_members) == Py_None)) {
        PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%s'", "append"); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1732; __pyx_clineno = __LINE__; goto __pyx_L1_error;} 
      }
      __pyx_t_6 = PyList_Append(__pyx_v_members, __pyx_v_idx); if (unlikely(__pyx_t_6 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1732; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      goto __pyx_L9;
    }
    /*else*/ {

      /* "pandas/src/generated.pyx":1734
 *             members.append(idx)
 *         else:
 *             result[key] = [idx]             # <<<<<<<<<<<<<<
 * 
 *     return result
 */
      __pyx_t_1 = PyList_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1734; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(((PyObject *)__pyx_t_1));
      __Pyx_INCREF(__pyx_v_idx);
      PyList_SET_ITEM(__pyx_t_1, 0, __pyx_v_idx);
      __Pyx_GIVEREF(__pyx_v_idx);
      if (PyDict_SetItem(((PyObject *)__pyx_v_result), __pyx_v_key, ((PyObject *)__pyx_t_1)) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1734; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_DECREF(((PyObject *)__pyx_t_1)); __pyx_t_1 = 0;
    }
    __pyx_L9:;
    __pyx_L6_continue:;
  }

  /* "pandas/src/generated.pyx":1736
 *             result[key] = [idx]
 * 
 *     return result             # <<<<<<<<<<<<<<
 * 
 * @cython.wraparound(False)
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_result));
  __pyx_r = ((PyObject *)__pyx_v_result);
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  { PyObject *__pyx_type, *__pyx_value, *__pyx_tb;
    __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);
    __Pyx_SafeReleaseBuffer(&__pyx_bstruct_index);
  __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);}
  __Pyx_AddTraceback("pandas._algos.groupby_float64", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  goto __pyx_L2;
  __pyx_L0:;
  __Pyx_SafeReleaseBuffer(&__pyx_bstruct_index);
  __pyx_L2:;
  __Pyx_XDECREF(__pyx_v_result);
  __Pyx_XDECREF(__pyx_v_members);
  __Pyx_XDECREF(__pyx_v_idx);
  __Pyx_XDECREF(__pyx_v_key);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "pandas/src/generated.pyx":1740
 * @cython.wraparound(False)
 * @cython.boundscheck(False)
 * def groupby_object(ndarray[object] index, ndarray labels):             # <<<<<<<<<<<<<<
 *     cdef dict result = {}
 *     cdef Py_ssize_t i, length
 */

static PyObject *__pyx_pf_6pandas_6_algos_51groupby_object(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_6pandas_6_algos_51groupby_object = {__Pyx_NAMESTR("groupby_object"), (PyCFunction)__pyx_pf_6pandas_6_algos_51groupby_object, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(0)};
static PyObject *__pyx_pf_6pandas_6_algos_51groupby_object(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyArrayObject *__pyx_v_index = 0;
  PyArrayObject *__pyx_v_labels = 0;
  PyObject *__pyx_v_result = 0;
  Py_ssize_t __pyx_v_i;
  Py_ssize_t __pyx_v_length;
  PyObject *__pyx_v_members = 0;
  PyObject *__pyx_v_idx = 0;
  PyObject *__pyx_v_key = 0;
  Py_buffer __pyx_bstruct_index;
  Py_ssize_t __pyx_bstride_0_index = 0;
  Py_ssize_t __pyx_bshape_0_index = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  Py_ssize_t __pyx_t_2;
  Py_ssize_t __pyx_t_3;
  int __pyx_t_4;
  Py_ssize_t __pyx_t_5;
  int __pyx_t_6;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__index,&__pyx_n_s__labels,0};
  __Pyx_RefNannySetupContext("groupby_object");
  __pyx_self = __pyx_self;
  {
    PyObject* values[2] = {0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  0:
        values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__index);
        if (likely(values[0])) kw_args--;
        else goto __pyx_L5_argtuple_error;
        case  1:
        values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__labels);
        if (likely(values[1])) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("groupby_object", 1, 2, 2, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1740; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "groupby_object") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1740; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
    }
    __pyx_v_index = ((PyArrayObject *)values[0]);
    __pyx_v_labels = ((PyArrayObject *)values[1]);
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("groupby_object", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1740; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("pandas._algos.groupby_object", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_bstruct_index.buf = NULL;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_index), __pyx_ptype_5numpy_ndarray, 1, "index", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1740; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_labels), __pyx_ptype_5numpy_ndarray, 1, "labels", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1740; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_index, (PyObject*)__pyx_v_index, &__Pyx_TypeInfo_object, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1740; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  }
  __pyx_bstride_0_index = __pyx_bstruct_index.strides[0];
  __pyx_bshape_0_index = __pyx_bstruct_index.shape[0];

  /* "pandas/src/generated.pyx":1741
 * @cython.boundscheck(False)
 * def groupby_object(ndarray[object] index, ndarray labels):
 *     cdef dict result = {}             # <<<<<<<<<<<<<<
 *     cdef Py_ssize_t i, length
 *     cdef list members
 */
  __pyx_t_1 = PyDict_New(); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1741; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_1));
  __pyx_v_result = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "pandas/src/generated.pyx":1746
 *     cdef object idx, key
 * 
 *     length = len(index)             # <<<<<<<<<<<<<<
 * 
 *     for i in range(length):
 */
  __pyx_t_2 = PyObject_Length(((PyObject *)__pyx_v_index)); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1746; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_v_length = __pyx_t_2;

  /* "pandas/src/generated.pyx":1748
 *     length = len(index)
 * 
 *     for i in range(length):             # <<<<<<<<<<<<<<
 *         key = util.get_value_1d(labels, i)
 * 
 */
  __pyx_t_2 = __pyx_v_length;
  for (__pyx_t_3 = 0; __pyx_t_3 < __pyx_t_2; __pyx_t_3+=1) {
    __pyx_v_i = __pyx_t_3;

    /* "pandas/src/generated.pyx":1749
 * 
 *     for i in range(length):
 *         key = util.get_value_1d(labels, i)             # <<<<<<<<<<<<<<
 * 
 *         if _checknull(key):
 */
    __pyx_t_1 = get_value_1d(__pyx_v_labels, __pyx_v_i); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1749; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_XDECREF(__pyx_v_key);
    __pyx_v_key = __pyx_t_1;
    __pyx_t_1 = 0;

    /* "pandas/src/generated.pyx":1751
 *         key = util.get_value_1d(labels, i)
 * 
 *         if _checknull(key):             # <<<<<<<<<<<<<<
 *             continue
 * 
 */
    __pyx_t_4 = __pyx_f_4util__checknull(__pyx_v_key);
    if (__pyx_t_4) {

      /* "pandas/src/generated.pyx":1752
 * 
 *         if _checknull(key):
 *             continue             # <<<<<<<<<<<<<<
 * 
 *         idx = index[i]
 */
      goto __pyx_L6_continue;
      goto __pyx_L8;
    }
    __pyx_L8:;

    /* "pandas/src/generated.pyx":1754
 *             continue
 * 
 *         idx = index[i]             # <<<<<<<<<<<<<<
 *         if key in result:
 *             members = result[key]
 */
    __pyx_t_5 = __pyx_v_i;
    __pyx_t_1 = *__Pyx_BufPtrStrided1d(PyObject **, __pyx_bstruct_index.buf, __pyx_t_5, __pyx_bstride_0_index);
    __Pyx_INCREF((PyObject*)__pyx_t_1);
    __Pyx_XDECREF(__pyx_v_idx);
    __pyx_v_idx = __pyx_t_1;
    __pyx_t_1 = 0;

    /* "pandas/src/generated.pyx":1755
 * 
 *         idx = index[i]
 *         if key in result:             # <<<<<<<<<<<<<<
 *             members = result[key]
 *             members.append(idx)
 */
    if (unlikely(((PyObject *)__pyx_v_result) == Py_None)) {
      PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable"); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1755; __pyx_clineno = __LINE__; goto __pyx_L1_error;} 
    }
    __pyx_t_4 = ((PyDict_Contains(((PyObject *)__pyx_v_result), __pyx_v_key))); if (unlikely(__pyx_t_4 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1755; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    if (__pyx_t_4) {

      /* "pandas/src/generated.pyx":1756
 *         idx = index[i]
 *         if key in result:
 *             members = result[key]             # <<<<<<<<<<<<<<
 *             members.append(idx)
 *         else:
 */
      __pyx_t_1 = __Pyx_PyDict_GetItem(((PyObject *)__pyx_v_result), __pyx_v_key); if (!__pyx_t_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1756; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_1);
      if (!(likely(PyList_CheckExact(__pyx_t_1))||((__pyx_t_1) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected list, got %.200s", Py_TYPE(__pyx_t_1)->tp_name), 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1756; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_XDECREF(((PyObject *)__pyx_v_members));
      __pyx_v_members = ((PyObject*)__pyx_t_1);
      __pyx_t_1 = 0;

      /* "pandas/src/generated.pyx":1757
 *         if key in result:
 *             members = result[key]
 *             members.append(idx)             # <<<<<<<<<<<<<<
 *         else:
 *             result[key] = [idx]
 */
      if (unlikely(((PyObject *)__pyx_v_members) == Py_None)) {
        PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%s'", "append"); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1757; __pyx_clineno = __LINE__; goto __pyx_L1_error;} 
      }
      __pyx_t_6 = PyList_Append(__pyx_v_members, __pyx_v_idx); if (unlikely(__pyx_t_6 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1757; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      goto __pyx_L9;
    }
    /*else*/ {

      /* "pandas/src/generated.pyx":1759
 *             members.append(idx)
 *         else:
 *             result[key] = [idx]             # <<<<<<<<<<<<<<
 * 
 *     return result
 */
      __pyx_t_1 = PyList_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1759; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(((PyObject *)__pyx_t_1));
      __Pyx_INCREF(__pyx_v_idx);
      PyList_SET_ITEM(__pyx_t_1, 0, __pyx_v_idx);
      __Pyx_GIVEREF(__pyx_v_idx);
      if (PyDict_SetItem(((PyObject *)__pyx_v_result), __pyx_v_key, ((PyObject *)__pyx_t_1)) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1759; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_DECREF(((PyObject *)__pyx_t_1)); __pyx_t_1 = 0;
    }
    __pyx_L9:;
    __pyx_L6_continue:;
  }

  /* "pandas/src/generated.pyx":1761
 *             result[key] = [idx]
 * 
 *     return result             # <<<<<<<<<<<<<<
 * 
 * @cython.wraparound(False)
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_result));
  __pyx_r = ((PyObject *)__pyx_v_result);
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  { PyObject *__pyx_type, *__pyx_value, *__pyx_tb;
    __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);
    __Pyx_SafeReleaseBuffer(&__pyx_bstruct_index);
  __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);}
  __Pyx_AddTraceback("pandas._algos.groupby_object", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  goto __pyx_L2;
  __pyx_L0:;
  __Pyx_SafeReleaseBuffer(&__pyx_bstruct_index);
  __pyx_L2:;
  __Pyx_XDECREF(__pyx_v_result);
  __Pyx_XDECREF(__pyx_v_members);
  __Pyx_XDECREF(__pyx_v_idx);
  __Pyx_XDECREF(__pyx_v_key);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "pandas/src/generated.pyx":1765
 * @cython.wraparound(False)
 * @cython.boundscheck(False)
 * def groupby_int32(ndarray[int32_t] index, ndarray labels):             # <<<<<<<<<<<<<<
 *     cdef dict result = {}
 *     cdef Py_ssize_t i, length
 */

static PyObject *__pyx_pf_6pandas_6_algos_52groupby_int32(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_6pandas_6_algos_52groupby_int32 = {__Pyx_NAMESTR("groupby_int32"), (PyCFunction)__pyx_pf_6pandas_6_algos_52groupby_int32, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(0)};
static PyObject *__pyx_pf_6pandas_6_algos_52groupby_int32(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyArrayObject *__pyx_v_index = 0;
  PyArrayObject *__pyx_v_labels = 0;
  PyObject *__pyx_v_result = 0;
  Py_ssize_t __pyx_v_i;
  Py_ssize_t __pyx_v_length;
  PyObject *__pyx_v_members = 0;
  PyObject *__pyx_v_idx = 0;
  PyObject *__pyx_v_key = 0;
  Py_buffer __pyx_bstruct_index;
  Py_ssize_t __pyx_bstride_0_index = 0;
  Py_ssize_t __pyx_bshape_0_index = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  Py_ssize_t __pyx_t_2;
  Py_ssize_t __pyx_t_3;
  int __pyx_t_4;
  Py_ssize_t __pyx_t_5;
  int __pyx_t_6;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__index,&__pyx_n_s__labels,0};
  __Pyx_RefNannySetupContext("groupby_int32");
  __pyx_self = __pyx_self;
  {
    PyObject* values[2] = {0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  0:
        values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__index);
        if (likely(values[0])) kw_args--;
        else goto __pyx_L5_argtuple_error;
        case  1:
        values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__labels);
        if (likely(values[1])) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("groupby_int32", 1, 2, 2, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1765; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "groupby_int32") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1765; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
    }
    __pyx_v_index = ((PyArrayObject *)values[0]);
    __pyx_v_labels = ((PyArrayObject *)values[1]);
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("groupby_int32", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1765; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("pandas._algos.groupby_int32", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_bstruct_index.buf = NULL;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_index), __pyx_ptype_5numpy_ndarray, 1, "index", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1765; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_labels), __pyx_ptype_5numpy_ndarray, 1, "labels", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1765; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_index, (PyObject*)__pyx_v_index, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int32_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1765; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  }
  __pyx_bstride_0_index = __pyx_bstruct_index.strides[0];
  __pyx_bshape_0_index = __pyx_bstruct_index.shape[0];

  /* "pandas/src/generated.pyx":1766
 * @cython.boundscheck(False)
 * def groupby_int32(ndarray[int32_t] index, ndarray labels):
 *     cdef dict result = {}             # <<<<<<<<<<<<<<
 *     cdef Py_ssize_t i, length
 *     cdef list members
 */
  __pyx_t_1 = PyDict_New(); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1766; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_1));
  __pyx_v_result = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "pandas/src/generated.pyx":1771
 *     cdef object idx, key
 * 
 *     length = len(index)             # <<<<<<<<<<<<<<
 * 
 *     for i in range(length):
 */
  __pyx_t_2 = PyObject_Length(((PyObject *)__pyx_v_index)); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1771; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_v_length = __pyx_t_2;

  /* "pandas/src/generated.pyx":1773
 *     length = len(index)
 * 
 *     for i in range(length):             # <<<<<<<<<<<<<<
 *         key = util.get_value_1d(labels, i)
 * 
 */
  __pyx_t_2 = __pyx_v_length;
  for (__pyx_t_3 = 0; __pyx_t_3 < __pyx_t_2; __pyx_t_3+=1) {
    __pyx_v_i = __pyx_t_3;

    /* "pandas/src/generated.pyx":1774
 * 
 *     for i in range(length):
 *         key = util.get_value_1d(labels, i)             # <<<<<<<<<<<<<<
 * 
 *         if _checknull(key):
 */
    __pyx_t_1 = get_value_1d(__pyx_v_labels, __pyx_v_i); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1774; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_XDECREF(__pyx_v_key);
    __pyx_v_key = __pyx_t_1;
    __pyx_t_1 = 0;

    /* "pandas/src/generated.pyx":1776
 *         key = util.get_value_1d(labels, i)
 * 
 *         if _checknull(key):             # <<<<<<<<<<<<<<
 *             continue
 * 
 */
    __pyx_t_4 = __pyx_f_4util__checknull(__pyx_v_key);
    if (__pyx_t_4) {

      /* "pandas/src/generated.pyx":1777
 * 
 *         if _checknull(key):
 *             continue             # <<<<<<<<<<<<<<
 * 
 *         idx = index[i]
 */
      goto __pyx_L6_continue;
      goto __pyx_L8;
    }
    __pyx_L8:;

    /* "pandas/src/generated.pyx":1779
 *             continue
 * 
 *         idx = index[i]             # <<<<<<<<<<<<<<
 *         if key in result:
 *             members = result[key]
 */
    __pyx_t_5 = __pyx_v_i;
    __pyx_t_1 = __Pyx_PyInt_to_py_npy_int32((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int32_t *, __pyx_bstruct_index.buf, __pyx_t_5, __pyx_bstride_0_index))); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1779; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_XDECREF(__pyx_v_idx);
    __pyx_v_idx = __pyx_t_1;
    __pyx_t_1 = 0;

    /* "pandas/src/generated.pyx":1780
 * 
 *         idx = index[i]
 *         if key in result:             # <<<<<<<<<<<<<<
 *             members = result[key]
 *             members.append(idx)
 */
    if (unlikely(((PyObject *)__pyx_v_result) == Py_None)) {
      PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable"); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1780; __pyx_clineno = __LINE__; goto __pyx_L1_error;} 
    }
    __pyx_t_4 = ((PyDict_Contains(((PyObject *)__pyx_v_result), __pyx_v_key))); if (unlikely(__pyx_t_4 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1780; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    if (__pyx_t_4) {

      /* "pandas/src/generated.pyx":1781
 *         idx = index[i]
 *         if key in result:
 *             members = result[key]             # <<<<<<<<<<<<<<
 *             members.append(idx)
 *         else:
 */
      __pyx_t_1 = __Pyx_PyDict_GetItem(((PyObject *)__pyx_v_result), __pyx_v_key); if (!__pyx_t_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1781; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_1);
      if (!(likely(PyList_CheckExact(__pyx_t_1))||((__pyx_t_1) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected list, got %.200s", Py_TYPE(__pyx_t_1)->tp_name), 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1781; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_XDECREF(((PyObject *)__pyx_v_members));
      __pyx_v_members = ((PyObject*)__pyx_t_1);
      __pyx_t_1 = 0;

      /* "pandas/src/generated.pyx":1782
 *         if key in result:
 *             members = result[key]
 *             members.append(idx)             # <<<<<<<<<<<<<<
 *         else:
 *             result[key] = [idx]
 */
      if (unlikely(((PyObject *)__pyx_v_members) == Py_None)) {
        PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%s'", "append"); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1782; __pyx_clineno = __LINE__; goto __pyx_L1_error;} 
      }
      __pyx_t_6 = PyList_Append(__pyx_v_members, __pyx_v_idx); if (unlikely(__pyx_t_6 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1782; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      goto __pyx_L9;
    }
    /*else*/ {

      /* "pandas/src/generated.pyx":1784
 *             members.append(idx)
 *         else:
 *             result[key] = [idx]             # <<<<<<<<<<<<<<
 * 
 *     return result
 */
      __pyx_t_1 = PyList_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1784; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(((PyObject *)__pyx_t_1));
      __Pyx_INCREF(__pyx_v_idx);
      PyList_SET_ITEM(__pyx_t_1, 0, __pyx_v_idx);
      __Pyx_GIVEREF(__pyx_v_idx);
      if (PyDict_SetItem(((PyObject *)__pyx_v_result), __pyx_v_key, ((PyObject *)__pyx_t_1)) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1784; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_DECREF(((PyObject *)__pyx_t_1)); __pyx_t_1 = 0;
    }
    __pyx_L9:;
    __pyx_L6_continue:;
  }

  /* "pandas/src/generated.pyx":1786
 *             result[key] = [idx]
 * 
 *     return result             # <<<<<<<<<<<<<<
 * 
 * @cython.wraparound(False)
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_result));
  __pyx_r = ((PyObject *)__pyx_v_result);
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  { PyObject *__pyx_type, *__pyx_value, *__pyx_tb;
    __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);
    __Pyx_SafeReleaseBuffer(&__pyx_bstruct_index);
  __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);}
  __Pyx_AddTraceback("pandas._algos.groupby_int32", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  goto __pyx_L2;
  __pyx_L0:;
  __Pyx_SafeReleaseBuffer(&__pyx_bstruct_index);
  __pyx_L2:;
  __Pyx_XDECREF(__pyx_v_result);
  __Pyx_XDECREF(__pyx_v_members);
  __Pyx_XDECREF(__pyx_v_idx);
  __Pyx_XDECREF(__pyx_v_key);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "pandas/src/generated.pyx":1790
 * @cython.wraparound(False)
 * @cython.boundscheck(False)
 * def groupby_int64(ndarray[int64_t] index, ndarray labels):             # <<<<<<<<<<<<<<
 *     cdef dict result = {}
 *     cdef Py_ssize_t i, length
 */

static PyObject *__pyx_pf_6pandas_6_algos_53groupby_int64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_6pandas_6_algos_53groupby_int64 = {__Pyx_NAMESTR("groupby_int64"), (PyCFunction)__pyx_pf_6pandas_6_algos_53groupby_int64, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(0)};
static PyObject *__pyx_pf_6pandas_6_algos_53groupby_int64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyArrayObject *__pyx_v_index = 0;
  PyArrayObject *__pyx_v_labels = 0;
  PyObject *__pyx_v_result = 0;
  Py_ssize_t __pyx_v_i;
  Py_ssize_t __pyx_v_length;
  PyObject *__pyx_v_members = 0;
  PyObject *__pyx_v_idx = 0;
  PyObject *__pyx_v_key = 0;
  Py_buffer __pyx_bstruct_index;
  Py_ssize_t __pyx_bstride_0_index = 0;
  Py_ssize_t __pyx_bshape_0_index = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  Py_ssize_t __pyx_t_2;
  Py_ssize_t __pyx_t_3;
  int __pyx_t_4;
  Py_ssize_t __pyx_t_5;
  int __pyx_t_6;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__index,&__pyx_n_s__labels,0};
  __Pyx_RefNannySetupContext("groupby_int64");
  __pyx_self = __pyx_self;
  {
    PyObject* values[2] = {0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  0:
        values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__index);
        if (likely(values[0])) kw_args--;
        else goto __pyx_L5_argtuple_error;
        case  1:
        values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__labels);
        if (likely(values[1])) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("groupby_int64", 1, 2, 2, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1790; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "groupby_int64") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1790; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
    }
    __pyx_v_index = ((PyArrayObject *)values[0]);
    __pyx_v_labels = ((PyArrayObject *)values[1]);
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("groupby_int64", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1790; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("pandas._algos.groupby_int64", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_bstruct_index.buf = NULL;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_index), __pyx_ptype_5numpy_ndarray, 1, "index", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1790; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_labels), __pyx_ptype_5numpy_ndarray, 1, "labels", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1790; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_index, (PyObject*)__pyx_v_index, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1790; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  }
  __pyx_bstride_0_index = __pyx_bstruct_index.strides[0];
  __pyx_bshape_0_index = __pyx_bstruct_index.shape[0];

  /* "pandas/src/generated.pyx":1791
 * @cython.boundscheck(False)
 * def groupby_int64(ndarray[int64_t] index, ndarray labels):
 *     cdef dict result = {}             # <<<<<<<<<<<<<<
 *     cdef Py_ssize_t i, length
 *     cdef list members
 */
  __pyx_t_1 = PyDict_New(); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1791; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_1));
  __pyx_v_result = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "pandas/src/generated.pyx":1796
 *     cdef object idx, key
 * 
 *     length = len(index)             # <<<<<<<<<<<<<<
 * 
 *     for i in range(length):
 */
  __pyx_t_2 = PyObject_Length(((PyObject *)__pyx_v_index)); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1796; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_v_length = __pyx_t_2;

  /* "pandas/src/generated.pyx":1798
 *     length = len(index)
 * 
 *     for i in range(length):             # <<<<<<<<<<<<<<
 *         key = util.get_value_1d(labels, i)
 * 
 */
  __pyx_t_2 = __pyx_v_length;
  for (__pyx_t_3 = 0; __pyx_t_3 < __pyx_t_2; __pyx_t_3+=1) {
    __pyx_v_i = __pyx_t_3;

    /* "pandas/src/generated.pyx":1799
 * 
 *     for i in range(length):
 *         key = util.get_value_1d(labels, i)             # <<<<<<<<<<<<<<
 * 
 *         if _checknull(key):
 */
    __pyx_t_1 = get_value_1d(__pyx_v_labels, __pyx_v_i); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1799; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_XDECREF(__pyx_v_key);
    __pyx_v_key = __pyx_t_1;
    __pyx_t_1 = 0;

    /* "pandas/src/generated.pyx":1801
 *         key = util.get_value_1d(labels, i)
 * 
 *         if _checknull(key):             # <<<<<<<<<<<<<<
 *             continue
 * 
 */
    __pyx_t_4 = __pyx_f_4util__checknull(__pyx_v_key);
    if (__pyx_t_4) {

      /* "pandas/src/generated.pyx":1802
 * 
 *         if _checknull(key):
 *             continue             # <<<<<<<<<<<<<<
 * 
 *         idx = index[i]
 */
      goto __pyx_L6_continue;
      goto __pyx_L8;
    }
    __pyx_L8:;

    /* "pandas/src/generated.pyx":1804
 *             continue
 * 
 *         idx = index[i]             # <<<<<<<<<<<<<<
 *         if key in result:
 *             members = result[key]
 */
    __pyx_t_5 = __pyx_v_i;
    __pyx_t_1 = __Pyx_PyInt_to_py_npy_int64((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_bstruct_index.buf, __pyx_t_5, __pyx_bstride_0_index))); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1804; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_XDECREF(__pyx_v_idx);
    __pyx_v_idx = __pyx_t_1;
    __pyx_t_1 = 0;

    /* "pandas/src/generated.pyx":1805
 * 
 *         idx = index[i]
 *         if key in result:             # <<<<<<<<<<<<<<
 *             members = result[key]
 *             members.append(idx)
 */
    if (unlikely(((PyObject *)__pyx_v_result) == Py_None)) {
      PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable"); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1805; __pyx_clineno = __LINE__; goto __pyx_L1_error;} 
    }
    __pyx_t_4 = ((PyDict_Contains(((PyObject *)__pyx_v_result), __pyx_v_key))); if (unlikely(__pyx_t_4 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1805; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    if (__pyx_t_4) {

      /* "pandas/src/generated.pyx":1806
 *         idx = index[i]
 *         if key in result:
 *             members = result[key]             # <<<<<<<<<<<<<<
 *             members.append(idx)
 *         else:
 */
      __pyx_t_1 = __Pyx_PyDict_GetItem(((PyObject *)__pyx_v_result), __pyx_v_key); if (!__pyx_t_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1806; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_1);
      if (!(likely(PyList_CheckExact(__pyx_t_1))||((__pyx_t_1) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected list, got %.200s", Py_TYPE(__pyx_t_1)->tp_name), 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1806; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_XDECREF(((PyObject *)__pyx_v_members));
      __pyx_v_members = ((PyObject*)__pyx_t_1);
      __pyx_t_1 = 0;

      /* "pandas/src/generated.pyx":1807
 *         if key in result:
 *             members = result[key]
 *             members.append(idx)             # <<<<<<<<<<<<<<
 *         else:
 *             result[key] = [idx]
 */
      if (unlikely(((PyObject *)__pyx_v_members) == Py_None)) {
        PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%s'", "append"); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1807; __pyx_clineno = __LINE__; goto __pyx_L1_error;} 
      }
      __pyx_t_6 = PyList_Append(__pyx_v_members, __pyx_v_idx); if (unlikely(__pyx_t_6 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1807; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      goto __pyx_L9;
    }
    /*else*/ {

      /* "pandas/src/generated.pyx":1809
 *             members.append(idx)
 *         else:
 *             result[key] = [idx]             # <<<<<<<<<<<<<<
 * 
 *     return result
 */
      __pyx_t_1 = PyList_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1809; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(((PyObject *)__pyx_t_1));
      __Pyx_INCREF(__pyx_v_idx);
      PyList_SET_ITEM(__pyx_t_1, 0, __pyx_v_idx);
      __Pyx_GIVEREF(__pyx_v_idx);
      if (PyDict_SetItem(((PyObject *)__pyx_v_result), __pyx_v_key, ((PyObject *)__pyx_t_1)) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1809; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_DECREF(((PyObject *)__pyx_t_1)); __pyx_t_1 = 0;
    }
    __pyx_L9:;
    __pyx_L6_continue:;
  }

  /* "pandas/src/generated.pyx":1811
 *             result[key] = [idx]
 * 
 *     return result             # <<<<<<<<<<<<<<
 * 
 * @cython.wraparound(False)
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_result));
  __pyx_r = ((PyObject *)__pyx_v_result);
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  { PyObject *__pyx_type, *__pyx_value, *__pyx_tb;
    __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);
    __Pyx_SafeReleaseBuffer(&__pyx_bstruct_index);
  __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);}
  __Pyx_AddTraceback("pandas._algos.groupby_int64", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  goto __pyx_L2;
  __pyx_L0:;
  __Pyx_SafeReleaseBuffer(&__pyx_bstruct_index);
  __pyx_L2:;
  __Pyx_XDECREF(__pyx_v_result);
  __Pyx_XDECREF(__pyx_v_members);
  __Pyx_XDECREF(__pyx_v_idx);
  __Pyx_XDECREF(__pyx_v_key);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "pandas/src/generated.pyx":1815
 * @cython.wraparound(False)
 * @cython.boundscheck(False)
 * def groupby_bool(ndarray[uint8_t] index, ndarray labels):             # <<<<<<<<<<<<<<
 *     cdef dict result = {}
 *     cdef Py_ssize_t i, length
 */

static PyObject *__pyx_pf_6pandas_6_algos_54groupby_bool(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_6pandas_6_algos_54groupby_bool = {__Pyx_NAMESTR("groupby_bool"), (PyCFunction)__pyx_pf_6pandas_6_algos_54groupby_bool, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(0)};
static PyObject *__pyx_pf_6pandas_6_algos_54groupby_bool(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyArrayObject *__pyx_v_index = 0;
  PyArrayObject *__pyx_v_labels = 0;
  PyObject *__pyx_v_result = 0;
  Py_ssize_t __pyx_v_i;
  Py_ssize_t __pyx_v_length;
  PyObject *__pyx_v_members = 0;
  PyObject *__pyx_v_idx = 0;
  PyObject *__pyx_v_key = 0;
  Py_buffer __pyx_bstruct_index;
  Py_ssize_t __pyx_bstride_0_index = 0;
  Py_ssize_t __pyx_bshape_0_index = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  Py_ssize_t __pyx_t_2;
  Py_ssize_t __pyx_t_3;
  int __pyx_t_4;
  Py_ssize_t __pyx_t_5;
  int __pyx_t_6;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__index,&__pyx_n_s__labels,0};
  __Pyx_RefNannySetupContext("groupby_bool");
  __pyx_self = __pyx_self;
  {
    PyObject* values[2] = {0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  0:
        values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__index);
        if (likely(values[0])) kw_args--;
        else goto __pyx_L5_argtuple_error;
        case  1:
        values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__labels);
        if (likely(values[1])) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("groupby_bool", 1, 2, 2, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1815; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "groupby_bool") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1815; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
    }
    __pyx_v_index = ((PyArrayObject *)values[0]);
    __pyx_v_labels = ((PyArrayObject *)values[1]);
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("groupby_bool", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1815; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("pandas._algos.groupby_bool", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_bstruct_index.buf = NULL;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_index), __pyx_ptype_5numpy_ndarray, 1, "index", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1815; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_labels), __pyx_ptype_5numpy_ndarray, 1, "labels", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1815; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_index, (PyObject*)__pyx_v_index, &__Pyx_TypeInfo_nn___pyx_t_5numpy_uint8_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1815; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  }
  __pyx_bstride_0_index = __pyx_bstruct_index.strides[0];
  __pyx_bshape_0_index = __pyx_bstruct_index.shape[0];

  /* "pandas/src/generated.pyx":1816
 * @cython.boundscheck(False)
 * def groupby_bool(ndarray[uint8_t] index, ndarray labels):
 *     cdef dict result = {}             # <<<<<<<<<<<<<<
 *     cdef Py_ssize_t i, length
 *     cdef list members
 */
  __pyx_t_1 = PyDict_New(); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1816; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_1));
  __pyx_v_result = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "pandas/src/generated.pyx":1821
 *     cdef object idx, key
 * 
 *     length = len(index)             # <<<<<<<<<<<<<<
 * 
 *     for i in range(length):
 */
  __pyx_t_2 = PyObject_Length(((PyObject *)__pyx_v_index)); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1821; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_v_length = __pyx_t_2;

  /* "pandas/src/generated.pyx":1823
 *     length = len(index)
 * 
 *     for i in range(length):             # <<<<<<<<<<<<<<
 *         key = util.get_value_1d(labels, i)
 * 
 */
  __pyx_t_2 = __pyx_v_length;
  for (__pyx_t_3 = 0; __pyx_t_3 < __pyx_t_2; __pyx_t_3+=1) {
    __pyx_v_i = __pyx_t_3;

    /* "pandas/src/generated.pyx":1824
 * 
 *     for i in range(length):
 *         key = util.get_value_1d(labels, i)             # <<<<<<<<<<<<<<
 * 
 *         if _checknull(key):
 */
    __pyx_t_1 = get_value_1d(__pyx_v_labels, __pyx_v_i); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1824; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_XDECREF(__pyx_v_key);
    __pyx_v_key = __pyx_t_1;
    __pyx_t_1 = 0;

    /* "pandas/src/generated.pyx":1826
 *         key = util.get_value_1d(labels, i)
 * 
 *         if _checknull(key):             # <<<<<<<<<<<<<<
 *             continue
 * 
 */
    __pyx_t_4 = __pyx_f_4util__checknull(__pyx_v_key);
    if (__pyx_t_4) {

      /* "pandas/src/generated.pyx":1827
 * 
 *         if _checknull(key):
 *             continue             # <<<<<<<<<<<<<<
 * 
 *         idx = index[i]
 */
      goto __pyx_L6_continue;
      goto __pyx_L8;
    }
    __pyx_L8:;

    /* "pandas/src/generated.pyx":1829
 *             continue
 * 
 *         idx = index[i]             # <<<<<<<<<<<<<<
 *         if key in result:
 *             members = result[key]
 */
    __pyx_t_5 = __pyx_v_i;
    __pyx_t_1 = __Pyx_PyInt_to_py_npy_uint8((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_uint8_t *, __pyx_bstruct_index.buf, __pyx_t_5, __pyx_bstride_0_index))); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1829; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_XDECREF(__pyx_v_idx);
    __pyx_v_idx = __pyx_t_1;
    __pyx_t_1 = 0;

    /* "pandas/src/generated.pyx":1830
 * 
 *         idx = index[i]
 *         if key in result:             # <<<<<<<<<<<<<<
 *             members = result[key]
 *             members.append(idx)
 */
    if (unlikely(((PyObject *)__pyx_v_result) == Py_None)) {
      PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable"); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1830; __pyx_clineno = __LINE__; goto __pyx_L1_error;} 
    }
    __pyx_t_4 = ((PyDict_Contains(((PyObject *)__pyx_v_result), __pyx_v_key))); if (unlikely(__pyx_t_4 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1830; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    if (__pyx_t_4) {

      /* "pandas/src/generated.pyx":1831
 *         idx = index[i]
 *         if key in result:
 *             members = result[key]             # <<<<<<<<<<<<<<
 *             members.append(idx)
 *         else:
 */
      __pyx_t_1 = __Pyx_PyDict_GetItem(((PyObject *)__pyx_v_result), __pyx_v_key); if (!__pyx_t_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1831; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_1);
      if (!(likely(PyList_CheckExact(__pyx_t_1))||((__pyx_t_1) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected list, got %.200s", Py_TYPE(__pyx_t_1)->tp_name), 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1831; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_XDECREF(((PyObject *)__pyx_v_members));
      __pyx_v_members = ((PyObject*)__pyx_t_1);
      __pyx_t_1 = 0;

      /* "pandas/src/generated.pyx":1832
 *         if key in result:
 *             members = result[key]
 *             members.append(idx)             # <<<<<<<<<<<<<<
 *         else:
 *             result[key] = [idx]
 */
      if (unlikely(((PyObject *)__pyx_v_members) == Py_None)) {
        PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%s'", "append"); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1832; __pyx_clineno = __LINE__; goto __pyx_L1_error;} 
      }
      __pyx_t_6 = PyList_Append(__pyx_v_members, __pyx_v_idx); if (unlikely(__pyx_t_6 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1832; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      goto __pyx_L9;
    }
    /*else*/ {

      /* "pandas/src/generated.pyx":1834
 *             members.append(idx)
 *         else:
 *             result[key] = [idx]             # <<<<<<<<<<<<<<
 * 
 *     return result
 */
      __pyx_t_1 = PyList_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1834; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(((PyObject *)__pyx_t_1));
      __Pyx_INCREF(__pyx_v_idx);
      PyList_SET_ITEM(__pyx_t_1, 0, __pyx_v_idx);
      __Pyx_GIVEREF(__pyx_v_idx);
      if (PyDict_SetItem(((PyObject *)__pyx_v_result), __pyx_v_key, ((PyObject *)__pyx_t_1)) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1834; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_DECREF(((PyObject *)__pyx_t_1)); __pyx_t_1 = 0;
    }
    __pyx_L9:;
    __pyx_L6_continue:;
  }

  /* "pandas/src/generated.pyx":1836
 *             result[key] = [idx]
 * 
 *     return result             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_result));
  __pyx_r = ((PyObject *)__pyx_v_result);
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  { PyObject *__pyx_type, *__pyx_value, *__pyx_tb;
    __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);
    __Pyx_SafeReleaseBuffer(&__pyx_bstruct_index);
  __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);}
  __Pyx_AddTraceback("pandas._algos.groupby_bool", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  goto __pyx_L2;
  __pyx_L0:;
  __Pyx_SafeReleaseBuffer(&__pyx_bstruct_index);
  __pyx_L2:;
  __Pyx_XDECREF(__pyx_v_result);
  __Pyx_XDECREF(__pyx_v_members);
  __Pyx_XDECREF(__pyx_v_idx);
  __Pyx_XDECREF(__pyx_v_key);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "pandas/src/generated.pyx":1841
 * @cython.wraparound(False)
 * @cython.boundscheck(False)
 * def arrmap_float64(ndarray[float64_t] index, object func):             # <<<<<<<<<<<<<<
 *     cdef Py_ssize_t length = index.shape[0]
 *     cdef Py_ssize_t i = 0
 */

static PyObject *__pyx_pf_6pandas_6_algos_55arrmap_float64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_6pandas_6_algos_55arrmap_float64 = {__Pyx_NAMESTR("arrmap_float64"), (PyCFunction)__pyx_pf_6pandas_6_algos_55arrmap_float64, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(0)};
static PyObject *__pyx_pf_6pandas_6_algos_55arrmap_float64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyArrayObject *__pyx_v_index = 0;
  PyObject *__pyx_v_func = 0;
  Py_ssize_t __pyx_v_length;
  Py_ssize_t __pyx_v_i;
  PyArrayObject *__pyx_v_result = 0;
  PyObject *__pyx_v_maybe_convert_objects = NULL;
  Py_buffer __pyx_bstruct_index;
  Py_ssize_t __pyx_bstride_0_index = 0;
  Py_ssize_t __pyx_bshape_0_index = 0;
  Py_buffer __pyx_bstruct_result;
  Py_ssize_t __pyx_bstride_0_result = 0;
  Py_ssize_t __pyx_bshape_0_result = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  PyArrayObject *__pyx_t_6 = NULL;
  Py_ssize_t __pyx_t_7;
  Py_ssize_t __pyx_t_8;
  Py_ssize_t __pyx_t_9;
  Py_ssize_t __pyx_t_10;
  PyObject **__pyx_t_11;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__index,&__pyx_n_s__func,0};
  __Pyx_RefNannySetupContext("arrmap_float64");
  __pyx_self = __pyx_self;
  {
    PyObject* values[2] = {0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  0:
        values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__index);
        if (likely(values[0])) kw_args--;
        else goto __pyx_L5_argtuple_error;
        case  1:
        values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__func);
        if (likely(values[1])) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("arrmap_float64", 1, 2, 2, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1841; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "arrmap_float64") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1841; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
    }
    __pyx_v_index = ((PyArrayObject *)values[0]);
    __pyx_v_func = values[1];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("arrmap_float64", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1841; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("pandas._algos.arrmap_float64", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_bstruct_result.buf = NULL;
  __pyx_bstruct_index.buf = NULL;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_index), __pyx_ptype_5numpy_ndarray, 1, "index", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1841; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_index, (PyObject*)__pyx_v_index, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1841; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  }
  __pyx_bstride_0_index = __pyx_bstruct_index.strides[0];
  __pyx_bshape_0_index = __pyx_bstruct_index.shape[0];

  /* "pandas/src/generated.pyx":1842
 * @cython.boundscheck(False)
 * def arrmap_float64(ndarray[float64_t] index, object func):
 *     cdef Py_ssize_t length = index.shape[0]             # <<<<<<<<<<<<<<
 *     cdef Py_ssize_t i = 0
 * 
 */
  __pyx_v_length = (__pyx_v_index->dimensions[0]);

  /* "pandas/src/generated.pyx":1843
 * def arrmap_float64(ndarray[float64_t] index, object func):
 *     cdef Py_ssize_t length = index.shape[0]
 *     cdef Py_ssize_t i = 0             # <<<<<<<<<<<<<<
 * 
 *     cdef ndarray[object] result = np.empty(length, dtype=np.object_)
 */
  __pyx_v_i = 0;

  /* "pandas/src/generated.pyx":1845
 *     cdef Py_ssize_t i = 0
 * 
 *     cdef ndarray[object] result = np.empty(length, dtype=np.object_)             # <<<<<<<<<<<<<<
 * 
 *     from pandas.lib import maybe_convert_objects
 */
  __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__np); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1845; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s__empty); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1845; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = PyInt_FromSsize_t(__pyx_v_length); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1845; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1845; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_3));
  PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __pyx_t_1 = 0;
  __pyx_t_1 = PyDict_New(); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1845; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_1));
  __pyx_t_4 = __Pyx_GetName(__pyx_m, __pyx_n_s__np); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1845; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_5 = PyObject_GetAttr(__pyx_t_4, __pyx_n_s__object_); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1845; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  if (PyDict_SetItem(__pyx_t_1, ((PyObject *)__pyx_n_s__dtype), __pyx_t_5) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1845; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = PyEval_CallObjectWithKeywords(__pyx_t_2, ((PyObject *)__pyx_t_3), ((PyObject *)__pyx_t_1)); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1845; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(((PyObject *)__pyx_t_3)); __pyx_t_3 = 0;
  __Pyx_DECREF(((PyObject *)__pyx_t_1)); __pyx_t_1 = 0;
  if (!(likely(((__pyx_t_5) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_5, __pyx_ptype_5numpy_ndarray))))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1845; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_t_6 = ((PyArrayObject *)__pyx_t_5);
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_result, (PyObject*)__pyx_t_6, &__Pyx_TypeInfo_object, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) {
      __pyx_v_result = ((PyArrayObject *)Py_None); __Pyx_INCREF(Py_None); __pyx_bstruct_result.buf = NULL;
      {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1845; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    } else {__pyx_bstride_0_result = __pyx_bstruct_result.strides[0];
      __pyx_bshape_0_result = __pyx_bstruct_result.shape[0];
    }
  }
  __pyx_t_6 = 0;
  __pyx_v_result = ((PyArrayObject *)__pyx_t_5);
  __pyx_t_5 = 0;

  /* "pandas/src/generated.pyx":1847
 *     cdef ndarray[object] result = np.empty(length, dtype=np.object_)
 * 
 *     from pandas.lib import maybe_convert_objects             # <<<<<<<<<<<<<<
 * 
 *     for i in range(length):
 */
  __pyx_t_5 = PyList_New(1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1847; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_5));
  __Pyx_INCREF(((PyObject *)__pyx_n_s_54));
  PyList_SET_ITEM(__pyx_t_5, 0, ((PyObject *)__pyx_n_s_54));
  __Pyx_GIVEREF(((PyObject *)__pyx_n_s_54));
  __pyx_t_1 = __Pyx_Import(((PyObject *)__pyx_n_s_53), ((PyObject *)__pyx_t_5), -1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1847; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(((PyObject *)__pyx_t_5)); __pyx_t_5 = 0;
  __pyx_t_5 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s_54); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1847; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_INCREF(__pyx_t_5);
  __pyx_v_maybe_convert_objects = __pyx_t_5;
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "pandas/src/generated.pyx":1849
 *     from pandas.lib import maybe_convert_objects
 * 
 *     for i in range(length):             # <<<<<<<<<<<<<<
 *         result[i] = func(index[i])
 * 
 */
  __pyx_t_7 = __pyx_v_length;
  for (__pyx_t_8 = 0; __pyx_t_8 < __pyx_t_7; __pyx_t_8+=1) {
    __pyx_v_i = __pyx_t_8;

    /* "pandas/src/generated.pyx":1850
 * 
 *     for i in range(length):
 *         result[i] = func(index[i])             # <<<<<<<<<<<<<<
 * 
 *     return maybe_convert_objects(result)
 */
    __pyx_t_9 = __pyx_v_i;
    __pyx_t_1 = PyFloat_FromDouble((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_index.buf, __pyx_t_9, __pyx_bstride_0_index))); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1850; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1850; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(((PyObject *)__pyx_t_5));
    PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_1);
    __Pyx_GIVEREF(__pyx_t_1);
    __pyx_t_1 = 0;
    __pyx_t_1 = PyObject_Call(__pyx_v_func, ((PyObject *)__pyx_t_5), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1850; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(((PyObject *)__pyx_t_5)); __pyx_t_5 = 0;
    __pyx_t_10 = __pyx_v_i;
    __pyx_t_11 = __Pyx_BufPtrStrided1d(PyObject **, __pyx_bstruct_result.buf, __pyx_t_10, __pyx_bstride_0_result);
    __Pyx_GOTREF(*__pyx_t_11);
    __Pyx_DECREF(*__pyx_t_11); __Pyx_INCREF(__pyx_t_1);
    *__pyx_t_11 = __pyx_t_1;
    __Pyx_GIVEREF(*__pyx_t_11);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  }

  /* "pandas/src/generated.pyx":1852
 *         result[i] = func(index[i])
 * 
 *     return maybe_convert_objects(result)             # <<<<<<<<<<<<<<
 * 
 * @cython.wraparound(False)
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1852; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_1));
  __Pyx_INCREF(((PyObject *)__pyx_v_result));
  PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)__pyx_v_result));
  __Pyx_GIVEREF(((PyObject *)__pyx_v_result));
  __pyx_t_5 = PyObject_Call(__pyx_v_maybe_convert_objects, ((PyObject *)__pyx_t_1), NULL); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1852; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(((PyObject *)__pyx_t_1)); __pyx_t_1 = 0;
  __pyx_r = __pyx_t_5;
  __pyx_t_5 = 0;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  { PyObject *__pyx_type, *__pyx_value, *__pyx_tb;
    __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);
    __Pyx_SafeReleaseBuffer(&__pyx_bstruct_index);
    __Pyx_SafeReleaseBuffer(&__pyx_bstruct_result);
  __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);}
  __Pyx_AddTraceback("pandas._algos.arrmap_float64", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  goto __pyx_L2;
  __pyx_L0:;
  __Pyx_SafeReleaseBuffer(&__pyx_bstruct_index);
  __Pyx_SafeReleaseBuffer(&__pyx_bstruct_result);
  __pyx_L2:;
  __Pyx_XDECREF((PyObject *)__pyx_v_result);
  __Pyx_XDECREF(__pyx_v_maybe_convert_objects);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "pandas/src/generated.pyx":1856
 * @cython.wraparound(False)
 * @cython.boundscheck(False)
 * def arrmap_object(ndarray[object] index, object func):             # <<<<<<<<<<<<<<
 *     cdef Py_ssize_t length = index.shape[0]
 *     cdef Py_ssize_t i = 0
 */

static PyObject *__pyx_pf_6pandas_6_algos_56arrmap_object(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_6pandas_6_algos_56arrmap_object = {__Pyx_NAMESTR("arrmap_object"), (PyCFunction)__pyx_pf_6pandas_6_algos_56arrmap_object, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(0)};
static PyObject *__pyx_pf_6pandas_6_algos_56arrmap_object(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyArrayObject *__pyx_v_index = 0;
  PyObject *__pyx_v_func = 0;
  Py_ssize_t __pyx_v_length;
  Py_ssize_t __pyx_v_i;
  PyArrayObject *__pyx_v_result = 0;
  PyObject *__pyx_v_maybe_convert_objects = NULL;
  Py_buffer __pyx_bstruct_index;
  Py_ssize_t __pyx_bstride_0_index = 0;
  Py_ssize_t __pyx_bshape_0_index = 0;
  Py_buffer __pyx_bstruct_result;
  Py_ssize_t __pyx_bstride_0_result = 0;
  Py_ssize_t __pyx_bshape_0_result = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  PyArrayObject *__pyx_t_6 = NULL;
  Py_ssize_t __pyx_t_7;
  Py_ssize_t __pyx_t_8;
  Py_ssize_t __pyx_t_9;
  Py_ssize_t __pyx_t_10;
  PyObject **__pyx_t_11;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__index,&__pyx_n_s__func,0};
  __Pyx_RefNannySetupContext("arrmap_object");
  __pyx_self = __pyx_self;
  {
    PyObject* values[2] = {0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  0:
        values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__index);
        if (likely(values[0])) kw_args--;
        else goto __pyx_L5_argtuple_error;
        case  1:
        values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__func);
        if (likely(values[1])) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("arrmap_object", 1, 2, 2, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1856; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "arrmap_object") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1856; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
    }
    __pyx_v_index = ((PyArrayObject *)values[0]);
    __pyx_v_func = values[1];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("arrmap_object", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1856; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("pandas._algos.arrmap_object", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_bstruct_result.buf = NULL;
  __pyx_bstruct_index.buf = NULL;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_index), __pyx_ptype_5numpy_ndarray, 1, "index", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1856; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_index, (PyObject*)__pyx_v_index, &__Pyx_TypeInfo_object, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1856; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  }
  __pyx_bstride_0_index = __pyx_bstruct_index.strides[0];
  __pyx_bshape_0_index = __pyx_bstruct_index.shape[0];

  /* "pandas/src/generated.pyx":1857
 * @cython.boundscheck(False)
 * def arrmap_object(ndarray[object] index, object func):
 *     cdef Py_ssize_t length = index.shape[0]             # <<<<<<<<<<<<<<
 *     cdef Py_ssize_t i = 0
 * 
 */
  __pyx_v_length = (__pyx_v_index->dimensions[0]);

  /* "pandas/src/generated.pyx":1858
 * def arrmap_object(ndarray[object] index, object func):
 *     cdef Py_ssize_t length = index.shape[0]
 *     cdef Py_ssize_t i = 0             # <<<<<<<<<<<<<<
 * 
 *     cdef ndarray[object] result = np.empty(length, dtype=np.object_)
 */
  __pyx_v_i = 0;

  /* "pandas/src/generated.pyx":1860
 *     cdef Py_ssize_t i = 0
 * 
 *     cdef ndarray[object] result = np.empty(length, dtype=np.object_)             # <<<<<<<<<<<<<<
 * 
 *     from pandas.lib import maybe_convert_objects
 */
  __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__np); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1860; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s__empty); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1860; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = PyInt_FromSsize_t(__pyx_v_length); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1860; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1860; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_3));
  PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __pyx_t_1 = 0;
  __pyx_t_1 = PyDict_New(); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1860; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_1));
  __pyx_t_4 = __Pyx_GetName(__pyx_m, __pyx_n_s__np); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1860; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_5 = PyObject_GetAttr(__pyx_t_4, __pyx_n_s__object_); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1860; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  if (PyDict_SetItem(__pyx_t_1, ((PyObject *)__pyx_n_s__dtype), __pyx_t_5) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1860; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = PyEval_CallObjectWithKeywords(__pyx_t_2, ((PyObject *)__pyx_t_3), ((PyObject *)__pyx_t_1)); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1860; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(((PyObject *)__pyx_t_3)); __pyx_t_3 = 0;
  __Pyx_DECREF(((PyObject *)__pyx_t_1)); __pyx_t_1 = 0;
  if (!(likely(((__pyx_t_5) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_5, __pyx_ptype_5numpy_ndarray))))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1860; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_t_6 = ((PyArrayObject *)__pyx_t_5);
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_result, (PyObject*)__pyx_t_6, &__Pyx_TypeInfo_object, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) {
      __pyx_v_result = ((PyArrayObject *)Py_None); __Pyx_INCREF(Py_None); __pyx_bstruct_result.buf = NULL;
      {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1860; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    } else {__pyx_bstride_0_result = __pyx_bstruct_result.strides[0];
      __pyx_bshape_0_result = __pyx_bstruct_result.shape[0];
    }
  }
  __pyx_t_6 = 0;
  __pyx_v_result = ((PyArrayObject *)__pyx_t_5);
  __pyx_t_5 = 0;

  /* "pandas/src/generated.pyx":1862
 *     cdef ndarray[object] result = np.empty(length, dtype=np.object_)
 * 
 *     from pandas.lib import maybe_convert_objects             # <<<<<<<<<<<<<<
 * 
 *     for i in range(length):
 */
  __pyx_t_5 = PyList_New(1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1862; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_5));
  __Pyx_INCREF(((PyObject *)__pyx_n_s_54));
  PyList_SET_ITEM(__pyx_t_5, 0, ((PyObject *)__pyx_n_s_54));
  __Pyx_GIVEREF(((PyObject *)__pyx_n_s_54));
  __pyx_t_1 = __Pyx_Import(((PyObject *)__pyx_n_s_53), ((PyObject *)__pyx_t_5), -1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1862; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(((PyObject *)__pyx_t_5)); __pyx_t_5 = 0;
  __pyx_t_5 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s_54); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1862; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_INCREF(__pyx_t_5);
  __pyx_v_maybe_convert_objects = __pyx_t_5;
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "pandas/src/generated.pyx":1864
 *     from pandas.lib import maybe_convert_objects
 * 
 *     for i in range(length):             # <<<<<<<<<<<<<<
 *         result[i] = func(index[i])
 * 
 */
  __pyx_t_7 = __pyx_v_length;
  for (__pyx_t_8 = 0; __pyx_t_8 < __pyx_t_7; __pyx_t_8+=1) {
    __pyx_v_i = __pyx_t_8;

    /* "pandas/src/generated.pyx":1865
 * 
 *     for i in range(length):
 *         result[i] = func(index[i])             # <<<<<<<<<<<<<<
 * 
 *     return maybe_convert_objects(result)
 */
    __pyx_t_9 = __pyx_v_i;
    __pyx_t_1 = *__Pyx_BufPtrStrided1d(PyObject **, __pyx_bstruct_index.buf, __pyx_t_9, __pyx_bstride_0_index);
    __Pyx_INCREF((PyObject*)__pyx_t_1);
    __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1865; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(((PyObject *)__pyx_t_5));
    PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_1);
    __Pyx_GIVEREF(__pyx_t_1);
    __pyx_t_1 = 0;
    __pyx_t_1 = PyObject_Call(__pyx_v_func, ((PyObject *)__pyx_t_5), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1865; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(((PyObject *)__pyx_t_5)); __pyx_t_5 = 0;
    __pyx_t_10 = __pyx_v_i;
    __pyx_t_11 = __Pyx_BufPtrStrided1d(PyObject **, __pyx_bstruct_result.buf, __pyx_t_10, __pyx_bstride_0_result);
    __Pyx_GOTREF(*__pyx_t_11);
    __Pyx_DECREF(*__pyx_t_11); __Pyx_INCREF(__pyx_t_1);
    *__pyx_t_11 = __pyx_t_1;
    __Pyx_GIVEREF(*__pyx_t_11);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  }

  /* "pandas/src/generated.pyx":1867
 *         result[i] = func(index[i])
 * 
 *     return maybe_convert_objects(result)             # <<<<<<<<<<<<<<
 * 
 * @cython.wraparound(False)
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1867; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_1));
  __Pyx_INCREF(((PyObject *)__pyx_v_result));
  PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)__pyx_v_result));
  __Pyx_GIVEREF(((PyObject *)__pyx_v_result));
  __pyx_t_5 = PyObject_Call(__pyx_v_maybe_convert_objects, ((PyObject *)__pyx_t_1), NULL); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1867; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(((PyObject *)__pyx_t_1)); __pyx_t_1 = 0;
  __pyx_r = __pyx_t_5;
  __pyx_t_5 = 0;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  { PyObject *__pyx_type, *__pyx_value, *__pyx_tb;
    __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);
    __Pyx_SafeReleaseBuffer(&__pyx_bstruct_index);
    __Pyx_SafeReleaseBuffer(&__pyx_bstruct_result);
  __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);}
  __Pyx_AddTraceback("pandas._algos.arrmap_object", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  goto __pyx_L2;
  __pyx_L0:;
  __Pyx_SafeReleaseBuffer(&__pyx_bstruct_index);
  __Pyx_SafeReleaseBuffer(&__pyx_bstruct_result);
  __pyx_L2:;
  __Pyx_XDECREF((PyObject *)__pyx_v_result);
  __Pyx_XDECREF(__pyx_v_maybe_convert_objects);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "pandas/src/generated.pyx":1871
 * @cython.wraparound(False)
 * @cython.boundscheck(False)
 * def arrmap_int32(ndarray[int32_t] index, object func):             # <<<<<<<<<<<<<<
 *     cdef Py_ssize_t length = index.shape[0]
 *     cdef Py_ssize_t i = 0
 */

static PyObject *__pyx_pf_6pandas_6_algos_57arrmap_int32(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_6pandas_6_algos_57arrmap_int32 = {__Pyx_NAMESTR("arrmap_int32"), (PyCFunction)__pyx_pf_6pandas_6_algos_57arrmap_int32, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(0)};
static PyObject *__pyx_pf_6pandas_6_algos_57arrmap_int32(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyArrayObject *__pyx_v_index = 0;
  PyObject *__pyx_v_func = 0;
  Py_ssize_t __pyx_v_length;
  Py_ssize_t __pyx_v_i;
  PyArrayObject *__pyx_v_result = 0;
  PyObject *__pyx_v_maybe_convert_objects = NULL;
  Py_buffer __pyx_bstruct_index;
  Py_ssize_t __pyx_bstride_0_index = 0;
  Py_ssize_t __pyx_bshape_0_index = 0;
  Py_buffer __pyx_bstruct_result;
  Py_ssize_t __pyx_bstride_0_result = 0;
  Py_ssize_t __pyx_bshape_0_result = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  PyArrayObject *__pyx_t_6 = NULL;
  Py_ssize_t __pyx_t_7;
  Py_ssize_t __pyx_t_8;
  Py_ssize_t __pyx_t_9;
  Py_ssize_t __pyx_t_10;
  PyObject **__pyx_t_11;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__index,&__pyx_n_s__func,0};
  __Pyx_RefNannySetupContext("arrmap_int32");
  __pyx_self = __pyx_self;
  {
    PyObject* values[2] = {0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  0:
        values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__index);
        if (likely(values[0])) kw_args--;
        else goto __pyx_L5_argtuple_error;
        case  1:
        values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__func);
        if (likely(values[1])) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("arrmap_int32", 1, 2, 2, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1871; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "arrmap_int32") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1871; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
    }
    __pyx_v_index = ((PyArrayObject *)values[0]);
    __pyx_v_func = values[1];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("arrmap_int32", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1871; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("pandas._algos.arrmap_int32", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_bstruct_result.buf = NULL;
  __pyx_bstruct_index.buf = NULL;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_index), __pyx_ptype_5numpy_ndarray, 1, "index", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1871; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_index, (PyObject*)__pyx_v_index, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int32_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1871; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  }
  __pyx_bstride_0_index = __pyx_bstruct_index.strides[0];
  __pyx_bshape_0_index = __pyx_bstruct_index.shape[0];

  /* "pandas/src/generated.pyx":1872
 * @cython.boundscheck(False)
 * def arrmap_int32(ndarray[int32_t] index, object func):
 *     cdef Py_ssize_t length = index.shape[0]             # <<<<<<<<<<<<<<
 *     cdef Py_ssize_t i = 0
 * 
 */
  __pyx_v_length = (__pyx_v_index->dimensions[0]);

  /* "pandas/src/generated.pyx":1873
 * def arrmap_int32(ndarray[int32_t] index, object func):
 *     cdef Py_ssize_t length = index.shape[0]
 *     cdef Py_ssize_t i = 0             # <<<<<<<<<<<<<<
 * 
 *     cdef ndarray[object] result = np.empty(length, dtype=np.object_)
 */
  __pyx_v_i = 0;

  /* "pandas/src/generated.pyx":1875
 *     cdef Py_ssize_t i = 0
 * 
 *     cdef ndarray[object] result = np.empty(length, dtype=np.object_)             # <<<<<<<<<<<<<<
 * 
 *     from pandas.lib import maybe_convert_objects
 */
  __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__np); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1875; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s__empty); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1875; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = PyInt_FromSsize_t(__pyx_v_length); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1875; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1875; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_3));
  PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __pyx_t_1 = 0;
  __pyx_t_1 = PyDict_New(); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1875; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_1));
  __pyx_t_4 = __Pyx_GetName(__pyx_m, __pyx_n_s__np); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1875; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_5 = PyObject_GetAttr(__pyx_t_4, __pyx_n_s__object_); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1875; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  if (PyDict_SetItem(__pyx_t_1, ((PyObject *)__pyx_n_s__dtype), __pyx_t_5) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1875; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = PyEval_CallObjectWithKeywords(__pyx_t_2, ((PyObject *)__pyx_t_3), ((PyObject *)__pyx_t_1)); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1875; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(((PyObject *)__pyx_t_3)); __pyx_t_3 = 0;
  __Pyx_DECREF(((PyObject *)__pyx_t_1)); __pyx_t_1 = 0;
  if (!(likely(((__pyx_t_5) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_5, __pyx_ptype_5numpy_ndarray))))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1875; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_t_6 = ((PyArrayObject *)__pyx_t_5);
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_result, (PyObject*)__pyx_t_6, &__Pyx_TypeInfo_object, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) {
      __pyx_v_result = ((PyArrayObject *)Py_None); __Pyx_INCREF(Py_None); __pyx_bstruct_result.buf = NULL;
      {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1875; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    } else {__pyx_bstride_0_result = __pyx_bstruct_result.strides[0];
      __pyx_bshape_0_result = __pyx_bstruct_result.shape[0];
    }
  }
  __pyx_t_6 = 0;
  __pyx_v_result = ((PyArrayObject *)__pyx_t_5);
  __pyx_t_5 = 0;

  /* "pandas/src/generated.pyx":1877
 *     cdef ndarray[object] result = np.empty(length, dtype=np.object_)
 * 
 *     from pandas.lib import maybe_convert_objects             # <<<<<<<<<<<<<<
 * 
 *     for i in range(length):
 */
  __pyx_t_5 = PyList_New(1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1877; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_5));
  __Pyx_INCREF(((PyObject *)__pyx_n_s_54));
  PyList_SET_ITEM(__pyx_t_5, 0, ((PyObject *)__pyx_n_s_54));
  __Pyx_GIVEREF(((PyObject *)__pyx_n_s_54));
  __pyx_t_1 = __Pyx_Import(((PyObject *)__pyx_n_s_53), ((PyObject *)__pyx_t_5), -1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1877; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(((PyObject *)__pyx_t_5)); __pyx_t_5 = 0;
  __pyx_t_5 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s_54); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1877; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_INCREF(__pyx_t_5);
  __pyx_v_maybe_convert_objects = __pyx_t_5;
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "pandas/src/generated.pyx":1879
 *     from pandas.lib import maybe_convert_objects
 * 
 *     for i in range(length):             # <<<<<<<<<<<<<<
 *         result[i] = func(index[i])
 * 
 */
  __pyx_t_7 = __pyx_v_length;
  for (__pyx_t_8 = 0; __pyx_t_8 < __pyx_t_7; __pyx_t_8+=1) {
    __pyx_v_i = __pyx_t_8;

    /* "pandas/src/generated.pyx":1880
 * 
 *     for i in range(length):
 *         result[i] = func(index[i])             # <<<<<<<<<<<<<<
 * 
 *     return maybe_convert_objects(result)
 */
    __pyx_t_9 = __pyx_v_i;
    __pyx_t_1 = __Pyx_PyInt_to_py_npy_int32((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int32_t *, __pyx_bstruct_index.buf, __pyx_t_9, __pyx_bstride_0_index))); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1880; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1880; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(((PyObject *)__pyx_t_5));
    PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_1);
    __Pyx_GIVEREF(__pyx_t_1);
    __pyx_t_1 = 0;
    __pyx_t_1 = PyObject_Call(__pyx_v_func, ((PyObject *)__pyx_t_5), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1880; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(((PyObject *)__pyx_t_5)); __pyx_t_5 = 0;
    __pyx_t_10 = __pyx_v_i;
    __pyx_t_11 = __Pyx_BufPtrStrided1d(PyObject **, __pyx_bstruct_result.buf, __pyx_t_10, __pyx_bstride_0_result);
    __Pyx_GOTREF(*__pyx_t_11);
    __Pyx_DECREF(*__pyx_t_11); __Pyx_INCREF(__pyx_t_1);
    *__pyx_t_11 = __pyx_t_1;
    __Pyx_GIVEREF(*__pyx_t_11);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  }

  /* "pandas/src/generated.pyx":1882
 *         result[i] = func(index[i])
 * 
 *     return maybe_convert_objects(result)             # <<<<<<<<<<<<<<
 * 
 * @cython.wraparound(False)
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1882; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_1));
  __Pyx_INCREF(((PyObject *)__pyx_v_result));
  PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)__pyx_v_result));
  __Pyx_GIVEREF(((PyObject *)__pyx_v_result));
  __pyx_t_5 = PyObject_Call(__pyx_v_maybe_convert_objects, ((PyObject *)__pyx_t_1), NULL); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1882; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(((PyObject *)__pyx_t_1)); __pyx_t_1 = 0;
  __pyx_r = __pyx_t_5;
  __pyx_t_5 = 0;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  { PyObject *__pyx_type, *__pyx_value, *__pyx_tb;
    __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);
    __Pyx_SafeReleaseBuffer(&__pyx_bstruct_index);
    __Pyx_SafeReleaseBuffer(&__pyx_bstruct_result);
  __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);}
  __Pyx_AddTraceback("pandas._algos.arrmap_int32", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  goto __pyx_L2;
  __pyx_L0:;
  __Pyx_SafeReleaseBuffer(&__pyx_bstruct_index);
  __Pyx_SafeReleaseBuffer(&__pyx_bstruct_result);
  __pyx_L2:;
  __Pyx_XDECREF((PyObject *)__pyx_v_result);
  __Pyx_XDECREF(__pyx_v_maybe_convert_objects);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "pandas/src/generated.pyx":1886
 * @cython.wraparound(False)
 * @cython.boundscheck(False)
 * def arrmap_int64(ndarray[int64_t] index, object func):             # <<<<<<<<<<<<<<
 *     cdef Py_ssize_t length = index.shape[0]
 *     cdef Py_ssize_t i = 0
 */

static PyObject *__pyx_pf_6pandas_6_algos_58arrmap_int64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_6pandas_6_algos_58arrmap_int64 = {__Pyx_NAMESTR("arrmap_int64"), (PyCFunction)__pyx_pf_6pandas_6_algos_58arrmap_int64, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(0)};
static PyObject *__pyx_pf_6pandas_6_algos_58arrmap_int64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyArrayObject *__pyx_v_index = 0;
  PyObject *__pyx_v_func = 0;
  Py_ssize_t __pyx_v_length;
  Py_ssize_t __pyx_v_i;
  PyArrayObject *__pyx_v_result = 0;
  PyObject *__pyx_v_maybe_convert_objects = NULL;
  Py_buffer __pyx_bstruct_index;
  Py_ssize_t __pyx_bstride_0_index = 0;
  Py_ssize_t __pyx_bshape_0_index = 0;
  Py_buffer __pyx_bstruct_result;
  Py_ssize_t __pyx_bstride_0_result = 0;
  Py_ssize_t __pyx_bshape_0_result = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  PyArrayObject *__pyx_t_6 = NULL;
  Py_ssize_t __pyx_t_7;
  Py_ssize_t __pyx_t_8;
  Py_ssize_t __pyx_t_9;
  Py_ssize_t __pyx_t_10;
  PyObject **__pyx_t_11;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__index,&__pyx_n_s__func,0};
  __Pyx_RefNannySetupContext("arrmap_int64");
  __pyx_self = __pyx_self;
  {
    PyObject* values[2] = {0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  0:
        values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__index);
        if (likely(values[0])) kw_args--;
        else goto __pyx_L5_argtuple_error;
        case  1:
        values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__func);
        if (likely(values[1])) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("arrmap_int64", 1, 2, 2, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1886; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "arrmap_int64") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1886; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
    }
    __pyx_v_index = ((PyArrayObject *)values[0]);
    __pyx_v_func = values[1];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("arrmap_int64", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1886; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("pandas._algos.arrmap_int64", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_bstruct_result.buf = NULL;
  __pyx_bstruct_index.buf = NULL;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_index), __pyx_ptype_5numpy_ndarray, 1, "index", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1886; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_index, (PyObject*)__pyx_v_index, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1886; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  }
  __pyx_bstride_0_index = __pyx_bstruct_index.strides[0];
  __pyx_bshape_0_index = __pyx_bstruct_index.shape[0];

  /* "pandas/src/generated.pyx":1887
 * @cython.boundscheck(False)
 * def arrmap_int64(ndarray[int64_t] index, object func):
 *     cdef Py_ssize_t length = index.shape[0]             # <<<<<<<<<<<<<<
 *     cdef Py_ssize_t i = 0
 * 
 */
  __pyx_v_length = (__pyx_v_index->dimensions[0]);

  /* "pandas/src/generated.pyx":1888
 * def arrmap_int64(ndarray[int64_t] index, object func):
 *     cdef Py_ssize_t length = index.shape[0]
 *     cdef Py_ssize_t i = 0             # <<<<<<<<<<<<<<
 * 
 *     cdef ndarray[object] result = np.empty(length, dtype=np.object_)
 */
  __pyx_v_i = 0;

  /* "pandas/src/generated.pyx":1890
 *     cdef Py_ssize_t i = 0
 * 
 *     cdef ndarray[object] result = np.empty(length, dtype=np.object_)             # <<<<<<<<<<<<<<
 * 
 *     from pandas.lib import maybe_convert_objects
 */
  __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__np); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1890; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s__empty); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1890; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = PyInt_FromSsize_t(__pyx_v_length); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1890; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1890; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_3));
  PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __pyx_t_1 = 0;
  __pyx_t_1 = PyDict_New(); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1890; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_1));
  __pyx_t_4 = __Pyx_GetName(__pyx_m, __pyx_n_s__np); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1890; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_5 = PyObject_GetAttr(__pyx_t_4, __pyx_n_s__object_); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1890; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  if (PyDict_SetItem(__pyx_t_1, ((PyObject *)__pyx_n_s__dtype), __pyx_t_5) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1890; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = PyEval_CallObjectWithKeywords(__pyx_t_2, ((PyObject *)__pyx_t_3), ((PyObject *)__pyx_t_1)); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1890; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(((PyObject *)__pyx_t_3)); __pyx_t_3 = 0;
  __Pyx_DECREF(((PyObject *)__pyx_t_1)); __pyx_t_1 = 0;
  if (!(likely(((__pyx_t_5) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_5, __pyx_ptype_5numpy_ndarray))))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1890; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_t_6 = ((PyArrayObject *)__pyx_t_5);
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_result, (PyObject*)__pyx_t_6, &__Pyx_TypeInfo_object, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) {
      __pyx_v_result = ((PyArrayObject *)Py_None); __Pyx_INCREF(Py_None); __pyx_bstruct_result.buf = NULL;
      {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1890; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    } else {__pyx_bstride_0_result = __pyx_bstruct_result.strides[0];
      __pyx_bshape_0_result = __pyx_bstruct_result.shape[0];
    }
  }
  __pyx_t_6 = 0;
  __pyx_v_result = ((PyArrayObject *)__pyx_t_5);
  __pyx_t_5 = 0;

  /* "pandas/src/generated.pyx":1892
 *     cdef ndarray[object] result = np.empty(length, dtype=np.object_)
 * 
 *     from pandas.lib import maybe_convert_objects             # <<<<<<<<<<<<<<
 * 
 *     for i in range(length):
 */
  __pyx_t_5 = PyList_New(1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1892; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_5));
  __Pyx_INCREF(((PyObject *)__pyx_n_s_54));
  PyList_SET_ITEM(__pyx_t_5, 0, ((PyObject *)__pyx_n_s_54));
  __Pyx_GIVEREF(((PyObject *)__pyx_n_s_54));
  __pyx_t_1 = __Pyx_Import(((PyObject *)__pyx_n_s_53), ((PyObject *)__pyx_t_5), -1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1892; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(((PyObject *)__pyx_t_5)); __pyx_t_5 = 0;
  __pyx_t_5 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s_54); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1892; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_INCREF(__pyx_t_5);
  __pyx_v_maybe_convert_objects = __pyx_t_5;
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "pandas/src/generated.pyx":1894
 *     from pandas.lib import maybe_convert_objects
 * 
 *     for i in range(length):             # <<<<<<<<<<<<<<
 *         result[i] = func(index[i])
 * 
 */
  __pyx_t_7 = __pyx_v_length;
  for (__pyx_t_8 = 0; __pyx_t_8 < __pyx_t_7; __pyx_t_8+=1) {
    __pyx_v_i = __pyx_t_8;

    /* "pandas/src/generated.pyx":1895
 * 
 *     for i in range(length):
 *         result[i] = func(index[i])             # <<<<<<<<<<<<<<
 * 
 *     return maybe_convert_objects(result)
 */
    __pyx_t_9 = __pyx_v_i;
    __pyx_t_1 = __Pyx_PyInt_to_py_npy_int64((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_bstruct_index.buf, __pyx_t_9, __pyx_bstride_0_index))); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1895; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1895; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(((PyObject *)__pyx_t_5));
    PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_1);
    __Pyx_GIVEREF(__pyx_t_1);
    __pyx_t_1 = 0;
    __pyx_t_1 = PyObject_Call(__pyx_v_func, ((PyObject *)__pyx_t_5), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1895; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(((PyObject *)__pyx_t_5)); __pyx_t_5 = 0;
    __pyx_t_10 = __pyx_v_i;
    __pyx_t_11 = __Pyx_BufPtrStrided1d(PyObject **, __pyx_bstruct_result.buf, __pyx_t_10, __pyx_bstride_0_result);
    __Pyx_GOTREF(*__pyx_t_11);
    __Pyx_DECREF(*__pyx_t_11); __Pyx_INCREF(__pyx_t_1);
    *__pyx_t_11 = __pyx_t_1;
    __Pyx_GIVEREF(*__pyx_t_11);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  }

  /* "pandas/src/generated.pyx":1897
 *         result[i] = func(index[i])
 * 
 *     return maybe_convert_objects(result)             # <<<<<<<<<<<<<<
 * 
 * @cython.wraparound(False)
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1897; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_1));
  __Pyx_INCREF(((PyObject *)__pyx_v_result));
  PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)__pyx_v_result));
  __Pyx_GIVEREF(((PyObject *)__pyx_v_result));
  __pyx_t_5 = PyObject_Call(__pyx_v_maybe_convert_objects, ((PyObject *)__pyx_t_1), NULL); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1897; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(((PyObject *)__pyx_t_1)); __pyx_t_1 = 0;
  __pyx_r = __pyx_t_5;
  __pyx_t_5 = 0;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  { PyObject *__pyx_type, *__pyx_value, *__pyx_tb;
    __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);
    __Pyx_SafeReleaseBuffer(&__pyx_bstruct_index);
    __Pyx_SafeReleaseBuffer(&__pyx_bstruct_result);
  __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);}
  __Pyx_AddTraceback("pandas._algos.arrmap_int64", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  goto __pyx_L2;
  __pyx_L0:;
  __Pyx_SafeReleaseBuffer(&__pyx_bstruct_index);
  __Pyx_SafeReleaseBuffer(&__pyx_bstruct_result);
  __pyx_L2:;
  __Pyx_XDECREF((PyObject *)__pyx_v_result);
  __Pyx_XDECREF(__pyx_v_maybe_convert_objects);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "pandas/src/generated.pyx":1901
 * @cython.wraparound(False)
 * @cython.boundscheck(False)
 * def arrmap_bool(ndarray[uint8_t] index, object func):             # <<<<<<<<<<<<<<
 *     cdef Py_ssize_t length = index.shape[0]
 *     cdef Py_ssize_t i = 0
 */

static PyObject *__pyx_pf_6pandas_6_algos_59arrmap_bool(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_6pandas_6_algos_59arrmap_bool = {__Pyx_NAMESTR("arrmap_bool"), (PyCFunction)__pyx_pf_6pandas_6_algos_59arrmap_bool, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(0)};
static PyObject *__pyx_pf_6pandas_6_algos_59arrmap_bool(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyArrayObject *__pyx_v_index = 0;
  PyObject *__pyx_v_func = 0;
  Py_ssize_t __pyx_v_length;
  Py_ssize_t __pyx_v_i;
  PyArrayObject *__pyx_v_result = 0;
  PyObject *__pyx_v_maybe_convert_objects = NULL;
  Py_buffer __pyx_bstruct_index;
  Py_ssize_t __pyx_bstride_0_index = 0;
  Py_ssize_t __pyx_bshape_0_index = 0;
  Py_buffer __pyx_bstruct_result;
  Py_ssize_t __pyx_bstride_0_result = 0;
  Py_ssize_t __pyx_bshape_0_result = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  PyArrayObject *__pyx_t_6 = NULL;
  Py_ssize_t __pyx_t_7;
  Py_ssize_t __pyx_t_8;
  Py_ssize_t __pyx_t_9;
  Py_ssize_t __pyx_t_10;
  PyObject **__pyx_t_11;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__index,&__pyx_n_s__func,0};
  __Pyx_RefNannySetupContext("arrmap_bool");
  __pyx_self = __pyx_self;
  {
    PyObject* values[2] = {0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  0:
        values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__index);
        if (likely(values[0])) kw_args--;
        else goto __pyx_L5_argtuple_error;
        case  1:
        values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__func);
        if (likely(values[1])) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("arrmap_bool", 1, 2, 2, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1901; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "arrmap_bool") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1901; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
    }
    __pyx_v_index = ((PyArrayObject *)values[0]);
    __pyx_v_func = values[1];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("arrmap_bool", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1901; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("pandas._algos.arrmap_bool", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_bstruct_result.buf = NULL;
  __pyx_bstruct_index.buf = NULL;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_index), __pyx_ptype_5numpy_ndarray, 1, "index", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1901; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_index, (PyObject*)__pyx_v_index, &__Pyx_TypeInfo_nn___pyx_t_5numpy_uint8_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1901; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  }
  __pyx_bstride_0_index = __pyx_bstruct_index.strides[0];
  __pyx_bshape_0_index = __pyx_bstruct_index.shape[0];

  /* "pandas/src/generated.pyx":1902
 * @cython.boundscheck(False)
 * def arrmap_bool(ndarray[uint8_t] index, object func):
 *     cdef Py_ssize_t length = index.shape[0]             # <<<<<<<<<<<<<<
 *     cdef Py_ssize_t i = 0
 * 
 */
  __pyx_v_length = (__pyx_v_index->dimensions[0]);

  /* "pandas/src/generated.pyx":1903
 * def arrmap_bool(ndarray[uint8_t] index, object func):
 *     cdef Py_ssize_t length = index.shape[0]
 *     cdef Py_ssize_t i = 0             # <<<<<<<<<<<<<<
 * 
 *     cdef ndarray[object] result = np.empty(length, dtype=np.object_)
 */
  __pyx_v_i = 0;

  /* "pandas/src/generated.pyx":1905
 *     cdef Py_ssize_t i = 0
 * 
 *     cdef ndarray[object] result = np.empty(length, dtype=np.object_)             # <<<<<<<<<<<<<<
 * 
 *     from pandas.lib import maybe_convert_objects
 */
  __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__np); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1905; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s__empty); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1905; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = PyInt_FromSsize_t(__pyx_v_length); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1905; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1905; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_3));
  PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __pyx_t_1 = 0;
  __pyx_t_1 = PyDict_New(); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1905; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_1));
  __pyx_t_4 = __Pyx_GetName(__pyx_m, __pyx_n_s__np); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1905; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_5 = PyObject_GetAttr(__pyx_t_4, __pyx_n_s__object_); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1905; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  if (PyDict_SetItem(__pyx_t_1, ((PyObject *)__pyx_n_s__dtype), __pyx_t_5) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1905; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = PyEval_CallObjectWithKeywords(__pyx_t_2, ((PyObject *)__pyx_t_3), ((PyObject *)__pyx_t_1)); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1905; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(((PyObject *)__pyx_t_3)); __pyx_t_3 = 0;
  __Pyx_DECREF(((PyObject *)__pyx_t_1)); __pyx_t_1 = 0;
  if (!(likely(((__pyx_t_5) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_5, __pyx_ptype_5numpy_ndarray))))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1905; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_t_6 = ((PyArrayObject *)__pyx_t_5);
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_result, (PyObject*)__pyx_t_6, &__Pyx_TypeInfo_object, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) {
      __pyx_v_result = ((PyArrayObject *)Py_None); __Pyx_INCREF(Py_None); __pyx_bstruct_result.buf = NULL;
      {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1905; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    } else {__pyx_bstride_0_result = __pyx_bstruct_result.strides[0];
      __pyx_bshape_0_result = __pyx_bstruct_result.shape[0];
    }
  }
  __pyx_t_6 = 0;
  __pyx_v_result = ((PyArrayObject *)__pyx_t_5);
  __pyx_t_5 = 0;

  /* "pandas/src/generated.pyx":1907
 *     cdef ndarray[object] result = np.empty(length, dtype=np.object_)
 * 
 *     from pandas.lib import maybe_convert_objects             # <<<<<<<<<<<<<<
 * 
 *     for i in range(length):
 */
  __pyx_t_5 = PyList_New(1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1907; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_5));
  __Pyx_INCREF(((PyObject *)__pyx_n_s_54));
  PyList_SET_ITEM(__pyx_t_5, 0, ((PyObject *)__pyx_n_s_54));
  __Pyx_GIVEREF(((PyObject *)__pyx_n_s_54));
  __pyx_t_1 = __Pyx_Import(((PyObject *)__pyx_n_s_53), ((PyObject *)__pyx_t_5), -1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1907; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(((PyObject *)__pyx_t_5)); __pyx_t_5 = 0;
  __pyx_t_5 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s_54); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1907; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_INCREF(__pyx_t_5);
  __pyx_v_maybe_convert_objects = __pyx_t_5;
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "pandas/src/generated.pyx":1909
 *     from pandas.lib import maybe_convert_objects
 * 
 *     for i in range(length):             # <<<<<<<<<<<<<<
 *         result[i] = func(index[i])
 * 
 */
  __pyx_t_7 = __pyx_v_length;
  for (__pyx_t_8 = 0; __pyx_t_8 < __pyx_t_7; __pyx_t_8+=1) {
    __pyx_v_i = __pyx_t_8;

    /* "pandas/src/generated.pyx":1910
 * 
 *     for i in range(length):
 *         result[i] = func(index[i])             # <<<<<<<<<<<<<<
 * 
 *     return maybe_convert_objects(result)
 */
    __pyx_t_9 = __pyx_v_i;
    __pyx_t_1 = __Pyx_PyInt_to_py_npy_uint8((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_uint8_t *, __pyx_bstruct_index.buf, __pyx_t_9, __pyx_bstride_0_index))); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1910; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1910; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(((PyObject *)__pyx_t_5));
    PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_1);
    __Pyx_GIVEREF(__pyx_t_1);
    __pyx_t_1 = 0;
    __pyx_t_1 = PyObject_Call(__pyx_v_func, ((PyObject *)__pyx_t_5), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1910; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(((PyObject *)__pyx_t_5)); __pyx_t_5 = 0;
    __pyx_t_10 = __pyx_v_i;
    __pyx_t_11 = __Pyx_BufPtrStrided1d(PyObject **, __pyx_bstruct_result.buf, __pyx_t_10, __pyx_bstride_0_result);
    __Pyx_GOTREF(*__pyx_t_11);
    __Pyx_DECREF(*__pyx_t_11); __Pyx_INCREF(__pyx_t_1);
    *__pyx_t_11 = __pyx_t_1;
    __Pyx_GIVEREF(*__pyx_t_11);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  }

  /* "pandas/src/generated.pyx":1912
 *         result[i] = func(index[i])
 * 
 *     return maybe_convert_objects(result)             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1912; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_1));
  __Pyx_INCREF(((PyObject *)__pyx_v_result));
  PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)__pyx_v_result));
  __Pyx_GIVEREF(((PyObject *)__pyx_v_result));
  __pyx_t_5 = PyObject_Call(__pyx_v_maybe_convert_objects, ((PyObject *)__pyx_t_1), NULL); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1912; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(((PyObject *)__pyx_t_1)); __pyx_t_1 = 0;
  __pyx_r = __pyx_t_5;
  __pyx_t_5 = 0;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  { PyObject *__pyx_type, *__pyx_value, *__pyx_tb;
    __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);
    __Pyx_SafeReleaseBuffer(&__pyx_bstruct_index);
    __Pyx_SafeReleaseBuffer(&__pyx_bstruct_result);
  __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);}
  __Pyx_AddTraceback("pandas._algos.arrmap_bool", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  goto __pyx_L2;
  __pyx_L0:;
  __Pyx_SafeReleaseBuffer(&__pyx_bstruct_index);
  __Pyx_SafeReleaseBuffer(&__pyx_bstruct_result);
  __pyx_L2:;
  __Pyx_XDECREF((PyObject *)__pyx_v_result);
  __Pyx_XDECREF(__pyx_v_maybe_convert_objects);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "pandas/src/generated.pyx":1917
 * @cython.wraparound(False)
 * @cython.boundscheck(False)
 * def take_2d_axis0_float64(ndarray[float64_t, ndim=2] values,             # <<<<<<<<<<<<<<
 *                            ndarray[int64_t] indexer,
 *                            out=None, fill_value=np.nan):
 */

static PyObject *__pyx_pf_6pandas_6_algos_60take_2d_axis0_float64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_6pandas_6_algos_60take_2d_axis0_float64 = {__Pyx_NAMESTR("take_2d_axis0_float64"), (PyCFunction)__pyx_pf_6pandas_6_algos_60take_2d_axis0_float64, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(0)};
static PyObject *__pyx_pf_6pandas_6_algos_60take_2d_axis0_float64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyArrayObject *__pyx_v_values = 0;
  PyArrayObject *__pyx_v_indexer = 0;
  PyObject *__pyx_v_out = 0;
  PyObject *__pyx_v_fill_value = 0;
  Py_ssize_t __pyx_v_i;
  Py_ssize_t __pyx_v_j;
  Py_ssize_t __pyx_v_k;
  Py_ssize_t __pyx_v_n;
  Py_ssize_t __pyx_v_idx;
  PyArrayObject *__pyx_v_outbuf = 0;
  __pyx_t_5numpy_float64_t __pyx_v_fv;
  Py_buffer __pyx_bstruct_outbuf;
  Py_ssize_t __pyx_bstride_0_outbuf = 0;
  Py_ssize_t __pyx_bstride_1_outbuf = 0;
  Py_ssize_t __pyx_bshape_0_outbuf = 0;
  Py_ssize_t __pyx_bshape_1_outbuf = 0;
  Py_buffer __pyx_bstruct_indexer;
  Py_ssize_t __pyx_bstride_0_indexer = 0;
  Py_ssize_t __pyx_bshape_0_indexer = 0;
  Py_buffer __pyx_bstruct_values;
  Py_ssize_t __pyx_bstride_0_values = 0;
  Py_ssize_t __pyx_bstride_1_values = 0;
  Py_ssize_t __pyx_bshape_0_values = 0;
  Py_ssize_t __pyx_bshape_1_values = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  Py_ssize_t __pyx_t_1;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  PyArrayObject *__pyx_t_7 = NULL;
  int __pyx_t_8;
  PyObject *__pyx_t_9 = NULL;
  PyObject *__pyx_t_10 = NULL;
  PyObject *__pyx_t_11 = NULL;
  int __pyx_t_12;
  Py_ssize_t __pyx_t_13;
  Py_ssize_t __pyx_t_14;
  Py_ssize_t __pyx_t_15;
  Py_ssize_t __pyx_t_16;
  Py_ssize_t __pyx_t_17;
  Py_ssize_t __pyx_t_18;
  Py_ssize_t __pyx_t_19;
  __pyx_t_5numpy_float64_t __pyx_t_20;
  Py_ssize_t __pyx_t_21;
  Py_ssize_t __pyx_t_22;
  Py_ssize_t __pyx_t_23;
  Py_ssize_t __pyx_t_24;
  Py_ssize_t __pyx_t_25;
  Py_ssize_t __pyx_t_26;
  Py_ssize_t __pyx_t_27;
  Py_ssize_t __pyx_t_28;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__values,&__pyx_n_s__indexer,&__pyx_n_s__out,&__pyx_n_s__fill_value,0};
  __Pyx_RefNannySetupContext("take_2d_axis0_float64");
  __pyx_self = __pyx_self;
  {
    PyObject* values[4] = {0,0,0,0};

    /* "pandas/src/generated.pyx":1919
 * def take_2d_axis0_float64(ndarray[float64_t, ndim=2] values,
 *                            ndarray[int64_t] indexer,
 *                            out=None, fill_value=np.nan):             # <<<<<<<<<<<<<<
 *     cdef:
 *         Py_ssize_t i, j, k, n, idx
 */
    values[2] = ((PyObject *)Py_None);
    values[3] = __pyx_k_55;
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  0:
        values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__values);
        if (likely(values[0])) kw_args--;
        else goto __pyx_L5_argtuple_error;
        case  1:
        values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__indexer);
        if (likely(values[1])) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("take_2d_axis0_float64", 0, 2, 4, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1917; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
        }
        case  2:
        if (kw_args > 0) {
          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__out);
          if (value) { values[2] = value; kw_args--; }
        }
        case  3:
        if (kw_args > 0) {
          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__fill_value);
          if (value) { values[3] = value; kw_args--; }
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "take_2d_axis0_float64") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1917; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
    } else {
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_values = ((PyArrayObject *)values[0]);
    __pyx_v_indexer = ((PyArrayObject *)values[1]);
    __pyx_v_out = values[2];
    __pyx_v_fill_value = values[3];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("take_2d_axis0_float64", 0, 2, 4, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1917; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("pandas._algos.take_2d_axis0_float64", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_bstruct_outbuf.buf = NULL;
  __pyx_bstruct_values.buf = NULL;
  __pyx_bstruct_indexer.buf = NULL;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_values), __pyx_ptype_5numpy_ndarray, 1, "values", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1917; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_indexer), __pyx_ptype_5numpy_ndarray, 1, "indexer", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1918; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_values, (PyObject*)__pyx_v_values, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES, 2, 0, __pyx_stack) == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1917; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  }
  __pyx_bstride_0_values = __pyx_bstruct_values.strides[0]; __pyx_bstride_1_values = __pyx_bstruct_values.strides[1];
  __pyx_bshape_0_values = __pyx_bstruct_values.shape[0]; __pyx_bshape_1_values = __pyx_bstruct_values.shape[1];
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_indexer, (PyObject*)__pyx_v_indexer, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1917; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  }
  __pyx_bstride_0_indexer = __pyx_bstruct_indexer.strides[0];
  __pyx_bshape_0_indexer = __pyx_bstruct_indexer.shape[0];

  /* "pandas/src/generated.pyx":1925
 *         float64_t fv
 * 
 *     n = len(indexer)             # <<<<<<<<<<<<<<
 *     k = values.shape[1]
 * 
 */
  __pyx_t_1 = PyObject_Length(((PyObject *)__pyx_v_indexer)); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1925; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_v_n = __pyx_t_1;

  /* "pandas/src/generated.pyx":1926
 * 
 *     n = len(indexer)
 *     k = values.shape[1]             # <<<<<<<<<<<<<<
 * 
 *     if out is None:
 */
  __pyx_v_k = (__pyx_v_values->dimensions[1]);

  /* "pandas/src/generated.pyx":1928
 *     k = values.shape[1]
 * 
 *     if out is None:             # <<<<<<<<<<<<<<
 *         outbuf = np.empty((n, k), dtype=values.dtype)
 *     else:
 */
  __pyx_t_2 = (__pyx_v_out == Py_None);
  if (__pyx_t_2) {

    /* "pandas/src/generated.pyx":1929
 * 
 *     if out is None:
 *         outbuf = np.empty((n, k), dtype=values.dtype)             # <<<<<<<<<<<<<<
 *     else:
 *         outbuf = out
 */
    __pyx_t_3 = __Pyx_GetName(__pyx_m, __pyx_n_s__np); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1929; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_4 = PyObject_GetAttr(__pyx_t_3, __pyx_n_s__empty); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1929; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __pyx_t_3 = PyInt_FromSsize_t(__pyx_v_n); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1929; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_5 = PyInt_FromSsize_t(__pyx_v_k); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1929; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_6 = PyTuple_New(2); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1929; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(((PyObject *)__pyx_t_6));
    PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_3);
    __Pyx_GIVEREF(__pyx_t_3);
    PyTuple_SET_ITEM(__pyx_t_6, 1, __pyx_t_5);
    __Pyx_GIVEREF(__pyx_t_5);
    __pyx_t_3 = 0;
    __pyx_t_5 = 0;
    __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1929; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(((PyObject *)__pyx_t_5));
    PyTuple_SET_ITEM(__pyx_t_5, 0, ((PyObject *)__pyx_t_6));
    __Pyx_GIVEREF(((PyObject *)__pyx_t_6));
    __pyx_t_6 = 0;
    __pyx_t_6 = PyDict_New(); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1929; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(((PyObject *)__pyx_t_6));
    __pyx_t_3 = PyObject_GetAttr(((PyObject *)__pyx_v_values), __pyx_n_s__dtype); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1929; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    if (PyDict_SetItem(__pyx_t_6, ((PyObject *)__pyx_n_s__dtype), __pyx_t_3) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1929; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __pyx_t_3 = PyEval_CallObjectWithKeywords(__pyx_t_4, ((PyObject *)__pyx_t_5), ((PyObject *)__pyx_t_6)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1929; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_DECREF(((PyObject *)__pyx_t_5)); __pyx_t_5 = 0;
    __Pyx_DECREF(((PyObject *)__pyx_t_6)); __pyx_t_6 = 0;
    if (!(likely(((__pyx_t_3) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_3, __pyx_ptype_5numpy_ndarray))))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1929; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __pyx_t_7 = ((PyArrayObject *)__pyx_t_3);
    {
      __Pyx_BufFmt_StackElem __pyx_stack[1];
      __Pyx_SafeReleaseBuffer(&__pyx_bstruct_outbuf);
      __pyx_t_8 = __Pyx_GetBufferAndValidate(&__pyx_bstruct_outbuf, (PyObject*)__pyx_t_7, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 2, 0, __pyx_stack);
      if (unlikely(__pyx_t_8 < 0)) {
        PyErr_Fetch(&__pyx_t_9, &__pyx_t_10, &__pyx_t_11);
        if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_outbuf, (PyObject*)__pyx_v_outbuf, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 2, 0, __pyx_stack) == -1)) {
          Py_XDECREF(__pyx_t_9); Py_XDECREF(__pyx_t_10); Py_XDECREF(__pyx_t_11);
          __Pyx_RaiseBufferFallbackError();
        } else {
          PyErr_Restore(__pyx_t_9, __pyx_t_10, __pyx_t_11);
        }
      }
      __pyx_bstride_0_outbuf = __pyx_bstruct_outbuf.strides[0]; __pyx_bstride_1_outbuf = __pyx_bstruct_outbuf.strides[1];
      __pyx_bshape_0_outbuf = __pyx_bstruct_outbuf.shape[0]; __pyx_bshape_1_outbuf = __pyx_bstruct_outbuf.shape[1];
      if (unlikely(__pyx_t_8 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1929; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    }
    __pyx_t_7 = 0;
    __pyx_v_outbuf = ((PyArrayObject *)__pyx_t_3);
    __pyx_t_3 = 0;
    goto __pyx_L6;
  }
  /*else*/ {

    /* "pandas/src/generated.pyx":1931
 *         outbuf = np.empty((n, k), dtype=values.dtype)
 *     else:
 *         outbuf = out             # <<<<<<<<<<<<<<
 * 
 *     if False and _checknan(fill_value):
 */
    if (!(likely(((__pyx_v_out) == Py_None) || likely(__Pyx_TypeTest(__pyx_v_out, __pyx_ptype_5numpy_ndarray))))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1931; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __pyx_t_7 = ((PyArrayObject *)__pyx_v_out);
    {
      __Pyx_BufFmt_StackElem __pyx_stack[1];
      __Pyx_SafeReleaseBuffer(&__pyx_bstruct_outbuf);
      __pyx_t_8 = __Pyx_GetBufferAndValidate(&__pyx_bstruct_outbuf, (PyObject*)__pyx_t_7, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 2, 0, __pyx_stack);
      if (unlikely(__pyx_t_8 < 0)) {
        PyErr_Fetch(&__pyx_t_11, &__pyx_t_10, &__pyx_t_9);
        if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_outbuf, (PyObject*)__pyx_v_outbuf, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 2, 0, __pyx_stack) == -1)) {
          Py_XDECREF(__pyx_t_11); Py_XDECREF(__pyx_t_10); Py_XDECREF(__pyx_t_9);
          __Pyx_RaiseBufferFallbackError();
        } else {
          PyErr_Restore(__pyx_t_11, __pyx_t_10, __pyx_t_9);
        }
      }
      __pyx_bstride_0_outbuf = __pyx_bstruct_outbuf.strides[0]; __pyx_bstride_1_outbuf = __pyx_bstruct_outbuf.strides[1];
      __pyx_bshape_0_outbuf = __pyx_bstruct_outbuf.shape[0]; __pyx_bshape_1_outbuf = __pyx_bstruct_outbuf.shape[1];
      if (unlikely(__pyx_t_8 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1931; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    }
    __pyx_t_7 = 0;
    __Pyx_INCREF(__pyx_v_out);
    __pyx_v_outbuf = ((PyArrayObject *)__pyx_v_out);
  }
  __pyx_L6:;

  /* "pandas/src/generated.pyx":1933
 *         outbuf = out
 * 
 *     if False and _checknan(fill_value):             # <<<<<<<<<<<<<<
 *         for i in range(n):
 *             idx = indexer[i]
 */
  if (0) {
    __pyx_t_2 = __pyx_f_4util__checknan(__pyx_v_fill_value);
    __pyx_t_12 = __pyx_t_2;
  } else {
    __pyx_t_12 = 0;
  }
  if (__pyx_t_12) {

    /* "pandas/src/generated.pyx":1934
 * 
 *     if False and _checknan(fill_value):
 *         for i in range(n):             # <<<<<<<<<<<<<<
 *             idx = indexer[i]
 *             if idx == -1:
 */
    __pyx_t_1 = __pyx_v_n;
    for (__pyx_t_13 = 0; __pyx_t_13 < __pyx_t_1; __pyx_t_13+=1) {
      __pyx_v_i = __pyx_t_13;

      /* "pandas/src/generated.pyx":1935
 *     if False and _checknan(fill_value):
 *         for i in range(n):
 *             idx = indexer[i]             # <<<<<<<<<<<<<<
 *             if idx == -1:
 *                 for j from 0 <= j < k:
 */
      __pyx_t_14 = __pyx_v_i;
      __pyx_v_idx = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_bstruct_indexer.buf, __pyx_t_14, __pyx_bstride_0_indexer));

      /* "pandas/src/generated.pyx":1936
 *         for i in range(n):
 *             idx = indexer[i]
 *             if idx == -1:             # <<<<<<<<<<<<<<
 *                 for j from 0 <= j < k:
 *                     raise ValueError('No NA values allowed')
 */
      __pyx_t_12 = (__pyx_v_idx == -1);
      if (__pyx_t_12) {

        /* "pandas/src/generated.pyx":1937
 *             idx = indexer[i]
 *             if idx == -1:
 *                 for j from 0 <= j < k:             # <<<<<<<<<<<<<<
 *                     raise ValueError('No NA values allowed')
 *             else:
 */
        __pyx_t_15 = __pyx_v_k;
        for (__pyx_v_j = 0; __pyx_v_j < __pyx_t_15; __pyx_v_j++) {

          /* "pandas/src/generated.pyx":1938
 *             if idx == -1:
 *                 for j from 0 <= j < k:
 *                     raise ValueError('No NA values allowed')             # <<<<<<<<<<<<<<
 *             else:
 *                 for j from 0 <= j < k:
 */
          __pyx_t_3 = PyObject_Call(__pyx_builtin_ValueError, ((PyObject *)__pyx_k_tuple_56), NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1938; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
          __Pyx_GOTREF(__pyx_t_3);
          __Pyx_Raise(__pyx_t_3, 0, 0, 0);
          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
          {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1938; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        }
        goto __pyx_L10;
      }
      /*else*/ {

        /* "pandas/src/generated.pyx":1940
 *                     raise ValueError('No NA values allowed')
 *             else:
 *                 for j from 0 <= j < k:             # <<<<<<<<<<<<<<
 *                     outbuf[i, j] = values[idx, j]
 *     else:
 */
        __pyx_t_15 = __pyx_v_k;
        for (__pyx_v_j = 0; __pyx_v_j < __pyx_t_15; __pyx_v_j++) {

          /* "pandas/src/generated.pyx":1941
 *             else:
 *                 for j from 0 <= j < k:
 *                     outbuf[i, j] = values[idx, j]             # <<<<<<<<<<<<<<
 *     else:
 *         fv = fill_value
 */
          __pyx_t_16 = __pyx_v_idx;
          __pyx_t_17 = __pyx_v_j;
          __pyx_t_18 = __pyx_v_i;
          __pyx_t_19 = __pyx_v_j;
          *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_outbuf.buf, __pyx_t_18, __pyx_bstride_0_outbuf, __pyx_t_19, __pyx_bstride_1_outbuf) = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_values.buf, __pyx_t_16, __pyx_bstride_0_values, __pyx_t_17, __pyx_bstride_1_values));
        }
      }
      __pyx_L10:;
    }
    goto __pyx_L7;
  }
  /*else*/ {

    /* "pandas/src/generated.pyx":1943
 *                     outbuf[i, j] = values[idx, j]
 *     else:
 *         fv = fill_value             # <<<<<<<<<<<<<<
 *         for i in range(n):
 *             idx = indexer[i]
 */
    __pyx_t_20 = __pyx_PyFloat_AsDouble(__pyx_v_fill_value); if (unlikely((__pyx_t_20 == (npy_float64)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1943; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __pyx_v_fv = __pyx_t_20;

    /* "pandas/src/generated.pyx":1944
 *     else:
 *         fv = fill_value
 *         for i in range(n):             # <<<<<<<<<<<<<<
 *             idx = indexer[i]
 *             if idx == -1:
 */
    __pyx_t_1 = __pyx_v_n;
    for (__pyx_t_13 = 0; __pyx_t_13 < __pyx_t_1; __pyx_t_13+=1) {
      __pyx_v_i = __pyx_t_13;

      /* "pandas/src/generated.pyx":1945
 *         fv = fill_value
 *         for i in range(n):
 *             idx = indexer[i]             # <<<<<<<<<<<<<<
 *             if idx == -1:
 *                 for j in range(k):
 */
      __pyx_t_15 = __pyx_v_i;
      __pyx_v_idx = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_bstruct_indexer.buf, __pyx_t_15, __pyx_bstride_0_indexer));

      /* "pandas/src/generated.pyx":1946
 *         for i in range(n):
 *             idx = indexer[i]
 *             if idx == -1:             # <<<<<<<<<<<<<<
 *                 for j in range(k):
 *                     outbuf[i, j] = fv
 */
      __pyx_t_12 = (__pyx_v_idx == -1);
      if (__pyx_t_12) {

        /* "pandas/src/generated.pyx":1947
 *             idx = indexer[i]
 *             if idx == -1:
 *                 for j in range(k):             # <<<<<<<<<<<<<<
 *                     outbuf[i, j] = fv
 *             else:
 */
        __pyx_t_21 = __pyx_v_k;
        for (__pyx_t_22 = 0; __pyx_t_22 < __pyx_t_21; __pyx_t_22+=1) {
          __pyx_v_j = __pyx_t_22;

          /* "pandas/src/generated.pyx":1948
 *             if idx == -1:
 *                 for j in range(k):
 *                     outbuf[i, j] = fv             # <<<<<<<<<<<<<<
 *             else:
 *                 for j in range(k):
 */
          __pyx_t_23 = __pyx_v_i;
          __pyx_t_24 = __pyx_v_j;
          *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_outbuf.buf, __pyx_t_23, __pyx_bstride_0_outbuf, __pyx_t_24, __pyx_bstride_1_outbuf) = __pyx_v_fv;
        }
        goto __pyx_L17;
      }
      /*else*/ {

        /* "pandas/src/generated.pyx":1950
 *                     outbuf[i, j] = fv
 *             else:
 *                 for j in range(k):             # <<<<<<<<<<<<<<
 *                     outbuf[i, j] = values[idx, j]
 * 
 */
        __pyx_t_21 = __pyx_v_k;
        for (__pyx_t_22 = 0; __pyx_t_22 < __pyx_t_21; __pyx_t_22+=1) {
          __pyx_v_j = __pyx_t_22;

          /* "pandas/src/generated.pyx":1951
 *             else:
 *                 for j in range(k):
 *                     outbuf[i, j] = values[idx, j]             # <<<<<<<<<<<<<<
 * 
 * @cython.wraparound(False)
 */
          __pyx_t_25 = __pyx_v_idx;
          __pyx_t_26 = __pyx_v_j;
          __pyx_t_27 = __pyx_v_i;
          __pyx_t_28 = __pyx_v_j;
          *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_outbuf.buf, __pyx_t_27, __pyx_bstride_0_outbuf, __pyx_t_28, __pyx_bstride_1_outbuf) = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_values.buf, __pyx_t_25, __pyx_bstride_0_values, __pyx_t_26, __pyx_bstride_1_values));
        }
      }
      __pyx_L17:;
    }
  }
  __pyx_L7:;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  { PyObject *__pyx_type, *__pyx_value, *__pyx_tb;
    __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);
    __Pyx_SafeReleaseBuffer(&__pyx_bstruct_outbuf);
    __Pyx_SafeReleaseBuffer(&__pyx_bstruct_indexer);
    __Pyx_SafeReleaseBuffer(&__pyx_bstruct_values);
  __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);}
  __Pyx_AddTraceback("pandas._algos.take_2d_axis0_float64", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  goto __pyx_L2;
  __pyx_L0:;
  __Pyx_SafeReleaseBuffer(&__pyx_bstruct_outbuf);
  __Pyx_SafeReleaseBuffer(&__pyx_bstruct_indexer);
  __Pyx_SafeReleaseBuffer(&__pyx_bstruct_values);
  __pyx_L2:;
  __Pyx_XDECREF((PyObject *)__pyx_v_outbuf);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "pandas/src/generated.pyx":1955
 * @cython.wraparound(False)
 * @cython.boundscheck(False)
 * def take_2d_axis0_object(ndarray[object, ndim=2] values,             # <<<<<<<<<<<<<<
 *                            ndarray[int64_t] indexer,
 *                            out=None, fill_value=np.nan):
 */

static PyObject *__pyx_pf_6pandas_6_algos_61take_2d_axis0_object(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_6pandas_6_algos_61take_2d_axis0_object = {__Pyx_NAMESTR("take_2d_axis0_object"), (PyCFunction)__pyx_pf_6pandas_6_algos_61take_2d_axis0_object, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(0)};
static PyObject *__pyx_pf_6pandas_6_algos_61take_2d_axis0_object(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyArrayObject *__pyx_v_values = 0;
  PyArrayObject *__pyx_v_indexer = 0;
  PyObject *__pyx_v_out = 0;
  PyObject *__pyx_v_fill_value = 0;
  Py_ssize_t __pyx_v_i;
  Py_ssize_t __pyx_v_j;
  Py_ssize_t __pyx_v_k;
  Py_ssize_t __pyx_v_n;
  Py_ssize_t __pyx_v_idx;
  PyArrayObject *__pyx_v_outbuf = 0;
  PyObject *__pyx_v_fv = 0;
  Py_buffer __pyx_bstruct_outbuf;
  Py_ssize_t __pyx_bstride_0_outbuf = 0;
  Py_ssize_t __pyx_bstride_1_outbuf = 0;
  Py_ssize_t __pyx_bshape_0_outbuf = 0;
  Py_ssize_t __pyx_bshape_1_outbuf = 0;
  Py_buffer __pyx_bstruct_indexer;
  Py_ssize_t __pyx_bstride_0_indexer = 0;
  Py_ssize_t __pyx_bshape_0_indexer = 0;
  Py_buffer __pyx_bstruct_values;
  Py_ssize_t __pyx_bstride_0_values = 0;
  Py_ssize_t __pyx_bstride_1_values = 0;
  Py_ssize_t __pyx_bshape_0_values = 0;
  Py_ssize_t __pyx_bshape_1_values = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  Py_ssize_t __pyx_t_1;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  PyArrayObject *__pyx_t_7 = NULL;
  int __pyx_t_8;
  PyObject *__pyx_t_9 = NULL;
  PyObject *__pyx_t_10 = NULL;
  PyObject *__pyx_t_11 = NULL;
  int __pyx_t_12;
  Py_ssize_t __pyx_t_13;
  Py_ssize_t __pyx_t_14;
  Py_ssize_t __pyx_t_15;
  Py_ssize_t __pyx_t_16;
  Py_ssize_t __pyx_t_17;
  Py_ssize_t __pyx_t_18;
  Py_ssize_t __pyx_t_19;
  PyObject **__pyx_t_20;
  Py_ssize_t __pyx_t_21;
  Py_ssize_t __pyx_t_22;
  Py_ssize_t __pyx_t_23;
  Py_ssize_t __pyx_t_24;
  Py_ssize_t __pyx_t_25;
  Py_ssize_t __pyx_t_26;
  Py_ssize_t __pyx_t_27;
  Py_ssize_t __pyx_t_28;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__values,&__pyx_n_s__indexer,&__pyx_n_s__out,&__pyx_n_s__fill_value,0};
  __Pyx_RefNannySetupContext("take_2d_axis0_object");
  __pyx_self = __pyx_self;
  {
    PyObject* values[4] = {0,0,0,0};

    /* "pandas/src/generated.pyx":1957
 * def take_2d_axis0_object(ndarray[object, ndim=2] values,
 *                            ndarray[int64_t] indexer,
 *                            out=None, fill_value=np.nan):             # <<<<<<<<<<<<<<
 *     cdef:
 *         Py_ssize_t i, j, k, n, idx
 */
    values[2] = ((PyObject *)Py_None);
    values[3] = __pyx_k_57;
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  0:
        values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__values);
        if (likely(values[0])) kw_args--;
        else goto __pyx_L5_argtuple_error;
        case  1:
        values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__indexer);
        if (likely(values[1])) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("take_2d_axis0_object", 0, 2, 4, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1955; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
        }
        case  2:
        if (kw_args > 0) {
          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__out);
          if (value) { values[2] = value; kw_args--; }
        }
        case  3:
        if (kw_args > 0) {
          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__fill_value);
          if (value) { values[3] = value; kw_args--; }
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "take_2d_axis0_object") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1955; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
    } else {
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_values = ((PyArrayObject *)values[0]);
    __pyx_v_indexer = ((PyArrayObject *)values[1]);
    __pyx_v_out = values[2];
    __pyx_v_fill_value = values[3];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("take_2d_axis0_object", 0, 2, 4, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1955; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("pandas._algos.take_2d_axis0_object", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_bstruct_outbuf.buf = NULL;
  __pyx_bstruct_values.buf = NULL;
  __pyx_bstruct_indexer.buf = NULL;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_values), __pyx_ptype_5numpy_ndarray, 1, "values", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1955; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_indexer), __pyx_ptype_5numpy_ndarray, 1, "indexer", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1956; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_values, (PyObject*)__pyx_v_values, &__Pyx_TypeInfo_object, PyBUF_FORMAT| PyBUF_STRIDES, 2, 0, __pyx_stack) == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1955; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  }
  __pyx_bstride_0_values = __pyx_bstruct_values.strides[0]; __pyx_bstride_1_values = __pyx_bstruct_values.strides[1];
  __pyx_bshape_0_values = __pyx_bstruct_values.shape[0]; __pyx_bshape_1_values = __pyx_bstruct_values.shape[1];
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_indexer, (PyObject*)__pyx_v_indexer, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1955; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  }
  __pyx_bstride_0_indexer = __pyx_bstruct_indexer.strides[0];
  __pyx_bshape_0_indexer = __pyx_bstruct_indexer.shape[0];

  /* "pandas/src/generated.pyx":1963
 *         object fv
 * 
 *     n = len(indexer)             # <<<<<<<<<<<<<<
 *     k = values.shape[1]
 * 
 */
  __pyx_t_1 = PyObject_Length(((PyObject *)__pyx_v_indexer)); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1963; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_v_n = __pyx_t_1;

  /* "pandas/src/generated.pyx":1964
 * 
 *     n = len(indexer)
 *     k = values.shape[1]             # <<<<<<<<<<<<<<
 * 
 *     if out is None:
 */
  __pyx_v_k = (__pyx_v_values->dimensions[1]);

  /* "pandas/src/generated.pyx":1966
 *     k = values.shape[1]
 * 
 *     if out is None:             # <<<<<<<<<<<<<<
 *         outbuf = np.empty((n, k), dtype=values.dtype)
 *     else:
 */
  __pyx_t_2 = (__pyx_v_out == Py_None);
  if (__pyx_t_2) {

    /* "pandas/src/generated.pyx":1967
 * 
 *     if out is None:
 *         outbuf = np.empty((n, k), dtype=values.dtype)             # <<<<<<<<<<<<<<
 *     else:
 *         outbuf = out
 */
    __pyx_t_3 = __Pyx_GetName(__pyx_m, __pyx_n_s__np); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1967; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_4 = PyObject_GetAttr(__pyx_t_3, __pyx_n_s__empty); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1967; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __pyx_t_3 = PyInt_FromSsize_t(__pyx_v_n); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1967; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_5 = PyInt_FromSsize_t(__pyx_v_k); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1967; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_6 = PyTuple_New(2); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1967; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(((PyObject *)__pyx_t_6));
    PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_3);
    __Pyx_GIVEREF(__pyx_t_3);
    PyTuple_SET_ITEM(__pyx_t_6, 1, __pyx_t_5);
    __Pyx_GIVEREF(__pyx_t_5);
    __pyx_t_3 = 0;
    __pyx_t_5 = 0;
    __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1967; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(((PyObject *)__pyx_t_5));
    PyTuple_SET_ITEM(__pyx_t_5, 0, ((PyObject *)__pyx_t_6));
    __Pyx_GIVEREF(((PyObject *)__pyx_t_6));
    __pyx_t_6 = 0;
    __pyx_t_6 = PyDict_New(); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1967; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(((PyObject *)__pyx_t_6));
    __pyx_t_3 = PyObject_GetAttr(((PyObject *)__pyx_v_values), __pyx_n_s__dtype); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1967; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    if (PyDict_SetItem(__pyx_t_6, ((PyObject *)__pyx_n_s__dtype), __pyx_t_3) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1967; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __pyx_t_3 = PyEval_CallObjectWithKeywords(__pyx_t_4, ((PyObject *)__pyx_t_5), ((PyObject *)__pyx_t_6)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1967; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_DECREF(((PyObject *)__pyx_t_5)); __pyx_t_5 = 0;
    __Pyx_DECREF(((PyObject *)__pyx_t_6)); __pyx_t_6 = 0;
    if (!(likely(((__pyx_t_3) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_3, __pyx_ptype_5numpy_ndarray))))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1967; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __pyx_t_7 = ((PyArrayObject *)__pyx_t_3);
    {
      __Pyx_BufFmt_StackElem __pyx_stack[1];
      __Pyx_SafeReleaseBuffer(&__pyx_bstruct_outbuf);
      __pyx_t_8 = __Pyx_GetBufferAndValidate(&__pyx_bstruct_outbuf, (PyObject*)__pyx_t_7, &__Pyx_TypeInfo_object, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 2, 0, __pyx_stack);
      if (unlikely(__pyx_t_8 < 0)) {
        PyErr_Fetch(&__pyx_t_9, &__pyx_t_10, &__pyx_t_11);
        if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_outbuf, (PyObject*)__pyx_v_outbuf, &__Pyx_TypeInfo_object, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 2, 0, __pyx_stack) == -1)) {
          Py_XDECREF(__pyx_t_9); Py_XDECREF(__pyx_t_10); Py_XDECREF(__pyx_t_11);
          __Pyx_RaiseBufferFallbackError();
        } else {
          PyErr_Restore(__pyx_t_9, __pyx_t_10, __pyx_t_11);
        }
      }
      __pyx_bstride_0_outbuf = __pyx_bstruct_outbuf.strides[0]; __pyx_bstride_1_outbuf = __pyx_bstruct_outbuf.strides[1];
      __pyx_bshape_0_outbuf = __pyx_bstruct_outbuf.shape[0]; __pyx_bshape_1_outbuf = __pyx_bstruct_outbuf.shape[1];
      if (unlikely(__pyx_t_8 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1967; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    }
    __pyx_t_7 = 0;
    __pyx_v_outbuf = ((PyArrayObject *)__pyx_t_3);
    __pyx_t_3 = 0;
    goto __pyx_L6;
  }
  /*else*/ {

    /* "pandas/src/generated.pyx":1969
 *         outbuf = np.empty((n, k), dtype=values.dtype)
 *     else:
 *         outbuf = out             # <<<<<<<<<<<<<<
 * 
 *     if False and _checknan(fill_value):
 */
    if (!(likely(((__pyx_v_out) == Py_None) || likely(__Pyx_TypeTest(__pyx_v_out, __pyx_ptype_5numpy_ndarray))))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1969; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __pyx_t_7 = ((PyArrayObject *)__pyx_v_out);
    {
      __Pyx_BufFmt_StackElem __pyx_stack[1];
      __Pyx_SafeReleaseBuffer(&__pyx_bstruct_outbuf);
      __pyx_t_8 = __Pyx_GetBufferAndValidate(&__pyx_bstruct_outbuf, (PyObject*)__pyx_t_7, &__Pyx_TypeInfo_object, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 2, 0, __pyx_stack);
      if (unlikely(__pyx_t_8 < 0)) {
        PyErr_Fetch(&__pyx_t_11, &__pyx_t_10, &__pyx_t_9);
        if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_outbuf, (PyObject*)__pyx_v_outbuf, &__Pyx_TypeInfo_object, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 2, 0, __pyx_stack) == -1)) {
          Py_XDECREF(__pyx_t_11); Py_XDECREF(__pyx_t_10); Py_XDECREF(__pyx_t_9);
          __Pyx_RaiseBufferFallbackError();
        } else {
          PyErr_Restore(__pyx_t_11, __pyx_t_10, __pyx_t_9);
        }
      }
      __pyx_bstride_0_outbuf = __pyx_bstruct_outbuf.strides[0]; __pyx_bstride_1_outbuf = __pyx_bstruct_outbuf.strides[1];
      __pyx_bshape_0_outbuf = __pyx_bstruct_outbuf.shape[0]; __pyx_bshape_1_outbuf = __pyx_bstruct_outbuf.shape[1];
      if (unlikely(__pyx_t_8 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1969; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    }
    __pyx_t_7 = 0;
    __Pyx_INCREF(__pyx_v_out);
    __pyx_v_outbuf = ((PyArrayObject *)__pyx_v_out);
  }
  __pyx_L6:;

  /* "pandas/src/generated.pyx":1971
 *         outbuf = out
 * 
 *     if False and _checknan(fill_value):             # <<<<<<<<<<<<<<
 *         for i in range(n):
 *             idx = indexer[i]
 */
  if (0) {
    __pyx_t_2 = __pyx_f_4util__checknan(__pyx_v_fill_value);
    __pyx_t_12 = __pyx_t_2;
  } else {
    __pyx_t_12 = 0;
  }
  if (__pyx_t_12) {

    /* "pandas/src/generated.pyx":1972
 * 
 *     if False and _checknan(fill_value):
 *         for i in range(n):             # <<<<<<<<<<<<<<
 *             idx = indexer[i]
 *             if idx == -1:
 */
    __pyx_t_1 = __pyx_v_n;
    for (__pyx_t_13 = 0; __pyx_t_13 < __pyx_t_1; __pyx_t_13+=1) {
      __pyx_v_i = __pyx_t_13;

      /* "pandas/src/generated.pyx":1973
 *     if False and _checknan(fill_value):
 *         for i in range(n):
 *             idx = indexer[i]             # <<<<<<<<<<<<<<
 *             if idx == -1:
 *                 for j from 0 <= j < k:
 */
      __pyx_t_14 = __pyx_v_i;
      __pyx_v_idx = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_bstruct_indexer.buf, __pyx_t_14, __pyx_bstride_0_indexer));

      /* "pandas/src/generated.pyx":1974
 *         for i in range(n):
 *             idx = indexer[i]
 *             if idx == -1:             # <<<<<<<<<<<<<<
 *                 for j from 0 <= j < k:
 *                     raise ValueError('No NA values allowed')
 */
      __pyx_t_12 = (__pyx_v_idx == -1);
      if (__pyx_t_12) {

        /* "pandas/src/generated.pyx":1975
 *             idx = indexer[i]
 *             if idx == -1:
 *                 for j from 0 <= j < k:             # <<<<<<<<<<<<<<
 *                     raise ValueError('No NA values allowed')
 *             else:
 */
        __pyx_t_15 = __pyx_v_k;
        for (__pyx_v_j = 0; __pyx_v_j < __pyx_t_15; __pyx_v_j++) {

          /* "pandas/src/generated.pyx":1976
 *             if idx == -1:
 *                 for j from 0 <= j < k:
 *                     raise ValueError('No NA values allowed')             # <<<<<<<<<<<<<<
 *             else:
 *                 for j from 0 <= j < k:
 */
          __pyx_t_3 = PyObject_Call(__pyx_builtin_ValueError, ((PyObject *)__pyx_k_tuple_58), NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1976; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
          __Pyx_GOTREF(__pyx_t_3);
          __Pyx_Raise(__pyx_t_3, 0, 0, 0);
          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
          {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1976; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        }
        goto __pyx_L10;
      }
      /*else*/ {

        /* "pandas/src/generated.pyx":1978
 *                     raise ValueError('No NA values allowed')
 *             else:
 *                 for j from 0 <= j < k:             # <<<<<<<<<<<<<<
 *                     outbuf[i, j] = values[idx, j]
 *     else:
 */
        __pyx_t_15 = __pyx_v_k;
        for (__pyx_v_j = 0; __pyx_v_j < __pyx_t_15; __pyx_v_j++) {

          /* "pandas/src/generated.pyx":1979
 *             else:
 *                 for j from 0 <= j < k:
 *                     outbuf[i, j] = values[idx, j]             # <<<<<<<<<<<<<<
 *     else:
 *         fv = fill_value
 */
          __pyx_t_16 = __pyx_v_idx;
          __pyx_t_17 = __pyx_v_j;
          __pyx_t_3 = *__Pyx_BufPtrStrided2d(PyObject **, __pyx_bstruct_values.buf, __pyx_t_16, __pyx_bstride_0_values, __pyx_t_17, __pyx_bstride_1_values);
          __Pyx_INCREF((PyObject*)__pyx_t_3);
          __pyx_t_18 = __pyx_v_i;
          __pyx_t_19 = __pyx_v_j;
          __pyx_t_20 = __Pyx_BufPtrStrided2d(PyObject **, __pyx_bstruct_outbuf.buf, __pyx_t_18, __pyx_bstride_0_outbuf, __pyx_t_19, __pyx_bstride_1_outbuf);
          __Pyx_GOTREF(*__pyx_t_20);
          __Pyx_DECREF(*__pyx_t_20); __Pyx_INCREF(__pyx_t_3);
          *__pyx_t_20 = __pyx_t_3;
          __Pyx_GIVEREF(*__pyx_t_20);
          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
        }
      }
      __pyx_L10:;
    }
    goto __pyx_L7;
  }
  /*else*/ {

    /* "pandas/src/generated.pyx":1981
 *                     outbuf[i, j] = values[idx, j]
 *     else:
 *         fv = fill_value             # <<<<<<<<<<<<<<
 *         for i in range(n):
 *             idx = indexer[i]
 */
    __Pyx_INCREF(__pyx_v_fill_value);
    __pyx_v_fv = __pyx_v_fill_value;

    /* "pandas/src/generated.pyx":1982
 *     else:
 *         fv = fill_value
 *         for i in range(n):             # <<<<<<<<<<<<<<
 *             idx = indexer[i]
 *             if idx == -1:
 */
    __pyx_t_1 = __pyx_v_n;
    for (__pyx_t_13 = 0; __pyx_t_13 < __pyx_t_1; __pyx_t_13+=1) {
      __pyx_v_i = __pyx_t_13;

      /* "pandas/src/generated.pyx":1983
 *         fv = fill_value
 *         for i in range(n):
 *             idx = indexer[i]             # <<<<<<<<<<<<<<
 *             if idx == -1:
 *                 for j in range(k):
 */
      __pyx_t_15 = __pyx_v_i;
      __pyx_v_idx = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_bstruct_indexer.buf, __pyx_t_15, __pyx_bstride_0_indexer));

      /* "pandas/src/generated.pyx":1984
 *         for i in range(n):
 *             idx = indexer[i]
 *             if idx == -1:             # <<<<<<<<<<<<<<
 *                 for j in range(k):
 *                     outbuf[i, j] = fv
 */
      __pyx_t_12 = (__pyx_v_idx == -1);
      if (__pyx_t_12) {

        /* "pandas/src/generated.pyx":1985
 *             idx = indexer[i]
 *             if idx == -1:
 *                 for j in range(k):             # <<<<<<<<<<<<<<
 *                     outbuf[i, j] = fv
 *             else:
 */
        __pyx_t_21 = __pyx_v_k;
        for (__pyx_t_22 = 0; __pyx_t_22 < __pyx_t_21; __pyx_t_22+=1) {
          __pyx_v_j = __pyx_t_22;

          /* "pandas/src/generated.pyx":1986
 *             if idx == -1:
 *                 for j in range(k):
 *                     outbuf[i, j] = fv             # <<<<<<<<<<<<<<
 *             else:
 *                 for j in range(k):
 */
          __pyx_t_23 = __pyx_v_i;
          __pyx_t_24 = __pyx_v_j;
          __pyx_t_20 = __Pyx_BufPtrStrided2d(PyObject **, __pyx_bstruct_outbuf.buf, __pyx_t_23, __pyx_bstride_0_outbuf, __pyx_t_24, __pyx_bstride_1_outbuf);
          __Pyx_GOTREF(*__pyx_t_20);
          __Pyx_DECREF(*__pyx_t_20); __Pyx_INCREF(__pyx_v_fv);
          *__pyx_t_20 = __pyx_v_fv;
          __Pyx_GIVEREF(*__pyx_t_20);
        }
        goto __pyx_L17;
      }
      /*else*/ {

        /* "pandas/src/generated.pyx":1988
 *                     outbuf[i, j] = fv
 *             else:
 *                 for j in range(k):             # <<<<<<<<<<<<<<
 *                     outbuf[i, j] = values[idx, j]
 * 
 */
        __pyx_t_21 = __pyx_v_k;
        for (__pyx_t_22 = 0; __pyx_t_22 < __pyx_t_21; __pyx_t_22+=1) {
          __pyx_v_j = __pyx_t_22;

          /* "pandas/src/generated.pyx":1989
 *             else:
 *                 for j in range(k):
 *                     outbuf[i, j] = values[idx, j]             # <<<<<<<<<<<<<<
 * 
 * @cython.wraparound(False)
 */
          __pyx_t_25 = __pyx_v_idx;
          __pyx_t_26 = __pyx_v_j;
          __pyx_t_3 = *__Pyx_BufPtrStrided2d(PyObject **, __pyx_bstruct_values.buf, __pyx_t_25, __pyx_bstride_0_values, __pyx_t_26, __pyx_bstride_1_values);
          __Pyx_INCREF((PyObject*)__pyx_t_3);
          __pyx_t_27 = __pyx_v_i;
          __pyx_t_28 = __pyx_v_j;
          __pyx_t_20 = __Pyx_BufPtrStrided2d(PyObject **, __pyx_bstruct_outbuf.buf, __pyx_t_27, __pyx_bstride_0_outbuf, __pyx_t_28, __pyx_bstride_1_outbuf);
          __Pyx_GOTREF(*__pyx_t_20);
          __Pyx_DECREF(*__pyx_t_20); __Pyx_INCREF(__pyx_t_3);
          *__pyx_t_20 = __pyx_t_3;
          __Pyx_GIVEREF(*__pyx_t_20);
          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
        }
      }
      __pyx_L17:;
    }
  }
  __pyx_L7:;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  { PyObject *__pyx_type, *__pyx_value, *__pyx_tb;
    __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);
    __Pyx_SafeReleaseBuffer(&__pyx_bstruct_outbuf);
    __Pyx_SafeReleaseBuffer(&__pyx_bstruct_indexer);
    __Pyx_SafeReleaseBuffer(&__pyx_bstruct_values);
  __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);}
  __Pyx_AddTraceback("pandas._algos.take_2d_axis0_object", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  goto __pyx_L2;
  __pyx_L0:;
  __Pyx_SafeReleaseBuffer(&__pyx_bstruct_outbuf);
  __Pyx_SafeReleaseBuffer(&__pyx_bstruct_indexer);
  __Pyx_SafeReleaseBuffer(&__pyx_bstruct_values);
  __pyx_L2:;
  __Pyx_XDECREF((PyObject *)__pyx_v_outbuf);
  __Pyx_XDECREF(__pyx_v_fv);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "pandas/src/generated.pyx":1993
 * @cython.wraparound(False)
 * @cython.boundscheck(False)
 * def take_2d_axis0_int32(ndarray[int32_t, ndim=2] values,             # <<<<<<<<<<<<<<
 *                            ndarray[int64_t] indexer,
 *                            out=None, fill_value=np.nan):
 */

static PyObject *__pyx_pf_6pandas_6_algos_62take_2d_axis0_int32(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_6pandas_6_algos_62take_2d_axis0_int32 = {__Pyx_NAMESTR("take_2d_axis0_int32"), (PyCFunction)__pyx_pf_6pandas_6_algos_62take_2d_axis0_int32, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(0)};
static PyObject *__pyx_pf_6pandas_6_algos_62take_2d_axis0_int32(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyArrayObject *__pyx_v_values = 0;
  PyArrayObject *__pyx_v_indexer = 0;
  PyObject *__pyx_v_out = 0;
  PyObject *__pyx_v_fill_value = 0;
  Py_ssize_t __pyx_v_i;
  Py_ssize_t __pyx_v_j;
  Py_ssize_t __pyx_v_k;
  Py_ssize_t __pyx_v_n;
  Py_ssize_t __pyx_v_idx;
  PyArrayObject *__pyx_v_outbuf = 0;
  __pyx_t_5numpy_int32_t __pyx_v_fv;
  Py_buffer __pyx_bstruct_outbuf;
  Py_ssize_t __pyx_bstride_0_outbuf = 0;
  Py_ssize_t __pyx_bstride_1_outbuf = 0;
  Py_ssize_t __pyx_bshape_0_outbuf = 0;
  Py_ssize_t __pyx_bshape_1_outbuf = 0;
  Py_buffer __pyx_bstruct_indexer;
  Py_ssize_t __pyx_bstride_0_indexer = 0;
  Py_ssize_t __pyx_bshape_0_indexer = 0;
  Py_buffer __pyx_bstruct_values;
  Py_ssize_t __pyx_bstride_0_values = 0;
  Py_ssize_t __pyx_bstride_1_values = 0;
  Py_ssize_t __pyx_bshape_0_values = 0;
  Py_ssize_t __pyx_bshape_1_values = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  Py_ssize_t __pyx_t_1;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  PyArrayObject *__pyx_t_7 = NULL;
  int __pyx_t_8;
  PyObject *__pyx_t_9 = NULL;
  PyObject *__pyx_t_10 = NULL;
  PyObject *__pyx_t_11 = NULL;
  int __pyx_t_12;
  Py_ssize_t __pyx_t_13;
  Py_ssize_t __pyx_t_14;
  Py_ssize_t __pyx_t_15;
  Py_ssize_t __pyx_t_16;
  Py_ssize_t __pyx_t_17;
  Py_ssize_t __pyx_t_18;
  Py_ssize_t __pyx_t_19;
  __pyx_t_5numpy_int32_t __pyx_t_20;
  Py_ssize_t __pyx_t_21;
  Py_ssize_t __pyx_t_22;
  Py_ssize_t __pyx_t_23;
  Py_ssize_t __pyx_t_24;
  Py_ssize_t __pyx_t_25;
  Py_ssize_t __pyx_t_26;
  Py_ssize_t __pyx_t_27;
  Py_ssize_t __pyx_t_28;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__values,&__pyx_n_s__indexer,&__pyx_n_s__out,&__pyx_n_s__fill_value,0};
  __Pyx_RefNannySetupContext("take_2d_axis0_int32");
  __pyx_self = __pyx_self;
  {
    PyObject* values[4] = {0,0,0,0};

    /* "pandas/src/generated.pyx":1995
 * def take_2d_axis0_int32(ndarray[int32_t, ndim=2] values,
 *                            ndarray[int64_t] indexer,
 *                            out=None, fill_value=np.nan):             # <<<<<<<<<<<<<<
 *     cdef:
 *         Py_ssize_t i, j, k, n, idx
 */
    values[2] = ((PyObject *)Py_None);
    values[3] = __pyx_k_59;
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  0:
        values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__values);
        if (likely(values[0])) kw_args--;
        else goto __pyx_L5_argtuple_error;
        case  1:
        values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__indexer);
        if (likely(values[1])) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("take_2d_axis0_int32", 0, 2, 4, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1993; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
        }
        case  2:
        if (kw_args > 0) {
          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__out);
          if (value) { values[2] = value; kw_args--; }
        }
        case  3:
        if (kw_args > 0) {
          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__fill_value);
          if (value) { values[3] = value; kw_args--; }
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "take_2d_axis0_int32") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1993; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
    } else {
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_values = ((PyArrayObject *)values[0]);
    __pyx_v_indexer = ((PyArrayObject *)values[1]);
    __pyx_v_out = values[2];
    __pyx_v_fill_value = values[3];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("take_2d_axis0_int32", 0, 2, 4, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1993; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("pandas._algos.take_2d_axis0_int32", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_bstruct_outbuf.buf = NULL;
  __pyx_bstruct_values.buf = NULL;
  __pyx_bstruct_indexer.buf = NULL;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_values), __pyx_ptype_5numpy_ndarray, 1, "values", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1993; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_indexer), __pyx_ptype_5numpy_ndarray, 1, "indexer", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1994; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_values, (PyObject*)__pyx_v_values, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int32_t, PyBUF_FORMAT| PyBUF_STRIDES, 2, 0, __pyx_stack) == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1993; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  }
  __pyx_bstride_0_values = __pyx_bstruct_values.strides[0]; __pyx_bstride_1_values = __pyx_bstruct_values.strides[1];
  __pyx_bshape_0_values = __pyx_bstruct_values.shape[0]; __pyx_bshape_1_values = __pyx_bstruct_values.shape[1];
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_indexer, (PyObject*)__pyx_v_indexer, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1993; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  }
  __pyx_bstride_0_indexer = __pyx_bstruct_indexer.strides[0];
  __pyx_bshape_0_indexer = __pyx_bstruct_indexer.shape[0];

  /* "pandas/src/generated.pyx":2001
 *         int32_t fv
 * 
 *     n = len(indexer)             # <<<<<<<<<<<<<<
 *     k = values.shape[1]
 * 
 */
  __pyx_t_1 = PyObject_Length(((PyObject *)__pyx_v_indexer)); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2001; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_v_n = __pyx_t_1;

  /* "pandas/src/generated.pyx":2002
 * 
 *     n = len(indexer)
 *     k = values.shape[1]             # <<<<<<<<<<<<<<
 * 
 *     if out is None:
 */
  __pyx_v_k = (__pyx_v_values->dimensions[1]);

  /* "pandas/src/generated.pyx":2004
 *     k = values.shape[1]
 * 
 *     if out is None:             # <<<<<<<<<<<<<<
 *         outbuf = np.empty((n, k), dtype=values.dtype)
 *     else:
 */
  __pyx_t_2 = (__pyx_v_out == Py_None);
  if (__pyx_t_2) {

    /* "pandas/src/generated.pyx":2005
 * 
 *     if out is None:
 *         outbuf = np.empty((n, k), dtype=values.dtype)             # <<<<<<<<<<<<<<
 *     else:
 *         outbuf = out
 */
    __pyx_t_3 = __Pyx_GetName(__pyx_m, __pyx_n_s__np); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2005; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_4 = PyObject_GetAttr(__pyx_t_3, __pyx_n_s__empty); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2005; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __pyx_t_3 = PyInt_FromSsize_t(__pyx_v_n); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2005; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_5 = PyInt_FromSsize_t(__pyx_v_k); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2005; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_6 = PyTuple_New(2); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2005; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(((PyObject *)__pyx_t_6));
    PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_3);
    __Pyx_GIVEREF(__pyx_t_3);
    PyTuple_SET_ITEM(__pyx_t_6, 1, __pyx_t_5);
    __Pyx_GIVEREF(__pyx_t_5);
    __pyx_t_3 = 0;
    __pyx_t_5 = 0;
    __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2005; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(((PyObject *)__pyx_t_5));
    PyTuple_SET_ITEM(__pyx_t_5, 0, ((PyObject *)__pyx_t_6));
    __Pyx_GIVEREF(((PyObject *)__pyx_t_6));
    __pyx_t_6 = 0;
    __pyx_t_6 = PyDict_New(); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2005; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(((PyObject *)__pyx_t_6));
    __pyx_t_3 = PyObject_GetAttr(((PyObject *)__pyx_v_values), __pyx_n_s__dtype); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2005; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    if (PyDict_SetItem(__pyx_t_6, ((PyObject *)__pyx_n_s__dtype), __pyx_t_3) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2005; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __pyx_t_3 = PyEval_CallObjectWithKeywords(__pyx_t_4, ((PyObject *)__pyx_t_5), ((PyObject *)__pyx_t_6)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2005; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_DECREF(((PyObject *)__pyx_t_5)); __pyx_t_5 = 0;
    __Pyx_DECREF(((PyObject *)__pyx_t_6)); __pyx_t_6 = 0;
    if (!(likely(((__pyx_t_3) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_3, __pyx_ptype_5numpy_ndarray))))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2005; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __pyx_t_7 = ((PyArrayObject *)__pyx_t_3);
    {
      __Pyx_BufFmt_StackElem __pyx_stack[1];
      __Pyx_SafeReleaseBuffer(&__pyx_bstruct_outbuf);
      __pyx_t_8 = __Pyx_GetBufferAndValidate(&__pyx_bstruct_outbuf, (PyObject*)__pyx_t_7, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int32_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 2, 0, __pyx_stack);
      if (unlikely(__pyx_t_8 < 0)) {
        PyErr_Fetch(&__pyx_t_9, &__pyx_t_10, &__pyx_t_11);
        if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_outbuf, (PyObject*)__pyx_v_outbuf, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int32_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 2, 0, __pyx_stack) == -1)) {
          Py_XDECREF(__pyx_t_9); Py_XDECREF(__pyx_t_10); Py_XDECREF(__pyx_t_11);
          __Pyx_RaiseBufferFallbackError();
        } else {
          PyErr_Restore(__pyx_t_9, __pyx_t_10, __pyx_t_11);
        }
      }
      __pyx_bstride_0_outbuf = __pyx_bstruct_outbuf.strides[0]; __pyx_bstride_1_outbuf = __pyx_bstruct_outbuf.strides[1];
      __pyx_bshape_0_outbuf = __pyx_bstruct_outbuf.shape[0]; __pyx_bshape_1_outbuf = __pyx_bstruct_outbuf.shape[1];
      if (unlikely(__pyx_t_8 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2005; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    }
    __pyx_t_7 = 0;
    __pyx_v_outbuf = ((PyArrayObject *)__pyx_t_3);
    __pyx_t_3 = 0;
    goto __pyx_L6;
  }
  /*else*/ {

    /* "pandas/src/generated.pyx":2007
 *         outbuf = np.empty((n, k), dtype=values.dtype)
 *     else:
 *         outbuf = out             # <<<<<<<<<<<<<<
 * 
 *     if True and _checknan(fill_value):
 */
    if (!(likely(((__pyx_v_out) == Py_None) || likely(__Pyx_TypeTest(__pyx_v_out, __pyx_ptype_5numpy_ndarray))))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2007; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __pyx_t_7 = ((PyArrayObject *)__pyx_v_out);
    {
      __Pyx_BufFmt_StackElem __pyx_stack[1];
      __Pyx_SafeReleaseBuffer(&__pyx_bstruct_outbuf);
      __pyx_t_8 = __Pyx_GetBufferAndValidate(&__pyx_bstruct_outbuf, (PyObject*)__pyx_t_7, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int32_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 2, 0, __pyx_stack);
      if (unlikely(__pyx_t_8 < 0)) {
        PyErr_Fetch(&__pyx_t_11, &__pyx_t_10, &__pyx_t_9);
        if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_outbuf, (PyObject*)__pyx_v_outbuf, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int32_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 2, 0, __pyx_stack) == -1)) {
          Py_XDECREF(__pyx_t_11); Py_XDECREF(__pyx_t_10); Py_XDECREF(__pyx_t_9);
          __Pyx_RaiseBufferFallbackError();
        } else {
          PyErr_Restore(__pyx_t_11, __pyx_t_10, __pyx_t_9);
        }
      }
      __pyx_bstride_0_outbuf = __pyx_bstruct_outbuf.strides[0]; __pyx_bstride_1_outbuf = __pyx_bstruct_outbuf.strides[1];
      __pyx_bshape_0_outbuf = __pyx_bstruct_outbuf.shape[0]; __pyx_bshape_1_outbuf = __pyx_bstruct_outbuf.shape[1];
      if (unlikely(__pyx_t_8 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2007; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    }
    __pyx_t_7 = 0;
    __Pyx_INCREF(__pyx_v_out);
    __pyx_v_outbuf = ((PyArrayObject *)__pyx_v_out);
  }
  __pyx_L6:;

  /* "pandas/src/generated.pyx":2009
 *         outbuf = out
 * 
 *     if True and _checknan(fill_value):             # <<<<<<<<<<<<<<
 *         for i in range(n):
 *             idx = indexer[i]
 */
  if (1) {
    __pyx_t_2 = __pyx_f_4util__checknan(__pyx_v_fill_value);
    __pyx_t_12 = __pyx_t_2;
  } else {
    __pyx_t_12 = 1;
  }
  if (__pyx_t_12) {

    /* "pandas/src/generated.pyx":2010
 * 
 *     if True and _checknan(fill_value):
 *         for i in range(n):             # <<<<<<<<<<<<<<
 *             idx = indexer[i]
 *             if idx == -1:
 */
    __pyx_t_1 = __pyx_v_n;
    for (__pyx_t_13 = 0; __pyx_t_13 < __pyx_t_1; __pyx_t_13+=1) {
      __pyx_v_i = __pyx_t_13;

      /* "pandas/src/generated.pyx":2011
 *     if True and _checknan(fill_value):
 *         for i in range(n):
 *             idx = indexer[i]             # <<<<<<<<<<<<<<
 *             if idx == -1:
 *                 for j from 0 <= j < k:
 */
      __pyx_t_14 = __pyx_v_i;
      __pyx_v_idx = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_bstruct_indexer.buf, __pyx_t_14, __pyx_bstride_0_indexer));

      /* "pandas/src/generated.pyx":2012
 *         for i in range(n):
 *             idx = indexer[i]
 *             if idx == -1:             # <<<<<<<<<<<<<<
 *                 for j from 0 <= j < k:
 *                     raise ValueError('No NA values allowed')
 */
      __pyx_t_12 = (__pyx_v_idx == -1);
      if (__pyx_t_12) {

        /* "pandas/src/generated.pyx":2013
 *             idx = indexer[i]
 *             if idx == -1:
 *                 for j from 0 <= j < k:             # <<<<<<<<<<<<<<
 *                     raise ValueError('No NA values allowed')
 *             else:
 */
        __pyx_t_15 = __pyx_v_k;
        for (__pyx_v_j = 0; __pyx_v_j < __pyx_t_15; __pyx_v_j++) {

          /* "pandas/src/generated.pyx":2014
 *             if idx == -1:
 *                 for j from 0 <= j < k:
 *                     raise ValueError('No NA values allowed')             # <<<<<<<<<<<<<<
 *             else:
 *                 for j from 0 <= j < k:
 */
          __pyx_t_3 = PyObject_Call(__pyx_builtin_ValueError, ((PyObject *)__pyx_k_tuple_60), NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2014; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
          __Pyx_GOTREF(__pyx_t_3);
          __Pyx_Raise(__pyx_t_3, 0, 0, 0);
          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
          {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2014; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        }
        goto __pyx_L10;
      }
      /*else*/ {

        /* "pandas/src/generated.pyx":2016
 *                     raise ValueError('No NA values allowed')
 *             else:
 *                 for j from 0 <= j < k:             # <<<<<<<<<<<<<<
 *                     outbuf[i, j] = values[idx, j]
 *     else:
 */
        __pyx_t_15 = __pyx_v_k;
        for (__pyx_v_j = 0; __pyx_v_j < __pyx_t_15; __pyx_v_j++) {

          /* "pandas/src/generated.pyx":2017
 *             else:
 *                 for j from 0 <= j < k:
 *                     outbuf[i, j] = values[idx, j]             # <<<<<<<<<<<<<<
 *     else:
 *         fv = fill_value
 */
          __pyx_t_16 = __pyx_v_idx;
          __pyx_t_17 = __pyx_v_j;
          __pyx_t_18 = __pyx_v_i;
          __pyx_t_19 = __pyx_v_j;
          *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int32_t *, __pyx_bstruct_outbuf.buf, __pyx_t_18, __pyx_bstride_0_outbuf, __pyx_t_19, __pyx_bstride_1_outbuf) = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int32_t *, __pyx_bstruct_values.buf, __pyx_t_16, __pyx_bstride_0_values, __pyx_t_17, __pyx_bstride_1_values));
        }
      }
      __pyx_L10:;
    }
    goto __pyx_L7;
  }
  /*else*/ {

    /* "pandas/src/generated.pyx":2019
 *                     outbuf[i, j] = values[idx, j]
 *     else:
 *         fv = fill_value             # <<<<<<<<<<<<<<
 *         for i in range(n):
 *             idx = indexer[i]
 */
    __pyx_t_20 = __Pyx_PyInt_from_py_npy_int32(__pyx_v_fill_value); if (unlikely((__pyx_t_20 == (npy_int32)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2019; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __pyx_v_fv = __pyx_t_20;

    /* "pandas/src/generated.pyx":2020
 *     else:
 *         fv = fill_value
 *         for i in range(n):             # <<<<<<<<<<<<<<
 *             idx = indexer[i]
 *             if idx == -1:
 */
    __pyx_t_1 = __pyx_v_n;
    for (__pyx_t_13 = 0; __pyx_t_13 < __pyx_t_1; __pyx_t_13+=1) {
      __pyx_v_i = __pyx_t_13;

      /* "pandas/src/generated.pyx":2021
 *         fv = fill_value
 *         for i in range(n):
 *             idx = indexer[i]             # <<<<<<<<<<<<<<
 *             if idx == -1:
 *                 for j in range(k):
 */
      __pyx_t_15 = __pyx_v_i;
      __pyx_v_idx = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_bstruct_indexer.buf, __pyx_t_15, __pyx_bstride_0_indexer));

      /* "pandas/src/generated.pyx":2022
 *         for i in range(n):
 *             idx = indexer[i]
 *             if idx == -1:             # <<<<<<<<<<<<<<
 *                 for j in range(k):
 *                     outbuf[i, j] = fv
 */
      __pyx_t_12 = (__pyx_v_idx == -1);
      if (__pyx_t_12) {

        /* "pandas/src/generated.pyx":2023
 *             idx = indexer[i]
 *             if idx == -1:
 *                 for j in range(k):             # <<<<<<<<<<<<<<
 *                     outbuf[i, j] = fv
 *             else:
 */
        __pyx_t_21 = __pyx_v_k;
        for (__pyx_t_22 = 0; __pyx_t_22 < __pyx_t_21; __pyx_t_22+=1) {
          __pyx_v_j = __pyx_t_22;

          /* "pandas/src/generated.pyx":2024
 *             if idx == -1:
 *                 for j in range(k):
 *                     outbuf[i, j] = fv             # <<<<<<<<<<<<<<
 *             else:
 *                 for j in range(k):
 */
          __pyx_t_23 = __pyx_v_i;
          __pyx_t_24 = __pyx_v_j;
          *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int32_t *, __pyx_bstruct_outbuf.buf, __pyx_t_23, __pyx_bstride_0_outbuf, __pyx_t_24, __pyx_bstride_1_outbuf) = __pyx_v_fv;
        }
        goto __pyx_L17;
      }
      /*else*/ {

        /* "pandas/src/generated.pyx":2026
 *                     outbuf[i, j] = fv
 *             else:
 *                 for j in range(k):             # <<<<<<<<<<<<<<
 *                     outbuf[i, j] = values[idx, j]
 * 
 */
        __pyx_t_21 = __pyx_v_k;
        for (__pyx_t_22 = 0; __pyx_t_22 < __pyx_t_21; __pyx_t_22+=1) {
          __pyx_v_j = __pyx_t_22;

          /* "pandas/src/generated.pyx":2027
 *             else:
 *                 for j in range(k):
 *                     outbuf[i, j] = values[idx, j]             # <<<<<<<<<<<<<<
 * 
 * @cython.wraparound(False)
 */
          __pyx_t_25 = __pyx_v_idx;
          __pyx_t_26 = __pyx_v_j;
          __pyx_t_27 = __pyx_v_i;
          __pyx_t_28 = __pyx_v_j;
          *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int32_t *, __pyx_bstruct_outbuf.buf, __pyx_t_27, __pyx_bstride_0_outbuf, __pyx_t_28, __pyx_bstride_1_outbuf) = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int32_t *, __pyx_bstruct_values.buf, __pyx_t_25, __pyx_bstride_0_values, __pyx_t_26, __pyx_bstride_1_values));
        }
      }
      __pyx_L17:;
    }
  }
  __pyx_L7:;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  { PyObject *__pyx_type, *__pyx_value, *__pyx_tb;
    __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);
    __Pyx_SafeReleaseBuffer(&__pyx_bstruct_outbuf);
    __Pyx_SafeReleaseBuffer(&__pyx_bstruct_indexer);
    __Pyx_SafeReleaseBuffer(&__pyx_bstruct_values);
  __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);}
  __Pyx_AddTraceback("pandas._algos.take_2d_axis0_int32", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  goto __pyx_L2;
  __pyx_L0:;
  __Pyx_SafeReleaseBuffer(&__pyx_bstruct_outbuf);
  __Pyx_SafeReleaseBuffer(&__pyx_bstruct_indexer);
  __Pyx_SafeReleaseBuffer(&__pyx_bstruct_values);
  __pyx_L2:;
  __Pyx_XDECREF((PyObject *)__pyx_v_outbuf);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "pandas/src/generated.pyx":2031
 * @cython.wraparound(False)
 * @cython.boundscheck(False)
 * def take_2d_axis0_int64(ndarray[int64_t, ndim=2] values,             # <<<<<<<<<<<<<<
 *                            ndarray[int64_t] indexer,
 *                            out=None, fill_value=np.nan):
 */

static PyObject *__pyx_pf_6pandas_6_algos_63take_2d_axis0_int64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_6pandas_6_algos_63take_2d_axis0_int64 = {__Pyx_NAMESTR("take_2d_axis0_int64"), (PyCFunction)__pyx_pf_6pandas_6_algos_63take_2d_axis0_int64, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(0)};
static PyObject *__pyx_pf_6pandas_6_algos_63take_2d_axis0_int64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyArrayObject *__pyx_v_values = 0;
  PyArrayObject *__pyx_v_indexer = 0;
  PyObject *__pyx_v_out = 0;
  PyObject *__pyx_v_fill_value = 0;
  Py_ssize_t __pyx_v_i;
  Py_ssize_t __pyx_v_j;
  Py_ssize_t __pyx_v_k;
  Py_ssize_t __pyx_v_n;
  Py_ssize_t __pyx_v_idx;
  PyArrayObject *__pyx_v_outbuf = 0;
  __pyx_t_5numpy_int64_t __pyx_v_fv;
  Py_buffer __pyx_bstruct_outbuf;
  Py_ssize_t __pyx_bstride_0_outbuf = 0;
  Py_ssize_t __pyx_bstride_1_outbuf = 0;
  Py_ssize_t __pyx_bshape_0_outbuf = 0;
  Py_ssize_t __pyx_bshape_1_outbuf = 0;
  Py_buffer __pyx_bstruct_indexer;
  Py_ssize_t __pyx_bstride_0_indexer = 0;
  Py_ssize_t __pyx_bshape_0_indexer = 0;
  Py_buffer __pyx_bstruct_values;
  Py_ssize_t __pyx_bstride_0_values = 0;
  Py_ssize_t __pyx_bstride_1_values = 0;
  Py_ssize_t __pyx_bshape_0_values = 0;
  Py_ssize_t __pyx_bshape_1_values = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  Py_ssize_t __pyx_t_1;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  PyArrayObject *__pyx_t_7 = NULL;
  int __pyx_t_8;
  PyObject *__pyx_t_9 = NULL;
  PyObject *__pyx_t_10 = NULL;
  PyObject *__pyx_t_11 = NULL;
  int __pyx_t_12;
  Py_ssize_t __pyx_t_13;
  Py_ssize_t __pyx_t_14;
  Py_ssize_t __pyx_t_15;
  Py_ssize_t __pyx_t_16;
  Py_ssize_t __pyx_t_17;
  Py_ssize_t __pyx_t_18;
  Py_ssize_t __pyx_t_19;
  __pyx_t_5numpy_int64_t __pyx_t_20;
  Py_ssize_t __pyx_t_21;
  Py_ssize_t __pyx_t_22;
  Py_ssize_t __pyx_t_23;
  Py_ssize_t __pyx_t_24;
  Py_ssize_t __pyx_t_25;
  Py_ssize_t __pyx_t_26;
  Py_ssize_t __pyx_t_27;
  Py_ssize_t __pyx_t_28;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__values,&__pyx_n_s__indexer,&__pyx_n_s__out,&__pyx_n_s__fill_value,0};
  __Pyx_RefNannySetupContext("take_2d_axis0_int64");
  __pyx_self = __pyx_self;
  {
    PyObject* values[4] = {0,0,0,0};

    /* "pandas/src/generated.pyx":2033
 * def take_2d_axis0_int64(ndarray[int64_t, ndim=2] values,
 *                            ndarray[int64_t] indexer,
 *                            out=None, fill_value=np.nan):             # <<<<<<<<<<<<<<
 *     cdef:
 *         Py_ssize_t i, j, k, n, idx
 */
    values[2] = ((PyObject *)Py_None);
    values[3] = __pyx_k_61;
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  0:
        values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__values);
        if (likely(values[0])) kw_args--;
        else goto __pyx_L5_argtuple_error;
        case  1:
        values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__indexer);
        if (likely(values[1])) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("take_2d_axis0_int64", 0, 2, 4, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2031; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
        }
        case  2:
        if (kw_args > 0) {
          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__out);
          if (value) { values[2] = value; kw_args--; }
        }
        case  3:
        if (kw_args > 0) {
          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__fill_value);
          if (value) { values[3] = value; kw_args--; }
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "take_2d_axis0_int64") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2031; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
    } else {
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_values = ((PyArrayObject *)values[0]);
    __pyx_v_indexer = ((PyArrayObject *)values[1]);
    __pyx_v_out = values[2];
    __pyx_v_fill_value = values[3];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("take_2d_axis0_int64", 0, 2, 4, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2031; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("pandas._algos.take_2d_axis0_int64", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_bstruct_outbuf.buf = NULL;
  __pyx_bstruct_values.buf = NULL;
  __pyx_bstruct_indexer.buf = NULL;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_values), __pyx_ptype_5numpy_ndarray, 1, "values", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2031; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_indexer), __pyx_ptype_5numpy_ndarray, 1, "indexer", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2032; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_values, (PyObject*)__pyx_v_values, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 2, 0, __pyx_stack) == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2031; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  }
  __pyx_bstride_0_values = __pyx_bstruct_values.strides[0]; __pyx_bstride_1_values = __pyx_bstruct_values.strides[1];
  __pyx_bshape_0_values = __pyx_bstruct_values.shape[0]; __pyx_bshape_1_values = __pyx_bstruct_values.shape[1];
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_indexer, (PyObject*)__pyx_v_indexer, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2031; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  }
  __pyx_bstride_0_indexer = __pyx_bstruct_indexer.strides[0];
  __pyx_bshape_0_indexer = __pyx_bstruct_indexer.shape[0];

  /* "pandas/src/generated.pyx":2039
 *         int64_t fv
 * 
 *     n = len(indexer)             # <<<<<<<<<<<<<<
 *     k = values.shape[1]
 * 
 */
  __pyx_t_1 = PyObject_Length(((PyObject *)__pyx_v_indexer)); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2039; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_v_n = __pyx_t_1;

  /* "pandas/src/generated.pyx":2040
 * 
 *     n = len(indexer)
 *     k = values.shape[1]             # <<<<<<<<<<<<<<
 * 
 *     if out is None:
 */
  __pyx_v_k = (__pyx_v_values->dimensions[1]);

  /* "pandas/src/generated.pyx":2042
 *     k = values.shape[1]
 * 
 *     if out is None:             # <<<<<<<<<<<<<<
 *         outbuf = np.empty((n, k), dtype=values.dtype)
 *     else:
 */
  __pyx_t_2 = (__pyx_v_out == Py_None);
  if (__pyx_t_2) {

    /* "pandas/src/generated.pyx":2043
 * 
 *     if out is None:
 *         outbuf = np.empty((n, k), dtype=values.dtype)             # <<<<<<<<<<<<<<
 *     else:
 *         outbuf = out
 */
    __pyx_t_3 = __Pyx_GetName(__pyx_m, __pyx_n_s__np); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2043; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_4 = PyObject_GetAttr(__pyx_t_3, __pyx_n_s__empty); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2043; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __pyx_t_3 = PyInt_FromSsize_t(__pyx_v_n); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2043; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_5 = PyInt_FromSsize_t(__pyx_v_k); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2043; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_6 = PyTuple_New(2); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2043; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(((PyObject *)__pyx_t_6));
    PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_3);
    __Pyx_GIVEREF(__pyx_t_3);
    PyTuple_SET_ITEM(__pyx_t_6, 1, __pyx_t_5);
    __Pyx_GIVEREF(__pyx_t_5);
    __pyx_t_3 = 0;
    __pyx_t_5 = 0;
    __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2043; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(((PyObject *)__pyx_t_5));
    PyTuple_SET_ITEM(__pyx_t_5, 0, ((PyObject *)__pyx_t_6));
    __Pyx_GIVEREF(((PyObject *)__pyx_t_6));
    __pyx_t_6 = 0;
    __pyx_t_6 = PyDict_New(); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2043; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(((PyObject *)__pyx_t_6));
    __pyx_t_3 = PyObject_GetAttr(((PyObject *)__pyx_v_values), __pyx_n_s__dtype); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2043; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    if (PyDict_SetItem(__pyx_t_6, ((PyObject *)__pyx_n_s__dtype), __pyx_t_3) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2043; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __pyx_t_3 = PyEval_CallObjectWithKeywords(__pyx_t_4, ((PyObject *)__pyx_t_5), ((PyObject *)__pyx_t_6)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2043; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_DECREF(((PyObject *)__pyx_t_5)); __pyx_t_5 = 0;
    __Pyx_DECREF(((PyObject *)__pyx_t_6)); __pyx_t_6 = 0;
    if (!(likely(((__pyx_t_3) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_3, __pyx_ptype_5numpy_ndarray))))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2043; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __pyx_t_7 = ((PyArrayObject *)__pyx_t_3);
    {
      __Pyx_BufFmt_StackElem __pyx_stack[1];
      __Pyx_SafeReleaseBuffer(&__pyx_bstruct_outbuf);
      __pyx_t_8 = __Pyx_GetBufferAndValidate(&__pyx_bstruct_outbuf, (PyObject*)__pyx_t_7, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 2, 0, __pyx_stack);
      if (unlikely(__pyx_t_8 < 0)) {
        PyErr_Fetch(&__pyx_t_9, &__pyx_t_10, &__pyx_t_11);
        if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_outbuf, (PyObject*)__pyx_v_outbuf, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 2, 0, __pyx_stack) == -1)) {
          Py_XDECREF(__pyx_t_9); Py_XDECREF(__pyx_t_10); Py_XDECREF(__pyx_t_11);
          __Pyx_RaiseBufferFallbackError();
        } else {
          PyErr_Restore(__pyx_t_9, __pyx_t_10, __pyx_t_11);
        }
      }
      __pyx_bstride_0_outbuf = __pyx_bstruct_outbuf.strides[0]; __pyx_bstride_1_outbuf = __pyx_bstruct_outbuf.strides[1];
      __pyx_bshape_0_outbuf = __pyx_bstruct_outbuf.shape[0]; __pyx_bshape_1_outbuf = __pyx_bstruct_outbuf.shape[1];
      if (unlikely(__pyx_t_8 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2043; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    }
    __pyx_t_7 = 0;
    __pyx_v_outbuf = ((PyArrayObject *)__pyx_t_3);
    __pyx_t_3 = 0;
    goto __pyx_L6;
  }
  /*else*/ {

    /* "pandas/src/generated.pyx":2045
 *         outbuf = np.empty((n, k), dtype=values.dtype)
 *     else:
 *         outbuf = out             # <<<<<<<<<<<<<<
 * 
 *     if True and _checknan(fill_value):
 */
    if (!(likely(((__pyx_v_out) == Py_None) || likely(__Pyx_TypeTest(__pyx_v_out, __pyx_ptype_5numpy_ndarray))))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2045; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __pyx_t_7 = ((PyArrayObject *)__pyx_v_out);
    {
      __Pyx_BufFmt_StackElem __pyx_stack[1];
      __Pyx_SafeReleaseBuffer(&__pyx_bstruct_outbuf);
      __pyx_t_8 = __Pyx_GetBufferAndValidate(&__pyx_bstruct_outbuf, (PyObject*)__pyx_t_7, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 2, 0, __pyx_stack);
      if (unlikely(__pyx_t_8 < 0)) {
        PyErr_Fetch(&__pyx_t_11, &__pyx_t_10, &__pyx_t_9);
        if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_outbuf, (PyObject*)__pyx_v_outbuf, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 2, 0, __pyx_stack) == -1)) {
          Py_XDECREF(__pyx_t_11); Py_XDECREF(__pyx_t_10); Py_XDECREF(__pyx_t_9);
          __Pyx_RaiseBufferFallbackError();
        } else {
          PyErr_Restore(__pyx_t_11, __pyx_t_10, __pyx_t_9);
        }
      }
      __pyx_bstride_0_outbuf = __pyx_bstruct_outbuf.strides[0]; __pyx_bstride_1_outbuf = __pyx_bstruct_outbuf.strides[1];
      __pyx_bshape_0_outbuf = __pyx_bstruct_outbuf.shape[0]; __pyx_bshape_1_outbuf = __pyx_bstruct_outbuf.shape[1];
      if (unlikely(__pyx_t_8 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2045; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    }
    __pyx_t_7 = 0;
    __Pyx_INCREF(__pyx_v_out);
    __pyx_v_outbuf = ((PyArrayObject *)__pyx_v_out);
  }
  __pyx_L6:;

  /* "pandas/src/generated.pyx":2047
 *         outbuf = out
 * 
 *     if True and _checknan(fill_value):             # <<<<<<<<<<<<<<
 *         for i in range(n):
 *             idx = indexer[i]
 */
  if (1) {
    __pyx_t_2 = __pyx_f_4util__checknan(__pyx_v_fill_value);
    __pyx_t_12 = __pyx_t_2;
  } else {
    __pyx_t_12 = 1;
  }
  if (__pyx_t_12) {

    /* "pandas/src/generated.pyx":2048
 * 
 *     if True and _checknan(fill_value):
 *         for i in range(n):             # <<<<<<<<<<<<<<
 *             idx = indexer[i]
 *             if idx == -1:
 */
    __pyx_t_1 = __pyx_v_n;
    for (__pyx_t_13 = 0; __pyx_t_13 < __pyx_t_1; __pyx_t_13+=1) {
      __pyx_v_i = __pyx_t_13;

      /* "pandas/src/generated.pyx":2049
 *     if True and _checknan(fill_value):
 *         for i in range(n):
 *             idx = indexer[i]             # <<<<<<<<<<<<<<
 *             if idx == -1:
 *                 for j from 0 <= j < k:
 */
      __pyx_t_14 = __pyx_v_i;
      __pyx_v_idx = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_bstruct_indexer.buf, __pyx_t_14, __pyx_bstride_0_indexer));

      /* "pandas/src/generated.pyx":2050
 *         for i in range(n):
 *             idx = indexer[i]
 *             if idx == -1:             # <<<<<<<<<<<<<<
 *                 for j from 0 <= j < k:
 *                     raise ValueError('No NA values allowed')
 */
      __pyx_t_12 = (__pyx_v_idx == -1);
      if (__pyx_t_12) {

        /* "pandas/src/generated.pyx":2051
 *             idx = indexer[i]
 *             if idx == -1:
 *                 for j from 0 <= j < k:             # <<<<<<<<<<<<<<
 *                     raise ValueError('No NA values allowed')
 *             else:
 */
        __pyx_t_15 = __pyx_v_k;
        for (__pyx_v_j = 0; __pyx_v_j < __pyx_t_15; __pyx_v_j++) {

          /* "pandas/src/generated.pyx":2052
 *             if idx == -1:
 *                 for j from 0 <= j < k:
 *                     raise ValueError('No NA values allowed')             # <<<<<<<<<<<<<<
 *             else:
 *                 for j from 0 <= j < k:
 */
          __pyx_t_3 = PyObject_Call(__pyx_builtin_ValueError, ((PyObject *)__pyx_k_tuple_62), NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2052; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
          __Pyx_GOTREF(__pyx_t_3);
          __Pyx_Raise(__pyx_t_3, 0, 0, 0);
          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
          {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2052; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        }
        goto __pyx_L10;
      }
      /*else*/ {

        /* "pandas/src/generated.pyx":2054
 *                     raise ValueError('No NA values allowed')
 *             else:
 *                 for j from 0 <= j < k:             # <<<<<<<<<<<<<<
 *                     outbuf[i, j] = values[idx, j]
 *     else:
 */
        __pyx_t_15 = __pyx_v_k;
        for (__pyx_v_j = 0; __pyx_v_j < __pyx_t_15; __pyx_v_j++) {

          /* "pandas/src/generated.pyx":2055
 *             else:
 *                 for j from 0 <= j < k:
 *                     outbuf[i, j] = values[idx, j]             # <<<<<<<<<<<<<<
 *     else:
 *         fv = fill_value
 */
          __pyx_t_16 = __pyx_v_idx;
          __pyx_t_17 = __pyx_v_j;
          __pyx_t_18 = __pyx_v_i;
          __pyx_t_19 = __pyx_v_j;
          *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_bstruct_outbuf.buf, __pyx_t_18, __pyx_bstride_0_outbuf, __pyx_t_19, __pyx_bstride_1_outbuf) = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_bstruct_values.buf, __pyx_t_16, __pyx_bstride_0_values, __pyx_t_17, __pyx_bstride_1_values));
        }
      }
      __pyx_L10:;
    }
    goto __pyx_L7;
  }
  /*else*/ {

    /* "pandas/src/generated.pyx":2057
 *                     outbuf[i, j] = values[idx, j]
 *     else:
 *         fv = fill_value             # <<<<<<<<<<<<<<
 *         for i in range(n):
 *             idx = indexer[i]
 */
    __pyx_t_20 = __Pyx_PyInt_from_py_npy_int64(__pyx_v_fill_value); if (unlikely((__pyx_t_20 == (npy_int64)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2057; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __pyx_v_fv = __pyx_t_20;

    /* "pandas/src/generated.pyx":2058
 *     else:
 *         fv = fill_value
 *         for i in range(n):             # <<<<<<<<<<<<<<
 *             idx = indexer[i]
 *             if idx == -1:
 */
    __pyx_t_1 = __pyx_v_n;
    for (__pyx_t_13 = 0; __pyx_t_13 < __pyx_t_1; __pyx_t_13+=1) {
      __pyx_v_i = __pyx_t_13;

      /* "pandas/src/generated.pyx":2059
 *         fv = fill_value
 *         for i in range(n):
 *             idx = indexer[i]             # <<<<<<<<<<<<<<
 *             if idx == -1:
 *                 for j in range(k):
 */
      __pyx_t_15 = __pyx_v_i;
      __pyx_v_idx = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_bstruct_indexer.buf, __pyx_t_15, __pyx_bstride_0_indexer));

      /* "pandas/src/generated.pyx":2060
 *         for i in range(n):
 *             idx = indexer[i]
 *             if idx == -1:             # <<<<<<<<<<<<<<
 *                 for j in range(k):
 *                     outbuf[i, j] = fv
 */
      __pyx_t_12 = (__pyx_v_idx == -1);
      if (__pyx_t_12) {

        /* "pandas/src/generated.pyx":2061
 *             idx = indexer[i]
 *             if idx == -1:
 *                 for j in range(k):             # <<<<<<<<<<<<<<
 *                     outbuf[i, j] = fv
 *             else:
 */
        __pyx_t_21 = __pyx_v_k;
        for (__pyx_t_22 = 0; __pyx_t_22 < __pyx_t_21; __pyx_t_22+=1) {
          __pyx_v_j = __pyx_t_22;

          /* "pandas/src/generated.pyx":2062
 *             if idx == -1:
 *                 for j in range(k):
 *                     outbuf[i, j] = fv             # <<<<<<<<<<<<<<
 *             else:
 *                 for j in range(k):
 */
          __pyx_t_23 = __pyx_v_i;
          __pyx_t_24 = __pyx_v_j;
          *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_bstruct_outbuf.buf, __pyx_t_23, __pyx_bstride_0_outbuf, __pyx_t_24, __pyx_bstride_1_outbuf) = __pyx_v_fv;
        }
        goto __pyx_L17;
      }
      /*else*/ {

        /* "pandas/src/generated.pyx":2064
 *                     outbuf[i, j] = fv
 *             else:
 *                 for j in range(k):             # <<<<<<<<<<<<<<
 *                     outbuf[i, j] = values[idx, j]
 * 
 */
        __pyx_t_21 = __pyx_v_k;
        for (__pyx_t_22 = 0; __pyx_t_22 < __pyx_t_21; __pyx_t_22+=1) {
          __pyx_v_j = __pyx_t_22;

          /* "pandas/src/generated.pyx":2065
 *             else:
 *                 for j in range(k):
 *                     outbuf[i, j] = values[idx, j]             # <<<<<<<<<<<<<<
 * 
 * @cython.wraparound(False)
 */
          __pyx_t_25 = __pyx_v_idx;
          __pyx_t_26 = __pyx_v_j;
          __pyx_t_27 = __pyx_v_i;
          __pyx_t_28 = __pyx_v_j;
          *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_bstruct_outbuf.buf, __pyx_t_27, __pyx_bstride_0_outbuf, __pyx_t_28, __pyx_bstride_1_outbuf) = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_bstruct_values.buf, __pyx_t_25, __pyx_bstride_0_values, __pyx_t_26, __pyx_bstride_1_values));
        }
      }
      __pyx_L17:;
    }
  }
  __pyx_L7:;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  { PyObject *__pyx_type, *__pyx_value, *__pyx_tb;
    __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);
    __Pyx_SafeReleaseBuffer(&__pyx_bstruct_outbuf);
    __Pyx_SafeReleaseBuffer(&__pyx_bstruct_indexer);
    __Pyx_SafeReleaseBuffer(&__pyx_bstruct_values);
  __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);}
  __Pyx_AddTraceback("pandas._algos.take_2d_axis0_int64", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  goto __pyx_L2;
  __pyx_L0:;
  __Pyx_SafeReleaseBuffer(&__pyx_bstruct_outbuf);
  __Pyx_SafeReleaseBuffer(&__pyx_bstruct_indexer);
  __Pyx_SafeReleaseBuffer(&__pyx_bstruct_values);
  __pyx_L2:;
  __Pyx_XDECREF((PyObject *)__pyx_v_outbuf);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "pandas/src/generated.pyx":2069
 * @cython.wraparound(False)
 * @cython.boundscheck(False)
 * def take_2d_axis0_bool(ndarray[uint8_t, ndim=2] values,             # <<<<<<<<<<<<<<
 *                            ndarray[int64_t] indexer,
 *                            out=None, fill_value=np.nan):
 */

static PyObject *__pyx_pf_6pandas_6_algos_64take_2d_axis0_bool(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_6pandas_6_algos_64take_2d_axis0_bool = {__Pyx_NAMESTR("take_2d_axis0_bool"), (PyCFunction)__pyx_pf_6pandas_6_algos_64take_2d_axis0_bool, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(0)};
static PyObject *__pyx_pf_6pandas_6_algos_64take_2d_axis0_bool(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyArrayObject *__pyx_v_values = 0;
  PyArrayObject *__pyx_v_indexer = 0;
  PyObject *__pyx_v_out = 0;
  PyObject *__pyx_v_fill_value = 0;
  Py_ssize_t __pyx_v_i;
  Py_ssize_t __pyx_v_j;
  Py_ssize_t __pyx_v_k;
  Py_ssize_t __pyx_v_n;
  Py_ssize_t __pyx_v_idx;
  PyArrayObject *__pyx_v_outbuf = 0;
  __pyx_t_5numpy_uint8_t __pyx_v_fv;
  Py_buffer __pyx_bstruct_outbuf;
  Py_ssize_t __pyx_bstride_0_outbuf = 0;
  Py_ssize_t __pyx_bstride_1_outbuf = 0;
  Py_ssize_t __pyx_bshape_0_outbuf = 0;
  Py_ssize_t __pyx_bshape_1_outbuf = 0;
  Py_buffer __pyx_bstruct_indexer;
  Py_ssize_t __pyx_bstride_0_indexer = 0;
  Py_ssize_t __pyx_bshape_0_indexer = 0;
  Py_buffer __pyx_bstruct_values;
  Py_ssize_t __pyx_bstride_0_values = 0;
  Py_ssize_t __pyx_bstride_1_values = 0;
  Py_ssize_t __pyx_bshape_0_values = 0;
  Py_ssize_t __pyx_bshape_1_values = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  Py_ssize_t __pyx_t_1;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  PyArrayObject *__pyx_t_7 = NULL;
  int __pyx_t_8;
  PyObject *__pyx_t_9 = NULL;
  PyObject *__pyx_t_10 = NULL;
  PyObject *__pyx_t_11 = NULL;
  int __pyx_t_12;
  Py_ssize_t __pyx_t_13;
  Py_ssize_t __pyx_t_14;
  Py_ssize_t __pyx_t_15;
  Py_ssize_t __pyx_t_16;
  Py_ssize_t __pyx_t_17;
  Py_ssize_t __pyx_t_18;
  Py_ssize_t __pyx_t_19;
  __pyx_t_5numpy_uint8_t __pyx_t_20;
  Py_ssize_t __pyx_t_21;
  Py_ssize_t __pyx_t_22;
  Py_ssize_t __pyx_t_23;
  Py_ssize_t __pyx_t_24;
  Py_ssize_t __pyx_t_25;
  Py_ssize_t __pyx_t_26;
  Py_ssize_t __pyx_t_27;
  Py_ssize_t __pyx_t_28;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__values,&__pyx_n_s__indexer,&__pyx_n_s__out,&__pyx_n_s__fill_value,0};
  __Pyx_RefNannySetupContext("take_2d_axis0_bool");
  __pyx_self = __pyx_self;
  {
    PyObject* values[4] = {0,0,0,0};

    /* "pandas/src/generated.pyx":2071
 * def take_2d_axis0_bool(ndarray[uint8_t, ndim=2] values,
 *                            ndarray[int64_t] indexer,
 *                            out=None, fill_value=np.nan):             # <<<<<<<<<<<<<<
 *     cdef:
 *         Py_ssize_t i, j, k, n, idx
 */
    values[2] = ((PyObject *)Py_None);
    values[3] = __pyx_k_63;
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  0:
        values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__values);
        if (likely(values[0])) kw_args--;
        else goto __pyx_L5_argtuple_error;
        case  1:
        values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__indexer);
        if (likely(values[1])) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("take_2d_axis0_bool", 0, 2, 4, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2069; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
        }
        case  2:
        if (kw_args > 0) {
          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__out);
          if (value) { values[2] = value; kw_args--; }
        }
        case  3:
        if (kw_args > 0) {
          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__fill_value);
          if (value) { values[3] = value; kw_args--; }
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "take_2d_axis0_bool") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2069; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
    } else {
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_values = ((PyArrayObject *)values[0]);
    __pyx_v_indexer = ((PyArrayObject *)values[1]);
    __pyx_v_out = values[2];
    __pyx_v_fill_value = values[3];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("take_2d_axis0_bool", 0, 2, 4, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2069; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("pandas._algos.take_2d_axis0_bool", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_bstruct_outbuf.buf = NULL;
  __pyx_bstruct_values.buf = NULL;
  __pyx_bstruct_indexer.buf = NULL;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_values), __pyx_ptype_5numpy_ndarray, 1, "values", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2069; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_indexer), __pyx_ptype_5numpy_ndarray, 1, "indexer", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2070; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_values, (PyObject*)__pyx_v_values, &__Pyx_TypeInfo_nn___pyx_t_5numpy_uint8_t, PyBUF_FORMAT| PyBUF_STRIDES, 2, 0, __pyx_stack) == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2069; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  }
  __pyx_bstride_0_values = __pyx_bstruct_values.strides[0]; __pyx_bstride_1_values = __pyx_bstruct_values.strides[1];
  __pyx_bshape_0_values = __pyx_bstruct_values.shape[0]; __pyx_bshape_1_values = __pyx_bstruct_values.shape[1];
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_indexer, (PyObject*)__pyx_v_indexer, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2069; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  }
  __pyx_bstride_0_indexer = __pyx_bstruct_indexer.strides[0];
  __pyx_bshape_0_indexer = __pyx_bstruct_indexer.shape[0];

  /* "pandas/src/generated.pyx":2077
 *         uint8_t fv
 * 
 *     n = len(indexer)             # <<<<<<<<<<<<<<
 *     k = values.shape[1]
 * 
 */
  __pyx_t_1 = PyObject_Length(((PyObject *)__pyx_v_indexer)); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2077; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_v_n = __pyx_t_1;

  /* "pandas/src/generated.pyx":2078
 * 
 *     n = len(indexer)
 *     k = values.shape[1]             # <<<<<<<<<<<<<<
 * 
 *     if out is None:
 */
  __pyx_v_k = (__pyx_v_values->dimensions[1]);

  /* "pandas/src/generated.pyx":2080
 *     k = values.shape[1]
 * 
 *     if out is None:             # <<<<<<<<<<<<<<
 *         outbuf = np.empty((n, k), dtype=values.dtype)
 *     else:
 */
  __pyx_t_2 = (__pyx_v_out == Py_None);
  if (__pyx_t_2) {

    /* "pandas/src/generated.pyx":2081
 * 
 *     if out is None:
 *         outbuf = np.empty((n, k), dtype=values.dtype)             # <<<<<<<<<<<<<<
 *     else:
 *         outbuf = out
 */
    __pyx_t_3 = __Pyx_GetName(__pyx_m, __pyx_n_s__np); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2081; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_4 = PyObject_GetAttr(__pyx_t_3, __pyx_n_s__empty); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2081; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __pyx_t_3 = PyInt_FromSsize_t(__pyx_v_n); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2081; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_5 = PyInt_FromSsize_t(__pyx_v_k); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2081; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_6 = PyTuple_New(2); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2081; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(((PyObject *)__pyx_t_6));
    PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_3);
    __Pyx_GIVEREF(__pyx_t_3);
    PyTuple_SET_ITEM(__pyx_t_6, 1, __pyx_t_5);
    __Pyx_GIVEREF(__pyx_t_5);
    __pyx_t_3 = 0;
    __pyx_t_5 = 0;
    __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2081; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(((PyObject *)__pyx_t_5));
    PyTuple_SET_ITEM(__pyx_t_5, 0, ((PyObject *)__pyx_t_6));
    __Pyx_GIVEREF(((PyObject *)__pyx_t_6));
    __pyx_t_6 = 0;
    __pyx_t_6 = PyDict_New(); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2081; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(((PyObject *)__pyx_t_6));
    __pyx_t_3 = PyObject_GetAttr(((PyObject *)__pyx_v_values), __pyx_n_s__dtype); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2081; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    if (PyDict_SetItem(__pyx_t_6, ((PyObject *)__pyx_n_s__dtype), __pyx_t_3) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2081; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __pyx_t_3 = PyEval_CallObjectWithKeywords(__pyx_t_4, ((PyObject *)__pyx_t_5), ((PyObject *)__pyx_t_6)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2081; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_DECREF(((PyObject *)__pyx_t_5)); __pyx_t_5 = 0;
    __Pyx_DECREF(((PyObject *)__pyx_t_6)); __pyx_t_6 = 0;
    if (!(likely(((__pyx_t_3) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_3, __pyx_ptype_5numpy_ndarray))))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2081; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __pyx_t_7 = ((PyArrayObject *)__pyx_t_3);
    {
      __Pyx_BufFmt_StackElem __pyx_stack[1];
      __Pyx_SafeReleaseBuffer(&__pyx_bstruct_outbuf);
      __pyx_t_8 = __Pyx_GetBufferAndValidate(&__pyx_bstruct_outbuf, (PyObject*)__pyx_t_7, &__Pyx_TypeInfo_nn___pyx_t_5numpy_uint8_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 2, 0, __pyx_stack);
      if (unlikely(__pyx_t_8 < 0)) {
        PyErr_Fetch(&__pyx_t_9, &__pyx_t_10, &__pyx_t_11);
        if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_outbuf, (PyObject*)__pyx_v_outbuf, &__Pyx_TypeInfo_nn___pyx_t_5numpy_uint8_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 2, 0, __pyx_stack) == -1)) {
          Py_XDECREF(__pyx_t_9); Py_XDECREF(__pyx_t_10); Py_XDECREF(__pyx_t_11);
          __Pyx_RaiseBufferFallbackError();
        } else {
          PyErr_Restore(__pyx_t_9, __pyx_t_10, __pyx_t_11);
        }
      }
      __pyx_bstride_0_outbuf = __pyx_bstruct_outbuf.strides[0]; __pyx_bstride_1_outbuf = __pyx_bstruct_outbuf.strides[1];
      __pyx_bshape_0_outbuf = __pyx_bstruct_outbuf.shape[0]; __pyx_bshape_1_outbuf = __pyx_bstruct_outbuf.shape[1];
      if (unlikely(__pyx_t_8 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2081; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    }
    __pyx_t_7 = 0;
    __pyx_v_outbuf = ((PyArrayObject *)__pyx_t_3);
    __pyx_t_3 = 0;
    goto __pyx_L6;
  }
  /*else*/ {

    /* "pandas/src/generated.pyx":2083
 *         outbuf = np.empty((n, k), dtype=values.dtype)
 *     else:
 *         outbuf = out             # <<<<<<<<<<<<<<
 * 
 *     if True and _checknan(fill_value):
 */
    if (!(likely(((__pyx_v_out) == Py_None) || likely(__Pyx_TypeTest(__pyx_v_out, __pyx_ptype_5numpy_ndarray))))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2083; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __pyx_t_7 = ((PyArrayObject *)__pyx_v_out);
    {
      __Pyx_BufFmt_StackElem __pyx_stack[1];
      __Pyx_SafeReleaseBuffer(&__pyx_bstruct_outbuf);
      __pyx_t_8 = __Pyx_GetBufferAndValidate(&__pyx_bstruct_outbuf, (PyObject*)__pyx_t_7, &__Pyx_TypeInfo_nn___pyx_t_5numpy_uint8_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 2, 0, __pyx_stack);
      if (unlikely(__pyx_t_8 < 0)) {
        PyErr_Fetch(&__pyx_t_11, &__pyx_t_10, &__pyx_t_9);
        if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_outbuf, (PyObject*)__pyx_v_outbuf, &__Pyx_TypeInfo_nn___pyx_t_5numpy_uint8_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 2, 0, __pyx_stack) == -1)) {
          Py_XDECREF(__pyx_t_11); Py_XDECREF(__pyx_t_10); Py_XDECREF(__pyx_t_9);
          __Pyx_RaiseBufferFallbackError();
        } else {
          PyErr_Restore(__pyx_t_11, __pyx_t_10, __pyx_t_9);
        }
      }
      __pyx_bstride_0_outbuf = __pyx_bstruct_outbuf.strides[0]; __pyx_bstride_1_outbuf = __pyx_bstruct_outbuf.strides[1];
      __pyx_bshape_0_outbuf = __pyx_bstruct_outbuf.shape[0]; __pyx_bshape_1_outbuf = __pyx_bstruct_outbuf.shape[1];
      if (unlikely(__pyx_t_8 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2083; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    }
    __pyx_t_7 = 0;
    __Pyx_INCREF(__pyx_v_out);
    __pyx_v_outbuf = ((PyArrayObject *)__pyx_v_out);
  }
  __pyx_L6:;

  /* "pandas/src/generated.pyx":2085
 *         outbuf = out
 * 
 *     if True and _checknan(fill_value):             # <<<<<<<<<<<<<<
 *         for i in range(n):
 *             idx = indexer[i]
 */
  if (1) {
    __pyx_t_2 = __pyx_f_4util__checknan(__pyx_v_fill_value);
    __pyx_t_12 = __pyx_t_2;
  } else {
    __pyx_t_12 = 1;
  }
  if (__pyx_t_12) {

    /* "pandas/src/generated.pyx":2086
 * 
 *     if True and _checknan(fill_value):
 *         for i in range(n):             # <<<<<<<<<<<<<<
 *             idx = indexer[i]
 *             if idx == -1:
 */
    __pyx_t_1 = __pyx_v_n;
    for (__pyx_t_13 = 0; __pyx_t_13 < __pyx_t_1; __pyx_t_13+=1) {
      __pyx_v_i = __pyx_t_13;

      /* "pandas/src/generated.pyx":2087
 *     if True and _checknan(fill_value):
 *         for i in range(n):
 *             idx = indexer[i]             # <<<<<<<<<<<<<<
 *             if idx == -1:
 *                 for j from 0 <= j < k:
 */
      __pyx_t_14 = __pyx_v_i;
      __pyx_v_idx = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_bstruct_indexer.buf, __pyx_t_14, __pyx_bstride_0_indexer));

      /* "pandas/src/generated.pyx":2088
 *         for i in range(n):
 *             idx = indexer[i]
 *             if idx == -1:             # <<<<<<<<<<<<<<
 *                 for j from 0 <= j < k:
 *                     raise ValueError('No NA values allowed')
 */
      __pyx_t_12 = (__pyx_v_idx == -1);
      if (__pyx_t_12) {

        /* "pandas/src/generated.pyx":2089
 *             idx = indexer[i]
 *             if idx == -1:
 *                 for j from 0 <= j < k:             # <<<<<<<<<<<<<<
 *                     raise ValueError('No NA values allowed')
 *             else:
 */
        __pyx_t_15 = __pyx_v_k;
        for (__pyx_v_j = 0; __pyx_v_j < __pyx_t_15; __pyx_v_j++) {

          /* "pandas/src/generated.pyx":2090
 *             if idx == -1:
 *                 for j from 0 <= j < k:
 *                     raise ValueError('No NA values allowed')             # <<<<<<<<<<<<<<
 *             else:
 *                 for j from 0 <= j < k:
 */
          __pyx_t_3 = PyObject_Call(__pyx_builtin_ValueError, ((PyObject *)__pyx_k_tuple_64), NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2090; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
          __Pyx_GOTREF(__pyx_t_3);
          __Pyx_Raise(__pyx_t_3, 0, 0, 0);
          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
          {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2090; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        }
        goto __pyx_L10;
      }
      /*else*/ {

        /* "pandas/src/generated.pyx":2092
 *                     raise ValueError('No NA values allowed')
 *             else:
 *                 for j from 0 <= j < k:             # <<<<<<<<<<<<<<
 *                     outbuf[i, j] = values[idx, j]
 *     else:
 */
        __pyx_t_15 = __pyx_v_k;
        for (__pyx_v_j = 0; __pyx_v_j < __pyx_t_15; __pyx_v_j++) {

          /* "pandas/src/generated.pyx":2093
 *             else:
 *                 for j from 0 <= j < k:
 *                     outbuf[i, j] = values[idx, j]             # <<<<<<<<<<<<<<
 *     else:
 *         fv = fill_value
 */
          __pyx_t_16 = __pyx_v_idx;
          __pyx_t_17 = __pyx_v_j;
          __pyx_t_18 = __pyx_v_i;
          __pyx_t_19 = __pyx_v_j;
          *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_uint8_t *, __pyx_bstruct_outbuf.buf, __pyx_t_18, __pyx_bstride_0_outbuf, __pyx_t_19, __pyx_bstride_1_outbuf) = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_uint8_t *, __pyx_bstruct_values.buf, __pyx_t_16, __pyx_bstride_0_values, __pyx_t_17, __pyx_bstride_1_values));
        }
      }
      __pyx_L10:;
    }
    goto __pyx_L7;
  }
  /*else*/ {

    /* "pandas/src/generated.pyx":2095
 *                     outbuf[i, j] = values[idx, j]
 *     else:
 *         fv = fill_value             # <<<<<<<<<<<<<<
 *         for i in range(n):
 *             idx = indexer[i]
 */
    __pyx_t_20 = __Pyx_PyInt_from_py_npy_uint8(__pyx_v_fill_value); if (unlikely((__pyx_t_20 == (npy_uint8)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2095; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __pyx_v_fv = __pyx_t_20;

    /* "pandas/src/generated.pyx":2096
 *     else:
 *         fv = fill_value
 *         for i in range(n):             # <<<<<<<<<<<<<<
 *             idx = indexer[i]
 *             if idx == -1:
 */
    __pyx_t_1 = __pyx_v_n;
    for (__pyx_t_13 = 0; __pyx_t_13 < __pyx_t_1; __pyx_t_13+=1) {
      __pyx_v_i = __pyx_t_13;

      /* "pandas/src/generated.pyx":2097
 *         fv = fill_value
 *         for i in range(n):
 *             idx = indexer[i]             # <<<<<<<<<<<<<<
 *             if idx == -1:
 *                 for j in range(k):
 */
      __pyx_t_15 = __pyx_v_i;
      __pyx_v_idx = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_bstruct_indexer.buf, __pyx_t_15, __pyx_bstride_0_indexer));

      /* "pandas/src/generated.pyx":2098
 *         for i in range(n):
 *             idx = indexer[i]
 *             if idx == -1:             # <<<<<<<<<<<<<<
 *                 for j in range(k):
 *                     outbuf[i, j] = fv
 */
      __pyx_t_12 = (__pyx_v_idx == -1);
      if (__pyx_t_12) {

        /* "pandas/src/generated.pyx":2099
 *             idx = indexer[i]
 *             if idx == -1:
 *                 for j in range(k):             # <<<<<<<<<<<<<<
 *                     outbuf[i, j] = fv
 *             else:
 */
        __pyx_t_21 = __pyx_v_k;
        for (__pyx_t_22 = 0; __pyx_t_22 < __pyx_t_21; __pyx_t_22+=1) {
          __pyx_v_j = __pyx_t_22;

          /* "pandas/src/generated.pyx":2100
 *             if idx == -1:
 *                 for j in range(k):
 *                     outbuf[i, j] = fv             # <<<<<<<<<<<<<<
 *             else:
 *                 for j in range(k):
 */
          __pyx_t_23 = __pyx_v_i;
          __pyx_t_24 = __pyx_v_j;
          *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_uint8_t *, __pyx_bstruct_outbuf.buf, __pyx_t_23, __pyx_bstride_0_outbuf, __pyx_t_24, __pyx_bstride_1_outbuf) = __pyx_v_fv;
        }
        goto __pyx_L17;
      }
      /*else*/ {

        /* "pandas/src/generated.pyx":2102
 *                     outbuf[i, j] = fv
 *             else:
 *                 for j in range(k):             # <<<<<<<<<<<<<<
 *                     outbuf[i, j] = values[idx, j]
 * 
 */
        __pyx_t_21 = __pyx_v_k;
        for (__pyx_t_22 = 0; __pyx_t_22 < __pyx_t_21; __pyx_t_22+=1) {
          __pyx_v_j = __pyx_t_22;

          /* "pandas/src/generated.pyx":2103
 *             else:
 *                 for j in range(k):
 *                     outbuf[i, j] = values[idx, j]             # <<<<<<<<<<<<<<
 * 
 * 
 */
          __pyx_t_25 = __pyx_v_idx;
          __pyx_t_26 = __pyx_v_j;
          __pyx_t_27 = __pyx_v_i;
          __pyx_t_28 = __pyx_v_j;
          *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_uint8_t *, __pyx_bstruct_outbuf.buf, __pyx_t_27, __pyx_bstride_0_outbuf, __pyx_t_28, __pyx_bstride_1_outbuf) = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_uint8_t *, __pyx_bstruct_values.buf, __pyx_t_25, __pyx_bstride_0_values, __pyx_t_26, __pyx_bstride_1_values));
        }
      }
      __pyx_L17:;
    }
  }
  __pyx_L7:;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  { PyObject *__pyx_type, *__pyx_value, *__pyx_tb;
    __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);
    __Pyx_SafeReleaseBuffer(&__pyx_bstruct_outbuf);
    __Pyx_SafeReleaseBuffer(&__pyx_bstruct_indexer);
    __Pyx_SafeReleaseBuffer(&__pyx_bstruct_values);
  __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);}
  __Pyx_AddTraceback("pandas._algos.take_2d_axis0_bool", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  goto __pyx_L2;
  __pyx_L0:;
  __Pyx_SafeReleaseBuffer(&__pyx_bstruct_outbuf);
  __Pyx_SafeReleaseBuffer(&__pyx_bstruct_indexer);
  __Pyx_SafeReleaseBuffer(&__pyx_bstruct_values);
  __pyx_L2:;
  __Pyx_XDECREF((PyObject *)__pyx_v_outbuf);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "pandas/src/generated.pyx":2108
 * @cython.wraparound(False)
 * @cython.boundscheck(False)
 * def take_2d_axis1_float64(ndarray[float64_t, ndim=2] values,             # <<<<<<<<<<<<<<
 *                            ndarray[int64_t] indexer,
 *                            out=None, fill_value=np.nan):
 */

static PyObject *__pyx_pf_6pandas_6_algos_65take_2d_axis1_float64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_6pandas_6_algos_65take_2d_axis1_float64 = {__Pyx_NAMESTR("take_2d_axis1_float64"), (PyCFunction)__pyx_pf_6pandas_6_algos_65take_2d_axis1_float64, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(0)};
static PyObject *__pyx_pf_6pandas_6_algos_65take_2d_axis1_float64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyArrayObject *__pyx_v_values = 0;
  PyArrayObject *__pyx_v_indexer = 0;
  PyObject *__pyx_v_out = 0;
  PyObject *__pyx_v_fill_value = 0;
  Py_ssize_t __pyx_v_i;
  Py_ssize_t __pyx_v_j;
  Py_ssize_t __pyx_v_k;
  Py_ssize_t __pyx_v_n;
  Py_ssize_t __pyx_v_idx;
  PyArrayObject *__pyx_v_outbuf = 0;
  __pyx_t_5numpy_float64_t __pyx_v_fv;
  Py_buffer __pyx_bstruct_outbuf;
  Py_ssize_t __pyx_bstride_0_outbuf = 0;
  Py_ssize_t __pyx_bstride_1_outbuf = 0;
  Py_ssize_t __pyx_bshape_0_outbuf = 0;
  Py_ssize_t __pyx_bshape_1_outbuf = 0;
  Py_buffer __pyx_bstruct_indexer;
  Py_ssize_t __pyx_bstride_0_indexer = 0;
  Py_ssize_t __pyx_bshape_0_indexer = 0;
  Py_buffer __pyx_bstruct_values;
  Py_ssize_t __pyx_bstride_0_values = 0;
  Py_ssize_t __pyx_bstride_1_values = 0;
  Py_ssize_t __pyx_bshape_0_values = 0;
  Py_ssize_t __pyx_bshape_1_values = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  Py_ssize_t __pyx_t_1;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  PyArrayObject *__pyx_t_7 = NULL;
  int __pyx_t_8;
  PyObject *__pyx_t_9 = NULL;
  PyObject *__pyx_t_10 = NULL;
  PyObject *__pyx_t_11 = NULL;
  int __pyx_t_12;
  Py_ssize_t __pyx_t_13;
  Py_ssize_t __pyx_t_14;
  Py_ssize_t __pyx_t_15;
  Py_ssize_t __pyx_t_16;
  Py_ssize_t __pyx_t_17;
  Py_ssize_t __pyx_t_18;
  Py_ssize_t __pyx_t_19;
  Py_ssize_t __pyx_t_20;
  __pyx_t_5numpy_float64_t __pyx_t_21;
  Py_ssize_t __pyx_t_22;
  Py_ssize_t __pyx_t_23;
  Py_ssize_t __pyx_t_24;
  Py_ssize_t __pyx_t_25;
  Py_ssize_t __pyx_t_26;
  Py_ssize_t __pyx_t_27;
  Py_ssize_t __pyx_t_28;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__values,&__pyx_n_s__indexer,&__pyx_n_s__out,&__pyx_n_s__fill_value,0};
  __Pyx_RefNannySetupContext("take_2d_axis1_float64");
  __pyx_self = __pyx_self;
  {
    PyObject* values[4] = {0,0,0,0};

    /* "pandas/src/generated.pyx":2110
 * def take_2d_axis1_float64(ndarray[float64_t, ndim=2] values,
 *                            ndarray[int64_t] indexer,
 *                            out=None, fill_value=np.nan):             # <<<<<<<<<<<<<<
 *     cdef:
 *         Py_ssize_t i, j, k, n, idx
 */
    values[2] = ((PyObject *)Py_None);
    values[3] = __pyx_k_65;
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  0:
        values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__values);
        if (likely(values[0])) kw_args--;
        else goto __pyx_L5_argtuple_error;
        case  1:
        values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__indexer);
        if (likely(values[1])) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("take_2d_axis1_float64", 0, 2, 4, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2108; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
        }
        case  2:
        if (kw_args > 0) {
          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__out);
          if (value) { values[2] = value; kw_args--; }
        }
        case  3:
        if (kw_args > 0) {
          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__fill_value);
          if (value) { values[3] = value; kw_args--; }
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "take_2d_axis1_float64") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2108; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
    } else {
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_values = ((PyArrayObject *)values[0]);
    __pyx_v_indexer = ((PyArrayObject *)values[1]);
    __pyx_v_out = values[2];
    __pyx_v_fill_value = values[3];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("take_2d_axis1_float64", 0, 2, 4, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2108; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("pandas._algos.take_2d_axis1_float64", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_bstruct_outbuf.buf = NULL;
  __pyx_bstruct_values.buf = NULL;
  __pyx_bstruct_indexer.buf = NULL;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_values), __pyx_ptype_5numpy_ndarray, 1, "values", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2108; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_indexer), __pyx_ptype_5numpy_ndarray, 1, "indexer", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2109; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_values, (PyObject*)__pyx_v_values, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES, 2, 0, __pyx_stack) == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2108; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  }
  __pyx_bstride_0_values = __pyx_bstruct_values.strides[0]; __pyx_bstride_1_values = __pyx_bstruct_values.strides[1];
  __pyx_bshape_0_values = __pyx_bstruct_values.shape[0]; __pyx_bshape_1_values = __pyx_bstruct_values.shape[1];
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_indexer, (PyObject*)__pyx_v_indexer, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2108; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  }
  __pyx_bstride_0_indexer = __pyx_bstruct_indexer.strides[0];
  __pyx_bshape_0_indexer = __pyx_bstruct_indexer.shape[0];

  /* "pandas/src/generated.pyx":2116
 *         float64_t fv
 * 
 *     n = len(values)             # <<<<<<<<<<<<<<
 *     k = len(indexer)
 * 
 */
  __pyx_t_1 = PyObject_Length(((PyObject *)__pyx_v_values)); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2116; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_v_n = __pyx_t_1;

  /* "pandas/src/generated.pyx":2117
 * 
 *     n = len(values)
 *     k = len(indexer)             # <<<<<<<<<<<<<<
 * 
 *     if out is None:
 */
  __pyx_t_1 = PyObject_Length(((PyObject *)__pyx_v_indexer)); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2117; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_v_k = __pyx_t_1;

  /* "pandas/src/generated.pyx":2119
 *     k = len(indexer)
 * 
 *     if out is None:             # <<<<<<<<<<<<<<
 *         outbuf = np.empty((n, k), dtype=values.dtype)
 *     else:
 */
  __pyx_t_2 = (__pyx_v_out == Py_None);
  if (__pyx_t_2) {

    /* "pandas/src/generated.pyx":2120
 * 
 *     if out is None:
 *         outbuf = np.empty((n, k), dtype=values.dtype)             # <<<<<<<<<<<<<<
 *     else:
 *         outbuf = out
 */
    __pyx_t_3 = __Pyx_GetName(__pyx_m, __pyx_n_s__np); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2120; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_4 = PyObject_GetAttr(__pyx_t_3, __pyx_n_s__empty); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2120; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __pyx_t_3 = PyInt_FromSsize_t(__pyx_v_n); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2120; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_5 = PyInt_FromSsize_t(__pyx_v_k); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2120; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_6 = PyTuple_New(2); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2120; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(((PyObject *)__pyx_t_6));
    PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_3);
    __Pyx_GIVEREF(__pyx_t_3);
    PyTuple_SET_ITEM(__pyx_t_6, 1, __pyx_t_5);
    __Pyx_GIVEREF(__pyx_t_5);
    __pyx_t_3 = 0;
    __pyx_t_5 = 0;
    __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2120; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(((PyObject *)__pyx_t_5));
    PyTuple_SET_ITEM(__pyx_t_5, 0, ((PyObject *)__pyx_t_6));
    __Pyx_GIVEREF(((PyObject *)__pyx_t_6));
    __pyx_t_6 = 0;
    __pyx_t_6 = PyDict_New(); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2120; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(((PyObject *)__pyx_t_6));
    __pyx_t_3 = PyObject_GetAttr(((PyObject *)__pyx_v_values), __pyx_n_s__dtype); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2120; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    if (PyDict_SetItem(__pyx_t_6, ((PyObject *)__pyx_n_s__dtype), __pyx_t_3) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2120; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __pyx_t_3 = PyEval_CallObjectWithKeywords(__pyx_t_4, ((PyObject *)__pyx_t_5), ((PyObject *)__pyx_t_6)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2120; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_DECREF(((PyObject *)__pyx_t_5)); __pyx_t_5 = 0;
    __Pyx_DECREF(((PyObject *)__pyx_t_6)); __pyx_t_6 = 0;
    if (!(likely(((__pyx_t_3) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_3, __pyx_ptype_5numpy_ndarray))))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2120; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __pyx_t_7 = ((PyArrayObject *)__pyx_t_3);
    {
      __Pyx_BufFmt_StackElem __pyx_stack[1];
      __Pyx_SafeReleaseBuffer(&__pyx_bstruct_outbuf);
      __pyx_t_8 = __Pyx_GetBufferAndValidate(&__pyx_bstruct_outbuf, (PyObject*)__pyx_t_7, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 2, 0, __pyx_stack);
      if (unlikely(__pyx_t_8 < 0)) {
        PyErr_Fetch(&__pyx_t_9, &__pyx_t_10, &__pyx_t_11);
        if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_outbuf, (PyObject*)__pyx_v_outbuf, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 2, 0, __pyx_stack) == -1)) {
          Py_XDECREF(__pyx_t_9); Py_XDECREF(__pyx_t_10); Py_XDECREF(__pyx_t_11);
          __Pyx_RaiseBufferFallbackError();
        } else {
          PyErr_Restore(__pyx_t_9, __pyx_t_10, __pyx_t_11);
        }
      }
      __pyx_bstride_0_outbuf = __pyx_bstruct_outbuf.strides[0]; __pyx_bstride_1_outbuf = __pyx_bstruct_outbuf.strides[1];
      __pyx_bshape_0_outbuf = __pyx_bstruct_outbuf.shape[0]; __pyx_bshape_1_outbuf = __pyx_bstruct_outbuf.shape[1];
      if (unlikely(__pyx_t_8 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2120; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    }
    __pyx_t_7 = 0;
    __pyx_v_outbuf = ((PyArrayObject *)__pyx_t_3);
    __pyx_t_3 = 0;
    goto __pyx_L6;
  }
  /*else*/ {

    /* "pandas/src/generated.pyx":2122
 *         outbuf = np.empty((n, k), dtype=values.dtype)
 *     else:
 *         outbuf = out             # <<<<<<<<<<<<<<
 * 
 *     if False and _checknan(fill_value):
 */
    if (!(likely(((__pyx_v_out) == Py_None) || likely(__Pyx_TypeTest(__pyx_v_out, __pyx_ptype_5numpy_ndarray))))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2122; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __pyx_t_7 = ((PyArrayObject *)__pyx_v_out);
    {
      __Pyx_BufFmt_StackElem __pyx_stack[1];
      __Pyx_SafeReleaseBuffer(&__pyx_bstruct_outbuf);
      __pyx_t_8 = __Pyx_GetBufferAndValidate(&__pyx_bstruct_outbuf, (PyObject*)__pyx_t_7, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 2, 0, __pyx_stack);
      if (unlikely(__pyx_t_8 < 0)) {
        PyErr_Fetch(&__pyx_t_11, &__pyx_t_10, &__pyx_t_9);
        if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_outbuf, (PyObject*)__pyx_v_outbuf, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 2, 0, __pyx_stack) == -1)) {
          Py_XDECREF(__pyx_t_11); Py_XDECREF(__pyx_t_10); Py_XDECREF(__pyx_t_9);
          __Pyx_RaiseBufferFallbackError();
        } else {
          PyErr_Restore(__pyx_t_11, __pyx_t_10, __pyx_t_9);
        }
      }
      __pyx_bstride_0_outbuf = __pyx_bstruct_outbuf.strides[0]; __pyx_bstride_1_outbuf = __pyx_bstruct_outbuf.strides[1];
      __pyx_bshape_0_outbuf = __pyx_bstruct_outbuf.shape[0]; __pyx_bshape_1_outbuf = __pyx_bstruct_outbuf.shape[1];
      if (unlikely(__pyx_t_8 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2122; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    }
    __pyx_t_7 = 0;
    __Pyx_INCREF(__pyx_v_out);
    __pyx_v_outbuf = ((PyArrayObject *)__pyx_v_out);
  }
  __pyx_L6:;

  /* "pandas/src/generated.pyx":2124
 *         outbuf = out
 * 
 *     if False and _checknan(fill_value):             # <<<<<<<<<<<<<<
 *         for j in range(k):
 *             idx = indexer[j]
 */
  if (0) {
    __pyx_t_2 = __pyx_f_4util__checknan(__pyx_v_fill_value);
    __pyx_t_12 = __pyx_t_2;
  } else {
    __pyx_t_12 = 0;
  }
  if (__pyx_t_12) {

    /* "pandas/src/generated.pyx":2125
 * 
 *     if False and _checknan(fill_value):
 *         for j in range(k):             # <<<<<<<<<<<<<<
 *             idx = indexer[j]
 * 
 */
    __pyx_t_1 = __pyx_v_k;
    for (__pyx_t_13 = 0; __pyx_t_13 < __pyx_t_1; __pyx_t_13+=1) {
      __pyx_v_j = __pyx_t_13;

      /* "pandas/src/generated.pyx":2126
 *     if False and _checknan(fill_value):
 *         for j in range(k):
 *             idx = indexer[j]             # <<<<<<<<<<<<<<
 * 
 *             if idx == -1:
 */
      __pyx_t_14 = __pyx_v_j;
      __pyx_v_idx = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_bstruct_indexer.buf, __pyx_t_14, __pyx_bstride_0_indexer));

      /* "pandas/src/generated.pyx":2128
 *             idx = indexer[j]
 * 
 *             if idx == -1:             # <<<<<<<<<<<<<<
 *                 for i in range(n):
 *                     raise ValueError('No NA values allowed')
 */
      __pyx_t_12 = (__pyx_v_idx == -1);
      if (__pyx_t_12) {

        /* "pandas/src/generated.pyx":2129
 * 
 *             if idx == -1:
 *                 for i in range(n):             # <<<<<<<<<<<<<<
 *                     raise ValueError('No NA values allowed')
 *             else:
 */
        __pyx_t_15 = __pyx_v_n;
        for (__pyx_t_16 = 0; __pyx_t_16 < __pyx_t_15; __pyx_t_16+=1) {
          __pyx_v_i = __pyx_t_16;

          /* "pandas/src/generated.pyx":2130
 *             if idx == -1:
 *                 for i in range(n):
 *                     raise ValueError('No NA values allowed')             # <<<<<<<<<<<<<<
 *             else:
 *                 for i in range(n):
 */
          __pyx_t_3 = PyObject_Call(__pyx_builtin_ValueError, ((PyObject *)__pyx_k_tuple_66), NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2130; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
          __Pyx_GOTREF(__pyx_t_3);
          __Pyx_Raise(__pyx_t_3, 0, 0, 0);
          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
          {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2130; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        }
        goto __pyx_L10;
      }
      /*else*/ {

        /* "pandas/src/generated.pyx":2132
 *                     raise ValueError('No NA values allowed')
 *             else:
 *                 for i in range(n):             # <<<<<<<<<<<<<<
 *                     outbuf[i, j] = values[i, idx]
 *     else:
 */
        __pyx_t_15 = __pyx_v_n;
        for (__pyx_t_16 = 0; __pyx_t_16 < __pyx_t_15; __pyx_t_16+=1) {
          __pyx_v_i = __pyx_t_16;

          /* "pandas/src/generated.pyx":2133
 *             else:
 *                 for i in range(n):
 *                     outbuf[i, j] = values[i, idx]             # <<<<<<<<<<<<<<
 *     else:
 *         fv = fill_value
 */
          __pyx_t_17 = __pyx_v_i;
          __pyx_t_18 = __pyx_v_idx;
          __pyx_t_19 = __pyx_v_i;
          __pyx_t_20 = __pyx_v_j;
          *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_outbuf.buf, __pyx_t_19, __pyx_bstride_0_outbuf, __pyx_t_20, __pyx_bstride_1_outbuf) = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_values.buf, __pyx_t_17, __pyx_bstride_0_values, __pyx_t_18, __pyx_bstride_1_values));
        }
      }
      __pyx_L10:;
    }
    goto __pyx_L7;
  }
  /*else*/ {

    /* "pandas/src/generated.pyx":2135
 *                     outbuf[i, j] = values[i, idx]
 *     else:
 *         fv = fill_value             # <<<<<<<<<<<<<<
 *         for j in range(k):
 *             idx = indexer[j]
 */
    __pyx_t_21 = __pyx_PyFloat_AsDouble(__pyx_v_fill_value); if (unlikely((__pyx_t_21 == (npy_float64)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2135; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __pyx_v_fv = __pyx_t_21;

    /* "pandas/src/generated.pyx":2136
 *     else:
 *         fv = fill_value
 *         for j in range(k):             # <<<<<<<<<<<<<<
 *             idx = indexer[j]
 * 
 */
    __pyx_t_1 = __pyx_v_k;
    for (__pyx_t_13 = 0; __pyx_t_13 < __pyx_t_1; __pyx_t_13+=1) {
      __pyx_v_j = __pyx_t_13;

      /* "pandas/src/generated.pyx":2137
 *         fv = fill_value
 *         for j in range(k):
 *             idx = indexer[j]             # <<<<<<<<<<<<<<
 * 
 *             if idx == -1:
 */
      __pyx_t_15 = __pyx_v_j;
      __pyx_v_idx = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_bstruct_indexer.buf, __pyx_t_15, __pyx_bstride_0_indexer));

      /* "pandas/src/generated.pyx":2139
 *             idx = indexer[j]
 * 
 *             if idx == -1:             # <<<<<<<<<<<<<<
 *                 for i in range(n):
 *                     outbuf[i, j] = fv
 */
      __pyx_t_12 = (__pyx_v_idx == -1);
      if (__pyx_t_12) {

        /* "pandas/src/generated.pyx":2140
 * 
 *             if idx == -1:
 *                 for i in range(n):             # <<<<<<<<<<<<<<
 *                     outbuf[i, j] = fv
 *             else:
 */
        __pyx_t_16 = __pyx_v_n;
        for (__pyx_t_22 = 0; __pyx_t_22 < __pyx_t_16; __pyx_t_22+=1) {
          __pyx_v_i = __pyx_t_22;

          /* "pandas/src/generated.pyx":2141
 *             if idx == -1:
 *                 for i in range(n):
 *                     outbuf[i, j] = fv             # <<<<<<<<<<<<<<
 *             else:
 *                 for i in range(n):
 */
          __pyx_t_23 = __pyx_v_i;
          __pyx_t_24 = __pyx_v_j;
          *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_outbuf.buf, __pyx_t_23, __pyx_bstride_0_outbuf, __pyx_t_24, __pyx_bstride_1_outbuf) = __pyx_v_fv;
        }
        goto __pyx_L17;
      }
      /*else*/ {

        /* "pandas/src/generated.pyx":2143
 *                     outbuf[i, j] = fv
 *             else:
 *                 for i in range(n):             # <<<<<<<<<<<<<<
 *                     outbuf[i, j] = values[i, idx]
 * 
 */
        __pyx_t_16 = __pyx_v_n;
        for (__pyx_t_22 = 0; __pyx_t_22 < __pyx_t_16; __pyx_t_22+=1) {
          __pyx_v_i = __pyx_t_22;

          /* "pandas/src/generated.pyx":2144
 *             else:
 *                 for i in range(n):
 *                     outbuf[i, j] = values[i, idx]             # <<<<<<<<<<<<<<
 * 
 * @cython.wraparound(False)
 */
          __pyx_t_25 = __pyx_v_i;
          __pyx_t_26 = __pyx_v_idx;
          __pyx_t_27 = __pyx_v_i;
          __pyx_t_28 = __pyx_v_j;
          *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_outbuf.buf, __pyx_t_27, __pyx_bstride_0_outbuf, __pyx_t_28, __pyx_bstride_1_outbuf) = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_values.buf, __pyx_t_25, __pyx_bstride_0_values, __pyx_t_26, __pyx_bstride_1_values));
        }
      }
      __pyx_L17:;
    }
  }
  __pyx_L7:;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  { PyObject *__pyx_type, *__pyx_value, *__pyx_tb;
    __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);
    __Pyx_SafeReleaseBuffer(&__pyx_bstruct_outbuf);
    __Pyx_SafeReleaseBuffer(&__pyx_bstruct_indexer);
    __Pyx_SafeReleaseBuffer(&__pyx_bstruct_values);
  __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);}
  __Pyx_AddTraceback("pandas._algos.take_2d_axis1_float64", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  goto __pyx_L2;
  __pyx_L0:;
  __Pyx_SafeReleaseBuffer(&__pyx_bstruct_outbuf);
  __Pyx_SafeReleaseBuffer(&__pyx_bstruct_indexer);
  __Pyx_SafeReleaseBuffer(&__pyx_bstruct_values);
  __pyx_L2:;
  __Pyx_XDECREF((PyObject *)__pyx_v_outbuf);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "pandas/src/generated.pyx":2148
 * @cython.wraparound(False)
 * @cython.boundscheck(False)
 * def take_2d_axis1_object(ndarray[object, ndim=2] values,             # <<<<<<<<<<<<<<
 *                            ndarray[int64_t] indexer,
 *                            out=None, fill_value=np.nan):
 */

static PyObject *__pyx_pf_6pandas_6_algos_66take_2d_axis1_object(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_6pandas_6_algos_66take_2d_axis1_object = {__Pyx_NAMESTR("take_2d_axis1_object"), (PyCFunction)__pyx_pf_6pandas_6_algos_66take_2d_axis1_object, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(0)};
static PyObject *__pyx_pf_6pandas_6_algos_66take_2d_axis1_object(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyArrayObject *__pyx_v_values = 0;
  PyArrayObject *__pyx_v_indexer = 0;
  PyObject *__pyx_v_out = 0;
  PyObject *__pyx_v_fill_value = 0;
  Py_ssize_t __pyx_v_i;
  Py_ssize_t __pyx_v_j;
  Py_ssize_t __pyx_v_k;
  Py_ssize_t __pyx_v_n;
  Py_ssize_t __pyx_v_idx;
  PyArrayObject *__pyx_v_outbuf = 0;
  PyObject *__pyx_v_fv = 0;
  Py_buffer __pyx_bstruct_outbuf;
  Py_ssize_t __pyx_bstride_0_outbuf = 0;
  Py_ssize_t __pyx_bstride_1_outbuf = 0;
  Py_ssize_t __pyx_bshape_0_outbuf = 0;
  Py_ssize_t __pyx_bshape_1_outbuf = 0;
  Py_buffer __pyx_bstruct_indexer;
  Py_ssize_t __pyx_bstride_0_indexer = 0;
  Py_ssize_t __pyx_bshape_0_indexer = 0;
  Py_buffer __pyx_bstruct_values;
  Py_ssize_t __pyx_bstride_0_values = 0;
  Py_ssize_t __pyx_bstride_1_values = 0;
  Py_ssize_t __pyx_bshape_0_values = 0;
  Py_ssize_t __pyx_bshape_1_values = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  Py_ssize_t __pyx_t_1;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  PyArrayObject *__pyx_t_7 = NULL;
  int __pyx_t_8;
  PyObject *__pyx_t_9 = NULL;
  PyObject *__pyx_t_10 = NULL;
  PyObject *__pyx_t_11 = NULL;
  int __pyx_t_12;
  Py_ssize_t __pyx_t_13;
  Py_ssize_t __pyx_t_14;
  Py_ssize_t __pyx_t_15;
  Py_ssize_t __pyx_t_16;
  Py_ssize_t __pyx_t_17;
  Py_ssize_t __pyx_t_18;
  Py_ssize_t __pyx_t_19;
  Py_ssize_t __pyx_t_20;
  PyObject **__pyx_t_21;
  Py_ssize_t __pyx_t_22;
  Py_ssize_t __pyx_t_23;
  Py_ssize_t __pyx_t_24;
  Py_ssize_t __pyx_t_25;
  Py_ssize_t __pyx_t_26;
  Py_ssize_t __pyx_t_27;
  Py_ssize_t __pyx_t_28;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__values,&__pyx_n_s__indexer,&__pyx_n_s__out,&__pyx_n_s__fill_value,0};
  __Pyx_RefNannySetupContext("take_2d_axis1_object");
  __pyx_self = __pyx_self;
  {
    PyObject* values[4] = {0,0,0,0};

    /* "pandas/src/generated.pyx":2150
 * def take_2d_axis1_object(ndarray[object, ndim=2] values,
 *                            ndarray[int64_t] indexer,
 *                            out=None, fill_value=np.nan):             # <<<<<<<<<<<<<<
 *     cdef:
 *         Py_ssize_t i, j, k, n, idx
 */
    values[2] = ((PyObject *)Py_None);
    values[3] = __pyx_k_67;
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  0:
        values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__values);
        if (likely(values[0])) kw_args--;
        else goto __pyx_L5_argtuple_error;
        case  1:
        values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__indexer);
        if (likely(values[1])) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("take_2d_axis1_object", 0, 2, 4, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2148; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
        }
        case  2:
        if (kw_args > 0) {
          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__out);
          if (value) { values[2] = value; kw_args--; }
        }
        case  3:
        if (kw_args > 0) {
          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__fill_value);
          if (value) { values[3] = value; kw_args--; }
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "take_2d_axis1_object") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2148; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
    } else {
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_values = ((PyArrayObject *)values[0]);
    __pyx_v_indexer = ((PyArrayObject *)values[1]);
    __pyx_v_out = values[2];
    __pyx_v_fill_value = values[3];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("take_2d_axis1_object", 0, 2, 4, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2148; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("pandas._algos.take_2d_axis1_object", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_bstruct_outbuf.buf = NULL;
  __pyx_bstruct_values.buf = NULL;
  __pyx_bstruct_indexer.buf = NULL;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_values), __pyx_ptype_5numpy_ndarray, 1, "values", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2148; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_indexer), __pyx_ptype_5numpy_ndarray, 1, "indexer", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2149; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_values, (PyObject*)__pyx_v_values, &__Pyx_TypeInfo_object, PyBUF_FORMAT| PyBUF_STRIDES, 2, 0, __pyx_stack) == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2148; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  }
  __pyx_bstride_0_values = __pyx_bstruct_values.strides[0]; __pyx_bstride_1_values = __pyx_bstruct_values.strides[1];
  __pyx_bshape_0_values = __pyx_bstruct_values.shape[0]; __pyx_bshape_1_values = __pyx_bstruct_values.shape[1];
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_indexer, (PyObject*)__pyx_v_indexer, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2148; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  }
  __pyx_bstride_0_indexer = __pyx_bstruct_indexer.strides[0];
  __pyx_bshape_0_indexer = __pyx_bstruct_indexer.shape[0];

  /* "pandas/src/generated.pyx":2156
 *         object fv
 * 
 *     n = len(values)             # <<<<<<<<<<<<<<
 *     k = len(indexer)
 * 
 */
  __pyx_t_1 = PyObject_Length(((PyObject *)__pyx_v_values)); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2156; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_v_n = __pyx_t_1;

  /* "pandas/src/generated.pyx":2157
 * 
 *     n = len(values)
 *     k = len(indexer)             # <<<<<<<<<<<<<<
 * 
 *     if out is None:
 */
  __pyx_t_1 = PyObject_Length(((PyObject *)__pyx_v_indexer)); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2157; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_v_k = __pyx_t_1;

  /* "pandas/src/generated.pyx":2159
 *     k = len(indexer)
 * 
 *     if out is None:             # <<<<<<<<<<<<<<
 *         outbuf = np.empty((n, k), dtype=values.dtype)
 *     else:
 */
  __pyx_t_2 = (__pyx_v_out == Py_None);
  if (__pyx_t_2) {

    /* "pandas/src/generated.pyx":2160
 * 
 *     if out is None:
 *         outbuf = np.empty((n, k), dtype=values.dtype)             # <<<<<<<<<<<<<<
 *     else:
 *         outbuf = out
 */
    __pyx_t_3 = __Pyx_GetName(__pyx_m, __pyx_n_s__np); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2160; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_4 = PyObject_GetAttr(__pyx_t_3, __pyx_n_s__empty); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2160; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __pyx_t_3 = PyInt_FromSsize_t(__pyx_v_n); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2160; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_5 = PyInt_FromSsize_t(__pyx_v_k); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2160; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_6 = PyTuple_New(2); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2160; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(((PyObject *)__pyx_t_6));
    PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_3);
    __Pyx_GIVEREF(__pyx_t_3);
    PyTuple_SET_ITEM(__pyx_t_6, 1, __pyx_t_5);
    __Pyx_GIVEREF(__pyx_t_5);
    __pyx_t_3 = 0;
    __pyx_t_5 = 0;
    __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2160; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(((PyObject *)__pyx_t_5));
    PyTuple_SET_ITEM(__pyx_t_5, 0, ((PyObject *)__pyx_t_6));
    __Pyx_GIVEREF(((PyObject *)__pyx_t_6));
    __pyx_t_6 = 0;
    __pyx_t_6 = PyDict_New(); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2160; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(((PyObject *)__pyx_t_6));
    __pyx_t_3 = PyObject_GetAttr(((PyObject *)__pyx_v_values), __pyx_n_s__dtype); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2160; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    if (PyDict_SetItem(__pyx_t_6, ((PyObject *)__pyx_n_s__dtype), __pyx_t_3) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2160; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __pyx_t_3 = PyEval_CallObjectWithKeywords(__pyx_t_4, ((PyObject *)__pyx_t_5), ((PyObject *)__pyx_t_6)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2160; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_DECREF(((PyObject *)__pyx_t_5)); __pyx_t_5 = 0;
    __Pyx_DECREF(((PyObject *)__pyx_t_6)); __pyx_t_6 = 0;
    if (!(likely(((__pyx_t_3) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_3, __pyx_ptype_5numpy_ndarray))))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2160; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __pyx_t_7 = ((PyArrayObject *)__pyx_t_3);
    {
      __Pyx_BufFmt_StackElem __pyx_stack[1];
      __Pyx_SafeReleaseBuffer(&__pyx_bstruct_outbuf);
      __pyx_t_8 = __Pyx_GetBufferAndValidate(&__pyx_bstruct_outbuf, (PyObject*)__pyx_t_7, &__Pyx_TypeInfo_object, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 2, 0, __pyx_stack);
      if (unlikely(__pyx_t_8 < 0)) {
        PyErr_Fetch(&__pyx_t_9, &__pyx_t_10, &__pyx_t_11);
        if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_outbuf, (PyObject*)__pyx_v_outbuf, &__Pyx_TypeInfo_object, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 2, 0, __pyx_stack) == -1)) {
          Py_XDECREF(__pyx_t_9); Py_XDECREF(__pyx_t_10); Py_XDECREF(__pyx_t_11);
          __Pyx_RaiseBufferFallbackError();
        } else {
          PyErr_Restore(__pyx_t_9, __pyx_t_10, __pyx_t_11);
        }
      }
      __pyx_bstride_0_outbuf = __pyx_bstruct_outbuf.strides[0]; __pyx_bstride_1_outbuf = __pyx_bstruct_outbuf.strides[1];
      __pyx_bshape_0_outbuf = __pyx_bstruct_outbuf.shape[0]; __pyx_bshape_1_outbuf = __pyx_bstruct_outbuf.shape[1];
      if (unlikely(__pyx_t_8 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2160; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    }
    __pyx_t_7 = 0;
    __pyx_v_outbuf = ((PyArrayObject *)__pyx_t_3);
    __pyx_t_3 = 0;
    goto __pyx_L6;
  }
  /*else*/ {

    /* "pandas/src/generated.pyx":2162
 *         outbuf = np.empty((n, k), dtype=values.dtype)
 *     else:
 *         outbuf = out             # <<<<<<<<<<<<<<
 * 
 *     if False and _checknan(fill_value):
 */
    if (!(likely(((__pyx_v_out) == Py_None) || likely(__Pyx_TypeTest(__pyx_v_out, __pyx_ptype_5numpy_ndarray))))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2162; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __pyx_t_7 = ((PyArrayObject *)__pyx_v_out);
    {
      __Pyx_BufFmt_StackElem __pyx_stack[1];
      __Pyx_SafeReleaseBuffer(&__pyx_bstruct_outbuf);
      __pyx_t_8 = __Pyx_GetBufferAndValidate(&__pyx_bstruct_outbuf, (PyObject*)__pyx_t_7, &__Pyx_TypeInfo_object, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 2, 0, __pyx_stack);
      if (unlikely(__pyx_t_8 < 0)) {
        PyErr_Fetch(&__pyx_t_11, &__pyx_t_10, &__pyx_t_9);
        if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_outbuf, (PyObject*)__pyx_v_outbuf, &__Pyx_TypeInfo_object, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 2, 0, __pyx_stack) == -1)) {
          Py_XDECREF(__pyx_t_11); Py_XDECREF(__pyx_t_10); Py_XDECREF(__pyx_t_9);
          __Pyx_RaiseBufferFallbackError();
        } else {
          PyErr_Restore(__pyx_t_11, __pyx_t_10, __pyx_t_9);
        }
      }
      __pyx_bstride_0_outbuf = __pyx_bstruct_outbuf.strides[0]; __pyx_bstride_1_outbuf = __pyx_bstruct_outbuf.strides[1];
      __pyx_bshape_0_outbuf = __pyx_bstruct_outbuf.shape[0]; __pyx_bshape_1_outbuf = __pyx_bstruct_outbuf.shape[1];
      if (unlikely(__pyx_t_8 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2162; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    }
    __pyx_t_7 = 0;
    __Pyx_INCREF(__pyx_v_out);
    __pyx_v_outbuf = ((PyArrayObject *)__pyx_v_out);
  }
  __pyx_L6:;

  /* "pandas/src/generated.pyx":2164
 *         outbuf = out
 * 
 *     if False and _checknan(fill_value):             # <<<<<<<<<<<<<<
 *         for j in range(k):
 *             idx = indexer[j]
 */
  if (0) {
    __pyx_t_2 = __pyx_f_4util__checknan(__pyx_v_fill_value);
    __pyx_t_12 = __pyx_t_2;
  } else {
    __pyx_t_12 = 0;
  }
  if (__pyx_t_12) {

    /* "pandas/src/generated.pyx":2165
 * 
 *     if False and _checknan(fill_value):
 *         for j in range(k):             # <<<<<<<<<<<<<<
 *             idx = indexer[j]
 * 
 */
    __pyx_t_1 = __pyx_v_k;
    for (__pyx_t_13 = 0; __pyx_t_13 < __pyx_t_1; __pyx_t_13+=1) {
      __pyx_v_j = __pyx_t_13;

      /* "pandas/src/generated.pyx":2166
 *     if False and _checknan(fill_value):
 *         for j in range(k):
 *             idx = indexer[j]             # <<<<<<<<<<<<<<
 * 
 *             if idx == -1:
 */
      __pyx_t_14 = __pyx_v_j;
      __pyx_v_idx = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_bstruct_indexer.buf, __pyx_t_14, __pyx_bstride_0_indexer));

      /* "pandas/src/generated.pyx":2168
 *             idx = indexer[j]
 * 
 *             if idx == -1:             # <<<<<<<<<<<<<<
 *                 for i in range(n):
 *                     raise ValueError('No NA values allowed')
 */
      __pyx_t_12 = (__pyx_v_idx == -1);
      if (__pyx_t_12) {

        /* "pandas/src/generated.pyx":2169
 * 
 *             if idx == -1:
 *                 for i in range(n):             # <<<<<<<<<<<<<<
 *                     raise ValueError('No NA values allowed')
 *             else:
 */
        __pyx_t_15 = __pyx_v_n;
        for (__pyx_t_16 = 0; __pyx_t_16 < __pyx_t_15; __pyx_t_16+=1) {
          __pyx_v_i = __pyx_t_16;

          /* "pandas/src/generated.pyx":2170
 *             if idx == -1:
 *                 for i in range(n):
 *                     raise ValueError('No NA values allowed')             # <<<<<<<<<<<<<<
 *             else:
 *                 for i in range(n):
 */
          __pyx_t_3 = PyObject_Call(__pyx_builtin_ValueError, ((PyObject *)__pyx_k_tuple_68), NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2170; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
          __Pyx_GOTREF(__pyx_t_3);
          __Pyx_Raise(__pyx_t_3, 0, 0, 0);
          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
          {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2170; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        }
        goto __pyx_L10;
      }
      /*else*/ {

        /* "pandas/src/generated.pyx":2172
 *                     raise ValueError('No NA values allowed')
 *             else:
 *                 for i in range(n):             # <<<<<<<<<<<<<<
 *                     outbuf[i, j] = values[i, idx]
 *     else:
 */
        __pyx_t_15 = __pyx_v_n;
        for (__pyx_t_16 = 0; __pyx_t_16 < __pyx_t_15; __pyx_t_16+=1) {
          __pyx_v_i = __pyx_t_16;

          /* "pandas/src/generated.pyx":2173
 *             else:
 *                 for i in range(n):
 *                     outbuf[i, j] = values[i, idx]             # <<<<<<<<<<<<<<
 *     else:
 *         fv = fill_value
 */
          __pyx_t_17 = __pyx_v_i;
          __pyx_t_18 = __pyx_v_idx;
          __pyx_t_3 = *__Pyx_BufPtrStrided2d(PyObject **, __pyx_bstruct_values.buf, __pyx_t_17, __pyx_bstride_0_values, __pyx_t_18, __pyx_bstride_1_values);
          __Pyx_INCREF((PyObject*)__pyx_t_3);
          __pyx_t_19 = __pyx_v_i;
          __pyx_t_20 = __pyx_v_j;
          __pyx_t_21 = __Pyx_BufPtrStrided2d(PyObject **, __pyx_bstruct_outbuf.buf, __pyx_t_19, __pyx_bstride_0_outbuf, __pyx_t_20, __pyx_bstride_1_outbuf);
          __Pyx_GOTREF(*__pyx_t_21);
          __Pyx_DECREF(*__pyx_t_21); __Pyx_INCREF(__pyx_t_3);
          *__pyx_t_21 = __pyx_t_3;
          __Pyx_GIVEREF(*__pyx_t_21);
          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
        }
      }
      __pyx_L10:;
    }
    goto __pyx_L7;
  }
  /*else*/ {

    /* "pandas/src/generated.pyx":2175
 *                     outbuf[i, j] = values[i, idx]
 *     else:
 *         fv = fill_value             # <<<<<<<<<<<<<<
 *         for j in range(k):
 *             idx = indexer[j]
 */
    __Pyx_INCREF(__pyx_v_fill_value);
    __pyx_v_fv = __pyx_v_fill_value;

    /* "pandas/src/generated.pyx":2176
 *     else:
 *         fv = fill_value
 *         for j in range(k):             # <<<<<<<<<<<<<<
 *             idx = indexer[j]
 * 
 */
    __pyx_t_1 = __pyx_v_k;
    for (__pyx_t_13 = 0; __pyx_t_13 < __pyx_t_1; __pyx_t_13+=1) {
      __pyx_v_j = __pyx_t_13;

      /* "pandas/src/generated.pyx":2177
 *         fv = fill_value
 *         for j in range(k):
 *             idx = indexer[j]             # <<<<<<<<<<<<<<
 * 
 *             if idx == -1:
 */
      __pyx_t_15 = __pyx_v_j;
      __pyx_v_idx = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_bstruct_indexer.buf, __pyx_t_15, __pyx_bstride_0_indexer));

      /* "pandas/src/generated.pyx":2179
 *             idx = indexer[j]
 * 
 *             if idx == -1:             # <<<<<<<<<<<<<<
 *                 for i in range(n):
 *                     outbuf[i, j] = fv
 */
      __pyx_t_12 = (__pyx_v_idx == -1);
      if (__pyx_t_12) {

        /* "pandas/src/generated.pyx":2180
 * 
 *             if idx == -1:
 *                 for i in range(n):             # <<<<<<<<<<<<<<
 *                     outbuf[i, j] = fv
 *             else:
 */
        __pyx_t_16 = __pyx_v_n;
        for (__pyx_t_22 = 0; __pyx_t_22 < __pyx_t_16; __pyx_t_22+=1) {
          __pyx_v_i = __pyx_t_22;

          /* "pandas/src/generated.pyx":2181
 *             if idx == -1:
 *                 for i in range(n):
 *                     outbuf[i, j] = fv             # <<<<<<<<<<<<<<
 *             else:
 *                 for i in range(n):
 */
          __pyx_t_23 = __pyx_v_i;
          __pyx_t_24 = __pyx_v_j;
          __pyx_t_21 = __Pyx_BufPtrStrided2d(PyObject **, __pyx_bstruct_outbuf.buf, __pyx_t_23, __pyx_bstride_0_outbuf, __pyx_t_24, __pyx_bstride_1_outbuf);
          __Pyx_GOTREF(*__pyx_t_21);
          __Pyx_DECREF(*__pyx_t_21); __Pyx_INCREF(__pyx_v_fv);
          *__pyx_t_21 = __pyx_v_fv;
          __Pyx_GIVEREF(*__pyx_t_21);
        }
        goto __pyx_L17;
      }
      /*else*/ {

        /* "pandas/src/generated.pyx":2183
 *                     outbuf[i, j] = fv
 *             else:
 *                 for i in range(n):             # <<<<<<<<<<<<<<
 *                     outbuf[i, j] = values[i, idx]
 * 
 */
        __pyx_t_16 = __pyx_v_n;
        for (__pyx_t_22 = 0; __pyx_t_22 < __pyx_t_16; __pyx_t_22+=1) {
          __pyx_v_i = __pyx_t_22;

          /* "pandas/src/generated.pyx":2184
 *             else:
 *                 for i in range(n):
 *                     outbuf[i, j] = values[i, idx]             # <<<<<<<<<<<<<<
 * 
 * @cython.wraparound(False)
 */
          __pyx_t_25 = __pyx_v_i;
          __pyx_t_26 = __pyx_v_idx;
          __pyx_t_3 = *__Pyx_BufPtrStrided2d(PyObject **, __pyx_bstruct_values.buf, __pyx_t_25, __pyx_bstride_0_values, __pyx_t_26, __pyx_bstride_1_values);
          __Pyx_INCREF((PyObject*)__pyx_t_3);
          __pyx_t_27 = __pyx_v_i;
          __pyx_t_28 = __pyx_v_j;
          __pyx_t_21 = __Pyx_BufPtrStrided2d(PyObject **, __pyx_bstruct_outbuf.buf, __pyx_t_27, __pyx_bstride_0_outbuf, __pyx_t_28, __pyx_bstride_1_outbuf);
          __Pyx_GOTREF(*__pyx_t_21);
          __Pyx_DECREF(*__pyx_t_21); __Pyx_INCREF(__pyx_t_3);
          *__pyx_t_21 = __pyx_t_3;
          __Pyx_GIVEREF(*__pyx_t_21);
          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
        }
      }
      __pyx_L17:;
    }
  }
  __pyx_L7:;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  { PyObject *__pyx_type, *__pyx_value, *__pyx_tb;
    __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);
    __Pyx_SafeReleaseBuffer(&__pyx_bstruct_outbuf);
    __Pyx_SafeReleaseBuffer(&__pyx_bstruct_indexer);
    __Pyx_SafeReleaseBuffer(&__pyx_bstruct_values);
  __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);}
  __Pyx_AddTraceback("pandas._algos.take_2d_axis1_object", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  goto __pyx_L2;
  __pyx_L0:;
  __Pyx_SafeReleaseBuffer(&__pyx_bstruct_outbuf);
  __Pyx_SafeReleaseBuffer(&__pyx_bstruct_indexer);
  __Pyx_SafeReleaseBuffer(&__pyx_bstruct_values);
  __pyx_L2:;
  __Pyx_XDECREF((PyObject *)__pyx_v_outbuf);
  __Pyx_XDECREF(__pyx_v_fv);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "pandas/src/generated.pyx":2188
 * @cython.wraparound(False)
 * @cython.boundscheck(False)
 * def take_2d_axis1_int32(ndarray[int32_t, ndim=2] values,             # <<<<<<<<<<<<<<
 *                            ndarray[int64_t] indexer,
 *                            out=None, fill_value=np.nan):
 */

static PyObject *__pyx_pf_6pandas_6_algos_67take_2d_axis1_int32(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_6pandas_6_algos_67take_2d_axis1_int32 = {__Pyx_NAMESTR("take_2d_axis1_int32"), (PyCFunction)__pyx_pf_6pandas_6_algos_67take_2d_axis1_int32, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(0)};
static PyObject *__pyx_pf_6pandas_6_algos_67take_2d_axis1_int32(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyArrayObject *__pyx_v_values = 0;
  PyArrayObject *__pyx_v_indexer = 0;
  PyObject *__pyx_v_out = 0;
  PyObject *__pyx_v_fill_value = 0;
  Py_ssize_t __pyx_v_i;
  Py_ssize_t __pyx_v_j;
  Py_ssize_t __pyx_v_k;
  Py_ssize_t __pyx_v_n;
  Py_ssize_t __pyx_v_idx;
  PyArrayObject *__pyx_v_outbuf = 0;
  __pyx_t_5numpy_int32_t __pyx_v_fv;
  Py_buffer __pyx_bstruct_outbuf;
  Py_ssize_t __pyx_bstride_0_outbuf = 0;
  Py_ssize_t __pyx_bstride_1_outbuf = 0;
  Py_ssize_t __pyx_bshape_0_outbuf = 0;
  Py_ssize_t __pyx_bshape_1_outbuf = 0;
  Py_buffer __pyx_bstruct_indexer;
  Py_ssize_t __pyx_bstride_0_indexer = 0;
  Py_ssize_t __pyx_bshape_0_indexer = 0;
  Py_buffer __pyx_bstruct_values;
  Py_ssize_t __pyx_bstride_0_values = 0;
  Py_ssize_t __pyx_bstride_1_values = 0;
  Py_ssize_t __pyx_bshape_0_values = 0;
  Py_ssize_t __pyx_bshape_1_values = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  Py_ssize_t __pyx_t_1;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  PyArrayObject *__pyx_t_7 = NULL;
  int __pyx_t_8;
  PyObject *__pyx_t_9 = NULL;
  PyObject *__pyx_t_10 = NULL;
  PyObject *__pyx_t_11 = NULL;
  int __pyx_t_12;
  Py_ssize_t __pyx_t_13;
  Py_ssize_t __pyx_t_14;
  Py_ssize_t __pyx_t_15;
  Py_ssize_t __pyx_t_16;
  Py_ssize_t __pyx_t_17;
  Py_ssize_t __pyx_t_18;
  Py_ssize_t __pyx_t_19;
  Py_ssize_t __pyx_t_20;
  __pyx_t_5numpy_int32_t __pyx_t_21;
  Py_ssize_t __pyx_t_22;
  Py_ssize_t __pyx_t_23;
  Py_ssize_t __pyx_t_24;
  Py_ssize_t __pyx_t_25;
  Py_ssize_t __pyx_t_26;
  Py_ssize_t __pyx_t_27;
  Py_ssize_t __pyx_t_28;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__values,&__pyx_n_s__indexer,&__pyx_n_s__out,&__pyx_n_s__fill_value,0};
  __Pyx_RefNannySetupContext("take_2d_axis1_int32");
  __pyx_self = __pyx_self;
  {
    PyObject* values[4] = {0,0,0,0};

    /* "pandas/src/generated.pyx":2190
 * def take_2d_axis1_int32(ndarray[int32_t, ndim=2] values,
 *                            ndarray[int64_t] indexer,
 *                            out=None, fill_value=np.nan):             # <<<<<<<<<<<<<<
 *     cdef:
 *         Py_ssize_t i, j, k, n, idx
 */
    values[2] = ((PyObject *)Py_None);
    values[3] = __pyx_k_69;
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  0:
        values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__values);
        if (likely(values[0])) kw_args--;
        else goto __pyx_L5_argtuple_error;
        case  1:
        values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__indexer);
        if (likely(values[1])) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("take_2d_axis1_int32", 0, 2, 4, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2188; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
        }
        case  2:
        if (kw_args > 0) {
          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__out);
          if (value) { values[2] = value; kw_args--; }
        }
        case  3:
        if (kw_args > 0) {
          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__fill_value);
          if (value) { values[3] = value; kw_args--; }
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "take_2d_axis1_int32") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2188; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
    } else {
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_values = ((PyArrayObject *)values[0]);
    __pyx_v_indexer = ((PyArrayObject *)values[1]);
    __pyx_v_out = values[2];
    __pyx_v_fill_value = values[3];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("take_2d_axis1_int32", 0, 2, 4, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2188; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("pandas._algos.take_2d_axis1_int32", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_bstruct_outbuf.buf = NULL;
  __pyx_bstruct_values.buf = NULL;
  __pyx_bstruct_indexer.buf = NULL;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_values), __pyx_ptype_5numpy_ndarray, 1, "values", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2188; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_indexer), __pyx_ptype_5numpy_ndarray, 1, "indexer", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2189; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_values, (PyObject*)__pyx_v_values, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int32_t, PyBUF_FORMAT| PyBUF_STRIDES, 2, 0, __pyx_stack) == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2188; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  }
  __pyx_bstride_0_values = __pyx_bstruct_values.strides[0]; __pyx_bstride_1_values = __pyx_bstruct_values.strides[1];
  __pyx_bshape_0_values = __pyx_bstruct_values.shape[0]; __pyx_bshape_1_values = __pyx_bstruct_values.shape[1];
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_indexer, (PyObject*)__pyx_v_indexer, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2188; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  }
  __pyx_bstride_0_indexer = __pyx_bstruct_indexer.strides[0];
  __pyx_bshape_0_indexer = __pyx_bstruct_indexer.shape[0];

  /* "pandas/src/generated.pyx":2196
 *         int32_t fv
 * 
 *     n = len(values)             # <<<<<<<<<<<<<<
 *     k = len(indexer)
 * 
 */
  __pyx_t_1 = PyObject_Length(((PyObject *)__pyx_v_values)); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2196; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_v_n = __pyx_t_1;

  /* "pandas/src/generated.pyx":2197
 * 
 *     n = len(values)
 *     k = len(indexer)             # <<<<<<<<<<<<<<
 * 
 *     if out is None:
 */
  __pyx_t_1 = PyObject_Length(((PyObject *)__pyx_v_indexer)); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2197; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_v_k = __pyx_t_1;

  /* "pandas/src/generated.pyx":2199
 *     k = len(indexer)
 * 
 *     if out is None:             # <<<<<<<<<<<<<<
 *         outbuf = np.empty((n, k), dtype=values.dtype)
 *     else:
 */
  __pyx_t_2 = (__pyx_v_out == Py_None);
  if (__pyx_t_2) {

    /* "pandas/src/generated.pyx":2200
 * 
 *     if out is None:
 *         outbuf = np.empty((n, k), dtype=values.dtype)             # <<<<<<<<<<<<<<
 *     else:
 *         outbuf = out
 */
    __pyx_t_3 = __Pyx_GetName(__pyx_m, __pyx_n_s__np); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2200; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_4 = PyObject_GetAttr(__pyx_t_3, __pyx_n_s__empty); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2200; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __pyx_t_3 = PyInt_FromSsize_t(__pyx_v_n); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2200; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_5 = PyInt_FromSsize_t(__pyx_v_k); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2200; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_6 = PyTuple_New(2); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2200; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(((PyObject *)__pyx_t_6));
    PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_3);
    __Pyx_GIVEREF(__pyx_t_3);
    PyTuple_SET_ITEM(__pyx_t_6, 1, __pyx_t_5);
    __Pyx_GIVEREF(__pyx_t_5);
    __pyx_t_3 = 0;
    __pyx_t_5 = 0;
    __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2200; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(((PyObject *)__pyx_t_5));
    PyTuple_SET_ITEM(__pyx_t_5, 0, ((PyObject *)__pyx_t_6));
    __Pyx_GIVEREF(((PyObject *)__pyx_t_6));
    __pyx_t_6 = 0;
    __pyx_t_6 = PyDict_New(); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2200; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(((PyObject *)__pyx_t_6));
    __pyx_t_3 = PyObject_GetAttr(((PyObject *)__pyx_v_values), __pyx_n_s__dtype); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2200; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    if (PyDict_SetItem(__pyx_t_6, ((PyObject *)__pyx_n_s__dtype), __pyx_t_3) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2200; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __pyx_t_3 = PyEval_CallObjectWithKeywords(__pyx_t_4, ((PyObject *)__pyx_t_5), ((PyObject *)__pyx_t_6)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2200; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_DECREF(((PyObject *)__pyx_t_5)); __pyx_t_5 = 0;
    __Pyx_DECREF(((PyObject *)__pyx_t_6)); __pyx_t_6 = 0;
    if (!(likely(((__pyx_t_3) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_3, __pyx_ptype_5numpy_ndarray))))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2200; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __pyx_t_7 = ((PyArrayObject *)__pyx_t_3);
    {
      __Pyx_BufFmt_StackElem __pyx_stack[1];
      __Pyx_SafeReleaseBuffer(&__pyx_bstruct_outbuf);
      __pyx_t_8 = __Pyx_GetBufferAndValidate(&__pyx_bstruct_outbuf, (PyObject*)__pyx_t_7, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int32_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 2, 0, __pyx_stack);
      if (unlikely(__pyx_t_8 < 0)) {
        PyErr_Fetch(&__pyx_t_9, &__pyx_t_10, &__pyx_t_11);
        if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_outbuf, (PyObject*)__pyx_v_outbuf, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int32_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 2, 0, __pyx_stack) == -1)) {
          Py_XDECREF(__pyx_t_9); Py_XDECREF(__pyx_t_10); Py_XDECREF(__pyx_t_11);
          __Pyx_RaiseBufferFallbackError();
        } else {
          PyErr_Restore(__pyx_t_9, __pyx_t_10, __pyx_t_11);
        }
      }
      __pyx_bstride_0_outbuf = __pyx_bstruct_outbuf.strides[0]; __pyx_bstride_1_outbuf = __pyx_bstruct_outbuf.strides[1];
      __pyx_bshape_0_outbuf = __pyx_bstruct_outbuf.shape[0]; __pyx_bshape_1_outbuf = __pyx_bstruct_outbuf.shape[1];
      if (unlikely(__pyx_t_8 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2200; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    }
    __pyx_t_7 = 0;
    __pyx_v_outbuf = ((PyArrayObject *)__pyx_t_3);
    __pyx_t_3 = 0;
    goto __pyx_L6;
  }
  /*else*/ {

    /* "pandas/src/generated.pyx":2202
 *         outbuf = np.empty((n, k), dtype=values.dtype)
 *     else:
 *         outbuf = out             # <<<<<<<<<<<<<<
 * 
 *     if True and _checknan(fill_value):
 */
    if (!(likely(((__pyx_v_out) == Py_None) || likely(__Pyx_TypeTest(__pyx_v_out, __pyx_ptype_5numpy_ndarray))))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2202; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __pyx_t_7 = ((PyArrayObject *)__pyx_v_out);
    {
      __Pyx_BufFmt_StackElem __pyx_stack[1];
      __Pyx_SafeReleaseBuffer(&__pyx_bstruct_outbuf);
      __pyx_t_8 = __Pyx_GetBufferAndValidate(&__pyx_bstruct_outbuf, (PyObject*)__pyx_t_7, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int32_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 2, 0, __pyx_stack);
      if (unlikely(__pyx_t_8 < 0)) {
        PyErr_Fetch(&__pyx_t_11, &__pyx_t_10, &__pyx_t_9);
        if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_outbuf, (PyObject*)__pyx_v_outbuf, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int32_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 2, 0, __pyx_stack) == -1)) {
          Py_XDECREF(__pyx_t_11); Py_XDECREF(__pyx_t_10); Py_XDECREF(__pyx_t_9);
          __Pyx_RaiseBufferFallbackError();
        } else {
          PyErr_Restore(__pyx_t_11, __pyx_t_10, __pyx_t_9);
        }
      }
      __pyx_bstride_0_outbuf = __pyx_bstruct_outbuf.strides[0]; __pyx_bstride_1_outbuf = __pyx_bstruct_outbuf.strides[1];
      __pyx_bshape_0_outbuf = __pyx_bstruct_outbuf.shape[0]; __pyx_bshape_1_outbuf = __pyx_bstruct_outbuf.shape[1];
      if (unlikely(__pyx_t_8 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2202; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    }
    __pyx_t_7 = 0;
    __Pyx_INCREF(__pyx_v_out);
    __pyx_v_outbuf = ((PyArrayObject *)__pyx_v_out);
  }
  __pyx_L6:;

  /* "pandas/src/generated.pyx":2204
 *         outbuf = out
 * 
 *     if True and _checknan(fill_value):             # <<<<<<<<<<<<<<
 *         for j in range(k):
 *             idx = indexer[j]
 */
  if (1) {
    __pyx_t_2 = __pyx_f_4util__checknan(__pyx_v_fill_value);
    __pyx_t_12 = __pyx_t_2;
  } else {
    __pyx_t_12 = 1;
  }
  if (__pyx_t_12) {

    /* "pandas/src/generated.pyx":2205
 * 
 *     if True and _checknan(fill_value):
 *         for j in range(k):             # <<<<<<<<<<<<<<
 *             idx = indexer[j]
 * 
 */
    __pyx_t_1 = __pyx_v_k;
    for (__pyx_t_13 = 0; __pyx_t_13 < __pyx_t_1; __pyx_t_13+=1) {
      __pyx_v_j = __pyx_t_13;

      /* "pandas/src/generated.pyx":2206
 *     if True and _checknan(fill_value):
 *         for j in range(k):
 *             idx = indexer[j]             # <<<<<<<<<<<<<<
 * 
 *             if idx == -1:
 */
      __pyx_t_14 = __pyx_v_j;
      __pyx_v_idx = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_bstruct_indexer.buf, __pyx_t_14, __pyx_bstride_0_indexer));

      /* "pandas/src/generated.pyx":2208
 *             idx = indexer[j]
 * 
 *             if idx == -1:             # <<<<<<<<<<<<<<
 *                 for i in range(n):
 *                     raise ValueError('No NA values allowed')
 */
      __pyx_t_12 = (__pyx_v_idx == -1);
      if (__pyx_t_12) {

        /* "pandas/src/generated.pyx":2209
 * 
 *             if idx == -1:
 *                 for i in range(n):             # <<<<<<<<<<<<<<
 *                     raise ValueError('No NA values allowed')
 *             else:
 */
        __pyx_t_15 = __pyx_v_n;
        for (__pyx_t_16 = 0; __pyx_t_16 < __pyx_t_15; __pyx_t_16+=1) {
          __pyx_v_i = __pyx_t_16;

          /* "pandas/src/generated.pyx":2210
 *             if idx == -1:
 *                 for i in range(n):
 *                     raise ValueError('No NA values allowed')             # <<<<<<<<<<<<<<
 *             else:
 *                 for i in range(n):
 */
          __pyx_t_3 = PyObject_Call(__pyx_builtin_ValueError, ((PyObject *)__pyx_k_tuple_70), NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2210; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
          __Pyx_GOTREF(__pyx_t_3);
          __Pyx_Raise(__pyx_t_3, 0, 0, 0);
          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
          {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2210; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        }
        goto __pyx_L10;
      }
      /*else*/ {

        /* "pandas/src/generated.pyx":2212
 *                     raise ValueError('No NA values allowed')
 *             else:
 *                 for i in range(n):             # <<<<<<<<<<<<<<
 *                     outbuf[i, j] = values[i, idx]
 *     else:
 */
        __pyx_t_15 = __pyx_v_n;
        for (__pyx_t_16 = 0; __pyx_t_16 < __pyx_t_15; __pyx_t_16+=1) {
          __pyx_v_i = __pyx_t_16;

          /* "pandas/src/generated.pyx":2213
 *             else:
 *                 for i in range(n):
 *                     outbuf[i, j] = values[i, idx]             # <<<<<<<<<<<<<<
 *     else:
 *         fv = fill_value
 */
          __pyx_t_17 = __pyx_v_i;
          __pyx_t_18 = __pyx_v_idx;
          __pyx_t_19 = __pyx_v_i;
          __pyx_t_20 = __pyx_v_j;
          *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int32_t *, __pyx_bstruct_outbuf.buf, __pyx_t_19, __pyx_bstride_0_outbuf, __pyx_t_20, __pyx_bstride_1_outbuf) = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int32_t *, __pyx_bstruct_values.buf, __pyx_t_17, __pyx_bstride_0_values, __pyx_t_18, __pyx_bstride_1_values));
        }
      }
      __pyx_L10:;
    }
    goto __pyx_L7;
  }
  /*else*/ {

    /* "pandas/src/generated.pyx":2215
 *                     outbuf[i, j] = values[i, idx]
 *     else:
 *         fv = fill_value             # <<<<<<<<<<<<<<
 *         for j in range(k):
 *             idx = indexer[j]
 */
    __pyx_t_21 = __Pyx_PyInt_from_py_npy_int32(__pyx_v_fill_value); if (unlikely((__pyx_t_21 == (npy_int32)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2215; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __pyx_v_fv = __pyx_t_21;

    /* "pandas/src/generated.pyx":2216
 *     else:
 *         fv = fill_value
 *         for j in range(k):             # <<<<<<<<<<<<<<
 *             idx = indexer[j]
 * 
 */
    __pyx_t_1 = __pyx_v_k;
    for (__pyx_t_13 = 0; __pyx_t_13 < __pyx_t_1; __pyx_t_13+=1) {
      __pyx_v_j = __pyx_t_13;

      /* "pandas/src/generated.pyx":2217
 *         fv = fill_value
 *         for j in range(k):
 *             idx = indexer[j]             # <<<<<<<<<<<<<<
 * 
 *             if idx == -1:
 */
      __pyx_t_15 = __pyx_v_j;
      __pyx_v_idx = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_bstruct_indexer.buf, __pyx_t_15, __pyx_bstride_0_indexer));

      /* "pandas/src/generated.pyx":2219
 *             idx = indexer[j]
 * 
 *             if idx == -1:             # <<<<<<<<<<<<<<
 *                 for i in range(n):
 *                     outbuf[i, j] = fv
 */
      __pyx_t_12 = (__pyx_v_idx == -1);
      if (__pyx_t_12) {

        /* "pandas/src/generated.pyx":2220
 * 
 *             if idx == -1:
 *                 for i in range(n):             # <<<<<<<<<<<<<<
 *                     outbuf[i, j] = fv
 *             else:
 */
        __pyx_t_16 = __pyx_v_n;
        for (__pyx_t_22 = 0; __pyx_t_22 < __pyx_t_16; __pyx_t_22+=1) {
          __pyx_v_i = __pyx_t_22;

          /* "pandas/src/generated.pyx":2221
 *             if idx == -1:
 *                 for i in range(n):
 *                     outbuf[i, j] = fv             # <<<<<<<<<<<<<<
 *             else:
 *                 for i in range(n):
 */
          __pyx_t_23 = __pyx_v_i;
          __pyx_t_24 = __pyx_v_j;
          *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int32_t *, __pyx_bstruct_outbuf.buf, __pyx_t_23, __pyx_bstride_0_outbuf, __pyx_t_24, __pyx_bstride_1_outbuf) = __pyx_v_fv;
        }
        goto __pyx_L17;
      }
      /*else*/ {

        /* "pandas/src/generated.pyx":2223
 *                     outbuf[i, j] = fv
 *             else:
 *                 for i in range(n):             # <<<<<<<<<<<<<<
 *                     outbuf[i, j] = values[i, idx]
 * 
 */
        __pyx_t_16 = __pyx_v_n;
        for (__pyx_t_22 = 0; __pyx_t_22 < __pyx_t_16; __pyx_t_22+=1) {
          __pyx_v_i = __pyx_t_22;

          /* "pandas/src/generated.pyx":2224
 *             else:
 *                 for i in range(n):
 *                     outbuf[i, j] = values[i, idx]             # <<<<<<<<<<<<<<
 * 
 * @cython.wraparound(False)
 */
          __pyx_t_25 = __pyx_v_i;
          __pyx_t_26 = __pyx_v_idx;
          __pyx_t_27 = __pyx_v_i;
          __pyx_t_28 = __pyx_v_j;
          *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int32_t *, __pyx_bstruct_outbuf.buf, __pyx_t_27, __pyx_bstride_0_outbuf, __pyx_t_28, __pyx_bstride_1_outbuf) = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int32_t *, __pyx_bstruct_values.buf, __pyx_t_25, __pyx_bstride_0_values, __pyx_t_26, __pyx_bstride_1_values));
        }
      }
      __pyx_L17:;
    }
  }
  __pyx_L7:;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  { PyObject *__pyx_type, *__pyx_value, *__pyx_tb;
    __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);
    __Pyx_SafeReleaseBuffer(&__pyx_bstruct_outbuf);
    __Pyx_SafeReleaseBuffer(&__pyx_bstruct_indexer);
    __Pyx_SafeReleaseBuffer(&__pyx_bstruct_values);
  __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);}
  __Pyx_AddTraceback("pandas._algos.take_2d_axis1_int32", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  goto __pyx_L2;
  __pyx_L0:;
  __Pyx_SafeReleaseBuffer(&__pyx_bstruct_outbuf);
  __Pyx_SafeReleaseBuffer(&__pyx_bstruct_indexer);
  __Pyx_SafeReleaseBuffer(&__pyx_bstruct_values);
  __pyx_L2:;
  __Pyx_XDECREF((PyObject *)__pyx_v_outbuf);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "pandas/src/generated.pyx":2228
 * @cython.wraparound(False)
 * @cython.boundscheck(False)
 * def take_2d_axis1_int64(ndarray[int64_t, ndim=2] values,             # <<<<<<<<<<<<<<
 *                            ndarray[int64_t] indexer,
 *                            out=None, fill_value=np.nan):
 */

static PyObject *__pyx_pf_6pandas_6_algos_68take_2d_axis1_int64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_6pandas_6_algos_68take_2d_axis1_int64 = {__Pyx_NAMESTR("take_2d_axis1_int64"), (PyCFunction)__pyx_pf_6pandas_6_algos_68take_2d_axis1_int64, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(0)};
static PyObject *__pyx_pf_6pandas_6_algos_68take_2d_axis1_int64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyArrayObject *__pyx_v_values = 0;
  PyArrayObject *__pyx_v_indexer = 0;
  PyObject *__pyx_v_out = 0;
  PyObject *__pyx_v_fill_value = 0;
  Py_ssize_t __pyx_v_i;
  Py_ssize_t __pyx_v_j;
  Py_ssize_t __pyx_v_k;
  Py_ssize_t __pyx_v_n;
  Py_ssize_t __pyx_v_idx;
  PyArrayObject *__pyx_v_outbuf = 0;
  __pyx_t_5numpy_int64_t __pyx_v_fv;
  Py_buffer __pyx_bstruct_outbuf;
  Py_ssize_t __pyx_bstride_0_outbuf = 0;
  Py_ssize_t __pyx_bstride_1_outbuf = 0;
  Py_ssize_t __pyx_bshape_0_outbuf = 0;
  Py_ssize_t __pyx_bshape_1_outbuf = 0;
  Py_buffer __pyx_bstruct_indexer;
  Py_ssize_t __pyx_bstride_0_indexer = 0;
  Py_ssize_t __pyx_bshape_0_indexer = 0;
  Py_buffer __pyx_bstruct_values;
  Py_ssize_t __pyx_bstride_0_values = 0;
  Py_ssize_t __pyx_bstride_1_values = 0;
  Py_ssize_t __pyx_bshape_0_values = 0;
  Py_ssize_t __pyx_bshape_1_values = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  Py_ssize_t __pyx_t_1;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  PyArrayObject *__pyx_t_7 = NULL;
  int __pyx_t_8;
  PyObject *__pyx_t_9 = NULL;
  PyObject *__pyx_t_10 = NULL;
  PyObject *__pyx_t_11 = NULL;
  int __pyx_t_12;
  Py_ssize_t __pyx_t_13;
  Py_ssize_t __pyx_t_14;
  Py_ssize_t __pyx_t_15;
  Py_ssize_t __pyx_t_16;
  Py_ssize_t __pyx_t_17;
  Py_ssize_t __pyx_t_18;
  Py_ssize_t __pyx_t_19;
  Py_ssize_t __pyx_t_20;
  __pyx_t_5numpy_int64_t __pyx_t_21;
  Py_ssize_t __pyx_t_22;
  Py_ssize_t __pyx_t_23;
  Py_ssize_t __pyx_t_24;
  Py_ssize_t __pyx_t_25;
  Py_ssize_t __pyx_t_26;
  Py_ssize_t __pyx_t_27;
  Py_ssize_t __pyx_t_28;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__values,&__pyx_n_s__indexer,&__pyx_n_s__out,&__pyx_n_s__fill_value,0};
  __Pyx_RefNannySetupContext("take_2d_axis1_int64");
  __pyx_self = __pyx_self;
  {
    PyObject* values[4] = {0,0,0,0};

    /* "pandas/src/generated.pyx":2230
 * def take_2d_axis1_int64(ndarray[int64_t, ndim=2] values,
 *                            ndarray[int64_t] indexer,
 *                            out=None, fill_value=np.nan):             # <<<<<<<<<<<<<<
 *     cdef:
 *         Py_ssize_t i, j, k, n, idx
 */
    values[2] = ((PyObject *)Py_None);
    values[3] = __pyx_k_71;
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  0:
        values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__values);
        if (likely(values[0])) kw_args--;
        else goto __pyx_L5_argtuple_error;
        case  1:
        values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__indexer);
        if (likely(values[1])) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("take_2d_axis1_int64", 0, 2, 4, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2228; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
        }
        case  2:
        if (kw_args > 0) {
          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__out);
          if (value) { values[2] = value; kw_args--; }
        }
        case  3:
        if (kw_args > 0) {
          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__fill_value);
          if (value) { values[3] = value; kw_args--; }
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "take_2d_axis1_int64") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2228; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
    } else {
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_values = ((PyArrayObject *)values[0]);
    __pyx_v_indexer = ((PyArrayObject *)values[1]);
    __pyx_v_out = values[2];
    __pyx_v_fill_value = values[3];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("take_2d_axis1_int64", 0, 2, 4, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2228; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("pandas._algos.take_2d_axis1_int64", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_bstruct_outbuf.buf = NULL;
  __pyx_bstruct_values.buf = NULL;
  __pyx_bstruct_indexer.buf = NULL;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_values), __pyx_ptype_5numpy_ndarray, 1, "values", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2228; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_indexer), __pyx_ptype_5numpy_ndarray, 1, "indexer", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2229; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_values, (PyObject*)__pyx_v_values, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 2, 0, __pyx_stack) == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2228; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  }
  __pyx_bstride_0_values = __pyx_bstruct_values.strides[0]; __pyx_bstride_1_values = __pyx_bstruct_values.strides[1];
  __pyx_bshape_0_values = __pyx_bstruct_values.shape[0]; __pyx_bshape_1_values = __pyx_bstruct_values.shape[1];
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_indexer, (PyObject*)__pyx_v_indexer, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2228; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  }
  __pyx_bstride_0_indexer = __pyx_bstruct_indexer.strides[0];
  __pyx_bshape_0_indexer = __pyx_bstruct_indexer.shape[0];

  /* "pandas/src/generated.pyx":2236
 *         int64_t fv
 * 
 *     n = len(values)             # <<<<<<<<<<<<<<
 *     k = len(indexer)
 * 
 */
  __pyx_t_1 = PyObject_Length(((PyObject *)__pyx_v_values)); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2236; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_v_n = __pyx_t_1;

  /* "pandas/src/generated.pyx":2237
 * 
 *     n = len(values)
 *     k = len(indexer)             # <<<<<<<<<<<<<<
 * 
 *     if out is None:
 */
  __pyx_t_1 = PyObject_Length(((PyObject *)__pyx_v_indexer)); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2237; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_v_k = __pyx_t_1;

  /* "pandas/src/generated.pyx":2239
 *     k = len(indexer)
 * 
 *     if out is None:             # <<<<<<<<<<<<<<
 *         outbuf = np.empty((n, k), dtype=values.dtype)
 *     else:
 */
  __pyx_t_2 = (__pyx_v_out == Py_None);
  if (__pyx_t_2) {

    /* "pandas/src/generated.pyx":2240
 * 
 *     if out is None:
 *         outbuf = np.empty((n, k), dtype=values.dtype)             # <<<<<<<<<<<<<<
 *     else:
 *         outbuf = out
 */
    __pyx_t_3 = __Pyx_GetName(__pyx_m, __pyx_n_s__np); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2240; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_4 = PyObject_GetAttr(__pyx_t_3, __pyx_n_s__empty); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2240; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __pyx_t_3 = PyInt_FromSsize_t(__pyx_v_n); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2240; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_5 = PyInt_FromSsize_t(__pyx_v_k); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2240; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_6 = PyTuple_New(2); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2240; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(((PyObject *)__pyx_t_6));
    PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_3);
    __Pyx_GIVEREF(__pyx_t_3);
    PyTuple_SET_ITEM(__pyx_t_6, 1, __pyx_t_5);
    __Pyx_GIVEREF(__pyx_t_5);
    __pyx_t_3 = 0;
    __pyx_t_5 = 0;
    __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2240; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(((PyObject *)__pyx_t_5));
    PyTuple_SET_ITEM(__pyx_t_5, 0, ((PyObject *)__pyx_t_6));
    __Pyx_GIVEREF(((PyObject *)__pyx_t_6));
    __pyx_t_6 = 0;
    __pyx_t_6 = PyDict_New(); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2240; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(((PyObject *)__pyx_t_6));
    __pyx_t_3 = PyObject_GetAttr(((PyObject *)__pyx_v_values), __pyx_n_s__dtype); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2240; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    if (PyDict_SetItem(__pyx_t_6, ((PyObject *)__pyx_n_s__dtype), __pyx_t_3) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2240; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __pyx_t_3 = PyEval_CallObjectWithKeywords(__pyx_t_4, ((PyObject *)__pyx_t_5), ((PyObject *)__pyx_t_6)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2240; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_DECREF(((PyObject *)__pyx_t_5)); __pyx_t_5 = 0;
    __Pyx_DECREF(((PyObject *)__pyx_t_6)); __pyx_t_6 = 0;
    if (!(likely(((__pyx_t_3) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_3, __pyx_ptype_5numpy_ndarray))))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2240; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __pyx_t_7 = ((PyArrayObject *)__pyx_t_3);
    {
      __Pyx_BufFmt_StackElem __pyx_stack[1];
      __Pyx_SafeReleaseBuffer(&__pyx_bstruct_outbuf);
      __pyx_t_8 = __Pyx_GetBufferAndValidate(&__pyx_bstruct_outbuf, (PyObject*)__pyx_t_7, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 2, 0, __pyx_stack);
      if (unlikely(__pyx_t_8 < 0)) {
        PyErr_Fetch(&__pyx_t_9, &__pyx_t_10, &__pyx_t_11);
        if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_outbuf, (PyObject*)__pyx_v_outbuf, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 2, 0, __pyx_stack) == -1)) {
          Py_XDECREF(__pyx_t_9); Py_XDECREF(__pyx_t_10); Py_XDECREF(__pyx_t_11);
          __Pyx_RaiseBufferFallbackError();
        } else {
          PyErr_Restore(__pyx_t_9, __pyx_t_10, __pyx_t_11);
        }
      }
      __pyx_bstride_0_outbuf = __pyx_bstruct_outbuf.strides[0]; __pyx_bstride_1_outbuf = __pyx_bstruct_outbuf.strides[1];
      __pyx_bshape_0_outbuf = __pyx_bstruct_outbuf.shape[0]; __pyx_bshape_1_outbuf = __pyx_bstruct_outbuf.shape[1];
      if (unlikely(__pyx_t_8 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2240; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    }
    __pyx_t_7 = 0;
    __pyx_v_outbuf = ((PyArrayObject *)__pyx_t_3);
    __pyx_t_3 = 0;
    goto __pyx_L6;
  }
  /*else*/ {

    /* "pandas/src/generated.pyx":2242
 *         outbuf = np.empty((n, k), dtype=values.dtype)
 *     else:
 *         outbuf = out             # <<<<<<<<<<<<<<
 * 
 *     if True and _checknan(fill_value):
 */
    if (!(likely(((__pyx_v_out) == Py_None) || likely(__Pyx_TypeTest(__pyx_v_out, __pyx_ptype_5numpy_ndarray))))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2242; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __pyx_t_7 = ((PyArrayObject *)__pyx_v_out);
    {
      __Pyx_BufFmt_StackElem __pyx_stack[1];
      __Pyx_SafeReleaseBuffer(&__pyx_bstruct_outbuf);
      __pyx_t_8 = __Pyx_GetBufferAndValidate(&__pyx_bstruct_outbuf, (PyObject*)__pyx_t_7, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 2, 0, __pyx_stack);
      if (unlikely(__pyx_t_8 < 0)) {
        PyErr_Fetch(&__pyx_t_11, &__pyx_t_10, &__pyx_t_9);
        if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_outbuf, (PyObject*)__pyx_v_outbuf, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 2, 0, __pyx_stack) == -1)) {
          Py_XDECREF(__pyx_t_11); Py_XDECREF(__pyx_t_10); Py_XDECREF(__pyx_t_9);
          __Pyx_RaiseBufferFallbackError();
        } else {
          PyErr_Restore(__pyx_t_11, __pyx_t_10, __pyx_t_9);
        }
      }
      __pyx_bstride_0_outbuf = __pyx_bstruct_outbuf.strides[0]; __pyx_bstride_1_outbuf = __pyx_bstruct_outbuf.strides[1];
      __pyx_bshape_0_outbuf = __pyx_bstruct_outbuf.shape[0]; __pyx_bshape_1_outbuf = __pyx_bstruct_outbuf.shape[1];
      if (unlikely(__pyx_t_8 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2242; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    }
    __pyx_t_7 = 0;
    __Pyx_INCREF(__pyx_v_out);
    __pyx_v_outbuf = ((PyArrayObject *)__pyx_v_out);
  }
  __pyx_L6:;

  /* "pandas/src/generated.pyx":2244
 *         outbuf = out
 * 
 *     if True and _checknan(fill_value):             # <<<<<<<<<<<<<<
 *         for j in range(k):
 *             idx = indexer[j]
 */
  if (1) {
    __pyx_t_2 = __pyx_f_4util__checknan(__pyx_v_fill_value);
    __pyx_t_12 = __pyx_t_2;
  } else {
    __pyx_t_12 = 1;
  }
  if (__pyx_t_12) {

    /* "pandas/src/generated.pyx":2245
 * 
 *     if True and _checknan(fill_value):
 *         for j in range(k):             # <<<<<<<<<<<<<<
 *             idx = indexer[j]
 * 
 */
    __pyx_t_1 = __pyx_v_k;
    for (__pyx_t_13 = 0; __pyx_t_13 < __pyx_t_1; __pyx_t_13+=1) {
      __pyx_v_j = __pyx_t_13;

      /* "pandas/src/generated.pyx":2246
 *     if True and _checknan(fill_value):
 *         for j in range(k):
 *             idx = indexer[j]             # <<<<<<<<<<<<<<
 * 
 *             if idx == -1:
 */
      __pyx_t_14 = __pyx_v_j;
      __pyx_v_idx = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_bstruct_indexer.buf, __pyx_t_14, __pyx_bstride_0_indexer));

      /* "pandas/src/generated.pyx":2248
 *             idx = indexer[j]
 * 
 *             if idx == -1:             # <<<<<<<<<<<<<<
 *                 for i in range(n):
 *                     raise ValueError('No NA values allowed')
 */
      __pyx_t_12 = (__pyx_v_idx == -1);
      if (__pyx_t_12) {

        /* "pandas/src/generated.pyx":2249
 * 
 *             if idx == -1:
 *                 for i in range(n):             # <<<<<<<<<<<<<<
 *                     raise ValueError('No NA values allowed')
 *             else:
 */
        __pyx_t_15 = __pyx_v_n;
        for (__pyx_t_16 = 0; __pyx_t_16 < __pyx_t_15; __pyx_t_16+=1) {
          __pyx_v_i = __pyx_t_16;

          /* "pandas/src/generated.pyx":2250
 *             if idx == -1:
 *                 for i in range(n):
 *                     raise ValueError('No NA values allowed')             # <<<<<<<<<<<<<<
 *             else:
 *                 for i in range(n):
 */
          __pyx_t_3 = PyObject_Call(__pyx_builtin_ValueError, ((PyObject *)__pyx_k_tuple_72), NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2250; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
          __Pyx_GOTREF(__pyx_t_3);
          __Pyx_Raise(__pyx_t_3, 0, 0, 0);
          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
          {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2250; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        }
        goto __pyx_L10;
      }
      /*else*/ {

        /* "pandas/src/generated.pyx":2252
 *                     raise ValueError('No NA values allowed')
 *             else:
 *                 for i in range(n):             # <<<<<<<<<<<<<<
 *                     outbuf[i, j] = values[i, idx]
 *     else:
 */
        __pyx_t_15 = __pyx_v_n;
        for (__pyx_t_16 = 0; __pyx_t_16 < __pyx_t_15; __pyx_t_16+=1) {
          __pyx_v_i = __pyx_t_16;

          /* "pandas/src/generated.pyx":2253
 *             else:
 *                 for i in range(n):
 *                     outbuf[i, j] = values[i, idx]             # <<<<<<<<<<<<<<
 *     else:
 *         fv = fill_value
 */
          __pyx_t_17 = __pyx_v_i;
          __pyx_t_18 = __pyx_v_idx;
          __pyx_t_19 = __pyx_v_i;
          __pyx_t_20 = __pyx_v_j;
          *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_bstruct_outbuf.buf, __pyx_t_19, __pyx_bstride_0_outbuf, __pyx_t_20, __pyx_bstride_1_outbuf) = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_bstruct_values.buf, __pyx_t_17, __pyx_bstride_0_values, __pyx_t_18, __pyx_bstride_1_values));
        }
      }
      __pyx_L10:;
    }
    goto __pyx_L7;
  }
  /*else*/ {

    /* "pandas/src/generated.pyx":2255
 *                     outbuf[i, j] = values[i, idx]
 *     else:
 *         fv = fill_value             # <<<<<<<<<<<<<<
 *         for j in range(k):
 *             idx = indexer[j]
 */
    __pyx_t_21 = __Pyx_PyInt_from_py_npy_int64(__pyx_v_fill_value); if (unlikely((__pyx_t_21 == (npy_int64)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2255; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __pyx_v_fv = __pyx_t_21;

    /* "pandas/src/generated.pyx":2256
 *     else:
 *         fv = fill_value
 *         for j in range(k):             # <<<<<<<<<<<<<<
 *             idx = indexer[j]
 * 
 */
    __pyx_t_1 = __pyx_v_k;
    for (__pyx_t_13 = 0; __pyx_t_13 < __pyx_t_1; __pyx_t_13+=1) {
      __pyx_v_j = __pyx_t_13;

      /* "pandas/src/generated.pyx":2257
 *         fv = fill_value
 *         for j in range(k):
 *             idx = indexer[j]             # <<<<<<<<<<<<<<
 * 
 *             if idx == -1:
 */
      __pyx_t_15 = __pyx_v_j;
      __pyx_v_idx = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_bstruct_indexer.buf, __pyx_t_15, __pyx_bstride_0_indexer));

      /* "pandas/src/generated.pyx":2259
 *             idx = indexer[j]
 * 
 *             if idx == -1:             # <<<<<<<<<<<<<<
 *                 for i in range(n):
 *                     outbuf[i, j] = fv
 */
      __pyx_t_12 = (__pyx_v_idx == -1);
      if (__pyx_t_12) {

        /* "pandas/src/generated.pyx":2260
 * 
 *             if idx == -1:
 *                 for i in range(n):             # <<<<<<<<<<<<<<
 *                     outbuf[i, j] = fv
 *             else:
 */
        __pyx_t_16 = __pyx_v_n;
        for (__pyx_t_22 = 0; __pyx_t_22 < __pyx_t_16; __pyx_t_22+=1) {
          __pyx_v_i = __pyx_t_22;

          /* "pandas/src/generated.pyx":2261
 *             if idx == -1:
 *                 for i in range(n):
 *                     outbuf[i, j] = fv             # <<<<<<<<<<<<<<
 *             else:
 *                 for i in range(n):
 */
          __pyx_t_23 = __pyx_v_i;
          __pyx_t_24 = __pyx_v_j;
          *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_bstruct_outbuf.buf, __pyx_t_23, __pyx_bstride_0_outbuf, __pyx_t_24, __pyx_bstride_1_outbuf) = __pyx_v_fv;
        }
        goto __pyx_L17;
      }
      /*else*/ {

        /* "pandas/src/generated.pyx":2263
 *                     outbuf[i, j] = fv
 *             else:
 *                 for i in range(n):             # <<<<<<<<<<<<<<
 *                     outbuf[i, j] = values[i, idx]
 * 
 */
        __pyx_t_16 = __pyx_v_n;
        for (__pyx_t_22 = 0; __pyx_t_22 < __pyx_t_16; __pyx_t_22+=1) {
          __pyx_v_i = __pyx_t_22;

          /* "pandas/src/generated.pyx":2264
 *             else:
 *                 for i in range(n):
 *                     outbuf[i, j] = values[i, idx]             # <<<<<<<<<<<<<<
 * 
 * @cython.wraparound(False)
 */
          __pyx_t_25 = __pyx_v_i;
          __pyx_t_26 = __pyx_v_idx;
          __pyx_t_27 = __pyx_v_i;
          __pyx_t_28 = __pyx_v_j;
          *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_bstruct_outbuf.buf, __pyx_t_27, __pyx_bstride_0_outbuf, __pyx_t_28, __pyx_bstride_1_outbuf) = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_bstruct_values.buf, __pyx_t_25, __pyx_bstride_0_values, __pyx_t_26, __pyx_bstride_1_values));
        }
      }
      __pyx_L17:;
    }
  }
  __pyx_L7:;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  { PyObject *__pyx_type, *__pyx_value, *__pyx_tb;
    __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);
    __Pyx_SafeReleaseBuffer(&__pyx_bstruct_outbuf);
    __Pyx_SafeReleaseBuffer(&__pyx_bstruct_indexer);
    __Pyx_SafeReleaseBuffer(&__pyx_bstruct_values);
  __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);}
  __Pyx_AddTraceback("pandas._algos.take_2d_axis1_int64", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  goto __pyx_L2;
  __pyx_L0:;
  __Pyx_SafeReleaseBuffer(&__pyx_bstruct_outbuf);
  __Pyx_SafeReleaseBuffer(&__pyx_bstruct_indexer);
  __Pyx_SafeReleaseBuffer(&__pyx_bstruct_values);
  __pyx_L2:;
  __Pyx_XDECREF((PyObject *)__pyx_v_outbuf);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "pandas/src/generated.pyx":2268
 * @cython.wraparound(False)
 * @cython.boundscheck(False)
 * def take_2d_axis1_bool(ndarray[uint8_t, ndim=2] values,             # <<<<<<<<<<<<<<
 *                            ndarray[int64_t] indexer,
 *                            out=None, fill_value=np.nan):
 */

static PyObject *__pyx_pf_6pandas_6_algos_69take_2d_axis1_bool(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_6pandas_6_algos_69take_2d_axis1_bool = {__Pyx_NAMESTR("take_2d_axis1_bool"), (PyCFunction)__pyx_pf_6pandas_6_algos_69take_2d_axis1_bool, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(0)};
static PyObject *__pyx_pf_6pandas_6_algos_69take_2d_axis1_bool(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyArrayObject *__pyx_v_values = 0;
  PyArrayObject *__pyx_v_indexer = 0;
  PyObject *__pyx_v_out = 0;
  PyObject *__pyx_v_fill_value = 0;
  Py_ssize_t __pyx_v_i;
  Py_ssize_t __pyx_v_j;
  Py_ssize_t __pyx_v_k;
  Py_ssize_t __pyx_v_n;
  Py_ssize_t __pyx_v_idx;
  PyArrayObject *__pyx_v_outbuf = 0;
  __pyx_t_5numpy_uint8_t __pyx_v_fv;
  Py_buffer __pyx_bstruct_outbuf;
  Py_ssize_t __pyx_bstride_0_outbuf = 0;
  Py_ssize_t __pyx_bstride_1_outbuf = 0;
  Py_ssize_t __pyx_bshape_0_outbuf = 0;
  Py_ssize_t __pyx_bshape_1_outbuf = 0;
  Py_buffer __pyx_bstruct_indexer;
  Py_ssize_t __pyx_bstride_0_indexer = 0;
  Py_ssize_t __pyx_bshape_0_indexer = 0;
  Py_buffer __pyx_bstruct_values;
  Py_ssize_t __pyx_bstride_0_values = 0;
  Py_ssize_t __pyx_bstride_1_values = 0;
  Py_ssize_t __pyx_bshape_0_values = 0;
  Py_ssize_t __pyx_bshape_1_values = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  Py_ssize_t __pyx_t_1;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  PyArrayObject *__pyx_t_7 = NULL;
  int __pyx_t_8;
  PyObject *__pyx_t_9 = NULL;
  PyObject *__pyx_t_10 = NULL;
  PyObject *__pyx_t_11 = NULL;
  int __pyx_t_12;
  Py_ssize_t __pyx_t_13;
  Py_ssize_t __pyx_t_14;
  Py_ssize_t __pyx_t_15;
  Py_ssize_t __pyx_t_16;
  Py_ssize_t __pyx_t_17;
  Py_ssize_t __pyx_t_18;
  Py_ssize_t __pyx_t_19;
  Py_ssize_t __pyx_t_20;
  __pyx_t_5numpy_uint8_t __pyx_t_21;
  Py_ssize_t __pyx_t_22;
  Py_ssize_t __pyx_t_23;
  Py_ssize_t __pyx_t_24;
  Py_ssize_t __pyx_t_25;
  Py_ssize_t __pyx_t_26;
  Py_ssize_t __pyx_t_27;
  Py_ssize_t __pyx_t_28;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__values,&__pyx_n_s__indexer,&__pyx_n_s__out,&__pyx_n_s__fill_value,0};
  __Pyx_RefNannySetupContext("take_2d_axis1_bool");
  __pyx_self = __pyx_self;
  {
    PyObject* values[4] = {0,0,0,0};

    /* "pandas/src/generated.pyx":2270
 * def take_2d_axis1_bool(ndarray[uint8_t, ndim=2] values,
 *                            ndarray[int64_t] indexer,
 *                            out=None, fill_value=np.nan):             # <<<<<<<<<<<<<<
 *     cdef:
 *         Py_ssize_t i, j, k, n, idx
 */
    values[2] = ((PyObject *)Py_None);
    values[3] = __pyx_k_73;
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  0:
        values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__values);
        if (likely(values[0])) kw_args--;
        else goto __pyx_L5_argtuple_error;
        case  1:
        values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__indexer);
        if (likely(values[1])) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("take_2d_axis1_bool", 0, 2, 4, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2268; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
        }
        case  2:
        if (kw_args > 0) {
          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__out);
          if (value) { values[2] = value; kw_args--; }
        }
        case  3:
        if (kw_args > 0) {
          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__fill_value);
          if (value) { values[3] = value; kw_args--; }
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "take_2d_axis1_bool") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2268; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
    } else {
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_values = ((PyArrayObject *)values[0]);
    __pyx_v_indexer = ((PyArrayObject *)values[1]);
    __pyx_v_out = values[2];
    __pyx_v_fill_value = values[3];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("take_2d_axis1_bool", 0, 2, 4, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2268; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("pandas._algos.take_2d_axis1_bool", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_bstruct_outbuf.buf = NULL;
  __pyx_bstruct_values.buf = NULL;
  __pyx_bstruct_indexer.buf = NULL;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_values), __pyx_ptype_5numpy_ndarray, 1, "values", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2268; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_indexer), __pyx_ptype_5numpy_ndarray, 1, "indexer", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2269; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_values, (PyObject*)__pyx_v_values, &__Pyx_TypeInfo_nn___pyx_t_5numpy_uint8_t, PyBUF_FORMAT| PyBUF_STRIDES, 2, 0, __pyx_stack) == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2268; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  }
  __pyx_bstride_0_values = __pyx_bstruct_values.strides[0]; __pyx_bstride_1_values = __pyx_bstruct_values.strides[1];
  __pyx_bshape_0_values = __pyx_bstruct_values.shape[0]; __pyx_bshape_1_values = __pyx_bstruct_values.shape[1];
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_indexer, (PyObject*)__pyx_v_indexer, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2268; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  }
  __pyx_bstride_0_indexer = __pyx_bstruct_indexer.strides[0];
  __pyx_bshape_0_indexer = __pyx_bstruct_indexer.shape[0];

  /* "pandas/src/generated.pyx":2276
 *         uint8_t fv
 * 
 *     n = len(values)             # <<<<<<<<<<<<<<
 *     k = len(indexer)
 * 
 */
  __pyx_t_1 = PyObject_Length(((PyObject *)__pyx_v_values)); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2276; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_v_n = __pyx_t_1;

  /* "pandas/src/generated.pyx":2277
 * 
 *     n = len(values)
 *     k = len(indexer)             # <<<<<<<<<<<<<<
 * 
 *     if out is None:
 */
  __pyx_t_1 = PyObject_Length(((PyObject *)__pyx_v_indexer)); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2277; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_v_k = __pyx_t_1;

  /* "pandas/src/generated.pyx":2279
 *     k = len(indexer)
 * 
 *     if out is None:             # <<<<<<<<<<<<<<
 *         outbuf = np.empty((n, k), dtype=values.dtype)
 *     else:
 */
  __pyx_t_2 = (__pyx_v_out == Py_None);
  if (__pyx_t_2) {

    /* "pandas/src/generated.pyx":2280
 * 
 *     if out is None:
 *         outbuf = np.empty((n, k), dtype=values.dtype)             # <<<<<<<<<<<<<<
 *     else:
 *         outbuf = out
 */
    __pyx_t_3 = __Pyx_GetName(__pyx_m, __pyx_n_s__np); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2280; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_4 = PyObject_GetAttr(__pyx_t_3, __pyx_n_s__empty); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2280; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __pyx_t_3 = PyInt_FromSsize_t(__pyx_v_n); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2280; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_5 = PyInt_FromSsize_t(__pyx_v_k); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2280; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_6 = PyTuple_New(2); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2280; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(((PyObject *)__pyx_t_6));
    PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_3);
    __Pyx_GIVEREF(__pyx_t_3);
    PyTuple_SET_ITEM(__pyx_t_6, 1, __pyx_t_5);
    __Pyx_GIVEREF(__pyx_t_5);
    __pyx_t_3 = 0;
    __pyx_t_5 = 0;
    __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2280; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(((PyObject *)__pyx_t_5));
    PyTuple_SET_ITEM(__pyx_t_5, 0, ((PyObject *)__pyx_t_6));
    __Pyx_GIVEREF(((PyObject *)__pyx_t_6));
    __pyx_t_6 = 0;
    __pyx_t_6 = PyDict_New(); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2280; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(((PyObject *)__pyx_t_6));
    __pyx_t_3 = PyObject_GetAttr(((PyObject *)__pyx_v_values), __pyx_n_s__dtype); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2280; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    if (PyDict_SetItem(__pyx_t_6, ((PyObject *)__pyx_n_s__dtype), __pyx_t_3) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2280; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __pyx_t_3 = PyEval_CallObjectWithKeywords(__pyx_t_4, ((PyObject *)__pyx_t_5), ((PyObject *)__pyx_t_6)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2280; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_DECREF(((PyObject *)__pyx_t_5)); __pyx_t_5 = 0;
    __Pyx_DECREF(((PyObject *)__pyx_t_6)); __pyx_t_6 = 0;
    if (!(likely(((__pyx_t_3) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_3, __pyx_ptype_5numpy_ndarray))))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2280; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __pyx_t_7 = ((PyArrayObject *)__pyx_t_3);
    {
      __Pyx_BufFmt_StackElem __pyx_stack[1];
      __Pyx_SafeReleaseBuffer(&__pyx_bstruct_outbuf);
      __pyx_t_8 = __Pyx_GetBufferAndValidate(&__pyx_bstruct_outbuf, (PyObject*)__pyx_t_7, &__Pyx_TypeInfo_nn___pyx_t_5numpy_uint8_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 2, 0, __pyx_stack);
      if (unlikely(__pyx_t_8 < 0)) {
        PyErr_Fetch(&__pyx_t_9, &__pyx_t_10, &__pyx_t_11);
        if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_outbuf, (PyObject*)__pyx_v_outbuf, &__Pyx_TypeInfo_nn___pyx_t_5numpy_uint8_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 2, 0, __pyx_stack) == -1)) {
          Py_XDECREF(__pyx_t_9); Py_XDECREF(__pyx_t_10); Py_XDECREF(__pyx_t_11);
          __Pyx_RaiseBufferFallbackError();
        } else {
          PyErr_Restore(__pyx_t_9, __pyx_t_10, __pyx_t_11);
        }
      }
      __pyx_bstride_0_outbuf = __pyx_bstruct_outbuf.strides[0]; __pyx_bstride_1_outbuf = __pyx_bstruct_outbuf.strides[1];
      __pyx_bshape_0_outbuf = __pyx_bstruct_outbuf.shape[0]; __pyx_bshape_1_outbuf = __pyx_bstruct_outbuf.shape[1];
      if (unlikely(__pyx_t_8 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2280; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    }
    __pyx_t_7 = 0;
    __pyx_v_outbuf = ((PyArrayObject *)__pyx_t_3);
    __pyx_t_3 = 0;
    goto __pyx_L6;
  }
  /*else*/ {

    /* "pandas/src/generated.pyx":2282
 *         outbuf = np.empty((n, k), dtype=values.dtype)
 *     else:
 *         outbuf = out             # <<<<<<<<<<<<<<
 * 
 *     if True and _checknan(fill_value):
 */
    if (!(likely(((__pyx_v_out) == Py_None) || likely(__Pyx_TypeTest(__pyx_v_out, __pyx_ptype_5numpy_ndarray))))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2282; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __pyx_t_7 = ((PyArrayObject *)__pyx_v_out);
    {
      __Pyx_BufFmt_StackElem __pyx_stack[1];
      __Pyx_SafeReleaseBuffer(&__pyx_bstruct_outbuf);
      __pyx_t_8 = __Pyx_GetBufferAndValidate(&__pyx_bstruct_outbuf, (PyObject*)__pyx_t_7, &__Pyx_TypeInfo_nn___pyx_t_5numpy_uint8_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 2, 0, __pyx_stack);
      if (unlikely(__pyx_t_8 < 0)) {
        PyErr_Fetch(&__pyx_t_11, &__pyx_t_10, &__pyx_t_9);
        if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_outbuf, (PyObject*)__pyx_v_outbuf, &__Pyx_TypeInfo_nn___pyx_t_5numpy_uint8_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 2, 0, __pyx_stack) == -1)) {
          Py_XDECREF(__pyx_t_11); Py_XDECREF(__pyx_t_10); Py_XDECREF(__pyx_t_9);
          __Pyx_RaiseBufferFallbackError();
        } else {
          PyErr_Restore(__pyx_t_11, __pyx_t_10, __pyx_t_9);
        }
      }
      __pyx_bstride_0_outbuf = __pyx_bstruct_outbuf.strides[0]; __pyx_bstride_1_outbuf = __pyx_bstruct_outbuf.strides[1];
      __pyx_bshape_0_outbuf = __pyx_bstruct_outbuf.shape[0]; __pyx_bshape_1_outbuf = __pyx_bstruct_outbuf.shape[1];
      if (unlikely(__pyx_t_8 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2282; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    }
    __pyx_t_7 = 0;
    __Pyx_INCREF(__pyx_v_out);
    __pyx_v_outbuf = ((PyArrayObject *)__pyx_v_out);
  }
  __pyx_L6:;

  /* "pandas/src/generated.pyx":2284
 *         outbuf = out
 * 
 *     if True and _checknan(fill_value):             # <<<<<<<<<<<<<<
 *         for j in range(k):
 *             idx = indexer[j]
 */
  if (1) {
    __pyx_t_2 = __pyx_f_4util__checknan(__pyx_v_fill_value);
    __pyx_t_12 = __pyx_t_2;
  } else {
    __pyx_t_12 = 1;
  }
  if (__pyx_t_12) {

    /* "pandas/src/generated.pyx":2285
 * 
 *     if True and _checknan(fill_value):
 *         for j in range(k):             # <<<<<<<<<<<<<<
 *             idx = indexer[j]
 * 
 */
    __pyx_t_1 = __pyx_v_k;
    for (__pyx_t_13 = 0; __pyx_t_13 < __pyx_t_1; __pyx_t_13+=1) {
      __pyx_v_j = __pyx_t_13;

      /* "pandas/src/generated.pyx":2286
 *     if True and _checknan(fill_value):
 *         for j in range(k):
 *             idx = indexer[j]             # <<<<<<<<<<<<<<
 * 
 *             if idx == -1:
 */
      __pyx_t_14 = __pyx_v_j;
      __pyx_v_idx = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_bstruct_indexer.buf, __pyx_t_14, __pyx_bstride_0_indexer));

      /* "pandas/src/generated.pyx":2288
 *             idx = indexer[j]
 * 
 *             if idx == -1:             # <<<<<<<<<<<<<<
 *                 for i in range(n):
 *                     raise ValueError('No NA values allowed')
 */
      __pyx_t_12 = (__pyx_v_idx == -1);
      if (__pyx_t_12) {

        /* "pandas/src/generated.pyx":2289
 * 
 *             if idx == -1:
 *                 for i in range(n):             # <<<<<<<<<<<<<<
 *                     raise ValueError('No NA values allowed')
 *             else:
 */
        __pyx_t_15 = __pyx_v_n;
        for (__pyx_t_16 = 0; __pyx_t_16 < __pyx_t_15; __pyx_t_16+=1) {
          __pyx_v_i = __pyx_t_16;

          /* "pandas/src/generated.pyx":2290
 *             if idx == -1:
 *                 for i in range(n):
 *                     raise ValueError('No NA values allowed')             # <<<<<<<<<<<<<<
 *             else:
 *                 for i in range(n):
 */
          __pyx_t_3 = PyObject_Call(__pyx_builtin_ValueError, ((PyObject *)__pyx_k_tuple_74), NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2290; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
          __Pyx_GOTREF(__pyx_t_3);
          __Pyx_Raise(__pyx_t_3, 0, 0, 0);
          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
          {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2290; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        }
        goto __pyx_L10;
      }
      /*else*/ {

        /* "pandas/src/generated.pyx":2292
 *                     raise ValueError('No NA values allowed')
 *             else:
 *                 for i in range(n):             # <<<<<<<<<<<<<<
 *                     outbuf[i, j] = values[i, idx]
 *     else:
 */
        __pyx_t_15 = __pyx_v_n;
        for (__pyx_t_16 = 0; __pyx_t_16 < __pyx_t_15; __pyx_t_16+=1) {
          __pyx_v_i = __pyx_t_16;

          /* "pandas/src/generated.pyx":2293
 *             else:
 *                 for i in range(n):
 *                     outbuf[i, j] = values[i, idx]             # <<<<<<<<<<<<<<
 *     else:
 *         fv = fill_value
 */
          __pyx_t_17 = __pyx_v_i;
          __pyx_t_18 = __pyx_v_idx;
          __pyx_t_19 = __pyx_v_i;
          __pyx_t_20 = __pyx_v_j;
          *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_uint8_t *, __pyx_bstruct_outbuf.buf, __pyx_t_19, __pyx_bstride_0_outbuf, __pyx_t_20, __pyx_bstride_1_outbuf) = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_uint8_t *, __pyx_bstruct_values.buf, __pyx_t_17, __pyx_bstride_0_values, __pyx_t_18, __pyx_bstride_1_values));
        }
      }
      __pyx_L10:;
    }
    goto __pyx_L7;
  }
  /*else*/ {

    /* "pandas/src/generated.pyx":2295
 *                     outbuf[i, j] = values[i, idx]
 *     else:
 *         fv = fill_value             # <<<<<<<<<<<<<<
 *         for j in range(k):
 *             idx = indexer[j]
 */
    __pyx_t_21 = __Pyx_PyInt_from_py_npy_uint8(__pyx_v_fill_value); if (unlikely((__pyx_t_21 == (npy_uint8)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2295; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __pyx_v_fv = __pyx_t_21;

    /* "pandas/src/generated.pyx":2296
 *     else:
 *         fv = fill_value
 *         for j in range(k):             # <<<<<<<<<<<<<<
 *             idx = indexer[j]
 * 
 */
    __pyx_t_1 = __pyx_v_k;
    for (__pyx_t_13 = 0; __pyx_t_13 < __pyx_t_1; __pyx_t_13+=1) {
      __pyx_v_j = __pyx_t_13;

      /* "pandas/src/generated.pyx":2297
 *         fv = fill_value
 *         for j in range(k):
 *             idx = indexer[j]             # <<<<<<<<<<<<<<
 * 
 *             if idx == -1:
 */
      __pyx_t_15 = __pyx_v_j;
      __pyx_v_idx = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_bstruct_indexer.buf, __pyx_t_15, __pyx_bstride_0_indexer));

      /* "pandas/src/generated.pyx":2299
 *             idx = indexer[j]
 * 
 *             if idx == -1:             # <<<<<<<<<<<<<<
 *                 for i in range(n):
 *                     outbuf[i, j] = fv
 */
      __pyx_t_12 = (__pyx_v_idx == -1);
      if (__pyx_t_12) {

        /* "pandas/src/generated.pyx":2300
 * 
 *             if idx == -1:
 *                 for i in range(n):             # <<<<<<<<<<<<<<
 *                     outbuf[i, j] = fv
 *             else:
 */
        __pyx_t_16 = __pyx_v_n;
        for (__pyx_t_22 = 0; __pyx_t_22 < __pyx_t_16; __pyx_t_22+=1) {
          __pyx_v_i = __pyx_t_22;

          /* "pandas/src/generated.pyx":2301
 *             if idx == -1:
 *                 for i in range(n):
 *                     outbuf[i, j] = fv             # <<<<<<<<<<<<<<
 *             else:
 *                 for i in range(n):
 */
          __pyx_t_23 = __pyx_v_i;
          __pyx_t_24 = __pyx_v_j;
          *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_uint8_t *, __pyx_bstruct_outbuf.buf, __pyx_t_23, __pyx_bstride_0_outbuf, __pyx_t_24, __pyx_bstride_1_outbuf) = __pyx_v_fv;
        }
        goto __pyx_L17;
      }
      /*else*/ {

        /* "pandas/src/generated.pyx":2303
 *                     outbuf[i, j] = fv
 *             else:
 *                 for i in range(n):             # <<<<<<<<<<<<<<
 *                     outbuf[i, j] = values[i, idx]
 * 
 */
        __pyx_t_16 = __pyx_v_n;
        for (__pyx_t_22 = 0; __pyx_t_22 < __pyx_t_16; __pyx_t_22+=1) {
          __pyx_v_i = __pyx_t_22;

          /* "pandas/src/generated.pyx":2304
 *             else:
 *                 for i in range(n):
 *                     outbuf[i, j] = values[i, idx]             # <<<<<<<<<<<<<<
 * 
 * 
 */
          __pyx_t_25 = __pyx_v_i;
          __pyx_t_26 = __pyx_v_idx;
          __pyx_t_27 = __pyx_v_i;
          __pyx_t_28 = __pyx_v_j;
          *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_uint8_t *, __pyx_bstruct_outbuf.buf, __pyx_t_27, __pyx_bstride_0_outbuf, __pyx_t_28, __pyx_bstride_1_outbuf) = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_uint8_t *, __pyx_bstruct_values.buf, __pyx_t_25, __pyx_bstride_0_values, __pyx_t_26, __pyx_bstride_1_values));
        }
      }
      __pyx_L17:;
    }
  }
  __pyx_L7:;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  { PyObject *__pyx_type, *__pyx_value, *__pyx_tb;
    __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);
    __Pyx_SafeReleaseBuffer(&__pyx_bstruct_outbuf);
    __Pyx_SafeReleaseBuffer(&__pyx_bstruct_indexer);
    __Pyx_SafeReleaseBuffer(&__pyx_bstruct_values);
  __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);}
  __Pyx_AddTraceback("pandas._algos.take_2d_axis1_bool", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  goto __pyx_L2;
  __pyx_L0:;
  __Pyx_SafeReleaseBuffer(&__pyx_bstruct_outbuf);
  __Pyx_SafeReleaseBuffer(&__pyx_bstruct_indexer);
  __Pyx_SafeReleaseBuffer(&__pyx_bstruct_values);
  __pyx_L2:;
  __Pyx_XDECREF((PyObject *)__pyx_v_outbuf);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "pandas/src/generated.pyx":2309
 * @cython.wraparound(False)
 * @cython.boundscheck(False)
 * def take_2d_multi_float64(ndarray[float64_t, ndim=2] values,             # <<<<<<<<<<<<<<
 *                            ndarray[int64_t] idx0,
 *                            ndarray[int64_t] idx1,
 */

static PyObject *__pyx_pf_6pandas_6_algos_70take_2d_multi_float64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_6pandas_6_algos_70take_2d_multi_float64 = {__Pyx_NAMESTR("take_2d_multi_float64"), (PyCFunction)__pyx_pf_6pandas_6_algos_70take_2d_multi_float64, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(0)};
static PyObject *__pyx_pf_6pandas_6_algos_70take_2d_multi_float64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyArrayObject *__pyx_v_values = 0;
  PyArrayObject *__pyx_v_idx0 = 0;
  PyArrayObject *__pyx_v_idx1 = 0;
  PyObject *__pyx_v_out = 0;
  PyObject *__pyx_v_fill_value = 0;
  Py_ssize_t __pyx_v_i;
  Py_ssize_t __pyx_v_j;
  Py_ssize_t __pyx_v_k;
  Py_ssize_t __pyx_v_n;
  Py_ssize_t __pyx_v_idx;
  PyArrayObject *__pyx_v_outbuf = 0;
  __pyx_t_5numpy_float64_t __pyx_v_fv;
  Py_buffer __pyx_bstruct_outbuf;
  Py_ssize_t __pyx_bstride_0_outbuf = 0;
  Py_ssize_t __pyx_bstride_1_outbuf = 0;
  Py_ssize_t __pyx_bshape_0_outbuf = 0;
  Py_ssize_t __pyx_bshape_1_outbuf = 0;
  Py_buffer __pyx_bstruct_values;
  Py_ssize_t __pyx_bstride_0_values = 0;
  Py_ssize_t __pyx_bstride_1_values = 0;
  Py_ssize_t __pyx_bshape_0_values = 0;
  Py_ssize_t __pyx_bshape_1_values = 0;
  Py_buffer __pyx_bstruct_idx1;
  Py_ssize_t __pyx_bstride_0_idx1 = 0;
  Py_ssize_t __pyx_bshape_0_idx1 = 0;
  Py_buffer __pyx_bstruct_idx0;
  Py_ssize_t __pyx_bstride_0_idx0 = 0;
  Py_ssize_t __pyx_bshape_0_idx0 = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  Py_ssize_t __pyx_t_1;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  PyArrayObject *__pyx_t_7 = NULL;
  int __pyx_t_8;
  PyObject *__pyx_t_9 = NULL;
  PyObject *__pyx_t_10 = NULL;
  PyObject *__pyx_t_11 = NULL;
  int __pyx_t_12;
  Py_ssize_t __pyx_t_13;
  Py_ssize_t __pyx_t_14;
  Py_ssize_t __pyx_t_15;
  Py_ssize_t __pyx_t_16;
  Py_ssize_t __pyx_t_17;
  Py_ssize_t __pyx_t_18;
  Py_ssize_t __pyx_t_19;
  __pyx_t_5numpy_int64_t __pyx_t_20;
  Py_ssize_t __pyx_t_21;
  Py_ssize_t __pyx_t_22;
  __pyx_t_5numpy_float64_t __pyx_t_23;
  Py_ssize_t __pyx_t_24;
  Py_ssize_t __pyx_t_25;
  Py_ssize_t __pyx_t_26;
  Py_ssize_t __pyx_t_27;
  Py_ssize_t __pyx_t_28;
  Py_ssize_t __pyx_t_29;
  Py_ssize_t __pyx_t_30;
  Py_ssize_t __pyx_t_31;
  __pyx_t_5numpy_int64_t __pyx_t_32;
  Py_ssize_t __pyx_t_33;
  Py_ssize_t __pyx_t_34;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__values,&__pyx_n_s__idx0,&__pyx_n_s__idx1,&__pyx_n_s__out,&__pyx_n_s__fill_value,0};
  __Pyx_RefNannySetupContext("take_2d_multi_float64");
  __pyx_self = __pyx_self;
  {
    PyObject* values[5] = {0,0,0,0,0};

    /* "pandas/src/generated.pyx":2312
 *                            ndarray[int64_t] idx0,
 *                            ndarray[int64_t] idx1,
 *                            out=None, fill_value=np.nan):             # <<<<<<<<<<<<<<
 *     cdef:
 *         Py_ssize_t i, j, k, n, idx
 */
    values[3] = ((PyObject *)Py_None);
    values[4] = __pyx_k_75;
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  0:
        values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__values);
        if (likely(values[0])) kw_args--;
        else goto __pyx_L5_argtuple_error;
        case  1:
        values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__idx0);
        if (likely(values[1])) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("take_2d_multi_float64", 0, 3, 5, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2309; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
        }
        case  2:
        values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__idx1);
        if (likely(values[2])) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("take_2d_multi_float64", 0, 3, 5, 2); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2309; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
        }
        case  3:
        if (kw_args > 0) {
          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__out);
          if (value) { values[3] = value; kw_args--; }
        }
        case  4:
        if (kw_args > 0) {
          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__fill_value);
          if (value) { values[4] = value; kw_args--; }
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "take_2d_multi_float64") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2309; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
    } else {
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_values = ((PyArrayObject *)values[0]);
    __pyx_v_idx0 = ((PyArrayObject *)values[1]);
    __pyx_v_idx1 = ((PyArrayObject *)values[2]);
    __pyx_v_out = values[3];
    __pyx_v_fill_value = values[4];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("take_2d_multi_float64", 0, 3, 5, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2309; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("pandas._algos.take_2d_multi_float64", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_bstruct_outbuf.buf = NULL;
  __pyx_bstruct_values.buf = NULL;
  __pyx_bstruct_idx0.buf = NULL;
  __pyx_bstruct_idx1.buf = NULL;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_values), __pyx_ptype_5numpy_ndarray, 1, "values", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2309; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_idx0), __pyx_ptype_5numpy_ndarray, 1, "idx0", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2310; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_idx1), __pyx_ptype_5numpy_ndarray, 1, "idx1", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2311; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_values, (PyObject*)__pyx_v_values, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES, 2, 0, __pyx_stack) == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2309; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  }
  __pyx_bstride_0_values = __pyx_bstruct_values.strides[0]; __pyx_bstride_1_values = __pyx_bstruct_values.strides[1];
  __pyx_bshape_0_values = __pyx_bstruct_values.shape[0]; __pyx_bshape_1_values = __pyx_bstruct_values.shape[1];
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_idx0, (PyObject*)__pyx_v_idx0, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2309; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  }
  __pyx_bstride_0_idx0 = __pyx_bstruct_idx0.strides[0];
  __pyx_bshape_0_idx0 = __pyx_bstruct_idx0.shape[0];
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_idx1, (PyObject*)__pyx_v_idx1, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2309; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  }
  __pyx_bstride_0_idx1 = __pyx_bstruct_idx1.strides[0];
  __pyx_bshape_0_idx1 = __pyx_bstruct_idx1.shape[0];

  /* "pandas/src/generated.pyx":2318
 *         float64_t fv
 * 
 *     n = len(idx0)             # <<<<<<<<<<<<<<
 *     k = len(idx1)
 * 
 */
  __pyx_t_1 = PyObject_Length(((PyObject *)__pyx_v_idx0)); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2318; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_v_n = __pyx_t_1;

  /* "pandas/src/generated.pyx":2319
 * 
 *     n = len(idx0)
 *     k = len(idx1)             # <<<<<<<<<<<<<<
 * 
 *     if out is None:
 */
  __pyx_t_1 = PyObject_Length(((PyObject *)__pyx_v_idx1)); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2319; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_v_k = __pyx_t_1;

  /* "pandas/src/generated.pyx":2321
 *     k = len(idx1)
 * 
 *     if out is None:             # <<<<<<<<<<<<<<
 *         outbuf = np.empty((n, k), dtype=values.dtype)
 *     else:
 */
  __pyx_t_2 = (__pyx_v_out == Py_None);
  if (__pyx_t_2) {

    /* "pandas/src/generated.pyx":2322
 * 
 *     if out is None:
 *         outbuf = np.empty((n, k), dtype=values.dtype)             # <<<<<<<<<<<<<<
 *     else:
 *         outbuf = out
 */
    __pyx_t_3 = __Pyx_GetName(__pyx_m, __pyx_n_s__np); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2322; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_4 = PyObject_GetAttr(__pyx_t_3, __pyx_n_s__empty); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2322; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __pyx_t_3 = PyInt_FromSsize_t(__pyx_v_n); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2322; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_5 = PyInt_FromSsize_t(__pyx_v_k); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2322; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_6 = PyTuple_New(2); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2322; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(((PyObject *)__pyx_t_6));
    PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_3);
    __Pyx_GIVEREF(__pyx_t_3);
    PyTuple_SET_ITEM(__pyx_t_6, 1, __pyx_t_5);
    __Pyx_GIVEREF(__pyx_t_5);
    __pyx_t_3 = 0;
    __pyx_t_5 = 0;
    __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2322; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(((PyObject *)__pyx_t_5));
    PyTuple_SET_ITEM(__pyx_t_5, 0, ((PyObject *)__pyx_t_6));
    __Pyx_GIVEREF(((PyObject *)__pyx_t_6));
    __pyx_t_6 = 0;
    __pyx_t_6 = PyDict_New(); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2322; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(((PyObject *)__pyx_t_6));
    __pyx_t_3 = PyObject_GetAttr(((PyObject *)__pyx_v_values), __pyx_n_s__dtype); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2322; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    if (PyDict_SetItem(__pyx_t_6, ((PyObject *)__pyx_n_s__dtype), __pyx_t_3) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2322; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __pyx_t_3 = PyEval_CallObjectWithKeywords(__pyx_t_4, ((PyObject *)__pyx_t_5), ((PyObject *)__pyx_t_6)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2322; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_DECREF(((PyObject *)__pyx_t_5)); __pyx_t_5 = 0;
    __Pyx_DECREF(((PyObject *)__pyx_t_6)); __pyx_t_6 = 0;
    if (!(likely(((__pyx_t_3) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_3, __pyx_ptype_5numpy_ndarray))))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2322; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __pyx_t_7 = ((PyArrayObject *)__pyx_t_3);
    {
      __Pyx_BufFmt_StackElem __pyx_stack[1];
      __Pyx_SafeReleaseBuffer(&__pyx_bstruct_outbuf);
      __pyx_t_8 = __Pyx_GetBufferAndValidate(&__pyx_bstruct_outbuf, (PyObject*)__pyx_t_7, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 2, 0, __pyx_stack);
      if (unlikely(__pyx_t_8 < 0)) {
        PyErr_Fetch(&__pyx_t_9, &__pyx_t_10, &__pyx_t_11);
        if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_outbuf, (PyObject*)__pyx_v_outbuf, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 2, 0, __pyx_stack) == -1)) {
          Py_XDECREF(__pyx_t_9); Py_XDECREF(__pyx_t_10); Py_XDECREF(__pyx_t_11);
          __Pyx_RaiseBufferFallbackError();
        } else {
          PyErr_Restore(__pyx_t_9, __pyx_t_10, __pyx_t_11);
        }
      }
      __pyx_bstride_0_outbuf = __pyx_bstruct_outbuf.strides[0]; __pyx_bstride_1_outbuf = __pyx_bstruct_outbuf.strides[1];
      __pyx_bshape_0_outbuf = __pyx_bstruct_outbuf.shape[0]; __pyx_bshape_1_outbuf = __pyx_bstruct_outbuf.shape[1];
      if (unlikely(__pyx_t_8 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2322; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    }
    __pyx_t_7 = 0;
    __pyx_v_outbuf = ((PyArrayObject *)__pyx_t_3);
    __pyx_t_3 = 0;
    goto __pyx_L6;
  }
  /*else*/ {

    /* "pandas/src/generated.pyx":2324
 *         outbuf = np.empty((n, k), dtype=values.dtype)
 *     else:
 *         outbuf = out             # <<<<<<<<<<<<<<
 * 
 * 
 */
    if (!(likely(((__pyx_v_out) == Py_None) || likely(__Pyx_TypeTest(__pyx_v_out, __pyx_ptype_5numpy_ndarray))))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2324; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __pyx_t_7 = ((PyArrayObject *)__pyx_v_out);
    {
      __Pyx_BufFmt_StackElem __pyx_stack[1];
      __Pyx_SafeReleaseBuffer(&__pyx_bstruct_outbuf);
      __pyx_t_8 = __Pyx_GetBufferAndValidate(&__pyx_bstruct_outbuf, (PyObject*)__pyx_t_7, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 2, 0, __pyx_stack);
      if (unlikely(__pyx_t_8 < 0)) {
        PyErr_Fetch(&__pyx_t_11, &__pyx_t_10, &__pyx_t_9);
        if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_outbuf, (PyObject*)__pyx_v_outbuf, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 2, 0, __pyx_stack) == -1)) {
          Py_XDECREF(__pyx_t_11); Py_XDECREF(__pyx_t_10); Py_XDECREF(__pyx_t_9);
          __Pyx_RaiseBufferFallbackError();
        } else {
          PyErr_Restore(__pyx_t_11, __pyx_t_10, __pyx_t_9);
        }
      }
      __pyx_bstride_0_outbuf = __pyx_bstruct_outbuf.strides[0]; __pyx_bstride_1_outbuf = __pyx_bstruct_outbuf.strides[1];
      __pyx_bshape_0_outbuf = __pyx_bstruct_outbuf.shape[0]; __pyx_bshape_1_outbuf = __pyx_bstruct_outbuf.shape[1];
      if (unlikely(__pyx_t_8 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2324; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    }
    __pyx_t_7 = 0;
    __Pyx_INCREF(__pyx_v_out);
    __pyx_v_outbuf = ((PyArrayObject *)__pyx_v_out);
  }
  __pyx_L6:;

  /* "pandas/src/generated.pyx":2327
 * 
 * 
 *     if False and _checknan(fill_value):             # <<<<<<<<<<<<<<
 *         for i in range(n):
 *             idx = idx0[i]
 */
  if (0) {
    __pyx_t_2 = __pyx_f_4util__checknan(__pyx_v_fill_value);
    __pyx_t_12 = __pyx_t_2;
  } else {
    __pyx_t_12 = 0;
  }
  if (__pyx_t_12) {

    /* "pandas/src/generated.pyx":2328
 * 
 *     if False and _checknan(fill_value):
 *         for i in range(n):             # <<<<<<<<<<<<<<
 *             idx = idx0[i]
 *             if idx == -1:
 */
    __pyx_t_1 = __pyx_v_n;
    for (__pyx_t_13 = 0; __pyx_t_13 < __pyx_t_1; __pyx_t_13+=1) {
      __pyx_v_i = __pyx_t_13;

      /* "pandas/src/generated.pyx":2329
 *     if False and _checknan(fill_value):
 *         for i in range(n):
 *             idx = idx0[i]             # <<<<<<<<<<<<<<
 *             if idx == -1:
 *                 for j in range(k):
 */
      __pyx_t_14 = __pyx_v_i;
      __pyx_v_idx = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_bstruct_idx0.buf, __pyx_t_14, __pyx_bstride_0_idx0));

      /* "pandas/src/generated.pyx":2330
 *         for i in range(n):
 *             idx = idx0[i]
 *             if idx == -1:             # <<<<<<<<<<<<<<
 *                 for j in range(k):
 *                     raise ValueError('No NA values allowed')
 */
      __pyx_t_12 = (__pyx_v_idx == -1);
      if (__pyx_t_12) {

        /* "pandas/src/generated.pyx":2331
 *             idx = idx0[i]
 *             if idx == -1:
 *                 for j in range(k):             # <<<<<<<<<<<<<<
 *                     raise ValueError('No NA values allowed')
 *             else:
 */
        __pyx_t_15 = __pyx_v_k;
        for (__pyx_t_16 = 0; __pyx_t_16 < __pyx_t_15; __pyx_t_16+=1) {
          __pyx_v_j = __pyx_t_16;

          /* "pandas/src/generated.pyx":2332
 *             if idx == -1:
 *                 for j in range(k):
 *                     raise ValueError('No NA values allowed')             # <<<<<<<<<<<<<<
 *             else:
 *                 for j in range(k):
 */
          __pyx_t_3 = PyObject_Call(__pyx_builtin_ValueError, ((PyObject *)__pyx_k_tuple_76), NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2332; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
          __Pyx_GOTREF(__pyx_t_3);
          __Pyx_Raise(__pyx_t_3, 0, 0, 0);
          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
          {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2332; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        }
        goto __pyx_L10;
      }
      /*else*/ {

        /* "pandas/src/generated.pyx":2334
 *                     raise ValueError('No NA values allowed')
 *             else:
 *                 for j in range(k):             # <<<<<<<<<<<<<<
 *                     if idx1[j] == -1:
 *                         raise ValueError('No NA values allowed')
 */
        __pyx_t_15 = __pyx_v_k;
        for (__pyx_t_16 = 0; __pyx_t_16 < __pyx_t_15; __pyx_t_16+=1) {
          __pyx_v_j = __pyx_t_16;

          /* "pandas/src/generated.pyx":2335
 *             else:
 *                 for j in range(k):
 *                     if idx1[j] == -1:             # <<<<<<<<<<<<<<
 *                         raise ValueError('No NA values allowed')
 *                     else:
 */
          __pyx_t_17 = __pyx_v_j;
          __pyx_t_12 = ((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_bstruct_idx1.buf, __pyx_t_17, __pyx_bstride_0_idx1)) == -1);
          if (__pyx_t_12) {

            /* "pandas/src/generated.pyx":2336
 *                 for j in range(k):
 *                     if idx1[j] == -1:
 *                         raise ValueError('No NA values allowed')             # <<<<<<<<<<<<<<
 *                     else:
 *                         outbuf[i, j] = values[idx, idx1[j]]
 */
            __pyx_t_3 = PyObject_Call(__pyx_builtin_ValueError, ((PyObject *)__pyx_k_tuple_77), NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2336; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
            __Pyx_GOTREF(__pyx_t_3);
            __Pyx_Raise(__pyx_t_3, 0, 0, 0);
            __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
            {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2336; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
            goto __pyx_L15;
          }
          /*else*/ {

            /* "pandas/src/generated.pyx":2338
 *                         raise ValueError('No NA values allowed')
 *                     else:
 *                         outbuf[i, j] = values[idx, idx1[j]]             # <<<<<<<<<<<<<<
 *     else:
 *         fv = fill_value
 */
            __pyx_t_18 = __pyx_v_j;
            __pyx_t_19 = __pyx_v_idx;
            __pyx_t_20 = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_bstruct_idx1.buf, __pyx_t_18, __pyx_bstride_0_idx1));
            __pyx_t_21 = __pyx_v_i;
            __pyx_t_22 = __pyx_v_j;
            *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_outbuf.buf, __pyx_t_21, __pyx_bstride_0_outbuf, __pyx_t_22, __pyx_bstride_1_outbuf) = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_values.buf, __pyx_t_19, __pyx_bstride_0_values, __pyx_t_20, __pyx_bstride_1_values));
          }
          __pyx_L15:;
        }
      }
      __pyx_L10:;
    }
    goto __pyx_L7;
  }
  /*else*/ {

    /* "pandas/src/generated.pyx":2340
 *                         outbuf[i, j] = values[idx, idx1[j]]
 *     else:
 *         fv = fill_value             # <<<<<<<<<<<<<<
 *         for i in range(n):
 *             idx = idx0[i]
 */
    __pyx_t_23 = __pyx_PyFloat_AsDouble(__pyx_v_fill_value); if (unlikely((__pyx_t_23 == (npy_float64)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2340; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __pyx_v_fv = __pyx_t_23;

    /* "pandas/src/generated.pyx":2341
 *     else:
 *         fv = fill_value
 *         for i in range(n):             # <<<<<<<<<<<<<<
 *             idx = idx0[i]
 *             if idx == -1:
 */
    __pyx_t_1 = __pyx_v_n;
    for (__pyx_t_13 = 0; __pyx_t_13 < __pyx_t_1; __pyx_t_13+=1) {
      __pyx_v_i = __pyx_t_13;

      /* "pandas/src/generated.pyx":2342
 *         fv = fill_value
 *         for i in range(n):
 *             idx = idx0[i]             # <<<<<<<<<<<<<<
 *             if idx == -1:
 *                 for j in range(k):
 */
      __pyx_t_15 = __pyx_v_i;
      __pyx_v_idx = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_bstruct_idx0.buf, __pyx_t_15, __pyx_bstride_0_idx0));

      /* "pandas/src/generated.pyx":2343
 *         for i in range(n):
 *             idx = idx0[i]
 *             if idx == -1:             # <<<<<<<<<<<<<<
 *                 for j in range(k):
 *                     outbuf[i, j] = fv
 */
      __pyx_t_12 = (__pyx_v_idx == -1);
      if (__pyx_t_12) {

        /* "pandas/src/generated.pyx":2344
 *             idx = idx0[i]
 *             if idx == -1:
 *                 for j in range(k):             # <<<<<<<<<<<<<<
 *                     outbuf[i, j] = fv
 *             else:
 */
        __pyx_t_16 = __pyx_v_k;
        for (__pyx_t_24 = 0; __pyx_t_24 < __pyx_t_16; __pyx_t_24+=1) {
          __pyx_v_j = __pyx_t_24;

          /* "pandas/src/generated.pyx":2345
 *             if idx == -1:
 *                 for j in range(k):
 *                     outbuf[i, j] = fv             # <<<<<<<<<<<<<<
 *             else:
 *                 for j in range(k):
 */
          __pyx_t_25 = __pyx_v_i;
          __pyx_t_26 = __pyx_v_j;
          *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_outbuf.buf, __pyx_t_25, __pyx_bstride_0_outbuf, __pyx_t_26, __pyx_bstride_1_outbuf) = __pyx_v_fv;
        }
        goto __pyx_L18;
      }
      /*else*/ {

        /* "pandas/src/generated.pyx":2347
 *                     outbuf[i, j] = fv
 *             else:
 *                 for j in range(k):             # <<<<<<<<<<<<<<
 *                     if idx1[j] == -1:
 *                         outbuf[i, j] = fv
 */
        __pyx_t_16 = __pyx_v_k;
        for (__pyx_t_24 = 0; __pyx_t_24 < __pyx_t_16; __pyx_t_24+=1) {
          __pyx_v_j = __pyx_t_24;

          /* "pandas/src/generated.pyx":2348
 *             else:
 *                 for j in range(k):
 *                     if idx1[j] == -1:             # <<<<<<<<<<<<<<
 *                         outbuf[i, j] = fv
 *                     else:
 */
          __pyx_t_27 = __pyx_v_j;
          __pyx_t_12 = ((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_bstruct_idx1.buf, __pyx_t_27, __pyx_bstride_0_idx1)) == -1);
          if (__pyx_t_12) {

            /* "pandas/src/generated.pyx":2349
 *                 for j in range(k):
 *                     if idx1[j] == -1:
 *                         outbuf[i, j] = fv             # <<<<<<<<<<<<<<
 *                     else:
 *                         outbuf[i, j] = values[idx, idx1[j]]
 */
            __pyx_t_28 = __pyx_v_i;
            __pyx_t_29 = __pyx_v_j;
            *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_outbuf.buf, __pyx_t_28, __pyx_bstride_0_outbuf, __pyx_t_29, __pyx_bstride_1_outbuf) = __pyx_v_fv;
            goto __pyx_L23;
          }
          /*else*/ {

            /* "pandas/src/generated.pyx":2351
 *                         outbuf[i, j] = fv
 *                     else:
 *                         outbuf[i, j] = values[idx, idx1[j]]             # <<<<<<<<<<<<<<
 * 
 * @cython.wraparound(False)
 */
            __pyx_t_30 = __pyx_v_j;
            __pyx_t_31 = __pyx_v_idx;
            __pyx_t_32 = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_bstruct_idx1.buf, __pyx_t_30, __pyx_bstride_0_idx1));
            __pyx_t_33 = __pyx_v_i;
            __pyx_t_34 = __pyx_v_j;
            *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_outbuf.buf, __pyx_t_33, __pyx_bstride_0_outbuf, __pyx_t_34, __pyx_bstride_1_outbuf) = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_values.buf, __pyx_t_31, __pyx_bstride_0_values, __pyx_t_32, __pyx_bstride_1_values));
          }
          __pyx_L23:;
        }
      }
      __pyx_L18:;
    }
  }
  __pyx_L7:;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  { PyObject *__pyx_type, *__pyx_value, *__pyx_tb;
    __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);
    __Pyx_SafeReleaseBuffer(&__pyx_bstruct_outbuf);
    __Pyx_SafeReleaseBuffer(&__pyx_bstruct_values);
    __Pyx_SafeReleaseBuffer(&__pyx_bstruct_idx1);
    __Pyx_SafeReleaseBuffer(&__pyx_bstruct_idx0);
  __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);}
  __Pyx_AddTraceback("pandas._algos.take_2d_multi_float64", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  goto __pyx_L2;
  __pyx_L0:;
  __Pyx_SafeReleaseBuffer(&__pyx_bstruct_outbuf);
  __Pyx_SafeReleaseBuffer(&__pyx_bstruct_values);
  __Pyx_SafeReleaseBuffer(&__pyx_bstruct_idx1);
  __Pyx_SafeReleaseBuffer(&__pyx_bstruct_idx0);
  __pyx_L2:;
  __Pyx_XDECREF((PyObject *)__pyx_v_outbuf);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "pandas/src/generated.pyx":2355
 * @cython.wraparound(False)
 * @cython.boundscheck(False)
 * def take_2d_multi_object(ndarray[object, ndim=2] values,             # <<<<<<<<<<<<<<
 *                            ndarray[int64_t] idx0,
 *                            ndarray[int64_t] idx1,
 */

static PyObject *__pyx_pf_6pandas_6_algos_71take_2d_multi_object(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_6pandas_6_algos_71take_2d_multi_object = {__Pyx_NAMESTR("take_2d_multi_object"), (PyCFunction)__pyx_pf_6pandas_6_algos_71take_2d_multi_object, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(0)};
static PyObject *__pyx_pf_6pandas_6_algos_71take_2d_multi_object(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyArrayObject *__pyx_v_values = 0;
  PyArrayObject *__pyx_v_idx0 = 0;
  PyArrayObject *__pyx_v_idx1 = 0;
  PyObject *__pyx_v_out = 0;
  PyObject *__pyx_v_fill_value = 0;
  Py_ssize_t __pyx_v_i;
  Py_ssize_t __pyx_v_j;
  Py_ssize_t __pyx_v_k;
  Py_ssize_t __pyx_v_n;
  Py_ssize_t __pyx_v_idx;
  PyArrayObject *__pyx_v_outbuf = 0;
  PyObject *__pyx_v_fv = 0;
  Py_buffer __pyx_bstruct_outbuf;
  Py_ssize_t __pyx_bstride_0_outbuf = 0;
  Py_ssize_t __pyx_bstride_1_outbuf = 0;
  Py_ssize_t __pyx_bshape_0_outbuf = 0;
  Py_ssize_t __pyx_bshape_1_outbuf = 0;
  Py_buffer __pyx_bstruct_values;
  Py_ssize_t __pyx_bstride_0_values = 0;
  Py_ssize_t __pyx_bstride_1_values = 0;
  Py_ssize_t __pyx_bshape_0_values = 0;
  Py_ssize_t __pyx_bshape_1_values = 0;
  Py_buffer __pyx_bstruct_idx1;
  Py_ssize_t __pyx_bstride_0_idx1 = 0;
  Py_ssize_t __pyx_bshape_0_idx1 = 0;
  Py_buffer __pyx_bstruct_idx0;
  Py_ssize_t __pyx_bstride_0_idx0 = 0;
  Py_ssize_t __pyx_bshape_0_idx0 = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  Py_ssize_t __pyx_t_1;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  PyArrayObject *__pyx_t_7 = NULL;
  int __pyx_t_8;
  PyObject *__pyx_t_9 = NULL;
  PyObject *__pyx_t_10 = NULL;
  PyObject *__pyx_t_11 = NULL;
  int __pyx_t_12;
  Py_ssize_t __pyx_t_13;
  Py_ssize_t __pyx_t_14;
  Py_ssize_t __pyx_t_15;
  Py_ssize_t __pyx_t_16;
  Py_ssize_t __pyx_t_17;
  Py_ssize_t __pyx_t_18;
  Py_ssize_t __pyx_t_19;
  __pyx_t_5numpy_int64_t __pyx_t_20;
  Py_ssize_t __pyx_t_21;
  Py_ssize_t __pyx_t_22;
  PyObject **__pyx_t_23;
  Py_ssize_t __pyx_t_24;
  Py_ssize_t __pyx_t_25;
  Py_ssize_t __pyx_t_26;
  Py_ssize_t __pyx_t_27;
  Py_ssize_t __pyx_t_28;
  Py_ssize_t __pyx_t_29;
  Py_ssize_t __pyx_t_30;
  Py_ssize_t __pyx_t_31;
  __pyx_t_5numpy_int64_t __pyx_t_32;
  Py_ssize_t __pyx_t_33;
  Py_ssize_t __pyx_t_34;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__values,&__pyx_n_s__idx0,&__pyx_n_s__idx1,&__pyx_n_s__out,&__pyx_n_s__fill_value,0};
  __Pyx_RefNannySetupContext("take_2d_multi_object");
  __pyx_self = __pyx_self;
  {
    PyObject* values[5] = {0,0,0,0,0};

    /* "pandas/src/generated.pyx":2358
 *                            ndarray[int64_t] idx0,
 *                            ndarray[int64_t] idx1,
 *                            out=None, fill_value=np.nan):             # <<<<<<<<<<<<<<
 *     cdef:
 *         Py_ssize_t i, j, k, n, idx
 */
    values[3] = ((PyObject *)Py_None);
    values[4] = __pyx_k_78;
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  0:
        values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__values);
        if (likely(values[0])) kw_args--;
        else goto __pyx_L5_argtuple_error;
        case  1:
        values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__idx0);
        if (likely(values[1])) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("take_2d_multi_object", 0, 3, 5, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2355; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
        }
        case  2:
        values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__idx1);
        if (likely(values[2])) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("take_2d_multi_object", 0, 3, 5, 2); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2355; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
        }
        case  3:
        if (kw_args > 0) {
          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__out);
          if (value) { values[3] = value; kw_args--; }
        }
        case  4:
        if (kw_args > 0) {
          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__fill_value);
          if (value) { values[4] = value; kw_args--; }
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "take_2d_multi_object") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2355; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
    } else {
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_values = ((PyArrayObject *)values[0]);
    __pyx_v_idx0 = ((PyArrayObject *)values[1]);
    __pyx_v_idx1 = ((PyArrayObject *)values[2]);
    __pyx_v_out = values[3];
    __pyx_v_fill_value = values[4];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("take_2d_multi_object", 0, 3, 5, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2355; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("pandas._algos.take_2d_multi_object", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_bstruct_outbuf.buf = NULL;
  __pyx_bstruct_values.buf = NULL;
  __pyx_bstruct_idx0.buf = NULL;
  __pyx_bstruct_idx1.buf = NULL;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_values), __pyx_ptype_5numpy_ndarray, 1, "values", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2355; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_idx0), __pyx_ptype_5numpy_ndarray, 1, "idx0", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2356; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_idx1), __pyx_ptype_5numpy_ndarray, 1, "idx1", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2357; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_values, (PyObject*)__pyx_v_values, &__Pyx_TypeInfo_object, PyBUF_FORMAT| PyBUF_STRIDES, 2, 0, __pyx_stack) == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2355; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  }
  __pyx_bstride_0_values = __pyx_bstruct_values.strides[0]; __pyx_bstride_1_values = __pyx_bstruct_values.strides[1];
  __pyx_bshape_0_values = __pyx_bstruct_values.shape[0]; __pyx_bshape_1_values = __pyx_bstruct_values.shape[1];
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_idx0, (PyObject*)__pyx_v_idx0, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2355; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  }
  __pyx_bstride_0_idx0 = __pyx_bstruct_idx0.strides[0];
  __pyx_bshape_0_idx0 = __pyx_bstruct_idx0.shape[0];
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_idx1, (PyObject*)__pyx_v_idx1, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2355; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  }
  __pyx_bstride_0_idx1 = __pyx_bstruct_idx1.strides[0];
  __pyx_bshape_0_idx1 = __pyx_bstruct_idx1.shape[0];

  /* "pandas/src/generated.pyx":2364
 *         object fv
 * 
 *     n = len(idx0)             # <<<<<<<<<<<<<<
 *     k = len(idx1)
 * 
 */
  __pyx_t_1 = PyObject_Length(((PyObject *)__pyx_v_idx0)); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2364; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_v_n = __pyx_t_1;

  /* "pandas/src/generated.pyx":2365
 * 
 *     n = len(idx0)
 *     k = len(idx1)             # <<<<<<<<<<<<<<
 * 
 *     if out is None:
 */
  __pyx_t_1 = PyObject_Length(((PyObject *)__pyx_v_idx1)); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2365; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_v_k = __pyx_t_1;

  /* "pandas/src/generated.pyx":2367
 *     k = len(idx1)
 * 
 *     if out is None:             # <<<<<<<<<<<<<<
 *         outbuf = np.empty((n, k), dtype=values.dtype)
 *     else:
 */
  __pyx_t_2 = (__pyx_v_out == Py_None);
  if (__pyx_t_2) {

    /* "pandas/src/generated.pyx":2368
 * 
 *     if out is None:
 *         outbuf = np.empty((n, k), dtype=values.dtype)             # <<<<<<<<<<<<<<
 *     else:
 *         outbuf = out
 */
    __pyx_t_3 = __Pyx_GetName(__pyx_m, __pyx_n_s__np); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2368; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_4 = PyObject_GetAttr(__pyx_t_3, __pyx_n_s__empty); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2368; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __pyx_t_3 = PyInt_FromSsize_t(__pyx_v_n); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2368; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_5 = PyInt_FromSsize_t(__pyx_v_k); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2368; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_6 = PyTuple_New(2); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2368; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(((PyObject *)__pyx_t_6));
    PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_3);
    __Pyx_GIVEREF(__pyx_t_3);
    PyTuple_SET_ITEM(__pyx_t_6, 1, __pyx_t_5);
    __Pyx_GIVEREF(__pyx_t_5);
    __pyx_t_3 = 0;
    __pyx_t_5 = 0;
    __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2368; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(((PyObject *)__pyx_t_5));
    PyTuple_SET_ITEM(__pyx_t_5, 0, ((PyObject *)__pyx_t_6));
    __Pyx_GIVEREF(((PyObject *)__pyx_t_6));
    __pyx_t_6 = 0;
    __pyx_t_6 = PyDict_New(); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2368; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(((PyObject *)__pyx_t_6));
    __pyx_t_3 = PyObject_GetAttr(((PyObject *)__pyx_v_values), __pyx_n_s__dtype); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2368; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    if (PyDict_SetItem(__pyx_t_6, ((PyObject *)__pyx_n_s__dtype), __pyx_t_3) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2368; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __pyx_t_3 = PyEval_CallObjectWithKeywords(__pyx_t_4, ((PyObject *)__pyx_t_5), ((PyObject *)__pyx_t_6)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2368; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_DECREF(((PyObject *)__pyx_t_5)); __pyx_t_5 = 0;
    __Pyx_DECREF(((PyObject *)__pyx_t_6)); __pyx_t_6 = 0;
    if (!(likely(((__pyx_t_3) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_3, __pyx_ptype_5numpy_ndarray))))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2368; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __pyx_t_7 = ((PyArrayObject *)__pyx_t_3);
    {
      __Pyx_BufFmt_StackElem __pyx_stack[1];
      __Pyx_SafeReleaseBuffer(&__pyx_bstruct_outbuf);
      __pyx_t_8 = __Pyx_GetBufferAndValidate(&__pyx_bstruct_outbuf, (PyObject*)__pyx_t_7, &__Pyx_TypeInfo_object, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 2, 0, __pyx_stack);
      if (unlikely(__pyx_t_8 < 0)) {
        PyErr_Fetch(&__pyx_t_9, &__pyx_t_10, &__pyx_t_11);
        if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_outbuf, (PyObject*)__pyx_v_outbuf, &__Pyx_TypeInfo_object, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 2, 0, __pyx_stack) == -1)) {
          Py_XDECREF(__pyx_t_9); Py_XDECREF(__pyx_t_10); Py_XDECREF(__pyx_t_11);
          __Pyx_RaiseBufferFallbackError();
        } else {
          PyErr_Restore(__pyx_t_9, __pyx_t_10, __pyx_t_11);
        }
      }
      __pyx_bstride_0_outbuf = __pyx_bstruct_outbuf.strides[0]; __pyx_bstride_1_outbuf = __pyx_bstruct_outbuf.strides[1];
      __pyx_bshape_0_outbuf = __pyx_bstruct_outbuf.shape[0]; __pyx_bshape_1_outbuf = __pyx_bstruct_outbuf.shape[1];
      if (unlikely(__pyx_t_8 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2368; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    }
    __pyx_t_7 = 0;
    __pyx_v_outbuf = ((PyArrayObject *)__pyx_t_3);
    __pyx_t_3 = 0;
    goto __pyx_L6;
  }
  /*else*/ {

    /* "pandas/src/generated.pyx":2370
 *         outbuf = np.empty((n, k), dtype=values.dtype)
 *     else:
 *         outbuf = out             # <<<<<<<<<<<<<<
 * 
 * 
 */
    if (!(likely(((__pyx_v_out) == Py_None) || likely(__Pyx_TypeTest(__pyx_v_out, __pyx_ptype_5numpy_ndarray))))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2370; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __pyx_t_7 = ((PyArrayObject *)__pyx_v_out);
    {
      __Pyx_BufFmt_StackElem __pyx_stack[1];
      __Pyx_SafeReleaseBuffer(&__pyx_bstruct_outbuf);
      __pyx_t_8 = __Pyx_GetBufferAndValidate(&__pyx_bstruct_outbuf, (PyObject*)__pyx_t_7, &__Pyx_TypeInfo_object, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 2, 0, __pyx_stack);
      if (unlikely(__pyx_t_8 < 0)) {
        PyErr_Fetch(&__pyx_t_11, &__pyx_t_10, &__pyx_t_9);
        if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_outbuf, (PyObject*)__pyx_v_outbuf, &__Pyx_TypeInfo_object, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 2, 0, __pyx_stack) == -1)) {
          Py_XDECREF(__pyx_t_11); Py_XDECREF(__pyx_t_10); Py_XDECREF(__pyx_t_9);
          __Pyx_RaiseBufferFallbackError();
        } else {
          PyErr_Restore(__pyx_t_11, __pyx_t_10, __pyx_t_9);
        }
      }
      __pyx_bstride_0_outbuf = __pyx_bstruct_outbuf.strides[0]; __pyx_bstride_1_outbuf = __pyx_bstruct_outbuf.strides[1];
      __pyx_bshape_0_outbuf = __pyx_bstruct_outbuf.shape[0]; __pyx_bshape_1_outbuf = __pyx_bstruct_outbuf.shape[1];
      if (unlikely(__pyx_t_8 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2370; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    }
    __pyx_t_7 = 0;
    __Pyx_INCREF(__pyx_v_out);
    __pyx_v_outbuf = ((PyArrayObject *)__pyx_v_out);
  }
  __pyx_L6:;

  /* "pandas/src/generated.pyx":2373
 * 
 * 
 *     if False and _checknan(fill_value):             # <<<<<<<<<<<<<<
 *         for i in range(n):
 *             idx = idx0[i]
 */
  if (0) {
    __pyx_t_2 = __pyx_f_4util__checknan(__pyx_v_fill_value);
    __pyx_t_12 = __pyx_t_2;
  } else {
    __pyx_t_12 = 0;
  }
  if (__pyx_t_12) {

    /* "pandas/src/generated.pyx":2374
 * 
 *     if False and _checknan(fill_value):
 *         for i in range(n):             # <<<<<<<<<<<<<<
 *             idx = idx0[i]
 *             if idx == -1:
 */
    __pyx_t_1 = __pyx_v_n;
    for (__pyx_t_13 = 0; __pyx_t_13 < __pyx_t_1; __pyx_t_13+=1) {
      __pyx_v_i = __pyx_t_13;

      /* "pandas/src/generated.pyx":2375
 *     if False and _checknan(fill_value):
 *         for i in range(n):
 *             idx = idx0[i]             # <<<<<<<<<<<<<<
 *             if idx == -1:
 *                 for j in range(k):
 */
      __pyx_t_14 = __pyx_v_i;
      __pyx_v_idx = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_bstruct_idx0.buf, __pyx_t_14, __pyx_bstride_0_idx0));

      /* "pandas/src/generated.pyx":2376
 *         for i in range(n):
 *             idx = idx0[i]
 *             if idx == -1:             # <<<<<<<<<<<<<<
 *                 for j in range(k):
 *                     raise ValueError('No NA values allowed')
 */
      __pyx_t_12 = (__pyx_v_idx == -1);
      if (__pyx_t_12) {

        /* "pandas/src/generated.pyx":2377
 *             idx = idx0[i]
 *             if idx == -1:
 *                 for j in range(k):             # <<<<<<<<<<<<<<
 *                     raise ValueError('No NA values allowed')
 *             else:
 */
        __pyx_t_15 = __pyx_v_k;
        for (__pyx_t_16 = 0; __pyx_t_16 < __pyx_t_15; __pyx_t_16+=1) {
          __pyx_v_j = __pyx_t_16;

          /* "pandas/src/generated.pyx":2378
 *             if idx == -1:
 *                 for j in range(k):
 *                     raise ValueError('No NA values allowed')             # <<<<<<<<<<<<<<
 *             else:
 *                 for j in range(k):
 */
          __pyx_t_3 = PyObject_Call(__pyx_builtin_ValueError, ((PyObject *)__pyx_k_tuple_79), NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2378; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
          __Pyx_GOTREF(__pyx_t_3);
          __Pyx_Raise(__pyx_t_3, 0, 0, 0);
          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
          {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2378; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        }
        goto __pyx_L10;
      }
      /*else*/ {

        /* "pandas/src/generated.pyx":2380
 *                     raise ValueError('No NA values allowed')
 *             else:
 *                 for j in range(k):             # <<<<<<<<<<<<<<
 *                     if idx1[j] == -1:
 *                         raise ValueError('No NA values allowed')
 */
        __pyx_t_15 = __pyx_v_k;
        for (__pyx_t_16 = 0; __pyx_t_16 < __pyx_t_15; __pyx_t_16+=1) {
          __pyx_v_j = __pyx_t_16;

          /* "pandas/src/generated.pyx":2381
 *             else:
 *                 for j in range(k):
 *                     if idx1[j] == -1:             # <<<<<<<<<<<<<<
 *                         raise ValueError('No NA values allowed')
 *                     else:
 */
          __pyx_t_17 = __pyx_v_j;
          __pyx_t_12 = ((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_bstruct_idx1.buf, __pyx_t_17, __pyx_bstride_0_idx1)) == -1);
          if (__pyx_t_12) {

            /* "pandas/src/generated.pyx":2382
 *                 for j in range(k):
 *                     if idx1[j] == -1:
 *                         raise ValueError('No NA values allowed')             # <<<<<<<<<<<<<<
 *                     else:
 *                         outbuf[i, j] = values[idx, idx1[j]]
 */
            __pyx_t_3 = PyObject_Call(__pyx_builtin_ValueError, ((PyObject *)__pyx_k_tuple_80), NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2382; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
            __Pyx_GOTREF(__pyx_t_3);
            __Pyx_Raise(__pyx_t_3, 0, 0, 0);
            __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
            {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2382; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
            goto __pyx_L15;
          }
          /*else*/ {

            /* "pandas/src/generated.pyx":2384
 *                         raise ValueError('No NA values allowed')
 *                     else:
 *                         outbuf[i, j] = values[idx, idx1[j]]             # <<<<<<<<<<<<<<
 *     else:
 *         fv = fill_value
 */
            __pyx_t_18 = __pyx_v_j;
            __pyx_t_19 = __pyx_v_idx;
            __pyx_t_20 = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_bstruct_idx1.buf, __pyx_t_18, __pyx_bstride_0_idx1));
            __pyx_t_3 = *__Pyx_BufPtrStrided2d(PyObject **, __pyx_bstruct_values.buf, __pyx_t_19, __pyx_bstride_0_values, __pyx_t_20, __pyx_bstride_1_values);
            __Pyx_INCREF((PyObject*)__pyx_t_3);
            __pyx_t_21 = __pyx_v_i;
            __pyx_t_22 = __pyx_v_j;
            __pyx_t_23 = __Pyx_BufPtrStrided2d(PyObject **, __pyx_bstruct_outbuf.buf, __pyx_t_21, __pyx_bstride_0_outbuf, __pyx_t_22, __pyx_bstride_1_outbuf);
            __Pyx_GOTREF(*__pyx_t_23);
            __Pyx_DECREF(*__pyx_t_23); __Pyx_INCREF(__pyx_t_3);
            *__pyx_t_23 = __pyx_t_3;
            __Pyx_GIVEREF(*__pyx_t_23);
            __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
          }
          __pyx_L15:;
        }
      }
      __pyx_L10:;
    }
    goto __pyx_L7;
  }
  /*else*/ {

    /* "pandas/src/generated.pyx":2386
 *                         outbuf[i, j] = values[idx, idx1[j]]
 *     else:
 *         fv = fill_value             # <<<<<<<<<<<<<<
 *         for i in range(n):
 *             idx = idx0[i]
 */
    __Pyx_INCREF(__pyx_v_fill_value);
    __pyx_v_fv = __pyx_v_fill_value;

    /* "pandas/src/generated.pyx":2387
 *     else:
 *         fv = fill_value
 *         for i in range(n):             # <<<<<<<<<<<<<<
 *             idx = idx0[i]
 *             if idx == -1:
 */
    __pyx_t_1 = __pyx_v_n;
    for (__pyx_t_13 = 0; __pyx_t_13 < __pyx_t_1; __pyx_t_13+=1) {
      __pyx_v_i = __pyx_t_13;

      /* "pandas/src/generated.pyx":2388
 *         fv = fill_value
 *         for i in range(n):
 *             idx = idx0[i]             # <<<<<<<<<<<<<<
 *             if idx == -1:
 *                 for j in range(k):
 */
      __pyx_t_15 = __pyx_v_i;
      __pyx_v_idx = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_bstruct_idx0.buf, __pyx_t_15, __pyx_bstride_0_idx0));

      /* "pandas/src/generated.pyx":2389
 *         for i in range(n):
 *             idx = idx0[i]
 *             if idx == -1:             # <<<<<<<<<<<<<<
 *                 for j in range(k):
 *                     outbuf[i, j] = fv
 */
      __pyx_t_12 = (__pyx_v_idx == -1);
      if (__pyx_t_12) {

        /* "pandas/src/generated.pyx":2390
 *             idx = idx0[i]
 *             if idx == -1:
 *                 for j in range(k):             # <<<<<<<<<<<<<<
 *                     outbuf[i, j] = fv
 *             else:
 */
        __pyx_t_16 = __pyx_v_k;
        for (__pyx_t_24 = 0; __pyx_t_24 < __pyx_t_16; __pyx_t_24+=1) {
          __pyx_v_j = __pyx_t_24;

          /* "pandas/src/generated.pyx":2391
 *             if idx == -1:
 *                 for j in range(k):
 *                     outbuf[i, j] = fv             # <<<<<<<<<<<<<<
 *             else:
 *                 for j in range(k):
 */
          __pyx_t_25 = __pyx_v_i;
          __pyx_t_26 = __pyx_v_j;
          __pyx_t_23 = __Pyx_BufPtrStrided2d(PyObject **, __pyx_bstruct_outbuf.buf, __pyx_t_25, __pyx_bstride_0_outbuf, __pyx_t_26, __pyx_bstride_1_outbuf);
          __Pyx_GOTREF(*__pyx_t_23);
          __Pyx_DECREF(*__pyx_t_23); __Pyx_INCREF(__pyx_v_fv);
          *__pyx_t_23 = __pyx_v_fv;
          __Pyx_GIVEREF(*__pyx_t_23);
        }
        goto __pyx_L18;
      }
      /*else*/ {

        /* "pandas/src/generated.pyx":2393
 *                     outbuf[i, j] = fv
 *             else:
 *                 for j in range(k):             # <<<<<<<<<<<<<<
 *                     if idx1[j] == -1:
 *                         outbuf[i, j] = fv
 */
        __pyx_t_16 = __pyx_v_k;
        for (__pyx_t_24 = 0; __pyx_t_24 < __pyx_t_16; __pyx_t_24+=1) {
          __pyx_v_j = __pyx_t_24;

          /* "pandas/src/generated.pyx":2394
 *             else:
 *                 for j in range(k):
 *                     if idx1[j] == -1:             # <<<<<<<<<<<<<<
 *                         outbuf[i, j] = fv
 *                     else:
 */
          __pyx_t_27 = __pyx_v_j;
          __pyx_t_12 = ((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_bstruct_idx1.buf, __pyx_t_27, __pyx_bstride_0_idx1)) == -1);
          if (__pyx_t_12) {

            /* "pandas/src/generated.pyx":2395
 *                 for j in range(k):
 *                     if idx1[j] == -1:
 *                         outbuf[i, j] = fv             # <<<<<<<<<<<<<<
 *                     else:
 *                         outbuf[i, j] = values[idx, idx1[j]]
 */
            __pyx_t_28 = __pyx_v_i;
            __pyx_t_29 = __pyx_v_j;
            __pyx_t_23 = __Pyx_BufPtrStrided2d(PyObject **, __pyx_bstruct_outbuf.buf, __pyx_t_28, __pyx_bstride_0_outbuf, __pyx_t_29, __pyx_bstride_1_outbuf);
            __Pyx_GOTREF(*__pyx_t_23);
            __Pyx_DECREF(*__pyx_t_23); __Pyx_INCREF(__pyx_v_fv);
            *__pyx_t_23 = __pyx_v_fv;
            __Pyx_GIVEREF(*__pyx_t_23);
            goto __pyx_L23;
          }
          /*else*/ {

            /* "pandas/src/generated.pyx":2397
 *                         outbuf[i, j] = fv
 *                     else:
 *                         outbuf[i, j] = values[idx, idx1[j]]             # <<<<<<<<<<<<<<
 * 
 * @cython.wraparound(False)
 */
            __pyx_t_30 = __pyx_v_j;
            __pyx_t_31 = __pyx_v_idx;
            __pyx_t_32 = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_bstruct_idx1.buf, __pyx_t_30, __pyx_bstride_0_idx1));
            __pyx_t_3 = *__Pyx_BufPtrStrided2d(PyObject **, __pyx_bstruct_values.buf, __pyx_t_31, __pyx_bstride_0_values, __pyx_t_32, __pyx_bstride_1_values);
            __Pyx_INCREF((PyObject*)__pyx_t_3);
            __pyx_t_33 = __pyx_v_i;
            __pyx_t_34 = __pyx_v_j;
            __pyx_t_23 = __Pyx_BufPtrStrided2d(PyObject **, __pyx_bstruct_outbuf.buf, __pyx_t_33, __pyx_bstride_0_outbuf, __pyx_t_34, __pyx_bstride_1_outbuf);
            __Pyx_GOTREF(*__pyx_t_23);
            __Pyx_DECREF(*__pyx_t_23); __Pyx_INCREF(__pyx_t_3);
            *__pyx_t_23 = __pyx_t_3;
            __Pyx_GIVEREF(*__pyx_t_23);
            __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
          }
          __pyx_L23:;
        }
      }
      __pyx_L18:;
    }
  }
  __pyx_L7:;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  { PyObject *__pyx_type, *__pyx_value, *__pyx_tb;
    __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);
    __Pyx_SafeReleaseBuffer(&__pyx_bstruct_outbuf);
    __Pyx_SafeReleaseBuffer(&__pyx_bstruct_values);
    __Pyx_SafeReleaseBuffer(&__pyx_bstruct_idx1);
    __Pyx_SafeReleaseBuffer(&__pyx_bstruct_idx0);
  __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);}
  __Pyx_AddTraceback("pandas._algos.take_2d_multi_object", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  goto __pyx_L2;
  __pyx_L0:;
  __Pyx_SafeReleaseBuffer(&__pyx_bstruct_outbuf);
  __Pyx_SafeReleaseBuffer(&__pyx_bstruct_values);
  __Pyx_SafeReleaseBuffer(&__pyx_bstruct_idx1);
  __Pyx_SafeReleaseBuffer(&__pyx_bstruct_idx0);
  __pyx_L2:;
  __Pyx_XDECREF((PyObject *)__pyx_v_outbuf);
  __Pyx_XDECREF(__pyx_v_fv);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "pandas/src/generated.pyx":2401
 * @cython.wraparound(False)
 * @cython.boundscheck(False)
 * def take_2d_multi_int32(ndarray[int32_t, ndim=2] values,             # <<<<<<<<<<<<<<
 *                            ndarray[int64_t] idx0,
 *                            ndarray[int64_t] idx1,
 */

static PyObject *__pyx_pf_6pandas_6_algos_72take_2d_multi_int32(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_6pandas_6_algos_72take_2d_multi_int32 = {__Pyx_NAMESTR("take_2d_multi_int32"), (PyCFunction)__pyx_pf_6pandas_6_algos_72take_2d_multi_int32, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(0)};
static PyObject *__pyx_pf_6pandas_6_algos_72take_2d_multi_int32(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyArrayObject *__pyx_v_values = 0;
  PyArrayObject *__pyx_v_idx0 = 0;
  PyArrayObject *__pyx_v_idx1 = 0;
  PyObject *__pyx_v_out = 0;
  PyObject *__pyx_v_fill_value = 0;
  Py_ssize_t __pyx_v_i;
  Py_ssize_t __pyx_v_j;
  Py_ssize_t __pyx_v_k;
  Py_ssize_t __pyx_v_n;
  Py_ssize_t __pyx_v_idx;
  PyArrayObject *__pyx_v_outbuf = 0;
  __pyx_t_5numpy_int32_t __pyx_v_fv;
  Py_buffer __pyx_bstruct_outbuf;
  Py_ssize_t __pyx_bstride_0_outbuf = 0;
  Py_ssize_t __pyx_bstride_1_outbuf = 0;
  Py_ssize_t __pyx_bshape_0_outbuf = 0;
  Py_ssize_t __pyx_bshape_1_outbuf = 0;
  Py_buffer __pyx_bstruct_values;
  Py_ssize_t __pyx_bstride_0_values = 0;
  Py_ssize_t __pyx_bstride_1_values = 0;
  Py_ssize_t __pyx_bshape_0_values = 0;
  Py_ssize_t __pyx_bshape_1_values = 0;
  Py_buffer __pyx_bstruct_idx1;
  Py_ssize_t __pyx_bstride_0_idx1 = 0;
  Py_ssize_t __pyx_bshape_0_idx1 = 0;
  Py_buffer __pyx_bstruct_idx0;
  Py_ssize_t __pyx_bstride_0_idx0 = 0;
  Py_ssize_t __pyx_bshape_0_idx0 = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  Py_ssize_t __pyx_t_1;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  PyArrayObject *__pyx_t_7 = NULL;
  int __pyx_t_8;
  PyObject *__pyx_t_9 = NULL;
  PyObject *__pyx_t_10 = NULL;
  PyObject *__pyx_t_11 = NULL;
  int __pyx_t_12;
  Py_ssize_t __pyx_t_13;
  Py_ssize_t __pyx_t_14;
  Py_ssize_t __pyx_t_15;
  Py_ssize_t __pyx_t_16;
  Py_ssize_t __pyx_t_17;
  Py_ssize_t __pyx_t_18;
  Py_ssize_t __pyx_t_19;
  __pyx_t_5numpy_int64_t __pyx_t_20;
  Py_ssize_t __pyx_t_21;
  Py_ssize_t __pyx_t_22;
  __pyx_t_5numpy_int32_t __pyx_t_23;
  Py_ssize_t __pyx_t_24;
  Py_ssize_t __pyx_t_25;
  Py_ssize_t __pyx_t_26;
  Py_ssize_t __pyx_t_27;
  Py_ssize_t __pyx_t_28;
  Py_ssize_t __pyx_t_29;
  Py_ssize_t __pyx_t_30;
  Py_ssize_t __pyx_t_31;
  __pyx_t_5numpy_int64_t __pyx_t_32;
  Py_ssize_t __pyx_t_33;
  Py_ssize_t __pyx_t_34;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__values,&__pyx_n_s__idx0,&__pyx_n_s__idx1,&__pyx_n_s__out,&__pyx_n_s__fill_value,0};
  __Pyx_RefNannySetupContext("take_2d_multi_int32");
  __pyx_self = __pyx_self;
  {
    PyObject* values[5] = {0,0,0,0,0};

    /* "pandas/src/generated.pyx":2404
 *                            ndarray[int64_t] idx0,
 *                            ndarray[int64_t] idx1,
 *                            out=None, fill_value=np.nan):             # <<<<<<<<<<<<<<
 *     cdef:
 *         Py_ssize_t i, j, k, n, idx
 */
    values[3] = ((PyObject *)Py_None);
    values[4] = __pyx_k_81;
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  0:
        values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__values);
        if (likely(values[0])) kw_args--;
        else goto __pyx_L5_argtuple_error;
        case  1:
        values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__idx0);
        if (likely(values[1])) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("take_2d_multi_int32", 0, 3, 5, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2401; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
        }
        case  2:
        values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__idx1);
        if (likely(values[2])) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("take_2d_multi_int32", 0, 3, 5, 2); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2401; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
        }
        case  3:
        if (kw_args > 0) {
          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__out);
          if (value) { values[3] = value; kw_args--; }
        }
        case  4:
        if (kw_args > 0) {
          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__fill_value);
          if (value) { values[4] = value; kw_args--; }
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "take_2d_multi_int32") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2401; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
    } else {
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_values = ((PyArrayObject *)values[0]);
    __pyx_v_idx0 = ((PyArrayObject *)values[1]);
    __pyx_v_idx1 = ((PyArrayObject *)values[2]);
    __pyx_v_out = values[3];
    __pyx_v_fill_value = values[4];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("take_2d_multi_int32", 0, 3, 5, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2401; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("pandas._algos.take_2d_multi_int32", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_bstruct_outbuf.buf = NULL;
  __pyx_bstruct_values.buf = NULL;
  __pyx_bstruct_idx0.buf = NULL;
  __pyx_bstruct_idx1.buf = NULL;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_values), __pyx_ptype_5numpy_ndarray, 1, "values", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2401; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_idx0), __pyx_ptype_5numpy_ndarray, 1, "idx0", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2402; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_idx1), __pyx_ptype_5numpy_ndarray, 1, "idx1", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2403; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_values, (PyObject*)__pyx_v_values, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int32_t, PyBUF_FORMAT| PyBUF_STRIDES, 2, 0, __pyx_stack) == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2401; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  }
  __pyx_bstride_0_values = __pyx_bstruct_values.strides[0]; __pyx_bstride_1_values = __pyx_bstruct_values.strides[1];
  __pyx_bshape_0_values = __pyx_bstruct_values.shape[0]; __pyx_bshape_1_values = __pyx_bstruct_values.shape[1];
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_idx0, (PyObject*)__pyx_v_idx0, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2401; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  }
  __pyx_bstride_0_idx0 = __pyx_bstruct_idx0.strides[0];
  __pyx_bshape_0_idx0 = __pyx_bstruct_idx0.shape[0];
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_idx1, (PyObject*)__pyx_v_idx1, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2401; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  }
  __pyx_bstride_0_idx1 = __pyx_bstruct_idx1.strides[0];
  __pyx_bshape_0_idx1 = __pyx_bstruct_idx1.shape[0];

  /* "pandas/src/generated.pyx":2410
 *         int32_t fv
 * 
 *     n = len(idx0)             # <<<<<<<<<<<<<<
 *     k = len(idx1)
 * 
 */
  __pyx_t_1 = PyObject_Length(((PyObject *)__pyx_v_idx0)); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2410; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_v_n = __pyx_t_1;

  /* "pandas/src/generated.pyx":2411
 * 
 *     n = len(idx0)
 *     k = len(idx1)             # <<<<<<<<<<<<<<
 * 
 *     if out is None:
 */
  __pyx_t_1 = PyObject_Length(((PyObject *)__pyx_v_idx1)); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2411; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_v_k = __pyx_t_1;

  /* "pandas/src/generated.pyx":2413
 *     k = len(idx1)
 * 
 *     if out is None:             # <<<<<<<<<<<<<<
 *         outbuf = np.empty((n, k), dtype=values.dtype)
 *     else:
 */
  __pyx_t_2 = (__pyx_v_out == Py_None);
  if (__pyx_t_2) {

    /* "pandas/src/generated.pyx":2414
 * 
 *     if out is None:
 *         outbuf = np.empty((n, k), dtype=values.dtype)             # <<<<<<<<<<<<<<
 *     else:
 *         outbuf = out
 */
    __pyx_t_3 = __Pyx_GetName(__pyx_m, __pyx_n_s__np); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2414; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_4 = PyObject_GetAttr(__pyx_t_3, __pyx_n_s__empty); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2414; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __pyx_t_3 = PyInt_FromSsize_t(__pyx_v_n); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2414; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_5 = PyInt_FromSsize_t(__pyx_v_k); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2414; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_6 = PyTuple_New(2); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2414; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(((PyObject *)__pyx_t_6));
    PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_3);
    __Pyx_GIVEREF(__pyx_t_3);
    PyTuple_SET_ITEM(__pyx_t_6, 1, __pyx_t_5);
    __Pyx_GIVEREF(__pyx_t_5);
    __pyx_t_3 = 0;
    __pyx_t_5 = 0;
    __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2414; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(((PyObject *)__pyx_t_5));
    PyTuple_SET_ITEM(__pyx_t_5, 0, ((PyObject *)__pyx_t_6));
    __Pyx_GIVEREF(((PyObject *)__pyx_t_6));
    __pyx_t_6 = 0;
    __pyx_t_6 = PyDict_New(); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2414; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(((PyObject *)__pyx_t_6));
    __pyx_t_3 = PyObject_GetAttr(((PyObject *)__pyx_v_values), __pyx_n_s__dtype); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2414; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    if (PyDict_SetItem(__pyx_t_6, ((PyObject *)__pyx_n_s__dtype), __pyx_t_3) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2414; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __pyx_t_3 = PyEval_CallObjectWithKeywords(__pyx_t_4, ((PyObject *)__pyx_t_5), ((PyObject *)__pyx_t_6)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2414; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_DECREF(((PyObject *)__pyx_t_5)); __pyx_t_5 = 0;
    __Pyx_DECREF(((PyObject *)__pyx_t_6)); __pyx_t_6 = 0;
    if (!(likely(((__pyx_t_3) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_3, __pyx_ptype_5numpy_ndarray))))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2414; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __pyx_t_7 = ((PyArrayObject *)__pyx_t_3);
    {
      __Pyx_BufFmt_StackElem __pyx_stack[1];
      __Pyx_SafeReleaseBuffer(&__pyx_bstruct_outbuf);
      __pyx_t_8 = __Pyx_GetBufferAndValidate(&__pyx_bstruct_outbuf, (PyObject*)__pyx_t_7, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int32_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 2, 0, __pyx_stack);
      if (unlikely(__pyx_t_8 < 0)) {
        PyErr_Fetch(&__pyx_t_9, &__pyx_t_10, &__pyx_t_11);
        if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_outbuf, (PyObject*)__pyx_v_outbuf, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int32_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 2, 0, __pyx_stack) == -1)) {
          Py_XDECREF(__pyx_t_9); Py_XDECREF(__pyx_t_10); Py_XDECREF(__pyx_t_11);
          __Pyx_RaiseBufferFallbackError();
        } else {
          PyErr_Restore(__pyx_t_9, __pyx_t_10, __pyx_t_11);
        }
      }
      __pyx_bstride_0_outbuf = __pyx_bstruct_outbuf.strides[0]; __pyx_bstride_1_outbuf = __pyx_bstruct_outbuf.strides[1];
      __pyx_bshape_0_outbuf = __pyx_bstruct_outbuf.shape[0]; __pyx_bshape_1_outbuf = __pyx_bstruct_outbuf.shape[1];
      if (unlikely(__pyx_t_8 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2414; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    }
    __pyx_t_7 = 0;
    __pyx_v_outbuf = ((PyArrayObject *)__pyx_t_3);
    __pyx_t_3 = 0;
    goto __pyx_L6;
  }
  /*else*/ {

    /* "pandas/src/generated.pyx":2416
 *         outbuf = np.empty((n, k), dtype=values.dtype)
 *     else:
 *         outbuf = out             # <<<<<<<<<<<<<<
 * 
 * 
 */
    if (!(likely(((__pyx_v_out) == Py_None) || likely(__Pyx_TypeTest(__pyx_v_out, __pyx_ptype_5numpy_ndarray))))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2416; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __pyx_t_7 = ((PyArrayObject *)__pyx_v_out);
    {
      __Pyx_BufFmt_StackElem __pyx_stack[1];
      __Pyx_SafeReleaseBuffer(&__pyx_bstruct_outbuf);
      __pyx_t_8 = __Pyx_GetBufferAndValidate(&__pyx_bstruct_outbuf, (PyObject*)__pyx_t_7, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int32_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 2, 0, __pyx_stack);
      if (unlikely(__pyx_t_8 < 0)) {
        PyErr_Fetch(&__pyx_t_11, &__pyx_t_10, &__pyx_t_9);
        if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_outbuf, (PyObject*)__pyx_v_outbuf, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int32_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 2, 0, __pyx_stack) == -1)) {
          Py_XDECREF(__pyx_t_11); Py_XDECREF(__pyx_t_10); Py_XDECREF(__pyx_t_9);
          __Pyx_RaiseBufferFallbackError();
        } else {
          PyErr_Restore(__pyx_t_11, __pyx_t_10, __pyx_t_9);
        }
      }
      __pyx_bstride_0_outbuf = __pyx_bstruct_outbuf.strides[0]; __pyx_bstride_1_outbuf = __pyx_bstruct_outbuf.strides[1];
      __pyx_bshape_0_outbuf = __pyx_bstruct_outbuf.shape[0]; __pyx_bshape_1_outbuf = __pyx_bstruct_outbuf.shape[1];
      if (unlikely(__pyx_t_8 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2416; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    }
    __pyx_t_7 = 0;
    __Pyx_INCREF(__pyx_v_out);
    __pyx_v_outbuf = ((PyArrayObject *)__pyx_v_out);
  }
  __pyx_L6:;

  /* "pandas/src/generated.pyx":2419
 * 
 * 
 *     if True and _checknan(fill_value):             # <<<<<<<<<<<<<<
 *         for i in range(n):
 *             idx = idx0[i]
 */
  if (1) {
    __pyx_t_2 = __pyx_f_4util__checknan(__pyx_v_fill_value);
    __pyx_t_12 = __pyx_t_2;
  } else {
    __pyx_t_12 = 1;
  }
  if (__pyx_t_12) {

    /* "pandas/src/generated.pyx":2420
 * 
 *     if True and _checknan(fill_value):
 *         for i in range(n):             # <<<<<<<<<<<<<<
 *             idx = idx0[i]
 *             if idx == -1:
 */
    __pyx_t_1 = __pyx_v_n;
    for (__pyx_t_13 = 0; __pyx_t_13 < __pyx_t_1; __pyx_t_13+=1) {
      __pyx_v_i = __pyx_t_13;

      /* "pandas/src/generated.pyx":2421
 *     if True and _checknan(fill_value):
 *         for i in range(n):
 *             idx = idx0[i]             # <<<<<<<<<<<<<<
 *             if idx == -1:
 *                 for j in range(k):
 */
      __pyx_t_14 = __pyx_v_i;
      __pyx_v_idx = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_bstruct_idx0.buf, __pyx_t_14, __pyx_bstride_0_idx0));

      /* "pandas/src/generated.pyx":2422
 *         for i in range(n):
 *             idx = idx0[i]
 *             if idx == -1:             # <<<<<<<<<<<<<<
 *                 for j in range(k):
 *                     raise ValueError('No NA values allowed')
 */
      __pyx_t_12 = (__pyx_v_idx == -1);
      if (__pyx_t_12) {

        /* "pandas/src/generated.pyx":2423
 *             idx = idx0[i]
 *             if idx == -1:
 *                 for j in range(k):             # <<<<<<<<<<<<<<
 *                     raise ValueError('No NA values allowed')
 *             else:
 */
        __pyx_t_15 = __pyx_v_k;
        for (__pyx_t_16 = 0; __pyx_t_16 < __pyx_t_15; __pyx_t_16+=1) {
          __pyx_v_j = __pyx_t_16;

          /* "pandas/src/generated.pyx":2424
 *             if idx == -1:
 *                 for j in range(k):
 *                     raise ValueError('No NA values allowed')             # <<<<<<<<<<<<<<
 *             else:
 *                 for j in range(k):
 */
          __pyx_t_3 = PyObject_Call(__pyx_builtin_ValueError, ((PyObject *)__pyx_k_tuple_82), NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2424; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
          __Pyx_GOTREF(__pyx_t_3);
          __Pyx_Raise(__pyx_t_3, 0, 0, 0);
          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
          {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2424; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        }
        goto __pyx_L10;
      }
      /*else*/ {

        /* "pandas/src/generated.pyx":2426
 *                     raise ValueError('No NA values allowed')
 *             else:
 *                 for j in range(k):             # <<<<<<<<<<<<<<
 *                     if idx1[j] == -1:
 *                         raise ValueError('No NA values allowed')
 */
        __pyx_t_15 = __pyx_v_k;
        for (__pyx_t_16 = 0; __pyx_t_16 < __pyx_t_15; __pyx_t_16+=1) {
          __pyx_v_j = __pyx_t_16;

          /* "pandas/src/generated.pyx":2427
 *             else:
 *                 for j in range(k):
 *                     if idx1[j] == -1:             # <<<<<<<<<<<<<<
 *                         raise ValueError('No NA values allowed')
 *                     else:
 */
          __pyx_t_17 = __pyx_v_j;
          __pyx_t_12 = ((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_bstruct_idx1.buf, __pyx_t_17, __pyx_bstride_0_idx1)) == -1);
          if (__pyx_t_12) {

            /* "pandas/src/generated.pyx":2428
 *                 for j in range(k):
 *                     if idx1[j] == -1:
 *                         raise ValueError('No NA values allowed')             # <<<<<<<<<<<<<<
 *                     else:
 *                         outbuf[i, j] = values[idx, idx1[j]]
 */
            __pyx_t_3 = PyObject_Call(__pyx_builtin_ValueError, ((PyObject *)__pyx_k_tuple_83), NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2428; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
            __Pyx_GOTREF(__pyx_t_3);
            __Pyx_Raise(__pyx_t_3, 0, 0, 0);
            __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
            {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2428; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
            goto __pyx_L15;
          }
          /*else*/ {

            /* "pandas/src/generated.pyx":2430
 *                         raise ValueError('No NA values allowed')
 *                     else:
 *                         outbuf[i, j] = values[idx, idx1[j]]             # <<<<<<<<<<<<<<
 *     else:
 *         fv = fill_value
 */
            __pyx_t_18 = __pyx_v_j;
            __pyx_t_19 = __pyx_v_idx;
            __pyx_t_20 = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_bstruct_idx1.buf, __pyx_t_18, __pyx_bstride_0_idx1));
            __pyx_t_21 = __pyx_v_i;
            __pyx_t_22 = __pyx_v_j;
            *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int32_t *, __pyx_bstruct_outbuf.buf, __pyx_t_21, __pyx_bstride_0_outbuf, __pyx_t_22, __pyx_bstride_1_outbuf) = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int32_t *, __pyx_bstruct_values.buf, __pyx_t_19, __pyx_bstride_0_values, __pyx_t_20, __pyx_bstride_1_values));
          }
          __pyx_L15:;
        }
      }
      __pyx_L10:;
    }
    goto __pyx_L7;
  }
  /*else*/ {

    /* "pandas/src/generated.pyx":2432
 *                         outbuf[i, j] = values[idx, idx1[j]]
 *     else:
 *         fv = fill_value             # <<<<<<<<<<<<<<
 *         for i in range(n):
 *             idx = idx0[i]
 */
    __pyx_t_23 = __Pyx_PyInt_from_py_npy_int32(__pyx_v_fill_value); if (unlikely((__pyx_t_23 == (npy_int32)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2432; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __pyx_v_fv = __pyx_t_23;

    /* "pandas/src/generated.pyx":2433
 *     else:
 *         fv = fill_value
 *         for i in range(n):             # <<<<<<<<<<<<<<
 *             idx = idx0[i]
 *             if idx == -1:
 */
    __pyx_t_1 = __pyx_v_n;
    for (__pyx_t_13 = 0; __pyx_t_13 < __pyx_t_1; __pyx_t_13+=1) {
      __pyx_v_i = __pyx_t_13;

      /* "pandas/src/generated.pyx":2434
 *         fv = fill_value
 *         for i in range(n):
 *             idx = idx0[i]             # <<<<<<<<<<<<<<
 *             if idx == -1:
 *                 for j in range(k):
 */
      __pyx_t_15 = __pyx_v_i;
      __pyx_v_idx = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_bstruct_idx0.buf, __pyx_t_15, __pyx_bstride_0_idx0));

      /* "pandas/src/generated.pyx":2435
 *         for i in range(n):
 *             idx = idx0[i]
 *             if idx == -1:             # <<<<<<<<<<<<<<
 *                 for j in range(k):
 *                     outbuf[i, j] = fv
 */
      __pyx_t_12 = (__pyx_v_idx == -1);
      if (__pyx_t_12) {

        /* "pandas/src/generated.pyx":2436
 *             idx = idx0[i]
 *             if idx == -1:
 *                 for j in range(k):             # <<<<<<<<<<<<<<
 *                     outbuf[i, j] = fv
 *             else:
 */
        __pyx_t_16 = __pyx_v_k;
        for (__pyx_t_24 = 0; __pyx_t_24 < __pyx_t_16; __pyx_t_24+=1) {
          __pyx_v_j = __pyx_t_24;

          /* "pandas/src/generated.pyx":2437
 *             if idx == -1:
 *                 for j in range(k):
 *                     outbuf[i, j] = fv             # <<<<<<<<<<<<<<
 *             else:
 *                 for j in range(k):
 */
          __pyx_t_25 = __pyx_v_i;
          __pyx_t_26 = __pyx_v_j;
          *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int32_t *, __pyx_bstruct_outbuf.buf, __pyx_t_25, __pyx_bstride_0_outbuf, __pyx_t_26, __pyx_bstride_1_outbuf) = __pyx_v_fv;
        }
        goto __pyx_L18;
      }
      /*else*/ {

        /* "pandas/src/generated.pyx":2439
 *                     outbuf[i, j] = fv
 *             else:
 *                 for j in range(k):             # <<<<<<<<<<<<<<
 *                     if idx1[j] == -1:
 *                         outbuf[i, j] = fv
 */
        __pyx_t_16 = __pyx_v_k;
        for (__pyx_t_24 = 0; __pyx_t_24 < __pyx_t_16; __pyx_t_24+=1) {
          __pyx_v_j = __pyx_t_24;

          /* "pandas/src/generated.pyx":2440
 *             else:
 *                 for j in range(k):
 *                     if idx1[j] == -1:             # <<<<<<<<<<<<<<
 *                         outbuf[i, j] = fv
 *                     else:
 */
          __pyx_t_27 = __pyx_v_j;
          __pyx_t_12 = ((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_bstruct_idx1.buf, __pyx_t_27, __pyx_bstride_0_idx1)) == -1);
          if (__pyx_t_12) {

            /* "pandas/src/generated.pyx":2441
 *                 for j in range(k):
 *                     if idx1[j] == -1:
 *                         outbuf[i, j] = fv             # <<<<<<<<<<<<<<
 *                     else:
 *                         outbuf[i, j] = values[idx, idx1[j]]
 */
            __pyx_t_28 = __pyx_v_i;
            __pyx_t_29 = __pyx_v_j;
            *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int32_t *, __pyx_bstruct_outbuf.buf, __pyx_t_28, __pyx_bstride_0_outbuf, __pyx_t_29, __pyx_bstride_1_outbuf) = __pyx_v_fv;
            goto __pyx_L23;
          }
          /*else*/ {

            /* "pandas/src/generated.pyx":2443
 *                         outbuf[i, j] = fv
 *                     else:
 *                         outbuf[i, j] = values[idx, idx1[j]]             # <<<<<<<<<<<<<<
 * 
 * @cython.wraparound(False)
 */
            __pyx_t_30 = __pyx_v_j;
            __pyx_t_31 = __pyx_v_idx;
            __pyx_t_32 = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_bstruct_idx1.buf, __pyx_t_30, __pyx_bstride_0_idx1));
            __pyx_t_33 = __pyx_v_i;
            __pyx_t_34 = __pyx_v_j;
            *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int32_t *, __pyx_bstruct_outbuf.buf, __pyx_t_33, __pyx_bstride_0_outbuf, __pyx_t_34, __pyx_bstride_1_outbuf) = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int32_t *, __pyx_bstruct_values.buf, __pyx_t_31, __pyx_bstride_0_values, __pyx_t_32, __pyx_bstride_1_values));
          }
          __pyx_L23:;
        }
      }
      __pyx_L18:;
    }
  }
  __pyx_L7:;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  { PyObject *__pyx_type, *__pyx_value, *__pyx_tb;
    __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);
    __Pyx_SafeReleaseBuffer(&__pyx_bstruct_outbuf);
    __Pyx_SafeReleaseBuffer(&__pyx_bstruct_values);
    __Pyx_SafeReleaseBuffer(&__pyx_bstruct_idx1);
    __Pyx_SafeReleaseBuffer(&__pyx_bstruct_idx0);
  __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);}
  __Pyx_AddTraceback("pandas._algos.take_2d_multi_int32", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  goto __pyx_L2;
  __pyx_L0:;
  __Pyx_SafeReleaseBuffer(&__pyx_bstruct_outbuf);
  __Pyx_SafeReleaseBuffer(&__pyx_bstruct_values);
  __Pyx_SafeReleaseBuffer(&__pyx_bstruct_idx1);
  __Pyx_SafeReleaseBuffer(&__pyx_bstruct_idx0);
  __pyx_L2:;
  __Pyx_XDECREF((PyObject *)__pyx_v_outbuf);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "pandas/src/generated.pyx":2447
 * @cython.wraparound(False)
 * @cython.boundscheck(False)
 * def take_2d_multi_int64(ndarray[int64_t, ndim=2] values,             # <<<<<<<<<<<<<<
 *                            ndarray[int64_t] idx0,
 *                            ndarray[int64_t] idx1,
 */

static PyObject *__pyx_pf_6pandas_6_algos_73take_2d_multi_int64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_6pandas_6_algos_73take_2d_multi_int64 = {__Pyx_NAMESTR("take_2d_multi_int64"), (PyCFunction)__pyx_pf_6pandas_6_algos_73take_2d_multi_int64, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(0)};
static PyObject *__pyx_pf_6pandas_6_algos_73take_2d_multi_int64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyArrayObject *__pyx_v_values = 0;
  PyArrayObject *__pyx_v_idx0 = 0;
  PyArrayObject *__pyx_v_idx1 = 0;
  PyObject *__pyx_v_out = 0;
  PyObject *__pyx_v_fill_value = 0;
  Py_ssize_t __pyx_v_i;
  Py_ssize_t __pyx_v_j;
  Py_ssize_t __pyx_v_k;
  Py_ssize_t __pyx_v_n;
  Py_ssize_t __pyx_v_idx;
  PyArrayObject *__pyx_v_outbuf = 0;
  __pyx_t_5numpy_int64_t __pyx_v_fv;
  Py_buffer __pyx_bstruct_outbuf;
  Py_ssize_t __pyx_bstride_0_outbuf = 0;
  Py_ssize_t __pyx_bstride_1_outbuf = 0;
  Py_ssize_t __pyx_bshape_0_outbuf = 0;
  Py_ssize_t __pyx_bshape_1_outbuf = 0;
  Py_buffer __pyx_bstruct_values;
  Py_ssize_t __pyx_bstride_0_values = 0;
  Py_ssize_t __pyx_bstride_1_values = 0;
  Py_ssize_t __pyx_bshape_0_values = 0;
  Py_ssize_t __pyx_bshape_1_values = 0;
  Py_buffer __pyx_bstruct_idx1;
  Py_ssize_t __pyx_bstride_0_idx1 = 0;
  Py_ssize_t __pyx_bshape_0_idx1 = 0;
  Py_buffer __pyx_bstruct_idx0;
  Py_ssize_t __pyx_bstride_0_idx0 = 0;
  Py_ssize_t __pyx_bshape_0_idx0 = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  Py_ssize_t __pyx_t_1;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  PyArrayObject *__pyx_t_7 = NULL;
  int __pyx_t_8;
  PyObject *__pyx_t_9 = NULL;
  PyObject *__pyx_t_10 = NULL;
  PyObject *__pyx_t_11 = NULL;
  int __pyx_t_12;
  Py_ssize_t __pyx_t_13;
  Py_ssize_t __pyx_t_14;
  Py_ssize_t __pyx_t_15;
  Py_ssize_t __pyx_t_16;
  Py_ssize_t __pyx_t_17;
  Py_ssize_t __pyx_t_18;
  Py_ssize_t __pyx_t_19;
  __pyx_t_5numpy_int64_t __pyx_t_20;
  Py_ssize_t __pyx_t_21;
  Py_ssize_t __pyx_t_22;
  __pyx_t_5numpy_int64_t __pyx_t_23;
  Py_ssize_t __pyx_t_24;
  Py_ssize_t __pyx_t_25;
  Py_ssize_t __pyx_t_26;
  Py_ssize_t __pyx_t_27;
  Py_ssize_t __pyx_t_28;
  Py_ssize_t __pyx_t_29;
  Py_ssize_t __pyx_t_30;
  Py_ssize_t __pyx_t_31;
  Py_ssize_t __pyx_t_32;
  Py_ssize_t __pyx_t_33;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__values,&__pyx_n_s__idx0,&__pyx_n_s__idx1,&__pyx_n_s__out,&__pyx_n_s__fill_value,0};
  __Pyx_RefNannySetupContext("take_2d_multi_int64");
  __pyx_self = __pyx_self;
  {
    PyObject* values[5] = {0,0,0,0,0};

    /* "pandas/src/generated.pyx":2450
 *                            ndarray[int64_t] idx0,
 *                            ndarray[int64_t] idx1,
 *                            out=None, fill_value=np.nan):             # <<<<<<<<<<<<<<
 *     cdef:
 *         Py_ssize_t i, j, k, n, idx
 */
    values[3] = ((PyObject *)Py_None);
    values[4] = __pyx_k_84;
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  0:
        values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__values);
        if (likely(values[0])) kw_args--;
        else goto __pyx_L5_argtuple_error;
        case  1:
        values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__idx0);
        if (likely(values[1])) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("take_2d_multi_int64", 0, 3, 5, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2447; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
        }
        case  2:
        values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__idx1);
        if (likely(values[2])) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("take_2d_multi_int64", 0, 3, 5, 2); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2447; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
        }
        case  3:
        if (kw_args > 0) {
          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__out);
          if (value) { values[3] = value; kw_args--; }
        }
        case  4:
        if (kw_args > 0) {
          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__fill_value);
          if (value) { values[4] = value; kw_args--; }
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "take_2d_multi_int64") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2447; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
    } else {
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_values = ((PyArrayObject *)values[0]);
    __pyx_v_idx0 = ((PyArrayObject *)values[1]);
    __pyx_v_idx1 = ((PyArrayObject *)values[2]);
    __pyx_v_out = values[3];
    __pyx_v_fill_value = values[4];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("take_2d_multi_int64", 0, 3, 5, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2447; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("pandas._algos.take_2d_multi_int64", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_bstruct_outbuf.buf = NULL;
  __pyx_bstruct_values.buf = NULL;
  __pyx_bstruct_idx0.buf = NULL;
  __pyx_bstruct_idx1.buf = NULL;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_values), __pyx_ptype_5numpy_ndarray, 1, "values", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2447; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_idx0), __pyx_ptype_5numpy_ndarray, 1, "idx0", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2448; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_idx1), __pyx_ptype_5numpy_ndarray, 1, "idx1", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2449; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_values, (PyObject*)__pyx_v_values, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 2, 0, __pyx_stack) == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2447; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  }
  __pyx_bstride_0_values = __pyx_bstruct_values.strides[0]; __pyx_bstride_1_values = __pyx_bstruct_values.strides[1];
  __pyx_bshape_0_values = __pyx_bstruct_values.shape[0]; __pyx_bshape_1_values = __pyx_bstruct_values.shape[1];
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_idx0, (PyObject*)__pyx_v_idx0, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2447; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  }
  __pyx_bstride_0_idx0 = __pyx_bstruct_idx0.strides[0];
  __pyx_bshape_0_idx0 = __pyx_bstruct_idx0.shape[0];
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_idx1, (PyObject*)__pyx_v_idx1, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2447; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  }
  __pyx_bstride_0_idx1 = __pyx_bstruct_idx1.strides[0];
  __pyx_bshape_0_idx1 = __pyx_bstruct_idx1.shape[0];

  /* "pandas/src/generated.pyx":2456
 *         int64_t fv
 * 
 *     n = len(idx0)             # <<<<<<<<<<<<<<
 *     k = len(idx1)
 * 
 */
  __pyx_t_1 = PyObject_Length(((PyObject *)__pyx_v_idx0)); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2456; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_v_n = __pyx_t_1;

  /* "pandas/src/generated.pyx":2457
 * 
 *     n = len(idx0)
 *     k = len(idx1)             # <<<<<<<<<<<<<<
 * 
 *     if out is None:
 */
  __pyx_t_1 = PyObject_Length(((PyObject *)__pyx_v_idx1)); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2457; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_v_k = __pyx_t_1;

  /* "pandas/src/generated.pyx":2459
 *     k = len(idx1)
 * 
 *     if out is None:             # <<<<<<<<<<<<<<
 *         outbuf = np.empty((n, k), dtype=values.dtype)
 *     else:
 */
  __pyx_t_2 = (__pyx_v_out == Py_None);
  if (__pyx_t_2) {

    /* "pandas/src/generated.pyx":2460
 * 
 *     if out is None:
 *         outbuf = np.empty((n, k), dtype=values.dtype)             # <<<<<<<<<<<<<<
 *     else:
 *         outbuf = out
 */
    __pyx_t_3 = __Pyx_GetName(__pyx_m, __pyx_n_s__np); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2460; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_4 = PyObject_GetAttr(__pyx_t_3, __pyx_n_s__empty); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2460; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __pyx_t_3 = PyInt_FromSsize_t(__pyx_v_n); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2460; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_5 = PyInt_FromSsize_t(__pyx_v_k); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2460; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_6 = PyTuple_New(2); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2460; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(((PyObject *)__pyx_t_6));
    PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_3);
    __Pyx_GIVEREF(__pyx_t_3);
    PyTuple_SET_ITEM(__pyx_t_6, 1, __pyx_t_5);
    __Pyx_GIVEREF(__pyx_t_5);
    __pyx_t_3 = 0;
    __pyx_t_5 = 0;
    __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2460; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(((PyObject *)__pyx_t_5));
    PyTuple_SET_ITEM(__pyx_t_5, 0, ((PyObject *)__pyx_t_6));
    __Pyx_GIVEREF(((PyObject *)__pyx_t_6));
    __pyx_t_6 = 0;
    __pyx_t_6 = PyDict_New(); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2460; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(((PyObject *)__pyx_t_6));
    __pyx_t_3 = PyObject_GetAttr(((PyObject *)__pyx_v_values), __pyx_n_s__dtype); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2460; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    if (PyDict_SetItem(__pyx_t_6, ((PyObject *)__pyx_n_s__dtype), __pyx_t_3) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2460; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __pyx_t_3 = PyEval_CallObjectWithKeywords(__pyx_t_4, ((PyObject *)__pyx_t_5), ((PyObject *)__pyx_t_6)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2460; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_DECREF(((PyObject *)__pyx_t_5)); __pyx_t_5 = 0;
    __Pyx_DECREF(((PyObject *)__pyx_t_6)); __pyx_t_6 = 0;
    if (!(likely(((__pyx_t_3) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_3, __pyx_ptype_5numpy_ndarray))))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2460; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __pyx_t_7 = ((PyArrayObject *)__pyx_t_3);
    {
      __Pyx_BufFmt_StackElem __pyx_stack[1];
      __Pyx_SafeReleaseBuffer(&__pyx_bstruct_outbuf);
      __pyx_t_8 = __Pyx_GetBufferAndValidate(&__pyx_bstruct_outbuf, (PyObject*)__pyx_t_7, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 2, 0, __pyx_stack);
      if (unlikely(__pyx_t_8 < 0)) {
        PyErr_Fetch(&__pyx_t_9, &__pyx_t_10, &__pyx_t_11);
        if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_outbuf, (PyObject*)__pyx_v_outbuf, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 2, 0, __pyx_stack) == -1)) {
          Py_XDECREF(__pyx_t_9); Py_XDECREF(__pyx_t_10); Py_XDECREF(__pyx_t_11);
          __Pyx_RaiseBufferFallbackError();
        } else {
          PyErr_Restore(__pyx_t_9, __pyx_t_10, __pyx_t_11);
        }
      }
      __pyx_bstride_0_outbuf = __pyx_bstruct_outbuf.strides[0]; __pyx_bstride_1_outbuf = __pyx_bstruct_outbuf.strides[1];
      __pyx_bshape_0_outbuf = __pyx_bstruct_outbuf.shape[0]; __pyx_bshape_1_outbuf = __pyx_bstruct_outbuf.shape[1];
      if (unlikely(__pyx_t_8 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2460; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    }
    __pyx_t_7 = 0;
    __pyx_v_outbuf = ((PyArrayObject *)__pyx_t_3);
    __pyx_t_3 = 0;
    goto __pyx_L6;
  }
  /*else*/ {

    /* "pandas/src/generated.pyx":2462
 *         outbuf = np.empty((n, k), dtype=values.dtype)
 *     else:
 *         outbuf = out             # <<<<<<<<<<<<<<
 * 
 * 
 */
    if (!(likely(((__pyx_v_out) == Py_None) || likely(__Pyx_TypeTest(__pyx_v_out, __pyx_ptype_5numpy_ndarray))))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2462; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __pyx_t_7 = ((PyArrayObject *)__pyx_v_out);
    {
      __Pyx_BufFmt_StackElem __pyx_stack[1];
      __Pyx_SafeReleaseBuffer(&__pyx_bstruct_outbuf);
      __pyx_t_8 = __Pyx_GetBufferAndValidate(&__pyx_bstruct_outbuf, (PyObject*)__pyx_t_7, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 2, 0, __pyx_stack);
      if (unlikely(__pyx_t_8 < 0)) {
        PyErr_Fetch(&__pyx_t_11, &__pyx_t_10, &__pyx_t_9);
        if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_outbuf, (PyObject*)__pyx_v_outbuf, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 2, 0, __pyx_stack) == -1)) {
          Py_XDECREF(__pyx_t_11); Py_XDECREF(__pyx_t_10); Py_XDECREF(__pyx_t_9);
          __Pyx_RaiseBufferFallbackError();
        } else {
          PyErr_Restore(__pyx_t_11, __pyx_t_10, __pyx_t_9);
        }
      }
      __pyx_bstride_0_outbuf = __pyx_bstruct_outbuf.strides[0]; __pyx_bstride_1_outbuf = __pyx_bstruct_outbuf.strides[1];
      __pyx_bshape_0_outbuf = __pyx_bstruct_outbuf.shape[0]; __pyx_bshape_1_outbuf = __pyx_bstruct_outbuf.shape[1];
      if (unlikely(__pyx_t_8 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2462; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    }
    __pyx_t_7 = 0;
    __Pyx_INCREF(__pyx_v_out);
    __pyx_v_outbuf = ((PyArrayObject *)__pyx_v_out);
  }
  __pyx_L6:;

  /* "pandas/src/generated.pyx":2465
 * 
 * 
 *     if True and _checknan(fill_value):             # <<<<<<<<<<<<<<
 *         for i in range(n):
 *             idx = idx0[i]
 */
  if (1) {
    __pyx_t_2 = __pyx_f_4util__checknan(__pyx_v_fill_value);
    __pyx_t_12 = __pyx_t_2;
  } else {
    __pyx_t_12 = 1;
  }
  if (__pyx_t_12) {

    /* "pandas/src/generated.pyx":2466
 * 
 *     if True and _checknan(fill_value):
 *         for i in range(n):             # <<<<<<<<<<<<<<
 *             idx = idx0[i]
 *             if idx == -1:
 */
    __pyx_t_1 = __pyx_v_n;
    for (__pyx_t_13 = 0; __pyx_t_13 < __pyx_t_1; __pyx_t_13+=1) {
      __pyx_v_i = __pyx_t_13;

      /* "pandas/src/generated.pyx":2467
 *     if True and _checknan(fill_value):
 *         for i in range(n):
 *             idx = idx0[i]             # <<<<<<<<<<<<<<
 *             if idx == -1:
 *                 for j in range(k):
 */
      __pyx_t_14 = __pyx_v_i;
      __pyx_v_idx = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_bstruct_idx0.buf, __pyx_t_14, __pyx_bstride_0_idx0));

      /* "pandas/src/generated.pyx":2468
 *         for i in range(n):
 *             idx = idx0[i]
 *             if idx == -1:             # <<<<<<<<<<<<<<
 *                 for j in range(k):
 *                     raise ValueError('No NA values allowed')
 */
      __pyx_t_12 = (__pyx_v_idx == -1);
      if (__pyx_t_12) {

        /* "pandas/src/generated.pyx":2469
 *             idx = idx0[i]
 *             if idx == -1:
 *                 for j in range(k):             # <<<<<<<<<<<<<<
 *                     raise ValueError('No NA values allowed')
 *             else:
 */
        __pyx_t_15 = __pyx_v_k;
        for (__pyx_t_16 = 0; __pyx_t_16 < __pyx_t_15; __pyx_t_16+=1) {
          __pyx_v_j = __pyx_t_16;

          /* "pandas/src/generated.pyx":2470
 *             if idx == -1:
 *                 for j in range(k):
 *                     raise ValueError('No NA values allowed')             # <<<<<<<<<<<<<<
 *             else:
 *                 for j in range(k):
 */
          __pyx_t_3 = PyObject_Call(__pyx_builtin_ValueError, ((PyObject *)__pyx_k_tuple_85), NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2470; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
          __Pyx_GOTREF(__pyx_t_3);
          __Pyx_Raise(__pyx_t_3, 0, 0, 0);
          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
          {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2470; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        }
        goto __pyx_L10;
      }
      /*else*/ {

        /* "pandas/src/generated.pyx":2472
 *                     raise ValueError('No NA values allowed')
 *             else:
 *                 for j in range(k):             # <<<<<<<<<<<<<<
 *                     if idx1[j] == -1:
 *                         raise ValueError('No NA values allowed')
 */
        __pyx_t_15 = __pyx_v_k;
        for (__pyx_t_16 = 0; __pyx_t_16 < __pyx_t_15; __pyx_t_16+=1) {
          __pyx_v_j = __pyx_t_16;

          /* "pandas/src/generated.pyx":2473
 *             else:
 *                 for j in range(k):
 *                     if idx1[j] == -1:             # <<<<<<<<<<<<<<
 *                         raise ValueError('No NA values allowed')
 *                     else:
 */
          __pyx_t_17 = __pyx_v_j;
          __pyx_t_12 = ((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_bstruct_idx1.buf, __pyx_t_17, __pyx_bstride_0_idx1)) == -1);
          if (__pyx_t_12) {

            /* "pandas/src/generated.pyx":2474
 *                 for j in range(k):
 *                     if idx1[j] == -1:
 *                         raise ValueError('No NA values allowed')             # <<<<<<<<<<<<<<
 *                     else:
 *                         outbuf[i, j] = values[idx, idx1[j]]
 */
            __pyx_t_3 = PyObject_Call(__pyx_builtin_ValueError, ((PyObject *)__pyx_k_tuple_86), NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2474; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
            __Pyx_GOTREF(__pyx_t_3);
            __Pyx_Raise(__pyx_t_3, 0, 0, 0);
            __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
            {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2474; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
            goto __pyx_L15;
          }
          /*else*/ {

            /* "pandas/src/generated.pyx":2476
 *                         raise ValueError('No NA values allowed')
 *                     else:
 *                         outbuf[i, j] = values[idx, idx1[j]]             # <<<<<<<<<<<<<<
 *     else:
 *         fv = fill_value
 */
            __pyx_t_18 = __pyx_v_j;
            __pyx_t_19 = __pyx_v_idx;
            __pyx_t_20 = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_bstruct_idx1.buf, __pyx_t_18, __pyx_bstride_0_idx1));
            __pyx_t_21 = __pyx_v_i;
            __pyx_t_22 = __pyx_v_j;
            *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_bstruct_outbuf.buf, __pyx_t_21, __pyx_bstride_0_outbuf, __pyx_t_22, __pyx_bstride_1_outbuf) = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_bstruct_values.buf, __pyx_t_19, __pyx_bstride_0_values, __pyx_t_20, __pyx_bstride_1_values));
          }
          __pyx_L15:;
        }
      }
      __pyx_L10:;
    }
    goto __pyx_L7;
  }
  /*else*/ {

    /* "pandas/src/generated.pyx":2478
 *                         outbuf[i, j] = values[idx, idx1[j]]
 *     else:
 *         fv = fill_value             # <<<<<<<<<<<<<<
 *         for i in range(n):
 *             idx = idx0[i]
 */
    __pyx_t_23 = __Pyx_PyInt_from_py_npy_int64(__pyx_v_fill_value); if (unlikely((__pyx_t_23 == (npy_int64)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2478; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __pyx_v_fv = __pyx_t_23;

    /* "pandas/src/generated.pyx":2479
 *     else:
 *         fv = fill_value
 *         for i in range(n):             # <<<<<<<<<<<<<<
 *             idx = idx0[i]
 *             if idx == -1:
 */
    __pyx_t_1 = __pyx_v_n;
    for (__pyx_t_13 = 0; __pyx_t_13 < __pyx_t_1; __pyx_t_13+=1) {
      __pyx_v_i = __pyx_t_13;

      /* "pandas/src/generated.pyx":2480
 *         fv = fill_value
 *         for i in range(n):
 *             idx = idx0[i]             # <<<<<<<<<<<<<<
 *             if idx == -1:
 *                 for j in range(k):
 */
      __pyx_t_15 = __pyx_v_i;
      __pyx_v_idx = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_bstruct_idx0.buf, __pyx_t_15, __pyx_bstride_0_idx0));

      /* "pandas/src/generated.pyx":2481
 *         for i in range(n):
 *             idx = idx0[i]
 *             if idx == -1:             # <<<<<<<<<<<<<<
 *                 for j in range(k):
 *                     outbuf[i, j] = fv
 */
      __pyx_t_12 = (__pyx_v_idx == -1);
      if (__pyx_t_12) {

        /* "pandas/src/generated.pyx":2482
 *             idx = idx0[i]
 *             if idx == -1:
 *                 for j in range(k):             # <<<<<<<<<<<<<<
 *                     outbuf[i, j] = fv
 *             else:
 */
        __pyx_t_16 = __pyx_v_k;
        for (__pyx_t_24 = 0; __pyx_t_24 < __pyx_t_16; __pyx_t_24+=1) {
          __pyx_v_j = __pyx_t_24;

          /* "pandas/src/generated.pyx":2483
 *             if idx == -1:
 *                 for j in range(k):
 *                     outbuf[i, j] = fv             # <<<<<<<<<<<<<<
 *             else:
 *                 for j in range(k):
 */
          __pyx_t_25 = __pyx_v_i;
          __pyx_t_26 = __pyx_v_j;
          *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_bstruct_outbuf.buf, __pyx_t_25, __pyx_bstride_0_outbuf, __pyx_t_26, __pyx_bstride_1_outbuf) = __pyx_v_fv;
        }
        goto __pyx_L18;
      }
      /*else*/ {

        /* "pandas/src/generated.pyx":2485
 *                     outbuf[i, j] = fv
 *             else:
 *                 for j in range(k):             # <<<<<<<<<<<<<<
 *                     if idx1[j] == -1:
 *                         outbuf[i, j] = fv
 */
        __pyx_t_16 = __pyx_v_k;
        for (__pyx_t_24 = 0; __pyx_t_24 < __pyx_t_16; __pyx_t_24+=1) {
          __pyx_v_j = __pyx_t_24;

          /* "pandas/src/generated.pyx":2486
 *             else:
 *                 for j in range(k):
 *                     if idx1[j] == -1:             # <<<<<<<<<<<<<<
 *                         outbuf[i, j] = fv
 *                     else:
 */
          __pyx_t_27 = __pyx_v_j;
          __pyx_t_12 = ((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_bstruct_idx1.buf, __pyx_t_27, __pyx_bstride_0_idx1)) == -1);
          if (__pyx_t_12) {

            /* "pandas/src/generated.pyx":2487
 *                 for j in range(k):
 *                     if idx1[j] == -1:
 *                         outbuf[i, j] = fv             # <<<<<<<<<<<<<<
 *                     else:
 *                         outbuf[i, j] = values[idx, idx1[j]]
 */
            __pyx_t_28 = __pyx_v_i;
            __pyx_t_29 = __pyx_v_j;
            *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_bstruct_outbuf.buf, __pyx_t_28, __pyx_bstride_0_outbuf, __pyx_t_29, __pyx_bstride_1_outbuf) = __pyx_v_fv;
            goto __pyx_L23;
          }
          /*else*/ {

            /* "pandas/src/generated.pyx":2489
 *                         outbuf[i, j] = fv
 *                     else:
 *                         outbuf[i, j] = values[idx, idx1[j]]             # <<<<<<<<<<<<<<
 * 
 * @cython.wraparound(False)
 */
            __pyx_t_30 = __pyx_v_j;
            __pyx_t_31 = __pyx_v_idx;
            __pyx_t_23 = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_bstruct_idx1.buf, __pyx_t_30, __pyx_bstride_0_idx1));
            __pyx_t_32 = __pyx_v_i;
            __pyx_t_33 = __pyx_v_j;
            *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_bstruct_outbuf.buf, __pyx_t_32, __pyx_bstride_0_outbuf, __pyx_t_33, __pyx_bstride_1_outbuf) = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_int64_t *, __pyx_bstruct_values.buf, __pyx_t_31, __pyx_bstride_0_values, __pyx_t_23, __pyx_bstride_1_values));
          }
          __pyx_L23:;
        }
      }
      __pyx_L18:;
    }
  }
  __pyx_L7:;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  { PyObject *__pyx_type, *__pyx_value, *__pyx_tb;
    __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);
    __Pyx_SafeReleaseBuffer(&__pyx_bstruct_outbuf);
    __Pyx_SafeReleaseBuffer(&__pyx_bstruct_values);
    __Pyx_SafeReleaseBuffer(&__pyx_bstruct_idx1);
    __Pyx_SafeReleaseBuffer(&__pyx_bstruct_idx0);
  __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);}
  __Pyx_AddTraceback("pandas._algos.take_2d_multi_int64", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  goto __pyx_L2;
  __pyx_L0:;
  __Pyx_SafeReleaseBuffer(&__pyx_bstruct_outbuf);
  __Pyx_SafeReleaseBuffer(&__pyx_bstruct_values);
  __Pyx_SafeReleaseBuffer(&__pyx_bstruct_idx1);
  __Pyx_SafeReleaseBuffer(&__pyx_bstruct_idx0);
  __pyx_L2:;
  __Pyx_XDECREF((PyObject *)__pyx_v_outbuf);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "pandas/src/generated.pyx":2493
 * @cython.wraparound(False)
 * @cython.boundscheck(False)
 * def take_2d_multi_bool(ndarray[uint8_t, ndim=2] values,             # <<<<<<<<<<<<<<
 *                            ndarray[int64_t] idx0,
 *                            ndarray[int64_t] idx1,
 */

static PyObject *__pyx_pf_6pandas_6_algos_74take_2d_multi_bool(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_6pandas_6_algos_74take_2d_multi_bool = {__Pyx_NAMESTR("take_2d_multi_bool"), (PyCFunction)__pyx_pf_6pandas_6_algos_74take_2d_multi_bool, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(0)};
static PyObject *__pyx_pf_6pandas_6_algos_74take_2d_multi_bool(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyArrayObject *__pyx_v_values = 0;
  PyArrayObject *__pyx_v_idx0 = 0;
  PyArrayObject *__pyx_v_idx1 = 0;
  PyObject *__pyx_v_out = 0;
  PyObject *__pyx_v_fill_value = 0;
  Py_ssize_t __pyx_v_i;
  Py_ssize_t __pyx_v_j;
  Py_ssize_t __pyx_v_k;
  Py_ssize_t __pyx_v_n;
  Py_ssize_t __pyx_v_idx;
  PyArrayObject *__pyx_v_outbuf = 0;
  __pyx_t_5numpy_uint8_t __pyx_v_fv;
  Py_buffer __pyx_bstruct_outbuf;
  Py_ssize_t __pyx_bstride_0_outbuf = 0;
  Py_ssize_t __pyx_bstride_1_outbuf = 0;
  Py_ssize_t __pyx_bshape_0_outbuf = 0;
  Py_ssize_t __pyx_bshape_1_outbuf = 0;
  Py_buffer __pyx_bstruct_values;
  Py_ssize_t __pyx_bstride_0_values = 0;
  Py_ssize_t __pyx_bstride_1_values = 0;
  Py_ssize_t __pyx_bshape_0_values = 0;
  Py_ssize_t __pyx_bshape_1_values = 0;
  Py_buffer __pyx_bstruct_idx1;
  Py_ssize_t __pyx_bstride_0_idx1 = 0;
  Py_ssize_t __pyx_bshape_0_idx1 = 0;
  Py_buffer __pyx_bstruct_idx0;
  Py_ssize_t __pyx_bstride_0_idx0 = 0;
  Py_ssize_t __pyx_bshape_0_idx0 = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  Py_ssize_t __pyx_t_1;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  PyArrayObject *__pyx_t_7 = NULL;
  int __pyx_t_8;
  PyObject *__pyx_t_9 = NULL;
  PyObject *__pyx_t_10 = NULL;
  PyObject *__pyx_t_11 = NULL;
  int __pyx_t_12;
  Py_ssize_t __pyx_t_13;
  Py_ssize_t __pyx_t_14;
  Py_ssize_t __pyx_t_15;
  Py_ssize_t __pyx_t_16;
  Py_ssize_t __pyx_t_17;
  Py_ssize_t __pyx_t_18;
  Py_ssize_t __pyx_t_19;
  __pyx_t_5numpy_int64_t __pyx_t_20;
  Py_ssize_t __pyx_t_21;
  Py_ssize_t __pyx_t_22;
  __pyx_t_5numpy_uint8_t __pyx_t_23;
  Py_ssize_t __pyx_t_24;
  Py_ssize_t __pyx_t_25;
  Py_ssize_t __pyx_t_26;
  Py_ssize_t __pyx_t_27;
  Py_ssize_t __pyx_t_28;
  Py_ssize_t __pyx_t_29;
  Py_ssize_t __pyx_t_30;
  Py_ssize_t __pyx_t_31;
  __pyx_t_5numpy_int64_t __pyx_t_32;
  Py_ssize_t __pyx_t_33;
  Py_ssize_t __pyx_t_34;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__values,&__pyx_n_s__idx0,&__pyx_n_s__idx1,&__pyx_n_s__out,&__pyx_n_s__fill_value,0};
  __Pyx_RefNannySetupContext("take_2d_multi_bool");
  __pyx_self = __pyx_self;
  {
    PyObject* values[5] = {0,0,0,0,0};

    /* "pandas/src/generated.pyx":2496
 *                            ndarray[int64_t] idx0,
 *                            ndarray[int64_t] idx1,
 *                            out=None, fill_value=np.nan):             # <<<<<<<<<<<<<<
 *     cdef:
 *         Py_ssize_t i, j, k, n, idx
 */
    values[3] = ((PyObject *)Py_None);
    values[4] = __pyx_k_87;
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  0:
        values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__values);
        if (likely(values[0])) kw_args--;
        else goto __pyx_L5_argtuple_error;
        case  1:
        values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__idx0);
        if (likely(values[1])) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("take_2d_multi_bool", 0, 3, 5, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2493; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
        }
        case  2:
        values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__idx1);
        if (likely(values[2])) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("take_2d_multi_bool", 0, 3, 5, 2); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2493; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
        }
        case  3:
        if (kw_args > 0) {
          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__out);
          if (value) { values[3] = value; kw_args--; }
        }
        case  4:
        if (kw_args > 0) {
          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s__fill_value);
          if (value) { values[4] = value; kw_args--; }
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "take_2d_multi_bool") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2493; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
    } else {
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_values = ((PyArrayObject *)values[0]);
    __pyx_v_idx0 = ((PyArrayObject *)values[1]);
    __pyx_v_idx1 = ((PyArrayObject *)values[2]);
    __pyx_v_out = values[3];
    __pyx_v_fill_value = values[4];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("take_2d_multi_bool", 0, 3, 5, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2493; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("pandas._algos.take_2d_multi_bool", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_bstruct_outbuf.buf = NULL;
  __pyx_bstruct_values.buf = NULL;
  __pyx_bstruct_idx0.buf = NULL;
  __pyx_bstruct_idx1.buf = NULL;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_values), __pyx_ptype_5numpy_ndarray, 1, "values", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2493; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_idx0), __pyx_ptype_5numpy_ndarray, 1, "idx0", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2494; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_idx1), __pyx_ptype_5numpy_ndarray, 1, "idx1", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2495; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_values, (PyObject*)__pyx_v_values, &__Pyx_TypeInfo_nn___pyx_t_5numpy_uint8_t, PyBUF_FORMAT| PyBUF_STRIDES, 2, 0, __pyx_stack) == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2493; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  }
  __pyx_bstride_0_values = __pyx_bstruct_values.strides[0]; __pyx_bstride_1_values = __pyx_bstruct_values.strides[1];
  __pyx_bshape_0_values = __pyx_bstruct_values.shape[0]; __pyx_bshape_1_values = __pyx_bstruct_values.shape[1];
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_idx0, (PyObject*)__pyx_v_idx0, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2493; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  }
  __pyx_bstride_0_idx0 = __pyx_bstruct_idx0.strides[0];
  __pyx_bshape_0_idx0 = __pyx_bstruct_idx0.shape[0];
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_idx1, (PyObject*)__pyx_v_idx1, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2493; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  }
  __pyx_bstride_0_idx1 = __pyx_bstruct_idx1.strides[0];
  __pyx_bshape_0_idx1 = __pyx_bstruct_idx1.shape[0];

  /* "pandas/src/generated.pyx":2502
 *         uint8_t fv
 * 
 *     n = len(idx0)             # <<<<<<<<<<<<<<
 *     k = len(idx1)
 * 
 */
  __pyx_t_1 = PyObject_Length(((PyObject *)__pyx_v_idx0)); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2502; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_v_n = __pyx_t_1;

  /* "pandas/src/generated.pyx":2503
 * 
 *     n = len(idx0)
 *     k = len(idx1)             # <<<<<<<<<<<<<<
 * 
 *     if out is None:
 */
  __pyx_t_1 = PyObject_Length(((PyObject *)__pyx_v_idx1)); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2503; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_v_k = __pyx_t_1;

  /* "pandas/src/generated.pyx":2505
 *     k = len(idx1)
 * 
 *     if out is None:             # <<<<<<<<<<<<<<
 *         outbuf = np.empty((n, k), dtype=values.dtype)
 *     else:
 */
  __pyx_t_2 = (__pyx_v_out == Py_None);
  if (__pyx_t_2) {

    /* "pandas/src/generated.pyx":2506
 * 
 *     if out is None:
 *         outbuf = np.empty((n, k), dtype=values.dtype)             # <<<<<<<<<<<<<<
 *     else:
 *         outbuf = out
 */
    __pyx_t_3 = __Pyx_GetName(__pyx_m, __pyx_n_s__np); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2506; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_4 = PyObject_GetAttr(__pyx_t_3, __pyx_n_s__empty); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2506; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __pyx_t_3 = PyInt_FromSsize_t(__pyx_v_n); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2506; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_5 = PyInt_FromSsize_t(__pyx_v_k); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2506; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_6 = PyTuple_New(2); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2506; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(((PyObject *)__pyx_t_6));
    PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_3);
    __Pyx_GIVEREF(__pyx_t_3);
    PyTuple_SET_ITEM(__pyx_t_6, 1, __pyx_t_5);
    __Pyx_GIVEREF(__pyx_t_5);
    __pyx_t_3 = 0;
    __pyx_t_5 = 0;
    __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2506; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(((PyObject *)__pyx_t_5));
    PyTuple_SET_ITEM(__pyx_t_5, 0, ((PyObject *)__pyx_t_6));
    __Pyx_GIVEREF(((PyObject *)__pyx_t_6));
    __pyx_t_6 = 0;
    __pyx_t_6 = PyDict_New(); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2506; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(((PyObject *)__pyx_t_6));
    __pyx_t_3 = PyObject_GetAttr(((PyObject *)__pyx_v_values), __pyx_n_s__dtype); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2506; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    if (PyDict_SetItem(__pyx_t_6, ((PyObject *)__pyx_n_s__dtype), __pyx_t_3) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2506; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __pyx_t_3 = PyEval_CallObjectWithKeywords(__pyx_t_4, ((PyObject *)__pyx_t_5), ((PyObject *)__pyx_t_6)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2506; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_DECREF(((PyObject *)__pyx_t_5)); __pyx_t_5 = 0;
    __Pyx_DECREF(((PyObject *)__pyx_t_6)); __pyx_t_6 = 0;
    if (!(likely(((__pyx_t_3) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_3, __pyx_ptype_5numpy_ndarray))))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2506; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __pyx_t_7 = ((PyArrayObject *)__pyx_t_3);
    {
      __Pyx_BufFmt_StackElem __pyx_stack[1];
      __Pyx_SafeReleaseBuffer(&__pyx_bstruct_outbuf);
      __pyx_t_8 = __Pyx_GetBufferAndValidate(&__pyx_bstruct_outbuf, (PyObject*)__pyx_t_7, &__Pyx_TypeInfo_nn___pyx_t_5numpy_uint8_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 2, 0, __pyx_stack);
      if (unlikely(__pyx_t_8 < 0)) {
        PyErr_Fetch(&__pyx_t_9, &__pyx_t_10, &__pyx_t_11);
        if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_outbuf, (PyObject*)__pyx_v_outbuf, &__Pyx_TypeInfo_nn___pyx_t_5numpy_uint8_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 2, 0, __pyx_stack) == -1)) {
          Py_XDECREF(__pyx_t_9); Py_XDECREF(__pyx_t_10); Py_XDECREF(__pyx_t_11);
          __Pyx_RaiseBufferFallbackError();
        } else {
          PyErr_Restore(__pyx_t_9, __pyx_t_10, __pyx_t_11);
        }
      }
      __pyx_bstride_0_outbuf = __pyx_bstruct_outbuf.strides[0]; __pyx_bstride_1_outbuf = __pyx_bstruct_outbuf.strides[1];
      __pyx_bshape_0_outbuf = __pyx_bstruct_outbuf.shape[0]; __pyx_bshape_1_outbuf = __pyx_bstruct_outbuf.shape[1];
      if (unlikely(__pyx_t_8 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2506; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    }
    __pyx_t_7 = 0;
    __pyx_v_outbuf = ((PyArrayObject *)__pyx_t_3);
    __pyx_t_3 = 0;
    goto __pyx_L6;
  }
  /*else*/ {

    /* "pandas/src/generated.pyx":2508
 *         outbuf = np.empty((n, k), dtype=values.dtype)
 *     else:
 *         outbuf = out             # <<<<<<<<<<<<<<
 * 
 * 
 */
    if (!(likely(((__pyx_v_out) == Py_None) || likely(__Pyx_TypeTest(__pyx_v_out, __pyx_ptype_5numpy_ndarray))))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2508; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __pyx_t_7 = ((PyArrayObject *)__pyx_v_out);
    {
      __Pyx_BufFmt_StackElem __pyx_stack[1];
      __Pyx_SafeReleaseBuffer(&__pyx_bstruct_outbuf);
      __pyx_t_8 = __Pyx_GetBufferAndValidate(&__pyx_bstruct_outbuf, (PyObject*)__pyx_t_7, &__Pyx_TypeInfo_nn___pyx_t_5numpy_uint8_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 2, 0, __pyx_stack);
      if (unlikely(__pyx_t_8 < 0)) {
        PyErr_Fetch(&__pyx_t_11, &__pyx_t_10, &__pyx_t_9);
        if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_outbuf, (PyObject*)__pyx_v_outbuf, &__Pyx_TypeInfo_nn___pyx_t_5numpy_uint8_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 2, 0, __pyx_stack) == -1)) {
          Py_XDECREF(__pyx_t_11); Py_XDECREF(__pyx_t_10); Py_XDECREF(__pyx_t_9);
          __Pyx_RaiseBufferFallbackError();
        } else {
          PyErr_Restore(__pyx_t_11, __pyx_t_10, __pyx_t_9);
        }
      }
      __pyx_bstride_0_outbuf = __pyx_bstruct_outbuf.strides[0]; __pyx_bstride_1_outbuf = __pyx_bstruct_outbuf.strides[1];
      __pyx_bshape_0_outbuf = __pyx_bstruct_outbuf.shape[0]; __pyx_bshape_1_outbuf = __pyx_bstruct_outbuf.shape[1];
      if (unlikely(__pyx_t_8 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2508; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    }
    __pyx_t_7 = 0;
    __Pyx_INCREF(__pyx_v_out);
    __pyx_v_outbuf = ((PyArrayObject *)__pyx_v_out);
  }
  __pyx_L6:;

  /* "pandas/src/generated.pyx":2511
 * 
 * 
 *     if True and _checknan(fill_value):             # <<<<<<<<<<<<<<
 *         for i in range(n):
 *             idx = idx0[i]
 */
  if (1) {
    __pyx_t_2 = __pyx_f_4util__checknan(__pyx_v_fill_value);
    __pyx_t_12 = __pyx_t_2;
  } else {
    __pyx_t_12 = 1;
  }
  if (__pyx_t_12) {

    /* "pandas/src/generated.pyx":2512
 * 
 *     if True and _checknan(fill_value):
 *         for i in range(n):             # <<<<<<<<<<<<<<
 *             idx = idx0[i]
 *             if idx == -1:
 */
    __pyx_t_1 = __pyx_v_n;
    for (__pyx_t_13 = 0; __pyx_t_13 < __pyx_t_1; __pyx_t_13+=1) {
      __pyx_v_i = __pyx_t_13;

      /* "pandas/src/generated.pyx":2513
 *     if True and _checknan(fill_value):
 *         for i in range(n):
 *             idx = idx0[i]             # <<<<<<<<<<<<<<
 *             if idx == -1:
 *                 for j in range(k):
 */
      __pyx_t_14 = __pyx_v_i;
      __pyx_v_idx = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_bstruct_idx0.buf, __pyx_t_14, __pyx_bstride_0_idx0));

      /* "pandas/src/generated.pyx":2514
 *         for i in range(n):
 *             idx = idx0[i]
 *             if idx == -1:             # <<<<<<<<<<<<<<
 *                 for j in range(k):
 *                     raise ValueError('No NA values allowed')
 */
      __pyx_t_12 = (__pyx_v_idx == -1);
      if (__pyx_t_12) {

        /* "pandas/src/generated.pyx":2515
 *             idx = idx0[i]
 *             if idx == -1:
 *                 for j in range(k):             # <<<<<<<<<<<<<<
 *                     raise ValueError('No NA values allowed')
 *             else:
 */
        __pyx_t_15 = __pyx_v_k;
        for (__pyx_t_16 = 0; __pyx_t_16 < __pyx_t_15; __pyx_t_16+=1) {
          __pyx_v_j = __pyx_t_16;

          /* "pandas/src/generated.pyx":2516
 *             if idx == -1:
 *                 for j in range(k):
 *                     raise ValueError('No NA values allowed')             # <<<<<<<<<<<<<<
 *             else:
 *                 for j in range(k):
 */
          __pyx_t_3 = PyObject_Call(__pyx_builtin_ValueError, ((PyObject *)__pyx_k_tuple_88), NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2516; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
          __Pyx_GOTREF(__pyx_t_3);
          __Pyx_Raise(__pyx_t_3, 0, 0, 0);
          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
          {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2516; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        }
        goto __pyx_L10;
      }
      /*else*/ {

        /* "pandas/src/generated.pyx":2518
 *                     raise ValueError('No NA values allowed')
 *             else:
 *                 for j in range(k):             # <<<<<<<<<<<<<<
 *                     if idx1[j] == -1:
 *                         raise ValueError('No NA values allowed')
 */
        __pyx_t_15 = __pyx_v_k;
        for (__pyx_t_16 = 0; __pyx_t_16 < __pyx_t_15; __pyx_t_16+=1) {
          __pyx_v_j = __pyx_t_16;

          /* "pandas/src/generated.pyx":2519
 *             else:
 *                 for j in range(k):
 *                     if idx1[j] == -1:             # <<<<<<<<<<<<<<
 *                         raise ValueError('No NA values allowed')
 *                     else:
 */
          __pyx_t_17 = __pyx_v_j;
          __pyx_t_12 = ((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_bstruct_idx1.buf, __pyx_t_17, __pyx_bstride_0_idx1)) == -1);
          if (__pyx_t_12) {

            /* "pandas/src/generated.pyx":2520
 *                 for j in range(k):
 *                     if idx1[j] == -1:
 *                         raise ValueError('No NA values allowed')             # <<<<<<<<<<<<<<
 *                     else:
 *                         outbuf[i, j] = values[idx, idx1[j]]
 */
            __pyx_t_3 = PyObject_Call(__pyx_builtin_ValueError, ((PyObject *)__pyx_k_tuple_89), NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2520; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
            __Pyx_GOTREF(__pyx_t_3);
            __Pyx_Raise(__pyx_t_3, 0, 0, 0);
            __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
            {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2520; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
            goto __pyx_L15;
          }
          /*else*/ {

            /* "pandas/src/generated.pyx":2522
 *                         raise ValueError('No NA values allowed')
 *                     else:
 *                         outbuf[i, j] = values[idx, idx1[j]]             # <<<<<<<<<<<<<<
 *     else:
 *         fv = fill_value
 */
            __pyx_t_18 = __pyx_v_j;
            __pyx_t_19 = __pyx_v_idx;
            __pyx_t_20 = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_bstruct_idx1.buf, __pyx_t_18, __pyx_bstride_0_idx1));
            __pyx_t_21 = __pyx_v_i;
            __pyx_t_22 = __pyx_v_j;
            *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_uint8_t *, __pyx_bstruct_outbuf.buf, __pyx_t_21, __pyx_bstride_0_outbuf, __pyx_t_22, __pyx_bstride_1_outbuf) = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_uint8_t *, __pyx_bstruct_values.buf, __pyx_t_19, __pyx_bstride_0_values, __pyx_t_20, __pyx_bstride_1_values));
          }
          __pyx_L15:;
        }
      }
      __pyx_L10:;
    }
    goto __pyx_L7;
  }
  /*else*/ {

    /* "pandas/src/generated.pyx":2524
 *                         outbuf[i, j] = values[idx, idx1[j]]
 *     else:
 *         fv = fill_value             # <<<<<<<<<<<<<<
 *         for i in range(n):
 *             idx = idx0[i]
 */
    __pyx_t_23 = __Pyx_PyInt_from_py_npy_uint8(__pyx_v_fill_value); if (unlikely((__pyx_t_23 == (npy_uint8)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2524; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __pyx_v_fv = __pyx_t_23;

    /* "pandas/src/generated.pyx":2525
 *     else:
 *         fv = fill_value
 *         for i in range(n):             # <<<<<<<<<<<<<<
 *             idx = idx0[i]
 *             if idx == -1:
 */
    __pyx_t_1 = __pyx_v_n;
    for (__pyx_t_13 = 0; __pyx_t_13 < __pyx_t_1; __pyx_t_13+=1) {
      __pyx_v_i = __pyx_t_13;

      /* "pandas/src/generated.pyx":2526
 *         fv = fill_value
 *         for i in range(n):
 *             idx = idx0[i]             # <<<<<<<<<<<<<<
 *             if idx == -1:
 *                 for j in range(k):
 */
      __pyx_t_15 = __pyx_v_i;
      __pyx_v_idx = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_bstruct_idx0.buf, __pyx_t_15, __pyx_bstride_0_idx0));

      /* "pandas/src/generated.pyx":2527
 *         for i in range(n):
 *             idx = idx0[i]
 *             if idx == -1:             # <<<<<<<<<<<<<<
 *                 for j in range(k):
 *                     outbuf[i, j] = fv
 */
      __pyx_t_12 = (__pyx_v_idx == -1);
      if (__pyx_t_12) {

        /* "pandas/src/generated.pyx":2528
 *             idx = idx0[i]
 *             if idx == -1:
 *                 for j in range(k):             # <<<<<<<<<<<<<<
 *                     outbuf[i, j] = fv
 *             else:
 */
        __pyx_t_16 = __pyx_v_k;
        for (__pyx_t_24 = 0; __pyx_t_24 < __pyx_t_16; __pyx_t_24+=1) {
          __pyx_v_j = __pyx_t_24;

          /* "pandas/src/generated.pyx":2529
 *             if idx == -1:
 *                 for j in range(k):
 *                     outbuf[i, j] = fv             # <<<<<<<<<<<<<<
 *             else:
 *                 for j in range(k):
 */
          __pyx_t_25 = __pyx_v_i;
          __pyx_t_26 = __pyx_v_j;
          *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_uint8_t *, __pyx_bstruct_outbuf.buf, __pyx_t_25, __pyx_bstride_0_outbuf, __pyx_t_26, __pyx_bstride_1_outbuf) = __pyx_v_fv;
        }
        goto __pyx_L18;
      }
      /*else*/ {

        /* "pandas/src/generated.pyx":2531
 *                     outbuf[i, j] = fv
 *             else:
 *                 for j in range(k):             # <<<<<<<<<<<<<<
 *                     if idx1[j] == -1:
 *                         outbuf[i, j] = fv
 */
        __pyx_t_16 = __pyx_v_k;
        for (__pyx_t_24 = 0; __pyx_t_24 < __pyx_t_16; __pyx_t_24+=1) {
          __pyx_v_j = __pyx_t_24;

          /* "pandas/src/generated.pyx":2532
 *             else:
 *                 for j in range(k):
 *                     if idx1[j] == -1:             # <<<<<<<<<<<<<<
 *                         outbuf[i, j] = fv
 *                     else:
 */
          __pyx_t_27 = __pyx_v_j;
          __pyx_t_12 = ((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_bstruct_idx1.buf, __pyx_t_27, __pyx_bstride_0_idx1)) == -1);
          if (__pyx_t_12) {

            /* "pandas/src/generated.pyx":2533
 *                 for j in range(k):
 *                     if idx1[j] == -1:
 *                         outbuf[i, j] = fv             # <<<<<<<<<<<<<<
 *                     else:
 *                         outbuf[i, j] = values[idx, idx1[j]]
 */
            __pyx_t_28 = __pyx_v_i;
            __pyx_t_29 = __pyx_v_j;
            *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_uint8_t *, __pyx_bstruct_outbuf.buf, __pyx_t_28, __pyx_bstride_0_outbuf, __pyx_t_29, __pyx_bstride_1_outbuf) = __pyx_v_fv;
            goto __pyx_L23;
          }
          /*else*/ {

            /* "pandas/src/generated.pyx":2535
 *                         outbuf[i, j] = fv
 *                     else:
 *                         outbuf[i, j] = values[idx, idx1[j]]             # <<<<<<<<<<<<<<
 * 
 * 
 */
            __pyx_t_30 = __pyx_v_j;
            __pyx_t_31 = __pyx_v_idx;
            __pyx_t_32 = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_bstruct_idx1.buf, __pyx_t_30, __pyx_bstride_0_idx1));
            __pyx_t_33 = __pyx_v_i;
            __pyx_t_34 = __pyx_v_j;
            *__Pyx_BufPtrStrided2d(__pyx_t_5numpy_uint8_t *, __pyx_bstruct_outbuf.buf, __pyx_t_33, __pyx_bstride_0_outbuf, __pyx_t_34, __pyx_bstride_1_outbuf) = (*__Pyx_BufPtrStrided2d(__pyx_t_5numpy_uint8_t *, __pyx_bstruct_values.buf, __pyx_t_31, __pyx_bstride_0_values, __pyx_t_32, __pyx_bstride_1_values));
          }
          __pyx_L23:;
        }
      }
      __pyx_L18:;
    }
  }
  __pyx_L7:;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  { PyObject *__pyx_type, *__pyx_value, *__pyx_tb;
    __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);
    __Pyx_SafeReleaseBuffer(&__pyx_bstruct_outbuf);
    __Pyx_SafeReleaseBuffer(&__pyx_bstruct_values);
    __Pyx_SafeReleaseBuffer(&__pyx_bstruct_idx1);
    __Pyx_SafeReleaseBuffer(&__pyx_bstruct_idx0);
  __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);}
  __Pyx_AddTraceback("pandas._algos.take_2d_multi_bool", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  goto __pyx_L2;
  __pyx_L0:;
  __Pyx_SafeReleaseBuffer(&__pyx_bstruct_outbuf);
  __Pyx_SafeReleaseBuffer(&__pyx_bstruct_values);
  __Pyx_SafeReleaseBuffer(&__pyx_bstruct_idx1);
  __Pyx_SafeReleaseBuffer(&__pyx_bstruct_idx0);
  __pyx_L2:;
  __Pyx_XDECREF((PyObject *)__pyx_v_outbuf);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "pandas/src/generated.pyx":2540
 * @cython.wraparound(False)
 * @cython.boundscheck(False)
 * def left_join_indexer_unique_float64(ndarray[float64_t] left,             # <<<<<<<<<<<<<<
 *                                       ndarray[float64_t] right):
 *     cdef:
 */

static PyObject *__pyx_pf_6pandas_6_algos_75left_join_indexer_unique_float64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_6pandas_6_algos_75left_join_indexer_unique_float64 = {__Pyx_NAMESTR("left_join_indexer_unique_float64"), (PyCFunction)__pyx_pf_6pandas_6_algos_75left_join_indexer_unique_float64, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(0)};
static PyObject *__pyx_pf_6pandas_6_algos_75left_join_indexer_unique_float64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyArrayObject *__pyx_v_left = 0;
  PyArrayObject *__pyx_v_right = 0;
  Py_ssize_t __pyx_v_i;
  Py_ssize_t __pyx_v_j;
  Py_ssize_t __pyx_v_nleft;
  Py_ssize_t __pyx_v_nright;
  PyArrayObject *__pyx_v_indexer = 0;
  __pyx_t_5numpy_float64_t __pyx_v_rval;
  Py_buffer __pyx_bstruct_right;
  Py_ssize_t __pyx_bstride_0_right = 0;
  Py_ssize_t __pyx_bshape_0_right = 0;
  Py_buffer __pyx_bstruct_indexer;
  Py_ssize_t __pyx_bstride_0_indexer = 0;
  Py_ssize_t __pyx_bshape_0_indexer = 0;
  Py_buffer __pyx_bstruct_left;
  Py_ssize_t __pyx_bstride_0_left = 0;
  Py_ssize_t __pyx_bshape_0_left = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  Py_ssize_t __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  PyArrayObject *__pyx_t_7 = NULL;
  int __pyx_t_8;
  PyObject *__pyx_t_9 = NULL;
  PyObject *__pyx_t_10 = NULL;
  PyObject *__pyx_t_11 = NULL;
  int __pyx_t_12;
  Py_ssize_t __pyx_t_13;
  Py_ssize_t __pyx_t_14;
  int __pyx_t_15;
  int __pyx_t_16;
  Py_ssize_t __pyx_t_17;
  Py_ssize_t __pyx_t_18;
  Py_ssize_t __pyx_t_19;
  Py_ssize_t __pyx_t_20;
  Py_ssize_t __pyx_t_21;
  Py_ssize_t __pyx_t_22;
  Py_ssize_t __pyx_t_23;
  Py_ssize_t __pyx_t_24;
  Py_ssize_t __pyx_t_25;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__left,&__pyx_n_s__right,0};
  __Pyx_RefNannySetupContext("left_join_indexer_unique_float64");
  __pyx_self = __pyx_self;
  {
    PyObject* values[2] = {0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  0:
        values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__left);
        if (likely(values[0])) kw_args--;
        else goto __pyx_L5_argtuple_error;
        case  1:
        values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__right);
        if (likely(values[1])) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("left_join_indexer_unique_float64", 1, 2, 2, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2540; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "left_join_indexer_unique_float64") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2540; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
    }
    __pyx_v_left = ((PyArrayObject *)values[0]);
    __pyx_v_right = ((PyArrayObject *)values[1]);
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("left_join_indexer_unique_float64", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2540; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("pandas._algos.left_join_indexer_unique_float64", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_bstruct_indexer.buf = NULL;
  __pyx_bstruct_left.buf = NULL;
  __pyx_bstruct_right.buf = NULL;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_left), __pyx_ptype_5numpy_ndarray, 1, "left", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2540; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_right), __pyx_ptype_5numpy_ndarray, 1, "right", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2541; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_left, (PyObject*)__pyx_v_left, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2540; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  }
  __pyx_bstride_0_left = __pyx_bstruct_left.strides[0];
  __pyx_bshape_0_left = __pyx_bstruct_left.shape[0];
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_right, (PyObject*)__pyx_v_right, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2540; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  }
  __pyx_bstride_0_right = __pyx_bstruct_right.strides[0];
  __pyx_bshape_0_right = __pyx_bstruct_right.shape[0];

  /* "pandas/src/generated.pyx":2547
 *         float64_t lval, rval
 * 
 *     i = 0             # <<<<<<<<<<<<<<
 *     j = 0
 *     nleft = len(left)
 */
  __pyx_v_i = 0;

  /* "pandas/src/generated.pyx":2548
 * 
 *     i = 0
 *     j = 0             # <<<<<<<<<<<<<<
 *     nleft = len(left)
 *     nright = len(right)
 */
  __pyx_v_j = 0;

  /* "pandas/src/generated.pyx":2549
 *     i = 0
 *     j = 0
 *     nleft = len(left)             # <<<<<<<<<<<<<<
 *     nright = len(right)
 * 
 */
  __pyx_t_1 = PyObject_Length(((PyObject *)__pyx_v_left)); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2549; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_v_nleft = __pyx_t_1;

  /* "pandas/src/generated.pyx":2550
 *     j = 0
 *     nleft = len(left)
 *     nright = len(right)             # <<<<<<<<<<<<<<
 * 
 *     indexer = np.empty(nleft, dtype=np.int64)
 */
  __pyx_t_1 = PyObject_Length(((PyObject *)__pyx_v_right)); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2550; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_v_nright = __pyx_t_1;

  /* "pandas/src/generated.pyx":2552
 *     nright = len(right)
 * 
 *     indexer = np.empty(nleft, dtype=np.int64)             # <<<<<<<<<<<<<<
 *     while True:
 *         if i == nleft:
 */
  __pyx_t_2 = __Pyx_GetName(__pyx_m, __pyx_n_s__np); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2552; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = PyObject_GetAttr(__pyx_t_2, __pyx_n_s__empty); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2552; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = PyInt_FromSsize_t(__pyx_v_nleft); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2552; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2552; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_4));
  PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_2);
  __Pyx_GIVEREF(__pyx_t_2);
  __pyx_t_2 = 0;
  __pyx_t_2 = PyDict_New(); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2552; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_2));
  __pyx_t_5 = __Pyx_GetName(__pyx_m, __pyx_n_s__np); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2552; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_6 = PyObject_GetAttr(__pyx_t_5, __pyx_n_s__int64); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2552; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  if (PyDict_SetItem(__pyx_t_2, ((PyObject *)__pyx_n_s__dtype), __pyx_t_6) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2552; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __pyx_t_6 = PyEval_CallObjectWithKeywords(__pyx_t_3, ((PyObject *)__pyx_t_4), ((PyObject *)__pyx_t_2)); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2552; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_DECREF(((PyObject *)__pyx_t_4)); __pyx_t_4 = 0;
  __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0;
  if (!(likely(((__pyx_t_6) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_6, __pyx_ptype_5numpy_ndarray))))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2552; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_t_7 = ((PyArrayObject *)__pyx_t_6);
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    __Pyx_SafeReleaseBuffer(&__pyx_bstruct_indexer);
    __pyx_t_8 = __Pyx_GetBufferAndValidate(&__pyx_bstruct_indexer, (PyObject*)__pyx_t_7, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack);
    if (unlikely(__pyx_t_8 < 0)) {
      PyErr_Fetch(&__pyx_t_9, &__pyx_t_10, &__pyx_t_11);
      if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_indexer, (PyObject*)__pyx_v_indexer, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) {
        Py_XDECREF(__pyx_t_9); Py_XDECREF(__pyx_t_10); Py_XDECREF(__pyx_t_11);
        __Pyx_RaiseBufferFallbackError();
      } else {
        PyErr_Restore(__pyx_t_9, __pyx_t_10, __pyx_t_11);
      }
    }
    __pyx_bstride_0_indexer = __pyx_bstruct_indexer.strides[0];
    __pyx_bshape_0_indexer = __pyx_bstruct_indexer.shape[0];
    if (unlikely(__pyx_t_8 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2552; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  }
  __pyx_t_7 = 0;
  __pyx_v_indexer = ((PyArrayObject *)__pyx_t_6);
  __pyx_t_6 = 0;

  /* "pandas/src/generated.pyx":2553
 * 
 *     indexer = np.empty(nleft, dtype=np.int64)
 *     while True:             # <<<<<<<<<<<<<<
 *         if i == nleft:
 *             break
 */
  while (1) {
    if (!1) break;

    /* "pandas/src/generated.pyx":2554
 *     indexer = np.empty(nleft, dtype=np.int64)
 *     while True:
 *         if i == nleft:             # <<<<<<<<<<<<<<
 *             break
 * 
 */
    __pyx_t_12 = (__pyx_v_i == __pyx_v_nleft);
    if (__pyx_t_12) {

      /* "pandas/src/generated.pyx":2555
 *     while True:
 *         if i == nleft:
 *             break             # <<<<<<<<<<<<<<
 * 
 *         if j == nright:
 */
      goto __pyx_L7_break;
      goto __pyx_L8;
    }
    __pyx_L8:;

    /* "pandas/src/generated.pyx":2557
 *             break
 * 
 *         if j == nright:             # <<<<<<<<<<<<<<
 *             indexer[i] = -1
 *             i += 1
 */
    __pyx_t_12 = (__pyx_v_j == __pyx_v_nright);
    if (__pyx_t_12) {

      /* "pandas/src/generated.pyx":2558
 * 
 *         if j == nright:
 *             indexer[i] = -1             # <<<<<<<<<<<<<<
 *             i += 1
 *             continue
 */
      __pyx_t_1 = __pyx_v_i;
      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_bstruct_indexer.buf, __pyx_t_1, __pyx_bstride_0_indexer) = -1;

      /* "pandas/src/generated.pyx":2559
 *         if j == nright:
 *             indexer[i] = -1
 *             i += 1             # <<<<<<<<<<<<<<
 *             continue
 * 
 */
      __pyx_v_i = (__pyx_v_i + 1);

      /* "pandas/src/generated.pyx":2560
 *             indexer[i] = -1
 *             i += 1
 *             continue             # <<<<<<<<<<<<<<
 * 
 *         rval = right[j]
 */
      goto __pyx_L6_continue;
      goto __pyx_L9;
    }
    __pyx_L9:;

    /* "pandas/src/generated.pyx":2562
 *             continue
 * 
 *         rval = right[j]             # <<<<<<<<<<<<<<
 * 
 *         while i < nleft - 1 and left[i] == rval:
 */
    __pyx_t_13 = __pyx_v_j;
    __pyx_v_rval = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_right.buf, __pyx_t_13, __pyx_bstride_0_right));

    /* "pandas/src/generated.pyx":2564
 *         rval = right[j]
 * 
 *         while i < nleft - 1 and left[i] == rval:             # <<<<<<<<<<<<<<
 *             indexer[i] = j
 *             i += 1
 */
    while (1) {
      __pyx_t_12 = (__pyx_v_i < (__pyx_v_nleft - 1));
      if (__pyx_t_12) {
        __pyx_t_14 = __pyx_v_i;
        __pyx_t_15 = ((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_left.buf, __pyx_t_14, __pyx_bstride_0_left)) == __pyx_v_rval);
        __pyx_t_16 = __pyx_t_15;
      } else {
        __pyx_t_16 = __pyx_t_12;
      }
      if (!__pyx_t_16) break;

      /* "pandas/src/generated.pyx":2565
 * 
 *         while i < nleft - 1 and left[i] == rval:
 *             indexer[i] = j             # <<<<<<<<<<<<<<
 *             i += 1
 * 
 */
      __pyx_t_17 = __pyx_v_i;
      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_bstruct_indexer.buf, __pyx_t_17, __pyx_bstride_0_indexer) = __pyx_v_j;

      /* "pandas/src/generated.pyx":2566
 *         while i < nleft - 1 and left[i] == rval:
 *             indexer[i] = j
 *             i += 1             # <<<<<<<<<<<<<<
 * 
 *         if left[i] == right[j]:
 */
      __pyx_v_i = (__pyx_v_i + 1);
    }

    /* "pandas/src/generated.pyx":2568
 *             i += 1
 * 
 *         if left[i] == right[j]:             # <<<<<<<<<<<<<<
 *             indexer[i] = j
 *             i += 1
 */
    __pyx_t_18 = __pyx_v_i;
    __pyx_t_19 = __pyx_v_j;
    __pyx_t_16 = ((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_left.buf, __pyx_t_18, __pyx_bstride_0_left)) == (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_right.buf, __pyx_t_19, __pyx_bstride_0_right)));
    if (__pyx_t_16) {

      /* "pandas/src/generated.pyx":2569
 * 
 *         if left[i] == right[j]:
 *             indexer[i] = j             # <<<<<<<<<<<<<<
 *             i += 1
 *             while i < nleft - 1 and left[i] == rval:
 */
      __pyx_t_20 = __pyx_v_i;
      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_bstruct_indexer.buf, __pyx_t_20, __pyx_bstride_0_indexer) = __pyx_v_j;

      /* "pandas/src/generated.pyx":2570
 *         if left[i] == right[j]:
 *             indexer[i] = j
 *             i += 1             # <<<<<<<<<<<<<<
 *             while i < nleft - 1 and left[i] == rval:
 *                 indexer[i] = j
 */
      __pyx_v_i = (__pyx_v_i + 1);

      /* "pandas/src/generated.pyx":2571
 *             indexer[i] = j
 *             i += 1
 *             while i < nleft - 1 and left[i] == rval:             # <<<<<<<<<<<<<<
 *                 indexer[i] = j
 *                 i += 1
 */
      while (1) {
        __pyx_t_16 = (__pyx_v_i < (__pyx_v_nleft - 1));
        if (__pyx_t_16) {
          __pyx_t_21 = __pyx_v_i;
          __pyx_t_12 = ((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_left.buf, __pyx_t_21, __pyx_bstride_0_left)) == __pyx_v_rval);
          __pyx_t_15 = __pyx_t_12;
        } else {
          __pyx_t_15 = __pyx_t_16;
        }
        if (!__pyx_t_15) break;

        /* "pandas/src/generated.pyx":2572
 *             i += 1
 *             while i < nleft - 1 and left[i] == rval:
 *                 indexer[i] = j             # <<<<<<<<<<<<<<
 *                 i += 1
 *             j += 1
 */
        __pyx_t_22 = __pyx_v_i;
        *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_bstruct_indexer.buf, __pyx_t_22, __pyx_bstride_0_indexer) = __pyx_v_j;

        /* "pandas/src/generated.pyx":2573
 *             while i < nleft - 1 and left[i] == rval:
 *                 indexer[i] = j
 *                 i += 1             # <<<<<<<<<<<<<<
 *             j += 1
 *         elif left[i] > rval:
 */
        __pyx_v_i = (__pyx_v_i + 1);
      }

      /* "pandas/src/generated.pyx":2574
 *                 indexer[i] = j
 *                 i += 1
 *             j += 1             # <<<<<<<<<<<<<<
 *         elif left[i] > rval:
 *             indexer[i] = -1
 */
      __pyx_v_j = (__pyx_v_j + 1);
      goto __pyx_L12;
    }

    /* "pandas/src/generated.pyx":2575
 *                 i += 1
 *             j += 1
 *         elif left[i] > rval:             # <<<<<<<<<<<<<<
 *             indexer[i] = -1
 *             j += 1
 */
    __pyx_t_23 = __pyx_v_i;
    __pyx_t_15 = ((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_left.buf, __pyx_t_23, __pyx_bstride_0_left)) > __pyx_v_rval);
    if (__pyx_t_15) {

      /* "pandas/src/generated.pyx":2576
 *             j += 1
 *         elif left[i] > rval:
 *             indexer[i] = -1             # <<<<<<<<<<<<<<
 *             j += 1
 *         else:
 */
      __pyx_t_24 = __pyx_v_i;
      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_bstruct_indexer.buf, __pyx_t_24, __pyx_bstride_0_indexer) = -1;

      /* "pandas/src/generated.pyx":2577
 *         elif left[i] > rval:
 *             indexer[i] = -1
 *             j += 1             # <<<<<<<<<<<<<<
 *         else:
 *             indexer[i] = -1
 */
      __pyx_v_j = (__pyx_v_j + 1);
      goto __pyx_L12;
    }
    /*else*/ {

      /* "pandas/src/generated.pyx":2579
 *             j += 1
 *         else:
 *             indexer[i] = -1             # <<<<<<<<<<<<<<
 *             i += 1
 *     return indexer
 */
      __pyx_t_25 = __pyx_v_i;
      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_bstruct_indexer.buf, __pyx_t_25, __pyx_bstride_0_indexer) = -1;

      /* "pandas/src/generated.pyx":2580
 *         else:
 *             indexer[i] = -1
 *             i += 1             # <<<<<<<<<<<<<<
 *     return indexer
 * 
 */
      __pyx_v_i = (__pyx_v_i + 1);
    }
    __pyx_L12:;
    __pyx_L6_continue:;
  }
  __pyx_L7_break:;

  /* "pandas/src/generated.pyx":2581
 *             indexer[i] = -1
 *             i += 1
 *     return indexer             # <<<<<<<<<<<<<<
 * 
 * @cython.wraparound(False)
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_indexer));
  __pyx_r = ((PyObject *)__pyx_v_indexer);
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  { PyObject *__pyx_type, *__pyx_value, *__pyx_tb;
    __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);
    __Pyx_SafeReleaseBuffer(&__pyx_bstruct_right);
    __Pyx_SafeReleaseBuffer(&__pyx_bstruct_indexer);
    __Pyx_SafeReleaseBuffer(&__pyx_bstruct_left);
  __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);}
  __Pyx_AddTraceback("pandas._algos.left_join_indexer_unique_float64", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  goto __pyx_L2;
  __pyx_L0:;
  __Pyx_SafeReleaseBuffer(&__pyx_bstruct_right);
  __Pyx_SafeReleaseBuffer(&__pyx_bstruct_indexer);
  __Pyx_SafeReleaseBuffer(&__pyx_bstruct_left);
  __pyx_L2:;
  __Pyx_XDECREF((PyObject *)__pyx_v_indexer);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "pandas/src/generated.pyx":2585
 * @cython.wraparound(False)
 * @cython.boundscheck(False)
 * def left_join_indexer_unique_object(ndarray[object] left,             # <<<<<<<<<<<<<<
 *                                       ndarray[object] right):
 *     cdef:
 */

static PyObject *__pyx_pf_6pandas_6_algos_76left_join_indexer_unique_object(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_6pandas_6_algos_76left_join_indexer_unique_object = {__Pyx_NAMESTR("left_join_indexer_unique_object"), (PyCFunction)__pyx_pf_6pandas_6_algos_76left_join_indexer_unique_object, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(0)};
static PyObject *__pyx_pf_6pandas_6_algos_76left_join_indexer_unique_object(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyArrayObject *__pyx_v_left = 0;
  PyArrayObject *__pyx_v_right = 0;
  Py_ssize_t __pyx_v_i;
  Py_ssize_t __pyx_v_j;
  Py_ssize_t __pyx_v_nleft;
  Py_ssize_t __pyx_v_nright;
  PyArrayObject *__pyx_v_indexer = 0;
  PyObject *__pyx_v_rval = 0;
  Py_buffer __pyx_bstruct_right;
  Py_ssize_t __pyx_bstride_0_right = 0;
  Py_ssize_t __pyx_bshape_0_right = 0;
  Py_buffer __pyx_bstruct_indexer;
  Py_ssize_t __pyx_bstride_0_indexer = 0;
  Py_ssize_t __pyx_bshape_0_indexer = 0;
  Py_buffer __pyx_bstruct_left;
  Py_ssize_t __pyx_bstride_0_left = 0;
  Py_ssize_t __pyx_bshape_0_left = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  Py_ssize_t __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  PyArrayObject *__pyx_t_7 = NULL;
  int __pyx_t_8;
  PyObject *__pyx_t_9 = NULL;
  PyObject *__pyx_t_10 = NULL;
  PyObject *__pyx_t_11 = NULL;
  int __pyx_t_12;
  Py_ssize_t __pyx_t_13;
  Py_ssize_t __pyx_t_14;
  int __pyx_t_15;
  int __pyx_t_16;
  Py_ssize_t __pyx_t_17;
  Py_ssize_t __pyx_t_18;
  Py_ssize_t __pyx_t_19;
  Py_ssize_t __pyx_t_20;
  Py_ssize_t __pyx_t_21;
  Py_ssize_t __pyx_t_22;
  Py_ssize_t __pyx_t_23;
  Py_ssize_t __pyx_t_24;
  Py_ssize_t __pyx_t_25;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__left,&__pyx_n_s__right,0};
  __Pyx_RefNannySetupContext("left_join_indexer_unique_object");
  __pyx_self = __pyx_self;
  {
    PyObject* values[2] = {0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  0:
        values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__left);
        if (likely(values[0])) kw_args--;
        else goto __pyx_L5_argtuple_error;
        case  1:
        values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__right);
        if (likely(values[1])) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("left_join_indexer_unique_object", 1, 2, 2, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2585; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "left_join_indexer_unique_object") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2585; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
    }
    __pyx_v_left = ((PyArrayObject *)values[0]);
    __pyx_v_right = ((PyArrayObject *)values[1]);
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("left_join_indexer_unique_object", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2585; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("pandas._algos.left_join_indexer_unique_object", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_bstruct_indexer.buf = NULL;
  __pyx_bstruct_left.buf = NULL;
  __pyx_bstruct_right.buf = NULL;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_left), __pyx_ptype_5numpy_ndarray, 1, "left", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2585; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_right), __pyx_ptype_5numpy_ndarray, 1, "right", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2586; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_left, (PyObject*)__pyx_v_left, &__Pyx_TypeInfo_object, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2585; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  }
  __pyx_bstride_0_left = __pyx_bstruct_left.strides[0];
  __pyx_bshape_0_left = __pyx_bstruct_left.shape[0];
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_right, (PyObject*)__pyx_v_right, &__Pyx_TypeInfo_object, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2585; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  }
  __pyx_bstride_0_right = __pyx_bstruct_right.strides[0];
  __pyx_bshape_0_right = __pyx_bstruct_right.shape[0];

  /* "pandas/src/generated.pyx":2592
 *         object lval, rval
 * 
 *     i = 0             # <<<<<<<<<<<<<<
 *     j = 0
 *     nleft = len(left)
 */
  __pyx_v_i = 0;

  /* "pandas/src/generated.pyx":2593
 * 
 *     i = 0
 *     j = 0             # <<<<<<<<<<<<<<
 *     nleft = len(left)
 *     nright = len(right)
 */
  __pyx_v_j = 0;

  /* "pandas/src/generated.pyx":2594
 *     i = 0
 *     j = 0
 *     nleft = len(left)             # <<<<<<<<<<<<<<
 *     nright = len(right)
 * 
 */
  __pyx_t_1 = PyObject_Length(((PyObject *)__pyx_v_left)); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2594; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_v_nleft = __pyx_t_1;

  /* "pandas/src/generated.pyx":2595
 *     j = 0
 *     nleft = len(left)
 *     nright = len(right)             # <<<<<<<<<<<<<<
 * 
 *     indexer = np.empty(nleft, dtype=np.int64)
 */
  __pyx_t_1 = PyObject_Length(((PyObject *)__pyx_v_right)); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2595; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_v_nright = __pyx_t_1;

  /* "pandas/src/generated.pyx":2597
 *     nright = len(right)
 * 
 *     indexer = np.empty(nleft, dtype=np.int64)             # <<<<<<<<<<<<<<
 *     while True:
 *         if i == nleft:
 */
  __pyx_t_2 = __Pyx_GetName(__pyx_m, __pyx_n_s__np); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2597; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = PyObject_GetAttr(__pyx_t_2, __pyx_n_s__empty); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2597; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = PyInt_FromSsize_t(__pyx_v_nleft); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2597; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2597; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_4));
  PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_2);
  __Pyx_GIVEREF(__pyx_t_2);
  __pyx_t_2 = 0;
  __pyx_t_2 = PyDict_New(); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2597; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_2));
  __pyx_t_5 = __Pyx_GetName(__pyx_m, __pyx_n_s__np); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2597; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_6 = PyObject_GetAttr(__pyx_t_5, __pyx_n_s__int64); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2597; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  if (PyDict_SetItem(__pyx_t_2, ((PyObject *)__pyx_n_s__dtype), __pyx_t_6) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2597; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __pyx_t_6 = PyEval_CallObjectWithKeywords(__pyx_t_3, ((PyObject *)__pyx_t_4), ((PyObject *)__pyx_t_2)); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2597; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_DECREF(((PyObject *)__pyx_t_4)); __pyx_t_4 = 0;
  __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0;
  if (!(likely(((__pyx_t_6) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_6, __pyx_ptype_5numpy_ndarray))))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2597; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_t_7 = ((PyArrayObject *)__pyx_t_6);
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    __Pyx_SafeReleaseBuffer(&__pyx_bstruct_indexer);
    __pyx_t_8 = __Pyx_GetBufferAndValidate(&__pyx_bstruct_indexer, (PyObject*)__pyx_t_7, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack);
    if (unlikely(__pyx_t_8 < 0)) {
      PyErr_Fetch(&__pyx_t_9, &__pyx_t_10, &__pyx_t_11);
      if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_indexer, (PyObject*)__pyx_v_indexer, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) {
        Py_XDECREF(__pyx_t_9); Py_XDECREF(__pyx_t_10); Py_XDECREF(__pyx_t_11);
        __Pyx_RaiseBufferFallbackError();
      } else {
        PyErr_Restore(__pyx_t_9, __pyx_t_10, __pyx_t_11);
      }
    }
    __pyx_bstride_0_indexer = __pyx_bstruct_indexer.strides[0];
    __pyx_bshape_0_indexer = __pyx_bstruct_indexer.shape[0];
    if (unlikely(__pyx_t_8 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2597; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  }
  __pyx_t_7 = 0;
  __pyx_v_indexer = ((PyArrayObject *)__pyx_t_6);
  __pyx_t_6 = 0;

  /* "pandas/src/generated.pyx":2598
 * 
 *     indexer = np.empty(nleft, dtype=np.int64)
 *     while True:             # <<<<<<<<<<<<<<
 *         if i == nleft:
 *             break
 */
  while (1) {
    if (!1) break;

    /* "pandas/src/generated.pyx":2599
 *     indexer = np.empty(nleft, dtype=np.int64)
 *     while True:
 *         if i == nleft:             # <<<<<<<<<<<<<<
 *             break
 * 
 */
    __pyx_t_12 = (__pyx_v_i == __pyx_v_nleft);
    if (__pyx_t_12) {

      /* "pandas/src/generated.pyx":2600
 *     while True:
 *         if i == nleft:
 *             break             # <<<<<<<<<<<<<<
 * 
 *         if j == nright:
 */
      goto __pyx_L7_break;
      goto __pyx_L8;
    }
    __pyx_L8:;

    /* "pandas/src/generated.pyx":2602
 *             break
 * 
 *         if j == nright:             # <<<<<<<<<<<<<<
 *             indexer[i] = -1
 *             i += 1
 */
    __pyx_t_12 = (__pyx_v_j == __pyx_v_nright);
    if (__pyx_t_12) {

      /* "pandas/src/generated.pyx":2603
 * 
 *         if j == nright:
 *             indexer[i] = -1             # <<<<<<<<<<<<<<
 *             i += 1
 *             continue
 */
      __pyx_t_1 = __pyx_v_i;
      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_bstruct_indexer.buf, __pyx_t_1, __pyx_bstride_0_indexer) = -1;

      /* "pandas/src/generated.pyx":2604
 *         if j == nright:
 *             indexer[i] = -1
 *             i += 1             # <<<<<<<<<<<<<<
 *             continue
 * 
 */
      __pyx_v_i = (__pyx_v_i + 1);

      /* "pandas/src/generated.pyx":2605
 *             indexer[i] = -1
 *             i += 1
 *             continue             # <<<<<<<<<<<<<<
 * 
 *         rval = right[j]
 */
      goto __pyx_L6_continue;
      goto __pyx_L9;
    }
    __pyx_L9:;

    /* "pandas/src/generated.pyx":2607
 *             continue
 * 
 *         rval = right[j]             # <<<<<<<<<<<<<<
 * 
 *         while i < nleft - 1 and left[i] == rval:
 */
    __pyx_t_13 = __pyx_v_j;
    __pyx_t_6 = *__Pyx_BufPtrStrided1d(PyObject **, __pyx_bstruct_right.buf, __pyx_t_13, __pyx_bstride_0_right);
    __Pyx_INCREF((PyObject*)__pyx_t_6);
    __Pyx_XDECREF(__pyx_v_rval);
    __pyx_v_rval = __pyx_t_6;
    __pyx_t_6 = 0;

    /* "pandas/src/generated.pyx":2609
 *         rval = right[j]
 * 
 *         while i < nleft - 1 and left[i] == rval:             # <<<<<<<<<<<<<<
 *             indexer[i] = j
 *             i += 1
 */
    while (1) {
      __pyx_t_12 = (__pyx_v_i < (__pyx_v_nleft - 1));
      if (__pyx_t_12) {
        __pyx_t_14 = __pyx_v_i;
        __pyx_t_6 = *__Pyx_BufPtrStrided1d(PyObject **, __pyx_bstruct_left.buf, __pyx_t_14, __pyx_bstride_0_left);
        __Pyx_INCREF((PyObject*)__pyx_t_6);
        __pyx_t_2 = PyObject_RichCompare(__pyx_t_6, __pyx_v_rval, Py_EQ); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2609; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_GOTREF(__pyx_t_2);
        __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
        __pyx_t_15 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_15 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2609; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
        __pyx_t_16 = __pyx_t_15;
      } else {
        __pyx_t_16 = __pyx_t_12;
      }
      if (!__pyx_t_16) break;

      /* "pandas/src/generated.pyx":2610
 * 
 *         while i < nleft - 1 and left[i] == rval:
 *             indexer[i] = j             # <<<<<<<<<<<<<<
 *             i += 1
 * 
 */
      __pyx_t_17 = __pyx_v_i;
      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_bstruct_indexer.buf, __pyx_t_17, __pyx_bstride_0_indexer) = __pyx_v_j;

      /* "pandas/src/generated.pyx":2611
 *         while i < nleft - 1 and left[i] == rval:
 *             indexer[i] = j
 *             i += 1             # <<<<<<<<<<<<<<
 * 
 *         if left[i] == right[j]:
 */
      __pyx_v_i = (__pyx_v_i + 1);
    }

    /* "pandas/src/generated.pyx":2613
 *             i += 1
 * 
 *         if left[i] == right[j]:             # <<<<<<<<<<<<<<
 *             indexer[i] = j
 *             i += 1
 */
    __pyx_t_18 = __pyx_v_i;
    __pyx_t_2 = *__Pyx_BufPtrStrided1d(PyObject **, __pyx_bstruct_left.buf, __pyx_t_18, __pyx_bstride_0_left);
    __Pyx_INCREF((PyObject*)__pyx_t_2);
    __pyx_t_19 = __pyx_v_j;
    __pyx_t_6 = *__Pyx_BufPtrStrided1d(PyObject **, __pyx_bstruct_right.buf, __pyx_t_19, __pyx_bstride_0_right);
    __Pyx_INCREF((PyObject*)__pyx_t_6);
    __pyx_t_4 = PyObject_RichCompare(__pyx_t_2, __pyx_t_6, Py_EQ); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2613; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    __pyx_t_16 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_16 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2613; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    if (__pyx_t_16) {

      /* "pandas/src/generated.pyx":2614
 * 
 *         if left[i] == right[j]:
 *             indexer[i] = j             # <<<<<<<<<<<<<<
 *             i += 1
 *             while i < nleft - 1 and left[i] == rval:
 */
      __pyx_t_20 = __pyx_v_i;
      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_bstruct_indexer.buf, __pyx_t_20, __pyx_bstride_0_indexer) = __pyx_v_j;

      /* "pandas/src/generated.pyx":2615
 *         if left[i] == right[j]:
 *             indexer[i] = j
 *             i += 1             # <<<<<<<<<<<<<<
 *             while i < nleft - 1 and left[i] == rval:
 *                 indexer[i] = j
 */
      __pyx_v_i = (__pyx_v_i + 1);

      /* "pandas/src/generated.pyx":2616
 *             indexer[i] = j
 *             i += 1
 *             while i < nleft - 1 and left[i] == rval:             # <<<<<<<<<<<<<<
 *                 indexer[i] = j
 *                 i += 1
 */
      while (1) {
        __pyx_t_16 = (__pyx_v_i < (__pyx_v_nleft - 1));
        if (__pyx_t_16) {
          __pyx_t_21 = __pyx_v_i;
          __pyx_t_4 = *__Pyx_BufPtrStrided1d(PyObject **, __pyx_bstruct_left.buf, __pyx_t_21, __pyx_bstride_0_left);
          __Pyx_INCREF((PyObject*)__pyx_t_4);
          __pyx_t_6 = PyObject_RichCompare(__pyx_t_4, __pyx_v_rval, Py_EQ); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2616; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
          __Pyx_GOTREF(__pyx_t_6);
          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
          __pyx_t_12 = __Pyx_PyObject_IsTrue(__pyx_t_6); if (unlikely(__pyx_t_12 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2616; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
          __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
          __pyx_t_15 = __pyx_t_12;
        } else {
          __pyx_t_15 = __pyx_t_16;
        }
        if (!__pyx_t_15) break;

        /* "pandas/src/generated.pyx":2617
 *             i += 1
 *             while i < nleft - 1 and left[i] == rval:
 *                 indexer[i] = j             # <<<<<<<<<<<<<<
 *                 i += 1
 *             j += 1
 */
        __pyx_t_22 = __pyx_v_i;
        *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_bstruct_indexer.buf, __pyx_t_22, __pyx_bstride_0_indexer) = __pyx_v_j;

        /* "pandas/src/generated.pyx":2618
 *             while i < nleft - 1 and left[i] == rval:
 *                 indexer[i] = j
 *                 i += 1             # <<<<<<<<<<<<<<
 *             j += 1
 *         elif left[i] > rval:
 */
        __pyx_v_i = (__pyx_v_i + 1);
      }

      /* "pandas/src/generated.pyx":2619
 *                 indexer[i] = j
 *                 i += 1
 *             j += 1             # <<<<<<<<<<<<<<
 *         elif left[i] > rval:
 *             indexer[i] = -1
 */
      __pyx_v_j = (__pyx_v_j + 1);
      goto __pyx_L12;
    }

    /* "pandas/src/generated.pyx":2620
 *                 i += 1
 *             j += 1
 *         elif left[i] > rval:             # <<<<<<<<<<<<<<
 *             indexer[i] = -1
 *             j += 1
 */
    __pyx_t_23 = __pyx_v_i;
    __pyx_t_6 = *__Pyx_BufPtrStrided1d(PyObject **, __pyx_bstruct_left.buf, __pyx_t_23, __pyx_bstride_0_left);
    __Pyx_INCREF((PyObject*)__pyx_t_6);
    __pyx_t_4 = PyObject_RichCompare(__pyx_t_6, __pyx_v_rval, Py_GT); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2620; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    __pyx_t_15 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_15 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2620; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    if (__pyx_t_15) {

      /* "pandas/src/generated.pyx":2621
 *             j += 1
 *         elif left[i] > rval:
 *             indexer[i] = -1             # <<<<<<<<<<<<<<
 *             j += 1
 *         else:
 */
      __pyx_t_24 = __pyx_v_i;
      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_bstruct_indexer.buf, __pyx_t_24, __pyx_bstride_0_indexer) = -1;

      /* "pandas/src/generated.pyx":2622
 *         elif left[i] > rval:
 *             indexer[i] = -1
 *             j += 1             # <<<<<<<<<<<<<<
 *         else:
 *             indexer[i] = -1
 */
      __pyx_v_j = (__pyx_v_j + 1);
      goto __pyx_L12;
    }
    /*else*/ {

      /* "pandas/src/generated.pyx":2624
 *             j += 1
 *         else:
 *             indexer[i] = -1             # <<<<<<<<<<<<<<
 *             i += 1
 *     return indexer
 */
      __pyx_t_25 = __pyx_v_i;
      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_bstruct_indexer.buf, __pyx_t_25, __pyx_bstride_0_indexer) = -1;

      /* "pandas/src/generated.pyx":2625
 *         else:
 *             indexer[i] = -1
 *             i += 1             # <<<<<<<<<<<<<<
 *     return indexer
 * 
 */
      __pyx_v_i = (__pyx_v_i + 1);
    }
    __pyx_L12:;
    __pyx_L6_continue:;
  }
  __pyx_L7_break:;

  /* "pandas/src/generated.pyx":2626
 *             indexer[i] = -1
 *             i += 1
 *     return indexer             # <<<<<<<<<<<<<<
 * 
 * @cython.wraparound(False)
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_indexer));
  __pyx_r = ((PyObject *)__pyx_v_indexer);
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  { PyObject *__pyx_type, *__pyx_value, *__pyx_tb;
    __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);
    __Pyx_SafeReleaseBuffer(&__pyx_bstruct_right);
    __Pyx_SafeReleaseBuffer(&__pyx_bstruct_indexer);
    __Pyx_SafeReleaseBuffer(&__pyx_bstruct_left);
  __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);}
  __Pyx_AddTraceback("pandas._algos.left_join_indexer_unique_object", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  goto __pyx_L2;
  __pyx_L0:;
  __Pyx_SafeReleaseBuffer(&__pyx_bstruct_right);
  __Pyx_SafeReleaseBuffer(&__pyx_bstruct_indexer);
  __Pyx_SafeReleaseBuffer(&__pyx_bstruct_left);
  __pyx_L2:;
  __Pyx_XDECREF((PyObject *)__pyx_v_indexer);
  __Pyx_XDECREF(__pyx_v_rval);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "pandas/src/generated.pyx":2630
 * @cython.wraparound(False)
 * @cython.boundscheck(False)
 * def left_join_indexer_unique_int32(ndarray[int32_t] left,             # <<<<<<<<<<<<<<
 *                                       ndarray[int32_t] right):
 *     cdef:
 */

static PyObject *__pyx_pf_6pandas_6_algos_77left_join_indexer_unique_int32(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_6pandas_6_algos_77left_join_indexer_unique_int32 = {__Pyx_NAMESTR("left_join_indexer_unique_int32"), (PyCFunction)__pyx_pf_6pandas_6_algos_77left_join_indexer_unique_int32, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(0)};
static PyObject *__pyx_pf_6pandas_6_algos_77left_join_indexer_unique_int32(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyArrayObject *__pyx_v_left = 0;
  PyArrayObject *__pyx_v_right = 0;
  Py_ssize_t __pyx_v_i;
  Py_ssize_t __pyx_v_j;
  Py_ssize_t __pyx_v_nleft;
  Py_ssize_t __pyx_v_nright;
  PyArrayObject *__pyx_v_indexer = 0;
  __pyx_t_5numpy_int32_t __pyx_v_rval;
  Py_buffer __pyx_bstruct_right;
  Py_ssize_t __pyx_bstride_0_right = 0;
  Py_ssize_t __pyx_bshape_0_right = 0;
  Py_buffer __pyx_bstruct_indexer;
  Py_ssize_t __pyx_bstride_0_indexer = 0;
  Py_ssize_t __pyx_bshape_0_indexer = 0;
  Py_buffer __pyx_bstruct_left;
  Py_ssize_t __pyx_bstride_0_left = 0;
  Py_ssize_t __pyx_bshape_0_left = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  Py_ssize_t __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  PyArrayObject *__pyx_t_7 = NULL;
  int __pyx_t_8;
  PyObject *__pyx_t_9 = NULL;
  PyObject *__pyx_t_10 = NULL;
  PyObject *__pyx_t_11 = NULL;
  int __pyx_t_12;
  Py_ssize_t __pyx_t_13;
  Py_ssize_t __pyx_t_14;
  int __pyx_t_15;
  int __pyx_t_16;
  Py_ssize_t __pyx_t_17;
  Py_ssize_t __pyx_t_18;
  Py_ssize_t __pyx_t_19;
  Py_ssize_t __pyx_t_20;
  Py_ssize_t __pyx_t_21;
  Py_ssize_t __pyx_t_22;
  Py_ssize_t __pyx_t_23;
  Py_ssize_t __pyx_t_24;
  Py_ssize_t __pyx_t_25;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__left,&__pyx_n_s__right,0};
  __Pyx_RefNannySetupContext("left_join_indexer_unique_int32");
  __pyx_self = __pyx_self;
  {
    PyObject* values[2] = {0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  0:
        values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__left);
        if (likely(values[0])) kw_args--;
        else goto __pyx_L5_argtuple_error;
        case  1:
        values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__right);
        if (likely(values[1])) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("left_join_indexer_unique_int32", 1, 2, 2, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2630; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "left_join_indexer_unique_int32") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2630; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
    }
    __pyx_v_left = ((PyArrayObject *)values[0]);
    __pyx_v_right = ((PyArrayObject *)values[1]);
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("left_join_indexer_unique_int32", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2630; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("pandas._algos.left_join_indexer_unique_int32", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_bstruct_indexer.buf = NULL;
  __pyx_bstruct_left.buf = NULL;
  __pyx_bstruct_right.buf = NULL;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_left), __pyx_ptype_5numpy_ndarray, 1, "left", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2630; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_right), __pyx_ptype_5numpy_ndarray, 1, "right", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2631; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_left, (PyObject*)__pyx_v_left, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int32_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2630; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  }
  __pyx_bstride_0_left = __pyx_bstruct_left.strides[0];
  __pyx_bshape_0_left = __pyx_bstruct_left.shape[0];
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_right, (PyObject*)__pyx_v_right, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int32_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2630; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  }
  __pyx_bstride_0_right = __pyx_bstruct_right.strides[0];
  __pyx_bshape_0_right = __pyx_bstruct_right.shape[0];

  /* "pandas/src/generated.pyx":2637
 *         int32_t lval, rval
 * 
 *     i = 0             # <<<<<<<<<<<<<<
 *     j = 0
 *     nleft = len(left)
 */
  __pyx_v_i = 0;

  /* "pandas/src/generated.pyx":2638
 * 
 *     i = 0
 *     j = 0             # <<<<<<<<<<<<<<
 *     nleft = len(left)
 *     nright = len(right)
 */
  __pyx_v_j = 0;

  /* "pandas/src/generated.pyx":2639
 *     i = 0
 *     j = 0
 *     nleft = len(left)             # <<<<<<<<<<<<<<
 *     nright = len(right)
 * 
 */
  __pyx_t_1 = PyObject_Length(((PyObject *)__pyx_v_left)); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2639; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_v_nleft = __pyx_t_1;

  /* "pandas/src/generated.pyx":2640
 *     j = 0
 *     nleft = len(left)
 *     nright = len(right)             # <<<<<<<<<<<<<<
 * 
 *     indexer = np.empty(nleft, dtype=np.int64)
 */
  __pyx_t_1 = PyObject_Length(((PyObject *)__pyx_v_right)); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2640; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_v_nright = __pyx_t_1;

  /* "pandas/src/generated.pyx":2642
 *     nright = len(right)
 * 
 *     indexer = np.empty(nleft, dtype=np.int64)             # <<<<<<<<<<<<<<
 *     while True:
 *         if i == nleft:
 */
  __pyx_t_2 = __Pyx_GetName(__pyx_m, __pyx_n_s__np); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2642; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = PyObject_GetAttr(__pyx_t_2, __pyx_n_s__empty); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2642; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = PyInt_FromSsize_t(__pyx_v_nleft); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2642; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2642; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_4));
  PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_2);
  __Pyx_GIVEREF(__pyx_t_2);
  __pyx_t_2 = 0;
  __pyx_t_2 = PyDict_New(); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2642; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_2));
  __pyx_t_5 = __Pyx_GetName(__pyx_m, __pyx_n_s__np); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2642; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_6 = PyObject_GetAttr(__pyx_t_5, __pyx_n_s__int64); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2642; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  if (PyDict_SetItem(__pyx_t_2, ((PyObject *)__pyx_n_s__dtype), __pyx_t_6) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2642; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __pyx_t_6 = PyEval_CallObjectWithKeywords(__pyx_t_3, ((PyObject *)__pyx_t_4), ((PyObject *)__pyx_t_2)); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2642; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_DECREF(((PyObject *)__pyx_t_4)); __pyx_t_4 = 0;
  __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0;
  if (!(likely(((__pyx_t_6) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_6, __pyx_ptype_5numpy_ndarray))))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2642; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_t_7 = ((PyArrayObject *)__pyx_t_6);
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    __Pyx_SafeReleaseBuffer(&__pyx_bstruct_indexer);
    __pyx_t_8 = __Pyx_GetBufferAndValidate(&__pyx_bstruct_indexer, (PyObject*)__pyx_t_7, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack);
    if (unlikely(__pyx_t_8 < 0)) {
      PyErr_Fetch(&__pyx_t_9, &__pyx_t_10, &__pyx_t_11);
      if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_indexer, (PyObject*)__pyx_v_indexer, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) {
        Py_XDECREF(__pyx_t_9); Py_XDECREF(__pyx_t_10); Py_XDECREF(__pyx_t_11);
        __Pyx_RaiseBufferFallbackError();
      } else {
        PyErr_Restore(__pyx_t_9, __pyx_t_10, __pyx_t_11);
      }
    }
    __pyx_bstride_0_indexer = __pyx_bstruct_indexer.strides[0];
    __pyx_bshape_0_indexer = __pyx_bstruct_indexer.shape[0];
    if (unlikely(__pyx_t_8 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2642; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  }
  __pyx_t_7 = 0;
  __pyx_v_indexer = ((PyArrayObject *)__pyx_t_6);
  __pyx_t_6 = 0;

  /* "pandas/src/generated.pyx":2643
 * 
 *     indexer = np.empty(nleft, dtype=np.int64)
 *     while True:             # <<<<<<<<<<<<<<
 *         if i == nleft:
 *             break
 */
  while (1) {
    if (!1) break;

    /* "pandas/src/generated.pyx":2644
 *     indexer = np.empty(nleft, dtype=np.int64)
 *     while True:
 *         if i == nleft:             # <<<<<<<<<<<<<<
 *             break
 * 
 */
    __pyx_t_12 = (__pyx_v_i == __pyx_v_nleft);
    if (__pyx_t_12) {

      /* "pandas/src/generated.pyx":2645
 *     while True:
 *         if i == nleft:
 *             break             # <<<<<<<<<<<<<<
 * 
 *         if j == nright:
 */
      goto __pyx_L7_break;
      goto __pyx_L8;
    }
    __pyx_L8:;

    /* "pandas/src/generated.pyx":2647
 *             break
 * 
 *         if j == nright:             # <<<<<<<<<<<<<<
 *             indexer[i] = -1
 *             i += 1
 */
    __pyx_t_12 = (__pyx_v_j == __pyx_v_nright);
    if (__pyx_t_12) {

      /* "pandas/src/generated.pyx":2648
 * 
 *         if j == nright:
 *             indexer[i] = -1             # <<<<<<<<<<<<<<
 *             i += 1
 *             continue
 */
      __pyx_t_1 = __pyx_v_i;
      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_bstruct_indexer.buf, __pyx_t_1, __pyx_bstride_0_indexer) = -1;

      /* "pandas/src/generated.pyx":2649
 *         if j == nright:
 *             indexer[i] = -1
 *             i += 1             # <<<<<<<<<<<<<<
 *             continue
 * 
 */
      __pyx_v_i = (__pyx_v_i + 1);

      /* "pandas/src/generated.pyx":2650
 *             indexer[i] = -1
 *             i += 1
 *             continue             # <<<<<<<<<<<<<<
 * 
 *         rval = right[j]
 */
      goto __pyx_L6_continue;
      goto __pyx_L9;
    }
    __pyx_L9:;

    /* "pandas/src/generated.pyx":2652
 *             continue
 * 
 *         rval = right[j]             # <<<<<<<<<<<<<<
 * 
 *         while i < nleft - 1 and left[i] == rval:
 */
    __pyx_t_13 = __pyx_v_j;
    __pyx_v_rval = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int32_t *, __pyx_bstruct_right.buf, __pyx_t_13, __pyx_bstride_0_right));

    /* "pandas/src/generated.pyx":2654
 *         rval = right[j]
 * 
 *         while i < nleft - 1 and left[i] == rval:             # <<<<<<<<<<<<<<
 *             indexer[i] = j
 *             i += 1
 */
    while (1) {
      __pyx_t_12 = (__pyx_v_i < (__pyx_v_nleft - 1));
      if (__pyx_t_12) {
        __pyx_t_14 = __pyx_v_i;
        __pyx_t_15 = ((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int32_t *, __pyx_bstruct_left.buf, __pyx_t_14, __pyx_bstride_0_left)) == __pyx_v_rval);
        __pyx_t_16 = __pyx_t_15;
      } else {
        __pyx_t_16 = __pyx_t_12;
      }
      if (!__pyx_t_16) break;

      /* "pandas/src/generated.pyx":2655
 * 
 *         while i < nleft - 1 and left[i] == rval:
 *             indexer[i] = j             # <<<<<<<<<<<<<<
 *             i += 1
 * 
 */
      __pyx_t_17 = __pyx_v_i;
      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_bstruct_indexer.buf, __pyx_t_17, __pyx_bstride_0_indexer) = __pyx_v_j;

      /* "pandas/src/generated.pyx":2656
 *         while i < nleft - 1 and left[i] == rval:
 *             indexer[i] = j
 *             i += 1             # <<<<<<<<<<<<<<
 * 
 *         if left[i] == right[j]:
 */
      __pyx_v_i = (__pyx_v_i + 1);
    }

    /* "pandas/src/generated.pyx":2658
 *             i += 1
 * 
 *         if left[i] == right[j]:             # <<<<<<<<<<<<<<
 *             indexer[i] = j
 *             i += 1
 */
    __pyx_t_18 = __pyx_v_i;
    __pyx_t_19 = __pyx_v_j;
    __pyx_t_16 = ((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int32_t *, __pyx_bstruct_left.buf, __pyx_t_18, __pyx_bstride_0_left)) == (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int32_t *, __pyx_bstruct_right.buf, __pyx_t_19, __pyx_bstride_0_right)));
    if (__pyx_t_16) {

      /* "pandas/src/generated.pyx":2659
 * 
 *         if left[i] == right[j]:
 *             indexer[i] = j             # <<<<<<<<<<<<<<
 *             i += 1
 *             while i < nleft - 1 and left[i] == rval:
 */
      __pyx_t_20 = __pyx_v_i;
      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_bstruct_indexer.buf, __pyx_t_20, __pyx_bstride_0_indexer) = __pyx_v_j;

      /* "pandas/src/generated.pyx":2660
 *         if left[i] == right[j]:
 *             indexer[i] = j
 *             i += 1             # <<<<<<<<<<<<<<
 *             while i < nleft - 1 and left[i] == rval:
 *                 indexer[i] = j
 */
      __pyx_v_i = (__pyx_v_i + 1);

      /* "pandas/src/generated.pyx":2661
 *             indexer[i] = j
 *             i += 1
 *             while i < nleft - 1 and left[i] == rval:             # <<<<<<<<<<<<<<
 *                 indexer[i] = j
 *                 i += 1
 */
      while (1) {
        __pyx_t_16 = (__pyx_v_i < (__pyx_v_nleft - 1));
        if (__pyx_t_16) {
          __pyx_t_21 = __pyx_v_i;
          __pyx_t_12 = ((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int32_t *, __pyx_bstruct_left.buf, __pyx_t_21, __pyx_bstride_0_left)) == __pyx_v_rval);
          __pyx_t_15 = __pyx_t_12;
        } else {
          __pyx_t_15 = __pyx_t_16;
        }
        if (!__pyx_t_15) break;

        /* "pandas/src/generated.pyx":2662
 *             i += 1
 *             while i < nleft - 1 and left[i] == rval:
 *                 indexer[i] = j             # <<<<<<<<<<<<<<
 *                 i += 1
 *             j += 1
 */
        __pyx_t_22 = __pyx_v_i;
        *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_bstruct_indexer.buf, __pyx_t_22, __pyx_bstride_0_indexer) = __pyx_v_j;

        /* "pandas/src/generated.pyx":2663
 *             while i < nleft - 1 and left[i] == rval:
 *                 indexer[i] = j
 *                 i += 1             # <<<<<<<<<<<<<<
 *             j += 1
 *         elif left[i] > rval:
 */
        __pyx_v_i = (__pyx_v_i + 1);
      }

      /* "pandas/src/generated.pyx":2664
 *                 indexer[i] = j
 *                 i += 1
 *             j += 1             # <<<<<<<<<<<<<<
 *         elif left[i] > rval:
 *             indexer[i] = -1
 */
      __pyx_v_j = (__pyx_v_j + 1);
      goto __pyx_L12;
    }

    /* "pandas/src/generated.pyx":2665
 *                 i += 1
 *             j += 1
 *         elif left[i] > rval:             # <<<<<<<<<<<<<<
 *             indexer[i] = -1
 *             j += 1
 */
    __pyx_t_23 = __pyx_v_i;
    __pyx_t_15 = ((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int32_t *, __pyx_bstruct_left.buf, __pyx_t_23, __pyx_bstride_0_left)) > __pyx_v_rval);
    if (__pyx_t_15) {

      /* "pandas/src/generated.pyx":2666
 *             j += 1
 *         elif left[i] > rval:
 *             indexer[i] = -1             # <<<<<<<<<<<<<<
 *             j += 1
 *         else:
 */
      __pyx_t_24 = __pyx_v_i;
      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_bstruct_indexer.buf, __pyx_t_24, __pyx_bstride_0_indexer) = -1;

      /* "pandas/src/generated.pyx":2667
 *         elif left[i] > rval:
 *             indexer[i] = -1
 *             j += 1             # <<<<<<<<<<<<<<
 *         else:
 *             indexer[i] = -1
 */
      __pyx_v_j = (__pyx_v_j + 1);
      goto __pyx_L12;
    }
    /*else*/ {

      /* "pandas/src/generated.pyx":2669
 *             j += 1
 *         else:
 *             indexer[i] = -1             # <<<<<<<<<<<<<<
 *             i += 1
 *     return indexer
 */
      __pyx_t_25 = __pyx_v_i;
      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_bstruct_indexer.buf, __pyx_t_25, __pyx_bstride_0_indexer) = -1;

      /* "pandas/src/generated.pyx":2670
 *         else:
 *             indexer[i] = -1
 *             i += 1             # <<<<<<<<<<<<<<
 *     return indexer
 * 
 */
      __pyx_v_i = (__pyx_v_i + 1);
    }
    __pyx_L12:;
    __pyx_L6_continue:;
  }
  __pyx_L7_break:;

  /* "pandas/src/generated.pyx":2671
 *             indexer[i] = -1
 *             i += 1
 *     return indexer             # <<<<<<<<<<<<<<
 * 
 * @cython.wraparound(False)
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_indexer));
  __pyx_r = ((PyObject *)__pyx_v_indexer);
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  { PyObject *__pyx_type, *__pyx_value, *__pyx_tb;
    __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);
    __Pyx_SafeReleaseBuffer(&__pyx_bstruct_right);
    __Pyx_SafeReleaseBuffer(&__pyx_bstruct_indexer);
    __Pyx_SafeReleaseBuffer(&__pyx_bstruct_left);
  __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);}
  __Pyx_AddTraceback("pandas._algos.left_join_indexer_unique_int32", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  goto __pyx_L2;
  __pyx_L0:;
  __Pyx_SafeReleaseBuffer(&__pyx_bstruct_right);
  __Pyx_SafeReleaseBuffer(&__pyx_bstruct_indexer);
  __Pyx_SafeReleaseBuffer(&__pyx_bstruct_left);
  __pyx_L2:;
  __Pyx_XDECREF((PyObject *)__pyx_v_indexer);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "pandas/src/generated.pyx":2675
 * @cython.wraparound(False)
 * @cython.boundscheck(False)
 * def left_join_indexer_unique_int64(ndarray[int64_t] left,             # <<<<<<<<<<<<<<
 *                                       ndarray[int64_t] right):
 *     cdef:
 */

static PyObject *__pyx_pf_6pandas_6_algos_78left_join_indexer_unique_int64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_6pandas_6_algos_78left_join_indexer_unique_int64 = {__Pyx_NAMESTR("left_join_indexer_unique_int64"), (PyCFunction)__pyx_pf_6pandas_6_algos_78left_join_indexer_unique_int64, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(0)};
static PyObject *__pyx_pf_6pandas_6_algos_78left_join_indexer_unique_int64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyArrayObject *__pyx_v_left = 0;
  PyArrayObject *__pyx_v_right = 0;
  Py_ssize_t __pyx_v_i;
  Py_ssize_t __pyx_v_j;
  Py_ssize_t __pyx_v_nleft;
  Py_ssize_t __pyx_v_nright;
  PyArrayObject *__pyx_v_indexer = 0;
  __pyx_t_5numpy_int64_t __pyx_v_rval;
  Py_buffer __pyx_bstruct_right;
  Py_ssize_t __pyx_bstride_0_right = 0;
  Py_ssize_t __pyx_bshape_0_right = 0;
  Py_buffer __pyx_bstruct_indexer;
  Py_ssize_t __pyx_bstride_0_indexer = 0;
  Py_ssize_t __pyx_bshape_0_indexer = 0;
  Py_buffer __pyx_bstruct_left;
  Py_ssize_t __pyx_bstride_0_left = 0;
  Py_ssize_t __pyx_bshape_0_left = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  Py_ssize_t __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  PyArrayObject *__pyx_t_7 = NULL;
  int __pyx_t_8;
  PyObject *__pyx_t_9 = NULL;
  PyObject *__pyx_t_10 = NULL;
  PyObject *__pyx_t_11 = NULL;
  int __pyx_t_12;
  Py_ssize_t __pyx_t_13;
  Py_ssize_t __pyx_t_14;
  int __pyx_t_15;
  int __pyx_t_16;
  Py_ssize_t __pyx_t_17;
  Py_ssize_t __pyx_t_18;
  Py_ssize_t __pyx_t_19;
  Py_ssize_t __pyx_t_20;
  Py_ssize_t __pyx_t_21;
  Py_ssize_t __pyx_t_22;
  Py_ssize_t __pyx_t_23;
  Py_ssize_t __pyx_t_24;
  Py_ssize_t __pyx_t_25;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__left,&__pyx_n_s__right,0};
  __Pyx_RefNannySetupContext("left_join_indexer_unique_int64");
  __pyx_self = __pyx_self;
  {
    PyObject* values[2] = {0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  0:
        values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__left);
        if (likely(values[0])) kw_args--;
        else goto __pyx_L5_argtuple_error;
        case  1:
        values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__right);
        if (likely(values[1])) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("left_join_indexer_unique_int64", 1, 2, 2, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2675; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "left_join_indexer_unique_int64") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2675; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
    }
    __pyx_v_left = ((PyArrayObject *)values[0]);
    __pyx_v_right = ((PyArrayObject *)values[1]);
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("left_join_indexer_unique_int64", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2675; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("pandas._algos.left_join_indexer_unique_int64", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_bstruct_indexer.buf = NULL;
  __pyx_bstruct_left.buf = NULL;
  __pyx_bstruct_right.buf = NULL;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_left), __pyx_ptype_5numpy_ndarray, 1, "left", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2675; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_right), __pyx_ptype_5numpy_ndarray, 1, "right", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2676; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_left, (PyObject*)__pyx_v_left, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2675; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  }
  __pyx_bstride_0_left = __pyx_bstruct_left.strides[0];
  __pyx_bshape_0_left = __pyx_bstruct_left.shape[0];
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_right, (PyObject*)__pyx_v_right, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2675; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  }
  __pyx_bstride_0_right = __pyx_bstruct_right.strides[0];
  __pyx_bshape_0_right = __pyx_bstruct_right.shape[0];

  /* "pandas/src/generated.pyx":2682
 *         int64_t lval, rval
 * 
 *     i = 0             # <<<<<<<<<<<<<<
 *     j = 0
 *     nleft = len(left)
 */
  __pyx_v_i = 0;

  /* "pandas/src/generated.pyx":2683
 * 
 *     i = 0
 *     j = 0             # <<<<<<<<<<<<<<
 *     nleft = len(left)
 *     nright = len(right)
 */
  __pyx_v_j = 0;

  /* "pandas/src/generated.pyx":2684
 *     i = 0
 *     j = 0
 *     nleft = len(left)             # <<<<<<<<<<<<<<
 *     nright = len(right)
 * 
 */
  __pyx_t_1 = PyObject_Length(((PyObject *)__pyx_v_left)); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2684; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_v_nleft = __pyx_t_1;

  /* "pandas/src/generated.pyx":2685
 *     j = 0
 *     nleft = len(left)
 *     nright = len(right)             # <<<<<<<<<<<<<<
 * 
 *     indexer = np.empty(nleft, dtype=np.int64)
 */
  __pyx_t_1 = PyObject_Length(((PyObject *)__pyx_v_right)); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2685; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_v_nright = __pyx_t_1;

  /* "pandas/src/generated.pyx":2687
 *     nright = len(right)
 * 
 *     indexer = np.empty(nleft, dtype=np.int64)             # <<<<<<<<<<<<<<
 *     while True:
 *         if i == nleft:
 */
  __pyx_t_2 = __Pyx_GetName(__pyx_m, __pyx_n_s__np); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2687; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = PyObject_GetAttr(__pyx_t_2, __pyx_n_s__empty); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2687; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = PyInt_FromSsize_t(__pyx_v_nleft); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2687; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2687; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_4));
  PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_2);
  __Pyx_GIVEREF(__pyx_t_2);
  __pyx_t_2 = 0;
  __pyx_t_2 = PyDict_New(); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2687; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_2));
  __pyx_t_5 = __Pyx_GetName(__pyx_m, __pyx_n_s__np); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2687; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_6 = PyObject_GetAttr(__pyx_t_5, __pyx_n_s__int64); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2687; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  if (PyDict_SetItem(__pyx_t_2, ((PyObject *)__pyx_n_s__dtype), __pyx_t_6) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2687; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __pyx_t_6 = PyEval_CallObjectWithKeywords(__pyx_t_3, ((PyObject *)__pyx_t_4), ((PyObject *)__pyx_t_2)); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2687; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_DECREF(((PyObject *)__pyx_t_4)); __pyx_t_4 = 0;
  __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0;
  if (!(likely(((__pyx_t_6) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_6, __pyx_ptype_5numpy_ndarray))))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2687; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_t_7 = ((PyArrayObject *)__pyx_t_6);
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    __Pyx_SafeReleaseBuffer(&__pyx_bstruct_indexer);
    __pyx_t_8 = __Pyx_GetBufferAndValidate(&__pyx_bstruct_indexer, (PyObject*)__pyx_t_7, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack);
    if (unlikely(__pyx_t_8 < 0)) {
      PyErr_Fetch(&__pyx_t_9, &__pyx_t_10, &__pyx_t_11);
      if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_indexer, (PyObject*)__pyx_v_indexer, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) {
        Py_XDECREF(__pyx_t_9); Py_XDECREF(__pyx_t_10); Py_XDECREF(__pyx_t_11);
        __Pyx_RaiseBufferFallbackError();
      } else {
        PyErr_Restore(__pyx_t_9, __pyx_t_10, __pyx_t_11);
      }
    }
    __pyx_bstride_0_indexer = __pyx_bstruct_indexer.strides[0];
    __pyx_bshape_0_indexer = __pyx_bstruct_indexer.shape[0];
    if (unlikely(__pyx_t_8 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2687; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  }
  __pyx_t_7 = 0;
  __pyx_v_indexer = ((PyArrayObject *)__pyx_t_6);
  __pyx_t_6 = 0;

  /* "pandas/src/generated.pyx":2688
 * 
 *     indexer = np.empty(nleft, dtype=np.int64)
 *     while True:             # <<<<<<<<<<<<<<
 *         if i == nleft:
 *             break
 */
  while (1) {
    if (!1) break;

    /* "pandas/src/generated.pyx":2689
 *     indexer = np.empty(nleft, dtype=np.int64)
 *     while True:
 *         if i == nleft:             # <<<<<<<<<<<<<<
 *             break
 * 
 */
    __pyx_t_12 = (__pyx_v_i == __pyx_v_nleft);
    if (__pyx_t_12) {

      /* "pandas/src/generated.pyx":2690
 *     while True:
 *         if i == nleft:
 *             break             # <<<<<<<<<<<<<<
 * 
 *         if j == nright:
 */
      goto __pyx_L7_break;
      goto __pyx_L8;
    }
    __pyx_L8:;

    /* "pandas/src/generated.pyx":2692
 *             break
 * 
 *         if j == nright:             # <<<<<<<<<<<<<<
 *             indexer[i] = -1
 *             i += 1
 */
    __pyx_t_12 = (__pyx_v_j == __pyx_v_nright);
    if (__pyx_t_12) {

      /* "pandas/src/generated.pyx":2693
 * 
 *         if j == nright:
 *             indexer[i] = -1             # <<<<<<<<<<<<<<
 *             i += 1
 *             continue
 */
      __pyx_t_1 = __pyx_v_i;
      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_bstruct_indexer.buf, __pyx_t_1, __pyx_bstride_0_indexer) = -1;

      /* "pandas/src/generated.pyx":2694
 *         if j == nright:
 *             indexer[i] = -1
 *             i += 1             # <<<<<<<<<<<<<<
 *             continue
 * 
 */
      __pyx_v_i = (__pyx_v_i + 1);

      /* "pandas/src/generated.pyx":2695
 *             indexer[i] = -1
 *             i += 1
 *             continue             # <<<<<<<<<<<<<<
 * 
 *         rval = right[j]
 */
      goto __pyx_L6_continue;
      goto __pyx_L9;
    }
    __pyx_L9:;

    /* "pandas/src/generated.pyx":2697
 *             continue
 * 
 *         rval = right[j]             # <<<<<<<<<<<<<<
 * 
 *         while i < nleft - 1 and left[i] == rval:
 */
    __pyx_t_13 = __pyx_v_j;
    __pyx_v_rval = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_bstruct_right.buf, __pyx_t_13, __pyx_bstride_0_right));

    /* "pandas/src/generated.pyx":2699
 *         rval = right[j]
 * 
 *         while i < nleft - 1 and left[i] == rval:             # <<<<<<<<<<<<<<
 *             indexer[i] = j
 *             i += 1
 */
    while (1) {
      __pyx_t_12 = (__pyx_v_i < (__pyx_v_nleft - 1));
      if (__pyx_t_12) {
        __pyx_t_14 = __pyx_v_i;
        __pyx_t_15 = ((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_bstruct_left.buf, __pyx_t_14, __pyx_bstride_0_left)) == __pyx_v_rval);
        __pyx_t_16 = __pyx_t_15;
      } else {
        __pyx_t_16 = __pyx_t_12;
      }
      if (!__pyx_t_16) break;

      /* "pandas/src/generated.pyx":2700
 * 
 *         while i < nleft - 1 and left[i] == rval:
 *             indexer[i] = j             # <<<<<<<<<<<<<<
 *             i += 1
 * 
 */
      __pyx_t_17 = __pyx_v_i;
      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_bstruct_indexer.buf, __pyx_t_17, __pyx_bstride_0_indexer) = __pyx_v_j;

      /* "pandas/src/generated.pyx":2701
 *         while i < nleft - 1 and left[i] == rval:
 *             indexer[i] = j
 *             i += 1             # <<<<<<<<<<<<<<
 * 
 *         if left[i] == right[j]:
 */
      __pyx_v_i = (__pyx_v_i + 1);
    }

    /* "pandas/src/generated.pyx":2703
 *             i += 1
 * 
 *         if left[i] == right[j]:             # <<<<<<<<<<<<<<
 *             indexer[i] = j
 *             i += 1
 */
    __pyx_t_18 = __pyx_v_i;
    __pyx_t_19 = __pyx_v_j;
    __pyx_t_16 = ((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_bstruct_left.buf, __pyx_t_18, __pyx_bstride_0_left)) == (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_bstruct_right.buf, __pyx_t_19, __pyx_bstride_0_right)));
    if (__pyx_t_16) {

      /* "pandas/src/generated.pyx":2704
 * 
 *         if left[i] == right[j]:
 *             indexer[i] = j             # <<<<<<<<<<<<<<
 *             i += 1
 *             while i < nleft - 1 and left[i] == rval:
 */
      __pyx_t_20 = __pyx_v_i;
      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_bstruct_indexer.buf, __pyx_t_20, __pyx_bstride_0_indexer) = __pyx_v_j;

      /* "pandas/src/generated.pyx":2705
 *         if left[i] == right[j]:
 *             indexer[i] = j
 *             i += 1             # <<<<<<<<<<<<<<
 *             while i < nleft - 1 and left[i] == rval:
 *                 indexer[i] = j
 */
      __pyx_v_i = (__pyx_v_i + 1);

      /* "pandas/src/generated.pyx":2706
 *             indexer[i] = j
 *             i += 1
 *             while i < nleft - 1 and left[i] == rval:             # <<<<<<<<<<<<<<
 *                 indexer[i] = j
 *                 i += 1
 */
      while (1) {
        __pyx_t_16 = (__pyx_v_i < (__pyx_v_nleft - 1));
        if (__pyx_t_16) {
          __pyx_t_21 = __pyx_v_i;
          __pyx_t_12 = ((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_bstruct_left.buf, __pyx_t_21, __pyx_bstride_0_left)) == __pyx_v_rval);
          __pyx_t_15 = __pyx_t_12;
        } else {
          __pyx_t_15 = __pyx_t_16;
        }
        if (!__pyx_t_15) break;

        /* "pandas/src/generated.pyx":2707
 *             i += 1
 *             while i < nleft - 1 and left[i] == rval:
 *                 indexer[i] = j             # <<<<<<<<<<<<<<
 *                 i += 1
 *             j += 1
 */
        __pyx_t_22 = __pyx_v_i;
        *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_bstruct_indexer.buf, __pyx_t_22, __pyx_bstride_0_indexer) = __pyx_v_j;

        /* "pandas/src/generated.pyx":2708
 *             while i < nleft - 1 and left[i] == rval:
 *                 indexer[i] = j
 *                 i += 1             # <<<<<<<<<<<<<<
 *             j += 1
 *         elif left[i] > rval:
 */
        __pyx_v_i = (__pyx_v_i + 1);
      }

      /* "pandas/src/generated.pyx":2709
 *                 indexer[i] = j
 *                 i += 1
 *             j += 1             # <<<<<<<<<<<<<<
 *         elif left[i] > rval:
 *             indexer[i] = -1
 */
      __pyx_v_j = (__pyx_v_j + 1);
      goto __pyx_L12;
    }

    /* "pandas/src/generated.pyx":2710
 *                 i += 1
 *             j += 1
 *         elif left[i] > rval:             # <<<<<<<<<<<<<<
 *             indexer[i] = -1
 *             j += 1
 */
    __pyx_t_23 = __pyx_v_i;
    __pyx_t_15 = ((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_bstruct_left.buf, __pyx_t_23, __pyx_bstride_0_left)) > __pyx_v_rval);
    if (__pyx_t_15) {

      /* "pandas/src/generated.pyx":2711
 *             j += 1
 *         elif left[i] > rval:
 *             indexer[i] = -1             # <<<<<<<<<<<<<<
 *             j += 1
 *         else:
 */
      __pyx_t_24 = __pyx_v_i;
      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_bstruct_indexer.buf, __pyx_t_24, __pyx_bstride_0_indexer) = -1;

      /* "pandas/src/generated.pyx":2712
 *         elif left[i] > rval:
 *             indexer[i] = -1
 *             j += 1             # <<<<<<<<<<<<<<
 *         else:
 *             indexer[i] = -1
 */
      __pyx_v_j = (__pyx_v_j + 1);
      goto __pyx_L12;
    }
    /*else*/ {

      /* "pandas/src/generated.pyx":2714
 *             j += 1
 *         else:
 *             indexer[i] = -1             # <<<<<<<<<<<<<<
 *             i += 1
 *     return indexer
 */
      __pyx_t_25 = __pyx_v_i;
      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_bstruct_indexer.buf, __pyx_t_25, __pyx_bstride_0_indexer) = -1;

      /* "pandas/src/generated.pyx":2715
 *         else:
 *             indexer[i] = -1
 *             i += 1             # <<<<<<<<<<<<<<
 *     return indexer
 * 
 */
      __pyx_v_i = (__pyx_v_i + 1);
    }
    __pyx_L12:;
    __pyx_L6_continue:;
  }
  __pyx_L7_break:;

  /* "pandas/src/generated.pyx":2716
 *             indexer[i] = -1
 *             i += 1
 *     return indexer             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_indexer));
  __pyx_r = ((PyObject *)__pyx_v_indexer);
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  { PyObject *__pyx_type, *__pyx_value, *__pyx_tb;
    __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);
    __Pyx_SafeReleaseBuffer(&__pyx_bstruct_right);
    __Pyx_SafeReleaseBuffer(&__pyx_bstruct_indexer);
    __Pyx_SafeReleaseBuffer(&__pyx_bstruct_left);
  __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);}
  __Pyx_AddTraceback("pandas._algos.left_join_indexer_unique_int64", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  goto __pyx_L2;
  __pyx_L0:;
  __Pyx_SafeReleaseBuffer(&__pyx_bstruct_right);
  __Pyx_SafeReleaseBuffer(&__pyx_bstruct_indexer);
  __Pyx_SafeReleaseBuffer(&__pyx_bstruct_left);
  __pyx_L2:;
  __Pyx_XDECREF((PyObject *)__pyx_v_indexer);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "pandas/src/generated.pyx":2720
 * 
 * 
 * def left_join_indexer_float64(ndarray[float64_t] left,             # <<<<<<<<<<<<<<
 *                               ndarray[float64_t] right):
 *     '''
 */

static PyObject *__pyx_pf_6pandas_6_algos_79left_join_indexer_float64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6pandas_6_algos_79left_join_indexer_float64[] = "\n    Two-pass algorithm for monotonic indexes. Handles many-to-one merges\n    ";
static PyMethodDef __pyx_mdef_6pandas_6_algos_79left_join_indexer_float64 = {__Pyx_NAMESTR("left_join_indexer_float64"), (PyCFunction)__pyx_pf_6pandas_6_algos_79left_join_indexer_float64, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6pandas_6_algos_79left_join_indexer_float64)};
static PyObject *__pyx_pf_6pandas_6_algos_79left_join_indexer_float64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyArrayObject *__pyx_v_left = 0;
  PyArrayObject *__pyx_v_right = 0;
  Py_ssize_t __pyx_v_i;
  Py_ssize_t __pyx_v_j;
  Py_ssize_t __pyx_v_nright;
  Py_ssize_t __pyx_v_nleft;
  Py_ssize_t __pyx_v_count;
  __pyx_t_5numpy_float64_t __pyx_v_lval;
  __pyx_t_5numpy_float64_t __pyx_v_rval;
  PyArrayObject *__pyx_v_lindexer = 0;
  PyArrayObject *__pyx_v_rindexer = 0;
  PyArrayObject *__pyx_v_result = 0;
  Py_buffer __pyx_bstruct_result;
  Py_ssize_t __pyx_bstride_0_result = 0;
  Py_ssize_t __pyx_bshape_0_result = 0;
  Py_buffer __pyx_bstruct_right;
  Py_ssize_t __pyx_bstride_0_right = 0;
  Py_ssize_t __pyx_bshape_0_right = 0;
  Py_buffer __pyx_bstruct_lindexer;
  Py_ssize_t __pyx_bstride_0_lindexer = 0;
  Py_ssize_t __pyx_bshape_0_lindexer = 0;
  Py_buffer __pyx_bstruct_rindexer;
  Py_ssize_t __pyx_bstride_0_rindexer = 0;
  Py_ssize_t __pyx_bshape_0_rindexer = 0;
  Py_buffer __pyx_bstruct_left;
  Py_ssize_t __pyx_bstride_0_left = 0;
  Py_ssize_t __pyx_bshape_0_left = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  Py_ssize_t __pyx_t_1;
  int __pyx_t_2;
  int __pyx_t_3;
  Py_ssize_t __pyx_t_4;
  Py_ssize_t __pyx_t_5;
  int __pyx_t_6;
  int __pyx_t_7;
  Py_ssize_t __pyx_t_8;
  Py_ssize_t __pyx_t_9;
  PyObject *__pyx_t_10 = NULL;
  PyObject *__pyx_t_11 = NULL;
  PyObject *__pyx_t_12 = NULL;
  PyObject *__pyx_t_13 = NULL;
  PyObject *__pyx_t_14 = NULL;
  PyArrayObject *__pyx_t_15 = NULL;
  PyObject *__pyx_t_16 = NULL;
  PyObject *__pyx_t_17 = NULL;
  PyObject *__pyx_t_18 = NULL;
  PyArrayObject *__pyx_t_19 = NULL;
  Py_ssize_t __pyx_t_20;
  Py_ssize_t __pyx_t_21;
  Py_ssize_t __pyx_t_22;
  Py_ssize_t __pyx_t_23;
  Py_ssize_t __pyx_t_24;
  Py_ssize_t __pyx_t_25;
  Py_ssize_t __pyx_t_26;
  Py_ssize_t __pyx_t_27;
  Py_ssize_t __pyx_t_28;
  Py_ssize_t __pyx_t_29;
  Py_ssize_t __pyx_t_30;
  Py_ssize_t __pyx_t_31;
  Py_ssize_t __pyx_t_32;
  Py_ssize_t __pyx_t_33;
  Py_ssize_t __pyx_t_34;
  Py_ssize_t __pyx_t_35;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__left,&__pyx_n_s__right,0};
  __Pyx_RefNannySetupContext("left_join_indexer_float64");
  __pyx_self = __pyx_self;
  {
    PyObject* values[2] = {0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  0:
        values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__left);
        if (likely(values[0])) kw_args--;
        else goto __pyx_L5_argtuple_error;
        case  1:
        values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__right);
        if (likely(values[1])) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("left_join_indexer_float64", 1, 2, 2, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2720; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "left_join_indexer_float64") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2720; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
    }
    __pyx_v_left = ((PyArrayObject *)values[0]);
    __pyx_v_right = ((PyArrayObject *)values[1]);
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("left_join_indexer_float64", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2720; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("pandas._algos.left_join_indexer_float64", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_bstruct_lindexer.buf = NULL;
  __pyx_bstruct_rindexer.buf = NULL;
  __pyx_bstruct_result.buf = NULL;
  __pyx_bstruct_left.buf = NULL;
  __pyx_bstruct_right.buf = NULL;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_left), __pyx_ptype_5numpy_ndarray, 1, "left", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2720; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_right), __pyx_ptype_5numpy_ndarray, 1, "right", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2721; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_left, (PyObject*)__pyx_v_left, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2720; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  }
  __pyx_bstride_0_left = __pyx_bstruct_left.strides[0];
  __pyx_bshape_0_left = __pyx_bstruct_left.shape[0];
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_right, (PyObject*)__pyx_v_right, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2720; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  }
  __pyx_bstride_0_right = __pyx_bstruct_right.strides[0];
  __pyx_bshape_0_right = __pyx_bstruct_right.shape[0];

  /* "pandas/src/generated.pyx":2731
 *         ndarray[float64_t] result
 * 
 *     nleft = len(left)             # <<<<<<<<<<<<<<
 *     nright = len(right)
 * 
 */
  __pyx_t_1 = PyObject_Length(((PyObject *)__pyx_v_left)); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2731; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_v_nleft = __pyx_t_1;

  /* "pandas/src/generated.pyx":2732
 * 
 *     nleft = len(left)
 *     nright = len(right)             # <<<<<<<<<<<<<<
 * 
 *     i = 0
 */
  __pyx_t_1 = PyObject_Length(((PyObject *)__pyx_v_right)); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2732; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_v_nright = __pyx_t_1;

  /* "pandas/src/generated.pyx":2734
 *     nright = len(right)
 * 
 *     i = 0             # <<<<<<<<<<<<<<
 *     j = 0
 *     count = 0
 */
  __pyx_v_i = 0;

  /* "pandas/src/generated.pyx":2735
 * 
 *     i = 0
 *     j = 0             # <<<<<<<<<<<<<<
 *     count = 0
 *     if nleft > 0:
 */
  __pyx_v_j = 0;

  /* "pandas/src/generated.pyx":2736
 *     i = 0
 *     j = 0
 *     count = 0             # <<<<<<<<<<<<<<
 *     if nleft > 0:
 *         while i < nleft:
 */
  __pyx_v_count = 0;

  /* "pandas/src/generated.pyx":2737
 *     j = 0
 *     count = 0
 *     if nleft > 0:             # <<<<<<<<<<<<<<
 *         while i < nleft:
 *             if j == nright:
 */
  __pyx_t_2 = (__pyx_v_nleft > 0);
  if (__pyx_t_2) {

    /* "pandas/src/generated.pyx":2738
 *     count = 0
 *     if nleft > 0:
 *         while i < nleft:             # <<<<<<<<<<<<<<
 *             if j == nright:
 *                 count += nleft - i
 */
    while (1) {
      __pyx_t_2 = (__pyx_v_i < __pyx_v_nleft);
      if (!__pyx_t_2) break;

      /* "pandas/src/generated.pyx":2739
 *     if nleft > 0:
 *         while i < nleft:
 *             if j == nright:             # <<<<<<<<<<<<<<
 *                 count += nleft - i
 *                 break
 */
      __pyx_t_2 = (__pyx_v_j == __pyx_v_nright);
      if (__pyx_t_2) {

        /* "pandas/src/generated.pyx":2740
 *         while i < nleft:
 *             if j == nright:
 *                 count += nleft - i             # <<<<<<<<<<<<<<
 *                 break
 * 
 */
        __pyx_v_count = (__pyx_v_count + (__pyx_v_nleft - __pyx_v_i));

        /* "pandas/src/generated.pyx":2741
 *             if j == nright:
 *                 count += nleft - i
 *                 break             # <<<<<<<<<<<<<<
 * 
 *             lval = left[i]
 */
        goto __pyx_L8_break;
        goto __pyx_L9;
      }
      __pyx_L9:;

      /* "pandas/src/generated.pyx":2743
 *                 break
 * 
 *             lval = left[i]             # <<<<<<<<<<<<<<
 *             rval = right[j]
 * 
 */
      __pyx_t_1 = __pyx_v_i;
      __pyx_t_3 = -1;
      if (__pyx_t_1 < 0) {
        __pyx_t_1 += __pyx_bshape_0_left;
        if (unlikely(__pyx_t_1 < 0)) __pyx_t_3 = 0;
      } else if (unlikely(__pyx_t_1 >= __pyx_bshape_0_left)) __pyx_t_3 = 0;
      if (unlikely(__pyx_t_3 != -1)) {
        __Pyx_RaiseBufferIndexError(__pyx_t_3);
        {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2743; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      }
      __pyx_v_lval = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_left.buf, __pyx_t_1, __pyx_bstride_0_left));

      /* "pandas/src/generated.pyx":2744
 * 
 *             lval = left[i]
 *             rval = right[j]             # <<<<<<<<<<<<<<
 * 
 *             if lval == rval:
 */
      __pyx_t_4 = __pyx_v_j;
      __pyx_t_3 = -1;
      if (__pyx_t_4 < 0) {
        __pyx_t_4 += __pyx_bshape_0_right;
        if (unlikely(__pyx_t_4 < 0)) __pyx_t_3 = 0;
      } else if (unlikely(__pyx_t_4 >= __pyx_bshape_0_right)) __pyx_t_3 = 0;
      if (unlikely(__pyx_t_3 != -1)) {
        __Pyx_RaiseBufferIndexError(__pyx_t_3);
        {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2744; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      }
      __pyx_v_rval = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_right.buf, __pyx_t_4, __pyx_bstride_0_right));

      /* "pandas/src/generated.pyx":2746
 *             rval = right[j]
 * 
 *             if lval == rval:             # <<<<<<<<<<<<<<
 *                 count += 1
 *                 if i < nleft - 1:
 */
      __pyx_t_2 = (__pyx_v_lval == __pyx_v_rval);
      if (__pyx_t_2) {

        /* "pandas/src/generated.pyx":2747
 * 
 *             if lval == rval:
 *                 count += 1             # <<<<<<<<<<<<<<
 *                 if i < nleft - 1:
 *                     if j < nright - 1 and right[j + 1] == rval:
 */
        __pyx_v_count = (__pyx_v_count + 1);

        /* "pandas/src/generated.pyx":2748
 *             if lval == rval:
 *                 count += 1
 *                 if i < nleft - 1:             # <<<<<<<<<<<<<<
 *                     if j < nright - 1 and right[j + 1] == rval:
 *                         j += 1
 */
        __pyx_t_2 = (__pyx_v_i < (__pyx_v_nleft - 1));
        if (__pyx_t_2) {

          /* "pandas/src/generated.pyx":2749
 *                 count += 1
 *                 if i < nleft - 1:
 *                     if j < nright - 1 and right[j + 1] == rval:             # <<<<<<<<<<<<<<
 *                         j += 1
 *                     else:
 */
          __pyx_t_2 = (__pyx_v_j < (__pyx_v_nright - 1));
          if (__pyx_t_2) {
            __pyx_t_5 = (__pyx_v_j + 1);
            __pyx_t_3 = -1;
            if (__pyx_t_5 < 0) {
              __pyx_t_5 += __pyx_bshape_0_right;
              if (unlikely(__pyx_t_5 < 0)) __pyx_t_3 = 0;
            } else if (unlikely(__pyx_t_5 >= __pyx_bshape_0_right)) __pyx_t_3 = 0;
            if (unlikely(__pyx_t_3 != -1)) {
              __Pyx_RaiseBufferIndexError(__pyx_t_3);
              {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2749; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
            }
            __pyx_t_6 = ((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_right.buf, __pyx_t_5, __pyx_bstride_0_right)) == __pyx_v_rval);
            __pyx_t_7 = __pyx_t_6;
          } else {
            __pyx_t_7 = __pyx_t_2;
          }
          if (__pyx_t_7) {

            /* "pandas/src/generated.pyx":2750
 *                 if i < nleft - 1:
 *                     if j < nright - 1 and right[j + 1] == rval:
 *                         j += 1             # <<<<<<<<<<<<<<
 *                     else:
 *                         i += 1
 */
            __pyx_v_j = (__pyx_v_j + 1);
            goto __pyx_L12;
          }
          /*else*/ {

            /* "pandas/src/generated.pyx":2752
 *                         j += 1
 *                     else:
 *                         i += 1             # <<<<<<<<<<<<<<
 *                         if left[i] != rval:
 *                             j += 1
 */
            __pyx_v_i = (__pyx_v_i + 1);

            /* "pandas/src/generated.pyx":2753
 *                     else:
 *                         i += 1
 *                         if left[i] != rval:             # <<<<<<<<<<<<<<
 *                             j += 1
 *                 elif j < nright - 1:
 */
            __pyx_t_8 = __pyx_v_i;
            __pyx_t_3 = -1;
            if (__pyx_t_8 < 0) {
              __pyx_t_8 += __pyx_bshape_0_left;
              if (unlikely(__pyx_t_8 < 0)) __pyx_t_3 = 0;
            } else if (unlikely(__pyx_t_8 >= __pyx_bshape_0_left)) __pyx_t_3 = 0;
            if (unlikely(__pyx_t_3 != -1)) {
              __Pyx_RaiseBufferIndexError(__pyx_t_3);
              {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2753; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
            }
            __pyx_t_7 = ((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_left.buf, __pyx_t_8, __pyx_bstride_0_left)) != __pyx_v_rval);
            if (__pyx_t_7) {

              /* "pandas/src/generated.pyx":2754
 *                         i += 1
 *                         if left[i] != rval:
 *                             j += 1             # <<<<<<<<<<<<<<
 *                 elif j < nright - 1:
 *                     j += 1
 */
              __pyx_v_j = (__pyx_v_j + 1);
              goto __pyx_L13;
            }
            __pyx_L13:;
          }
          __pyx_L12:;
          goto __pyx_L11;
        }

        /* "pandas/src/generated.pyx":2755
 *                         if left[i] != rval:
 *                             j += 1
 *                 elif j < nright - 1:             # <<<<<<<<<<<<<<
 *                     j += 1
 *                     if lval != right[j]:
 */
        __pyx_t_7 = (__pyx_v_j < (__pyx_v_nright - 1));
        if (__pyx_t_7) {

          /* "pandas/src/generated.pyx":2756
 *                             j += 1
 *                 elif j < nright - 1:
 *                     j += 1             # <<<<<<<<<<<<<<
 *                     if lval != right[j]:
 *                         i += 1
 */
          __pyx_v_j = (__pyx_v_j + 1);

          /* "pandas/src/generated.pyx":2757
 *                 elif j < nright - 1:
 *                     j += 1
 *                     if lval != right[j]:             # <<<<<<<<<<<<<<
 *                         i += 1
 *                 else:
 */
          __pyx_t_9 = __pyx_v_j;
          __pyx_t_3 = -1;
          if (__pyx_t_9 < 0) {
            __pyx_t_9 += __pyx_bshape_0_right;
            if (unlikely(__pyx_t_9 < 0)) __pyx_t_3 = 0;
          } else if (unlikely(__pyx_t_9 >= __pyx_bshape_0_right)) __pyx_t_3 = 0;
          if (unlikely(__pyx_t_3 != -1)) {
            __Pyx_RaiseBufferIndexError(__pyx_t_3);
            {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2757; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
          }
          __pyx_t_7 = (__pyx_v_lval != (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_right.buf, __pyx_t_9, __pyx_bstride_0_right)));
          if (__pyx_t_7) {

            /* "pandas/src/generated.pyx":2758
 *                     j += 1
 *                     if lval != right[j]:
 *                         i += 1             # <<<<<<<<<<<<<<
 *                 else:
 *                     # end of the road
 */
            __pyx_v_i = (__pyx_v_i + 1);
            goto __pyx_L14;
          }
          __pyx_L14:;
          goto __pyx_L11;
        }
        /*else*/ {

          /* "pandas/src/generated.pyx":2761
 *                 else:
 *                     # end of the road
 *                     break             # <<<<<<<<<<<<<<
 *             elif lval < rval:
 *                 count += 1
 */
          goto __pyx_L8_break;
        }
        __pyx_L11:;
        goto __pyx_L10;
      }

      /* "pandas/src/generated.pyx":2762
 *                     # end of the road
 *                     break
 *             elif lval < rval:             # <<<<<<<<<<<<<<
 *                 count += 1
 *                 i += 1
 */
      __pyx_t_7 = (__pyx_v_lval < __pyx_v_rval);
      if (__pyx_t_7) {

        /* "pandas/src/generated.pyx":2763
 *                     break
 *             elif lval < rval:
 *                 count += 1             # <<<<<<<<<<<<<<
 *                 i += 1
 *             else:
 */
        __pyx_v_count = (__pyx_v_count + 1);

        /* "pandas/src/generated.pyx":2764
 *             elif lval < rval:
 *                 count += 1
 *                 i += 1             # <<<<<<<<<<<<<<
 *             else:
 *                 j += 1
 */
        __pyx_v_i = (__pyx_v_i + 1);
        goto __pyx_L10;
      }
      /*else*/ {

        /* "pandas/src/generated.pyx":2766
 *                 i += 1
 *             else:
 *                 j += 1             # <<<<<<<<<<<<<<
 * 
 *     # do it again now that result size is known
 */
        __pyx_v_j = (__pyx_v_j + 1);
      }
      __pyx_L10:;
    }
    __pyx_L8_break:;
    goto __pyx_L6;
  }
  __pyx_L6:;

  /* "pandas/src/generated.pyx":2770
 *     # do it again now that result size is known
 * 
 *     lindexer = np.empty(count, dtype=np.int64)             # <<<<<<<<<<<<<<
 *     rindexer = np.empty(count, dtype=np.int64)
 *     result = np.empty(count, dtype=np.float64)
 */
  __pyx_t_10 = __Pyx_GetName(__pyx_m, __pyx_n_s__np); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2770; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_10);
  __pyx_t_11 = PyObject_GetAttr(__pyx_t_10, __pyx_n_s__empty); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2770; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_11);
  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
  __pyx_t_10 = PyInt_FromSsize_t(__pyx_v_count); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2770; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_10);
  __pyx_t_12 = PyTuple_New(1); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2770; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_12));
  PyTuple_SET_ITEM(__pyx_t_12, 0, __pyx_t_10);
  __Pyx_GIVEREF(__pyx_t_10);
  __pyx_t_10 = 0;
  __pyx_t_10 = PyDict_New(); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2770; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_10));
  __pyx_t_13 = __Pyx_GetName(__pyx_m, __pyx_n_s__np); if (unlikely(!__pyx_t_13)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2770; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_13);
  __pyx_t_14 = PyObject_GetAttr(__pyx_t_13, __pyx_n_s__int64); if (unlikely(!__pyx_t_14)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2770; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_14);
  __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
  if (PyDict_SetItem(__pyx_t_10, ((PyObject *)__pyx_n_s__dtype), __pyx_t_14) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2770; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
  __pyx_t_14 = PyEval_CallObjectWithKeywords(__pyx_t_11, ((PyObject *)__pyx_t_12), ((PyObject *)__pyx_t_10)); if (unlikely(!__pyx_t_14)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2770; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_14);
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  __Pyx_DECREF(((PyObject *)__pyx_t_12)); __pyx_t_12 = 0;
  __Pyx_DECREF(((PyObject *)__pyx_t_10)); __pyx_t_10 = 0;
  if (!(likely(((__pyx_t_14) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_14, __pyx_ptype_5numpy_ndarray))))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2770; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_t_15 = ((PyArrayObject *)__pyx_t_14);
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    __Pyx_SafeReleaseBuffer(&__pyx_bstruct_lindexer);
    __pyx_t_3 = __Pyx_GetBufferAndValidate(&__pyx_bstruct_lindexer, (PyObject*)__pyx_t_15, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack);
    if (unlikely(__pyx_t_3 < 0)) {
      PyErr_Fetch(&__pyx_t_16, &__pyx_t_17, &__pyx_t_18);
      if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_lindexer, (PyObject*)__pyx_v_lindexer, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) {
        Py_XDECREF(__pyx_t_16); Py_XDECREF(__pyx_t_17); Py_XDECREF(__pyx_t_18);
        __Pyx_RaiseBufferFallbackError();
      } else {
        PyErr_Restore(__pyx_t_16, __pyx_t_17, __pyx_t_18);
      }
    }
    __pyx_bstride_0_lindexer = __pyx_bstruct_lindexer.strides[0];
    __pyx_bshape_0_lindexer = __pyx_bstruct_lindexer.shape[0];
    if (unlikely(__pyx_t_3 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2770; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  }
  __pyx_t_15 = 0;
  __pyx_v_lindexer = ((PyArrayObject *)__pyx_t_14);
  __pyx_t_14 = 0;

  /* "pandas/src/generated.pyx":2771
 * 
 *     lindexer = np.empty(count, dtype=np.int64)
 *     rindexer = np.empty(count, dtype=np.int64)             # <<<<<<<<<<<<<<
 *     result = np.empty(count, dtype=np.float64)
 * 
 */
  __pyx_t_14 = __Pyx_GetName(__pyx_m, __pyx_n_s__np); if (unlikely(!__pyx_t_14)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2771; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_14);
  __pyx_t_10 = PyObject_GetAttr(__pyx_t_14, __pyx_n_s__empty); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2771; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_10);
  __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
  __pyx_t_14 = PyInt_FromSsize_t(__pyx_v_count); if (unlikely(!__pyx_t_14)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2771; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_14);
  __pyx_t_12 = PyTuple_New(1); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2771; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_12));
  PyTuple_SET_ITEM(__pyx_t_12, 0, __pyx_t_14);
  __Pyx_GIVEREF(__pyx_t_14);
  __pyx_t_14 = 0;
  __pyx_t_14 = PyDict_New(); if (unlikely(!__pyx_t_14)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2771; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_14));
  __pyx_t_11 = __Pyx_GetName(__pyx_m, __pyx_n_s__np); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2771; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_11);
  __pyx_t_13 = PyObject_GetAttr(__pyx_t_11, __pyx_n_s__int64); if (unlikely(!__pyx_t_13)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2771; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_13);
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  if (PyDict_SetItem(__pyx_t_14, ((PyObject *)__pyx_n_s__dtype), __pyx_t_13) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2771; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
  __pyx_t_13 = PyEval_CallObjectWithKeywords(__pyx_t_10, ((PyObject *)__pyx_t_12), ((PyObject *)__pyx_t_14)); if (unlikely(!__pyx_t_13)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2771; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_13);
  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
  __Pyx_DECREF(((PyObject *)__pyx_t_12)); __pyx_t_12 = 0;
  __Pyx_DECREF(((PyObject *)__pyx_t_14)); __pyx_t_14 = 0;
  if (!(likely(((__pyx_t_13) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_13, __pyx_ptype_5numpy_ndarray))))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2771; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_t_15 = ((PyArrayObject *)__pyx_t_13);
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    __Pyx_SafeReleaseBuffer(&__pyx_bstruct_rindexer);
    __pyx_t_3 = __Pyx_GetBufferAndValidate(&__pyx_bstruct_rindexer, (PyObject*)__pyx_t_15, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack);
    if (unlikely(__pyx_t_3 < 0)) {
      PyErr_Fetch(&__pyx_t_18, &__pyx_t_17, &__pyx_t_16);
      if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_rindexer, (PyObject*)__pyx_v_rindexer, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) {
        Py_XDECREF(__pyx_t_18); Py_XDECREF(__pyx_t_17); Py_XDECREF(__pyx_t_16);
        __Pyx_RaiseBufferFallbackError();
      } else {
        PyErr_Restore(__pyx_t_18, __pyx_t_17, __pyx_t_16);
      }
    }
    __pyx_bstride_0_rindexer = __pyx_bstruct_rindexer.strides[0];
    __pyx_bshape_0_rindexer = __pyx_bstruct_rindexer.shape[0];
    if (unlikely(__pyx_t_3 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2771; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  }
  __pyx_t_15 = 0;
  __pyx_v_rindexer = ((PyArrayObject *)__pyx_t_13);
  __pyx_t_13 = 0;

  /* "pandas/src/generated.pyx":2772
 *     lindexer = np.empty(count, dtype=np.int64)
 *     rindexer = np.empty(count, dtype=np.int64)
 *     result = np.empty(count, dtype=np.float64)             # <<<<<<<<<<<<<<
 * 
 *     i = 0
 */
  __pyx_t_13 = __Pyx_GetName(__pyx_m, __pyx_n_s__np); if (unlikely(!__pyx_t_13)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2772; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_13);
  __pyx_t_14 = PyObject_GetAttr(__pyx_t_13, __pyx_n_s__empty); if (unlikely(!__pyx_t_14)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2772; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_14);
  __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
  __pyx_t_13 = PyInt_FromSsize_t(__pyx_v_count); if (unlikely(!__pyx_t_13)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2772; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_13);
  __pyx_t_12 = PyTuple_New(1); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2772; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_12));
  PyTuple_SET_ITEM(__pyx_t_12, 0, __pyx_t_13);
  __Pyx_GIVEREF(__pyx_t_13);
  __pyx_t_13 = 0;
  __pyx_t_13 = PyDict_New(); if (unlikely(!__pyx_t_13)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2772; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_13));
  __pyx_t_10 = __Pyx_GetName(__pyx_m, __pyx_n_s__np); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2772; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_10);
  __pyx_t_11 = PyObject_GetAttr(__pyx_t_10, __pyx_n_s__float64); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2772; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_11);
  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
  if (PyDict_SetItem(__pyx_t_13, ((PyObject *)__pyx_n_s__dtype), __pyx_t_11) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2772; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  __pyx_t_11 = PyEval_CallObjectWithKeywords(__pyx_t_14, ((PyObject *)__pyx_t_12), ((PyObject *)__pyx_t_13)); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2772; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_11);
  __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
  __Pyx_DECREF(((PyObject *)__pyx_t_12)); __pyx_t_12 = 0;
  __Pyx_DECREF(((PyObject *)__pyx_t_13)); __pyx_t_13 = 0;
  if (!(likely(((__pyx_t_11) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_11, __pyx_ptype_5numpy_ndarray))))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2772; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_t_19 = ((PyArrayObject *)__pyx_t_11);
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    __Pyx_SafeReleaseBuffer(&__pyx_bstruct_result);
    __pyx_t_3 = __Pyx_GetBufferAndValidate(&__pyx_bstruct_result, (PyObject*)__pyx_t_19, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack);
    if (unlikely(__pyx_t_3 < 0)) {
      PyErr_Fetch(&__pyx_t_16, &__pyx_t_17, &__pyx_t_18);
      if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_result, (PyObject*)__pyx_v_result, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) {
        Py_XDECREF(__pyx_t_16); Py_XDECREF(__pyx_t_17); Py_XDECREF(__pyx_t_18);
        __Pyx_RaiseBufferFallbackError();
      } else {
        PyErr_Restore(__pyx_t_16, __pyx_t_17, __pyx_t_18);
      }
    }
    __pyx_bstride_0_result = __pyx_bstruct_result.strides[0];
    __pyx_bshape_0_result = __pyx_bstruct_result.shape[0];
    if (unlikely(__pyx_t_3 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2772; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  }
  __pyx_t_19 = 0;
  __pyx_v_result = ((PyArrayObject *)__pyx_t_11);
  __pyx_t_11 = 0;

  /* "pandas/src/generated.pyx":2774
 *     result = np.empty(count, dtype=np.float64)
 * 
 *     i = 0             # <<<<<<<<<<<<<<
 *     j = 0
 *     count = 0
 */
  __pyx_v_i = 0;

  /* "pandas/src/generated.pyx":2775
 * 
 *     i = 0
 *     j = 0             # <<<<<<<<<<<<<<
 *     count = 0
 *     if nleft > 0:
 */
  __pyx_v_j = 0;

  /* "pandas/src/generated.pyx":2776
 *     i = 0
 *     j = 0
 *     count = 0             # <<<<<<<<<<<<<<
 *     if nleft > 0:
 *         while i < nleft:
 */
  __pyx_v_count = 0;

  /* "pandas/src/generated.pyx":2777
 *     j = 0
 *     count = 0
 *     if nleft > 0:             # <<<<<<<<<<<<<<
 *         while i < nleft:
 *             if j == nright:
 */
  __pyx_t_7 = (__pyx_v_nleft > 0);
  if (__pyx_t_7) {

    /* "pandas/src/generated.pyx":2778
 *     count = 0
 *     if nleft > 0:
 *         while i < nleft:             # <<<<<<<<<<<<<<
 *             if j == nright:
 *                 while i < nleft:
 */
    while (1) {
      __pyx_t_7 = (__pyx_v_i < __pyx_v_nleft);
      if (!__pyx_t_7) break;

      /* "pandas/src/generated.pyx":2779
 *     if nleft > 0:
 *         while i < nleft:
 *             if j == nright:             # <<<<<<<<<<<<<<
 *                 while i < nleft:
 *                     lindexer[count] = i
 */
      __pyx_t_7 = (__pyx_v_j == __pyx_v_nright);
      if (__pyx_t_7) {

        /* "pandas/src/generated.pyx":2780
 *         while i < nleft:
 *             if j == nright:
 *                 while i < nleft:             # <<<<<<<<<<<<<<
 *                     lindexer[count] = i
 *                     rindexer[count] = -1
 */
        while (1) {
          __pyx_t_7 = (__pyx_v_i < __pyx_v_nleft);
          if (!__pyx_t_7) break;

          /* "pandas/src/generated.pyx":2781
 *             if j == nright:
 *                 while i < nleft:
 *                     lindexer[count] = i             # <<<<<<<<<<<<<<
 *                     rindexer[count] = -1
 *                     result[count] = left[i]
 */
          __pyx_t_20 = __pyx_v_count;
          __pyx_t_3 = -1;
          if (__pyx_t_20 < 0) {
            __pyx_t_20 += __pyx_bshape_0_lindexer;
            if (unlikely(__pyx_t_20 < 0)) __pyx_t_3 = 0;
          } else if (unlikely(__pyx_t_20 >= __pyx_bshape_0_lindexer)) __pyx_t_3 = 0;
          if (unlikely(__pyx_t_3 != -1)) {
            __Pyx_RaiseBufferIndexError(__pyx_t_3);
            {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2781; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
          }
          *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_bstruct_lindexer.buf, __pyx_t_20, __pyx_bstride_0_lindexer) = __pyx_v_i;

          /* "pandas/src/generated.pyx":2782
 *                 while i < nleft:
 *                     lindexer[count] = i
 *                     rindexer[count] = -1             # <<<<<<<<<<<<<<
 *                     result[count] = left[i]
 *                     i += 1
 */
          __pyx_t_21 = __pyx_v_count;
          __pyx_t_3 = -1;
          if (__pyx_t_21 < 0) {
            __pyx_t_21 += __pyx_bshape_0_rindexer;
            if (unlikely(__pyx_t_21 < 0)) __pyx_t_3 = 0;
          } else if (unlikely(__pyx_t_21 >= __pyx_bshape_0_rindexer)) __pyx_t_3 = 0;
          if (unlikely(__pyx_t_3 != -1)) {
            __Pyx_RaiseBufferIndexError(__pyx_t_3);
            {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2782; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
          }
          *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_bstruct_rindexer.buf, __pyx_t_21, __pyx_bstride_0_rindexer) = -1;

          /* "pandas/src/generated.pyx":2783
 *                     lindexer[count] = i
 *                     rindexer[count] = -1
 *                     result[count] = left[i]             # <<<<<<<<<<<<<<
 *                     i += 1
 *                     count += 1
 */
          __pyx_t_22 = __pyx_v_i;
          __pyx_t_3 = -1;
          if (__pyx_t_22 < 0) {
            __pyx_t_22 += __pyx_bshape_0_left;
            if (unlikely(__pyx_t_22 < 0)) __pyx_t_3 = 0;
          } else if (unlikely(__pyx_t_22 >= __pyx_bshape_0_left)) __pyx_t_3 = 0;
          if (unlikely(__pyx_t_3 != -1)) {
            __Pyx_RaiseBufferIndexError(__pyx_t_3);
            {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2783; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
          }
          __pyx_t_23 = __pyx_v_count;
          __pyx_t_3 = -1;
          if (__pyx_t_23 < 0) {
            __pyx_t_23 += __pyx_bshape_0_result;
            if (unlikely(__pyx_t_23 < 0)) __pyx_t_3 = 0;
          } else if (unlikely(__pyx_t_23 >= __pyx_bshape_0_result)) __pyx_t_3 = 0;
          if (unlikely(__pyx_t_3 != -1)) {
            __Pyx_RaiseBufferIndexError(__pyx_t_3);
            {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2783; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
          }
          *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_result.buf, __pyx_t_23, __pyx_bstride_0_result) = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_left.buf, __pyx_t_22, __pyx_bstride_0_left));

          /* "pandas/src/generated.pyx":2784
 *                     rindexer[count] = -1
 *                     result[count] = left[i]
 *                     i += 1             # <<<<<<<<<<<<<<
 *                     count += 1
 *                 break
 */
          __pyx_v_i = (__pyx_v_i + 1);

          /* "pandas/src/generated.pyx":2785
 *                     result[count] = left[i]
 *                     i += 1
 *                     count += 1             # <<<<<<<<<<<<<<
 *                 break
 * 
 */
          __pyx_v_count = (__pyx_v_count + 1);
        }

        /* "pandas/src/generated.pyx":2786
 *                     i += 1
 *                     count += 1
 *                 break             # <<<<<<<<<<<<<<
 * 
 *             lval = left[i]
 */
        goto __pyx_L17_break;
        goto __pyx_L18;
      }
      __pyx_L18:;

      /* "pandas/src/generated.pyx":2788
 *                 break
 * 
 *             lval = left[i]             # <<<<<<<<<<<<<<
 *             rval = right[j]
 * 
 */
      __pyx_t_24 = __pyx_v_i;
      __pyx_t_3 = -1;
      if (__pyx_t_24 < 0) {
        __pyx_t_24 += __pyx_bshape_0_left;
        if (unlikely(__pyx_t_24 < 0)) __pyx_t_3 = 0;
      } else if (unlikely(__pyx_t_24 >= __pyx_bshape_0_left)) __pyx_t_3 = 0;
      if (unlikely(__pyx_t_3 != -1)) {
        __Pyx_RaiseBufferIndexError(__pyx_t_3);
        {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2788; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      }
      __pyx_v_lval = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_left.buf, __pyx_t_24, __pyx_bstride_0_left));

      /* "pandas/src/generated.pyx":2789
 * 
 *             lval = left[i]
 *             rval = right[j]             # <<<<<<<<<<<<<<
 * 
 *             if lval == rval:
 */
      __pyx_t_25 = __pyx_v_j;
      __pyx_t_3 = -1;
      if (__pyx_t_25 < 0) {
        __pyx_t_25 += __pyx_bshape_0_right;
        if (unlikely(__pyx_t_25 < 0)) __pyx_t_3 = 0;
      } else if (unlikely(__pyx_t_25 >= __pyx_bshape_0_right)) __pyx_t_3 = 0;
      if (unlikely(__pyx_t_3 != -1)) {
        __Pyx_RaiseBufferIndexError(__pyx_t_3);
        {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2789; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      }
      __pyx_v_rval = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_right.buf, __pyx_t_25, __pyx_bstride_0_right));

      /* "pandas/src/generated.pyx":2791
 *             rval = right[j]
 * 
 *             if lval == rval:             # <<<<<<<<<<<<<<
 *                 lindexer[count] = i
 *                 rindexer[count] = j
 */
      __pyx_t_7 = (__pyx_v_lval == __pyx_v_rval);
      if (__pyx_t_7) {

        /* "pandas/src/generated.pyx":2792
 * 
 *             if lval == rval:
 *                 lindexer[count] = i             # <<<<<<<<<<<<<<
 *                 rindexer[count] = j
 *                 result[count] = lval
 */
        __pyx_t_26 = __pyx_v_count;
        __pyx_t_3 = -1;
        if (__pyx_t_26 < 0) {
          __pyx_t_26 += __pyx_bshape_0_lindexer;
          if (unlikely(__pyx_t_26 < 0)) __pyx_t_3 = 0;
        } else if (unlikely(__pyx_t_26 >= __pyx_bshape_0_lindexer)) __pyx_t_3 = 0;
        if (unlikely(__pyx_t_3 != -1)) {
          __Pyx_RaiseBufferIndexError(__pyx_t_3);
          {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2792; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        }
        *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_bstruct_lindexer.buf, __pyx_t_26, __pyx_bstride_0_lindexer) = __pyx_v_i;

        /* "pandas/src/generated.pyx":2793
 *             if lval == rval:
 *                 lindexer[count] = i
 *                 rindexer[count] = j             # <<<<<<<<<<<<<<
 *                 result[count] = lval
 *                 count += 1
 */
        __pyx_t_27 = __pyx_v_count;
        __pyx_t_3 = -1;
        if (__pyx_t_27 < 0) {
          __pyx_t_27 += __pyx_bshape_0_rindexer;
          if (unlikely(__pyx_t_27 < 0)) __pyx_t_3 = 0;
        } else if (unlikely(__pyx_t_27 >= __pyx_bshape_0_rindexer)) __pyx_t_3 = 0;
        if (unlikely(__pyx_t_3 != -1)) {
          __Pyx_RaiseBufferIndexError(__pyx_t_3);
          {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2793; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        }
        *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_bstruct_rindexer.buf, __pyx_t_27, __pyx_bstride_0_rindexer) = __pyx_v_j;

        /* "pandas/src/generated.pyx":2794
 *                 lindexer[count] = i
 *                 rindexer[count] = j
 *                 result[count] = lval             # <<<<<<<<<<<<<<
 *                 count += 1
 *                 if i < nleft - 1:
 */
        __pyx_t_28 = __pyx_v_count;
        __pyx_t_3 = -1;
        if (__pyx_t_28 < 0) {
          __pyx_t_28 += __pyx_bshape_0_result;
          if (unlikely(__pyx_t_28 < 0)) __pyx_t_3 = 0;
        } else if (unlikely(__pyx_t_28 >= __pyx_bshape_0_result)) __pyx_t_3 = 0;
        if (unlikely(__pyx_t_3 != -1)) {
          __Pyx_RaiseBufferIndexError(__pyx_t_3);
          {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2794; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        }
        *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_result.buf, __pyx_t_28, __pyx_bstride_0_result) = __pyx_v_lval;

        /* "pandas/src/generated.pyx":2795
 *                 rindexer[count] = j
 *                 result[count] = lval
 *                 count += 1             # <<<<<<<<<<<<<<
 *                 if i < nleft - 1:
 *                     if j < nright - 1 and right[j + 1] == rval:
 */
        __pyx_v_count = (__pyx_v_count + 1);

        /* "pandas/src/generated.pyx":2796
 *                 result[count] = lval
 *                 count += 1
 *                 if i < nleft - 1:             # <<<<<<<<<<<<<<
 *                     if j < nright - 1 and right[j + 1] == rval:
 *                         j += 1
 */
        __pyx_t_7 = (__pyx_v_i < (__pyx_v_nleft - 1));
        if (__pyx_t_7) {

          /* "pandas/src/generated.pyx":2797
 *                 count += 1
 *                 if i < nleft - 1:
 *                     if j < nright - 1 and right[j + 1] == rval:             # <<<<<<<<<<<<<<
 *                         j += 1
 *                     else:
 */
          __pyx_t_7 = (__pyx_v_j < (__pyx_v_nright - 1));
          if (__pyx_t_7) {
            __pyx_t_29 = (__pyx_v_j + 1);
            __pyx_t_3 = -1;
            if (__pyx_t_29 < 0) {
              __pyx_t_29 += __pyx_bshape_0_right;
              if (unlikely(__pyx_t_29 < 0)) __pyx_t_3 = 0;
            } else if (unlikely(__pyx_t_29 >= __pyx_bshape_0_right)) __pyx_t_3 = 0;
            if (unlikely(__pyx_t_3 != -1)) {
              __Pyx_RaiseBufferIndexError(__pyx_t_3);
              {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2797; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
            }
            __pyx_t_2 = ((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_right.buf, __pyx_t_29, __pyx_bstride_0_right)) == __pyx_v_rval);
            __pyx_t_6 = __pyx_t_2;
          } else {
            __pyx_t_6 = __pyx_t_7;
          }
          if (__pyx_t_6) {

            /* "pandas/src/generated.pyx":2798
 *                 if i < nleft - 1:
 *                     if j < nright - 1 and right[j + 1] == rval:
 *                         j += 1             # <<<<<<<<<<<<<<
 *                     else:
 *                         i += 1
 */
            __pyx_v_j = (__pyx_v_j + 1);
            goto __pyx_L23;
          }
          /*else*/ {

            /* "pandas/src/generated.pyx":2800
 *                         j += 1
 *                     else:
 *                         i += 1             # <<<<<<<<<<<<<<
 *                         if left[i] != rval:
 *                             j += 1
 */
            __pyx_v_i = (__pyx_v_i + 1);

            /* "pandas/src/generated.pyx":2801
 *                     else:
 *                         i += 1
 *                         if left[i] != rval:             # <<<<<<<<<<<<<<
 *                             j += 1
 *                 elif j < nright - 1:
 */
            __pyx_t_30 = __pyx_v_i;
            __pyx_t_3 = -1;
            if (__pyx_t_30 < 0) {
              __pyx_t_30 += __pyx_bshape_0_left;
              if (unlikely(__pyx_t_30 < 0)) __pyx_t_3 = 0;
            } else if (unlikely(__pyx_t_30 >= __pyx_bshape_0_left)) __pyx_t_3 = 0;
            if (unlikely(__pyx_t_3 != -1)) {
              __Pyx_RaiseBufferIndexError(__pyx_t_3);
              {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2801; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
            }
            __pyx_t_6 = ((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_left.buf, __pyx_t_30, __pyx_bstride_0_left)) != __pyx_v_rval);
            if (__pyx_t_6) {

              /* "pandas/src/generated.pyx":2802
 *                         i += 1
 *                         if left[i] != rval:
 *                             j += 1             # <<<<<<<<<<<<<<
 *                 elif j < nright - 1:
 *                     j += 1
 */
              __pyx_v_j = (__pyx_v_j + 1);
              goto __pyx_L24;
            }
            __pyx_L24:;
          }
          __pyx_L23:;
          goto __pyx_L22;
        }

        /* "pandas/src/generated.pyx":2803
 *                         if left[i] != rval:
 *                             j += 1
 *                 elif j < nright - 1:             # <<<<<<<<<<<<<<
 *                     j += 1
 *                     if lval != right[j]:
 */
        __pyx_t_6 = (__pyx_v_j < (__pyx_v_nright - 1));
        if (__pyx_t_6) {

          /* "pandas/src/generated.pyx":2804
 *                             j += 1
 *                 elif j < nright - 1:
 *                     j += 1             # <<<<<<<<<<<<<<
 *                     if lval != right[j]:
 *                         i += 1
 */
          __pyx_v_j = (__pyx_v_j + 1);

          /* "pandas/src/generated.pyx":2805
 *                 elif j < nright - 1:
 *                     j += 1
 *                     if lval != right[j]:             # <<<<<<<<<<<<<<
 *                         i += 1
 *                 else:
 */
          __pyx_t_31 = __pyx_v_j;
          __pyx_t_3 = -1;
          if (__pyx_t_31 < 0) {
            __pyx_t_31 += __pyx_bshape_0_right;
            if (unlikely(__pyx_t_31 < 0)) __pyx_t_3 = 0;
          } else if (unlikely(__pyx_t_31 >= __pyx_bshape_0_right)) __pyx_t_3 = 0;
          if (unlikely(__pyx_t_3 != -1)) {
            __Pyx_RaiseBufferIndexError(__pyx_t_3);
            {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2805; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
          }
          __pyx_t_6 = (__pyx_v_lval != (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_right.buf, __pyx_t_31, __pyx_bstride_0_right)));
          if (__pyx_t_6) {

            /* "pandas/src/generated.pyx":2806
 *                     j += 1
 *                     if lval != right[j]:
 *                         i += 1             # <<<<<<<<<<<<<<
 *                 else:
 *                     # end of the road
 */
            __pyx_v_i = (__pyx_v_i + 1);
            goto __pyx_L25;
          }
          __pyx_L25:;
          goto __pyx_L22;
        }
        /*else*/ {

          /* "pandas/src/generated.pyx":2809
 *                 else:
 *                     # end of the road
 *                     break             # <<<<<<<<<<<<<<
 *             elif lval < rval:
 *                 lindexer[count] = i
 */
          goto __pyx_L17_break;
        }
        __pyx_L22:;
        goto __pyx_L21;
      }

      /* "pandas/src/generated.pyx":2810
 *                     # end of the road
 *                     break
 *             elif lval < rval:             # <<<<<<<<<<<<<<
 *                 lindexer[count] = i
 *                 rindexer[count] = -1
 */
      __pyx_t_6 = (__pyx_v_lval < __pyx_v_rval);
      if (__pyx_t_6) {

        /* "pandas/src/generated.pyx":2811
 *                     break
 *             elif lval < rval:
 *                 lindexer[count] = i             # <<<<<<<<<<<<<<
 *                 rindexer[count] = -1
 *                 result[count] = left[i]
 */
        __pyx_t_32 = __pyx_v_count;
        __pyx_t_3 = -1;
        if (__pyx_t_32 < 0) {
          __pyx_t_32 += __pyx_bshape_0_lindexer;
          if (unlikely(__pyx_t_32 < 0)) __pyx_t_3 = 0;
        } else if (unlikely(__pyx_t_32 >= __pyx_bshape_0_lindexer)) __pyx_t_3 = 0;
        if (unlikely(__pyx_t_3 != -1)) {
          __Pyx_RaiseBufferIndexError(__pyx_t_3);
          {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2811; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        }
        *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_bstruct_lindexer.buf, __pyx_t_32, __pyx_bstride_0_lindexer) = __pyx_v_i;

        /* "pandas/src/generated.pyx":2812
 *             elif lval < rval:
 *                 lindexer[count] = i
 *                 rindexer[count] = -1             # <<<<<<<<<<<<<<
 *                 result[count] = left[i]
 *                 count += 1
 */
        __pyx_t_33 = __pyx_v_count;
        __pyx_t_3 = -1;
        if (__pyx_t_33 < 0) {
          __pyx_t_33 += __pyx_bshape_0_rindexer;
          if (unlikely(__pyx_t_33 < 0)) __pyx_t_3 = 0;
        } else if (unlikely(__pyx_t_33 >= __pyx_bshape_0_rindexer)) __pyx_t_3 = 0;
        if (unlikely(__pyx_t_3 != -1)) {
          __Pyx_RaiseBufferIndexError(__pyx_t_3);
          {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2812; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        }
        *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_bstruct_rindexer.buf, __pyx_t_33, __pyx_bstride_0_rindexer) = -1;

        /* "pandas/src/generated.pyx":2813
 *                 lindexer[count] = i
 *                 rindexer[count] = -1
 *                 result[count] = left[i]             # <<<<<<<<<<<<<<
 *                 count += 1
 *                 i += 1
 */
        __pyx_t_34 = __pyx_v_i;
        __pyx_t_3 = -1;
        if (__pyx_t_34 < 0) {
          __pyx_t_34 += __pyx_bshape_0_left;
          if (unlikely(__pyx_t_34 < 0)) __pyx_t_3 = 0;
        } else if (unlikely(__pyx_t_34 >= __pyx_bshape_0_left)) __pyx_t_3 = 0;
        if (unlikely(__pyx_t_3 != -1)) {
          __Pyx_RaiseBufferIndexError(__pyx_t_3);
          {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2813; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        }
        __pyx_t_35 = __pyx_v_count;
        __pyx_t_3 = -1;
        if (__pyx_t_35 < 0) {
          __pyx_t_35 += __pyx_bshape_0_result;
          if (unlikely(__pyx_t_35 < 0)) __pyx_t_3 = 0;
        } else if (unlikely(__pyx_t_35 >= __pyx_bshape_0_result)) __pyx_t_3 = 0;
        if (unlikely(__pyx_t_3 != -1)) {
          __Pyx_RaiseBufferIndexError(__pyx_t_3);
          {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2813; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        }
        *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_result.buf, __pyx_t_35, __pyx_bstride_0_result) = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_left.buf, __pyx_t_34, __pyx_bstride_0_left));

        /* "pandas/src/generated.pyx":2814
 *                 rindexer[count] = -1
 *                 result[count] = left[i]
 *                 count += 1             # <<<<<<<<<<<<<<
 *                 i += 1
 *             else:
 */
        __pyx_v_count = (__pyx_v_count + 1);

        /* "pandas/src/generated.pyx":2815
 *                 result[count] = left[i]
 *                 count += 1
 *                 i += 1             # <<<<<<<<<<<<<<
 *             else:
 *                 j += 1
 */
        __pyx_v_i = (__pyx_v_i + 1);
        goto __pyx_L21;
      }
      /*else*/ {

        /* "pandas/src/generated.pyx":2817
 *                 i += 1
 *             else:
 *                 j += 1             # <<<<<<<<<<<<<<
 * 
 *     return result, lindexer, rindexer
 */
        __pyx_v_j = (__pyx_v_j + 1);
      }
      __pyx_L21:;
    }
    __pyx_L17_break:;
    goto __pyx_L15;
  }
  __pyx_L15:;

  /* "pandas/src/generated.pyx":2819
 *                 j += 1
 * 
 *     return result, lindexer, rindexer             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_11 = PyTuple_New(3); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2819; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_11));
  __Pyx_INCREF(((PyObject *)__pyx_v_result));
  PyTuple_SET_ITEM(__pyx_t_11, 0, ((PyObject *)__pyx_v_result));
  __Pyx_GIVEREF(((PyObject *)__pyx_v_result));
  __Pyx_INCREF(((PyObject *)__pyx_v_lindexer));
  PyTuple_SET_ITEM(__pyx_t_11, 1, ((PyObject *)__pyx_v_lindexer));
  __Pyx_GIVEREF(((PyObject *)__pyx_v_lindexer));
  __Pyx_INCREF(((PyObject *)__pyx_v_rindexer));
  PyTuple_SET_ITEM(__pyx_t_11, 2, ((PyObject *)__pyx_v_rindexer));
  __Pyx_GIVEREF(((PyObject *)__pyx_v_rindexer));
  __pyx_r = ((PyObject *)__pyx_t_11);
  __pyx_t_11 = 0;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_10);
  __Pyx_XDECREF(__pyx_t_11);
  __Pyx_XDECREF(__pyx_t_12);
  __Pyx_XDECREF(__pyx_t_13);
  __Pyx_XDECREF(__pyx_t_14);
  { PyObject *__pyx_type, *__pyx_value, *__pyx_tb;
    __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);
    __Pyx_SafeReleaseBuffer(&__pyx_bstruct_result);
    __Pyx_SafeReleaseBuffer(&__pyx_bstruct_right);
    __Pyx_SafeReleaseBuffer(&__pyx_bstruct_lindexer);
    __Pyx_SafeReleaseBuffer(&__pyx_bstruct_rindexer);
    __Pyx_SafeReleaseBuffer(&__pyx_bstruct_left);
  __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);}
  __Pyx_AddTraceback("pandas._algos.left_join_indexer_float64", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  goto __pyx_L2;
  __pyx_L0:;
  __Pyx_SafeReleaseBuffer(&__pyx_bstruct_result);
  __Pyx_SafeReleaseBuffer(&__pyx_bstruct_right);
  __Pyx_SafeReleaseBuffer(&__pyx_bstruct_lindexer);
  __Pyx_SafeReleaseBuffer(&__pyx_bstruct_rindexer);
  __Pyx_SafeReleaseBuffer(&__pyx_bstruct_left);
  __pyx_L2:;
  __Pyx_XDECREF((PyObject *)__pyx_v_lindexer);
  __Pyx_XDECREF((PyObject *)__pyx_v_rindexer);
  __Pyx_XDECREF((PyObject *)__pyx_v_result);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "pandas/src/generated.pyx":2822
 * 
 * 
 * def left_join_indexer_object(ndarray[object] left,             # <<<<<<<<<<<<<<
 *                               ndarray[object] right):
 *     '''
 */

static PyObject *__pyx_pf_6pandas_6_algos_80left_join_indexer_object(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6pandas_6_algos_80left_join_indexer_object[] = "\n    Two-pass algorithm for monotonic indexes. Handles many-to-one merges\n    ";
static PyMethodDef __pyx_mdef_6pandas_6_algos_80left_join_indexer_object = {__Pyx_NAMESTR("left_join_indexer_object"), (PyCFunction)__pyx_pf_6pandas_6_algos_80left_join_indexer_object, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6pandas_6_algos_80left_join_indexer_object)};
static PyObject *__pyx_pf_6pandas_6_algos_80left_join_indexer_object(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyArrayObject *__pyx_v_left = 0;
  PyArrayObject *__pyx_v_right = 0;
  Py_ssize_t __pyx_v_i;
  Py_ssize_t __pyx_v_j;
  Py_ssize_t __pyx_v_nright;
  Py_ssize_t __pyx_v_nleft;
  Py_ssize_t __pyx_v_count;
  PyObject *__pyx_v_lval = 0;
  PyObject *__pyx_v_rval = 0;
  PyArrayObject *__pyx_v_lindexer = 0;
  PyArrayObject *__pyx_v_rindexer = 0;
  PyArrayObject *__pyx_v_result = 0;
  Py_buffer __pyx_bstruct_result;
  Py_ssize_t __pyx_bstride_0_result = 0;
  Py_ssize_t __pyx_bshape_0_result = 0;
  Py_buffer __pyx_bstruct_right;
  Py_ssize_t __pyx_bstride_0_right = 0;
  Py_ssize_t __pyx_bshape_0_right = 0;
  Py_buffer __pyx_bstruct_lindexer;
  Py_ssize_t __pyx_bstride_0_lindexer = 0;
  Py_ssize_t __pyx_bshape_0_lindexer = 0;
  Py_buffer __pyx_bstruct_rindexer;
  Py_ssize_t __pyx_bstride_0_rindexer = 0;
  Py_ssize_t __pyx_bshape_0_rindexer = 0;
  Py_buffer __pyx_bstruct_left;
  Py_ssize_t __pyx_bstride_0_left = 0;
  Py_ssize_t __pyx_bshape_0_left = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  Py_ssize_t __pyx_t_1;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_t_4;
  Py_ssize_t __pyx_t_5;
  Py_ssize_t __pyx_t_6;
  PyObject *__pyx_t_7 = NULL;
  int __pyx_t_8;
  int __pyx_t_9;
  Py_ssize_t __pyx_t_10;
  Py_ssize_t __pyx_t_11;
  PyObject *__pyx_t_12 = NULL;
  PyObject *__pyx_t_13 = NULL;
  PyObject *__pyx_t_14 = NULL;
  PyArrayObject *__pyx_t_15 = NULL;
  PyObject *__pyx_t_16 = NULL;
  PyObject *__pyx_t_17 = NULL;
  PyObject *__pyx_t_18 = NULL;
  PyArrayObject *__pyx_t_19 = NULL;
  Py_ssize_t __pyx_t_20;
  Py_ssize_t __pyx_t_21;
  Py_ssize_t __pyx_t_22;
  Py_ssize_t __pyx_t_23;
  PyObject **__pyx_t_24;
  Py_ssize_t __pyx_t_25;
  Py_ssize_t __pyx_t_26;
  Py_ssize_t __pyx_t_27;
  Py_ssize_t __pyx_t_28;
  Py_ssize_t __pyx_t_29;
  Py_ssize_t __pyx_t_30;
  Py_ssize_t __pyx_t_31;
  Py_ssize_t __pyx_t_32;
  Py_ssize_t __pyx_t_33;
  Py_ssize_t __pyx_t_34;
  Py_ssize_t __pyx_t_35;
  Py_ssize_t __pyx_t_36;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__left,&__pyx_n_s__right,0};
  __Pyx_RefNannySetupContext("left_join_indexer_object");
  __pyx_self = __pyx_self;
  {
    PyObject* values[2] = {0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  0:
        values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__left);
        if (likely(values[0])) kw_args--;
        else goto __pyx_L5_argtuple_error;
        case  1:
        values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__right);
        if (likely(values[1])) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("left_join_indexer_object", 1, 2, 2, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2822; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "left_join_indexer_object") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2822; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
    }
    __pyx_v_left = ((PyArrayObject *)values[0]);
    __pyx_v_right = ((PyArrayObject *)values[1]);
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("left_join_indexer_object", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2822; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("pandas._algos.left_join_indexer_object", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_bstruct_lindexer.buf = NULL;
  __pyx_bstruct_rindexer.buf = NULL;
  __pyx_bstruct_result.buf = NULL;
  __pyx_bstruct_left.buf = NULL;
  __pyx_bstruct_right.buf = NULL;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_left), __pyx_ptype_5numpy_ndarray, 1, "left", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2822; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_right), __pyx_ptype_5numpy_ndarray, 1, "right", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2823; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_left, (PyObject*)__pyx_v_left, &__Pyx_TypeInfo_object, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2822; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  }
  __pyx_bstride_0_left = __pyx_bstruct_left.strides[0];
  __pyx_bshape_0_left = __pyx_bstruct_left.shape[0];
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_right, (PyObject*)__pyx_v_right, &__Pyx_TypeInfo_object, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2822; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  }
  __pyx_bstride_0_right = __pyx_bstruct_right.strides[0];
  __pyx_bshape_0_right = __pyx_bstruct_right.shape[0];

  /* "pandas/src/generated.pyx":2833
 *         ndarray[object] result
 * 
 *     nleft = len(left)             # <<<<<<<<<<<<<<
 *     nright = len(right)
 * 
 */
  __pyx_t_1 = PyObject_Length(((PyObject *)__pyx_v_left)); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2833; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_v_nleft = __pyx_t_1;

  /* "pandas/src/generated.pyx":2834
 * 
 *     nleft = len(left)
 *     nright = len(right)             # <<<<<<<<<<<<<<
 * 
 *     i = 0
 */
  __pyx_t_1 = PyObject_Length(((PyObject *)__pyx_v_right)); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2834; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_v_nright = __pyx_t_1;

  /* "pandas/src/generated.pyx":2836
 *     nright = len(right)
 * 
 *     i = 0             # <<<<<<<<<<<<<<
 *     j = 0
 *     count = 0
 */
  __pyx_v_i = 0;

  /* "pandas/src/generated.pyx":2837
 * 
 *     i = 0
 *     j = 0             # <<<<<<<<<<<<<<
 *     count = 0
 *     if nleft > 0:
 */
  __pyx_v_j = 0;

  /* "pandas/src/generated.pyx":2838
 *     i = 0
 *     j = 0
 *     count = 0             # <<<<<<<<<<<<<<
 *     if nleft > 0:
 *         while i < nleft:
 */
  __pyx_v_count = 0;

  /* "pandas/src/generated.pyx":2839
 *     j = 0
 *     count = 0
 *     if nleft > 0:             # <<<<<<<<<<<<<<
 *         while i < nleft:
 *             if j == nright:
 */
  __pyx_t_2 = (__pyx_v_nleft > 0);
  if (__pyx_t_2) {

    /* "pandas/src/generated.pyx":2840
 *     count = 0
 *     if nleft > 0:
 *         while i < nleft:             # <<<<<<<<<<<<<<
 *             if j == nright:
 *                 count += nleft - i
 */
    while (1) {
      __pyx_t_2 = (__pyx_v_i < __pyx_v_nleft);
      if (!__pyx_t_2) break;

      /* "pandas/src/generated.pyx":2841
 *     if nleft > 0:
 *         while i < nleft:
 *             if j == nright:             # <<<<<<<<<<<<<<
 *                 count += nleft - i
 *                 break
 */
      __pyx_t_2 = (__pyx_v_j == __pyx_v_nright);
      if (__pyx_t_2) {

        /* "pandas/src/generated.pyx":2842
 *         while i < nleft:
 *             if j == nright:
 *                 count += nleft - i             # <<<<<<<<<<<<<<
 *                 break
 * 
 */
        __pyx_v_count = (__pyx_v_count + (__pyx_v_nleft - __pyx_v_i));

        /* "pandas/src/generated.pyx":2843
 *             if j == nright:
 *                 count += nleft - i
 *                 break             # <<<<<<<<<<<<<<
 * 
 *             lval = left[i]
 */
        goto __pyx_L8_break;
        goto __pyx_L9;
      }
      __pyx_L9:;

      /* "pandas/src/generated.pyx":2845
 *                 break
 * 
 *             lval = left[i]             # <<<<<<<<<<<<<<
 *             rval = right[j]
 * 
 */
      __pyx_t_1 = __pyx_v_i;
      __pyx_t_4 = -1;
      if (__pyx_t_1 < 0) {
        __pyx_t_1 += __pyx_bshape_0_left;
        if (unlikely(__pyx_t_1 < 0)) __pyx_t_4 = 0;
      } else if (unlikely(__pyx_t_1 >= __pyx_bshape_0_left)) __pyx_t_4 = 0;
      if (unlikely(__pyx_t_4 != -1)) {
        __Pyx_RaiseBufferIndexError(__pyx_t_4);
        {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2845; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      }
      __pyx_t_3 = *__Pyx_BufPtrStrided1d(PyObject **, __pyx_bstruct_left.buf, __pyx_t_1, __pyx_bstride_0_left);
      __Pyx_INCREF((PyObject*)__pyx_t_3);
      __Pyx_XDECREF(__pyx_v_lval);
      __pyx_v_lval = __pyx_t_3;
      __pyx_t_3 = 0;

      /* "pandas/src/generated.pyx":2846
 * 
 *             lval = left[i]
 *             rval = right[j]             # <<<<<<<<<<<<<<
 * 
 *             if lval == rval:
 */
      __pyx_t_5 = __pyx_v_j;
      __pyx_t_4 = -1;
      if (__pyx_t_5 < 0) {
        __pyx_t_5 += __pyx_bshape_0_right;
        if (unlikely(__pyx_t_5 < 0)) __pyx_t_4 = 0;
      } else if (unlikely(__pyx_t_5 >= __pyx_bshape_0_right)) __pyx_t_4 = 0;
      if (unlikely(__pyx_t_4 != -1)) {
        __Pyx_RaiseBufferIndexError(__pyx_t_4);
        {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2846; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      }
      __pyx_t_3 = *__Pyx_BufPtrStrided1d(PyObject **, __pyx_bstruct_right.buf, __pyx_t_5, __pyx_bstride_0_right);
      __Pyx_INCREF((PyObject*)__pyx_t_3);
      __Pyx_XDECREF(__pyx_v_rval);
      __pyx_v_rval = __pyx_t_3;
      __pyx_t_3 = 0;

      /* "pandas/src/generated.pyx":2848
 *             rval = right[j]
 * 
 *             if lval == rval:             # <<<<<<<<<<<<<<
 *                 count += 1
 *                 if i < nleft - 1:
 */
      __pyx_t_3 = PyObject_RichCompare(__pyx_v_lval, __pyx_v_rval, Py_EQ); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2848; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_3);
      __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2848; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      if (__pyx_t_2) {

        /* "pandas/src/generated.pyx":2849
 * 
 *             if lval == rval:
 *                 count += 1             # <<<<<<<<<<<<<<
 *                 if i < nleft - 1:
 *                     if j < nright - 1 and right[j + 1] == rval:
 */
        __pyx_v_count = (__pyx_v_count + 1);

        /* "pandas/src/generated.pyx":2850
 *             if lval == rval:
 *                 count += 1
 *                 if i < nleft - 1:             # <<<<<<<<<<<<<<
 *                     if j < nright - 1 and right[j + 1] == rval:
 *                         j += 1
 */
        __pyx_t_2 = (__pyx_v_i < (__pyx_v_nleft - 1));
        if (__pyx_t_2) {

          /* "pandas/src/generated.pyx":2851
 *                 count += 1
 *                 if i < nleft - 1:
 *                     if j < nright - 1 and right[j + 1] == rval:             # <<<<<<<<<<<<<<
 *                         j += 1
 *                     else:
 */
          __pyx_t_2 = (__pyx_v_j < (__pyx_v_nright - 1));
          if (__pyx_t_2) {
            __pyx_t_6 = (__pyx_v_j + 1);
            __pyx_t_4 = -1;
            if (__pyx_t_6 < 0) {
              __pyx_t_6 += __pyx_bshape_0_right;
              if (unlikely(__pyx_t_6 < 0)) __pyx_t_4 = 0;
            } else if (unlikely(__pyx_t_6 >= __pyx_bshape_0_right)) __pyx_t_4 = 0;
            if (unlikely(__pyx_t_4 != -1)) {
              __Pyx_RaiseBufferIndexError(__pyx_t_4);
              {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2851; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
            }
            __pyx_t_3 = *__Pyx_BufPtrStrided1d(PyObject **, __pyx_bstruct_right.buf, __pyx_t_6, __pyx_bstride_0_right);
            __Pyx_INCREF((PyObject*)__pyx_t_3);
            __pyx_t_7 = PyObject_RichCompare(__pyx_t_3, __pyx_v_rval, Py_EQ); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2851; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
            __Pyx_GOTREF(__pyx_t_7);
            __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
            __pyx_t_8 = __Pyx_PyObject_IsTrue(__pyx_t_7); if (unlikely(__pyx_t_8 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2851; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
            __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
            __pyx_t_9 = __pyx_t_8;
          } else {
            __pyx_t_9 = __pyx_t_2;
          }
          if (__pyx_t_9) {

            /* "pandas/src/generated.pyx":2852
 *                 if i < nleft - 1:
 *                     if j < nright - 1 and right[j + 1] == rval:
 *                         j += 1             # <<<<<<<<<<<<<<
 *                     else:
 *                         i += 1
 */
            __pyx_v_j = (__pyx_v_j + 1);
            goto __pyx_L12;
          }
          /*else*/ {

            /* "pandas/src/generated.pyx":2854
 *                         j += 1
 *                     else:
 *                         i += 1             # <<<<<<<<<<<<<<
 *                         if left[i] != rval:
 *                             j += 1
 */
            __pyx_v_i = (__pyx_v_i + 1);

            /* "pandas/src/generated.pyx":2855
 *                     else:
 *                         i += 1
 *                         if left[i] != rval:             # <<<<<<<<<<<<<<
 *                             j += 1
 *                 elif j < nright - 1:
 */
            __pyx_t_10 = __pyx_v_i;
            __pyx_t_4 = -1;
            if (__pyx_t_10 < 0) {
              __pyx_t_10 += __pyx_bshape_0_left;
              if (unlikely(__pyx_t_10 < 0)) __pyx_t_4 = 0;
            } else if (unlikely(__pyx_t_10 >= __pyx_bshape_0_left)) __pyx_t_4 = 0;
            if (unlikely(__pyx_t_4 != -1)) {
              __Pyx_RaiseBufferIndexError(__pyx_t_4);
              {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2855; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
            }
            __pyx_t_7 = *__Pyx_BufPtrStrided1d(PyObject **, __pyx_bstruct_left.buf, __pyx_t_10, __pyx_bstride_0_left);
            __Pyx_INCREF((PyObject*)__pyx_t_7);
            __pyx_t_3 = PyObject_RichCompare(__pyx_t_7, __pyx_v_rval, Py_NE); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2855; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
            __Pyx_GOTREF(__pyx_t_3);
            __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
            __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2855; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
            __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
            if (__pyx_t_9) {

              /* "pandas/src/generated.pyx":2856
 *                         i += 1
 *                         if left[i] != rval:
 *                             j += 1             # <<<<<<<<<<<<<<
 *                 elif j < nright - 1:
 *                     j += 1
 */
              __pyx_v_j = (__pyx_v_j + 1);
              goto __pyx_L13;
            }
            __pyx_L13:;
          }
          __pyx_L12:;
          goto __pyx_L11;
        }

        /* "pandas/src/generated.pyx":2857
 *                         if left[i] != rval:
 *                             j += 1
 *                 elif j < nright - 1:             # <<<<<<<<<<<<<<
 *                     j += 1
 *                     if lval != right[j]:
 */
        __pyx_t_9 = (__pyx_v_j < (__pyx_v_nright - 1));
        if (__pyx_t_9) {

          /* "pandas/src/generated.pyx":2858
 *                             j += 1
 *                 elif j < nright - 1:
 *                     j += 1             # <<<<<<<<<<<<<<
 *                     if lval != right[j]:
 *                         i += 1
 */
          __pyx_v_j = (__pyx_v_j + 1);

          /* "pandas/src/generated.pyx":2859
 *                 elif j < nright - 1:
 *                     j += 1
 *                     if lval != right[j]:             # <<<<<<<<<<<<<<
 *                         i += 1
 *                 else:
 */
          __pyx_t_11 = __pyx_v_j;
          __pyx_t_4 = -1;
          if (__pyx_t_11 < 0) {
            __pyx_t_11 += __pyx_bshape_0_right;
            if (unlikely(__pyx_t_11 < 0)) __pyx_t_4 = 0;
          } else if (unlikely(__pyx_t_11 >= __pyx_bshape_0_right)) __pyx_t_4 = 0;
          if (unlikely(__pyx_t_4 != -1)) {
            __Pyx_RaiseBufferIndexError(__pyx_t_4);
            {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2859; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
          }
          __pyx_t_3 = *__Pyx_BufPtrStrided1d(PyObject **, __pyx_bstruct_right.buf, __pyx_t_11, __pyx_bstride_0_right);
          __Pyx_INCREF((PyObject*)__pyx_t_3);
          __pyx_t_7 = PyObject_RichCompare(__pyx_v_lval, __pyx_t_3, Py_NE); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2859; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
          __Pyx_GOTREF(__pyx_t_7);
          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
          __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_7); if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2859; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
          __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
          if (__pyx_t_9) {

            /* "pandas/src/generated.pyx":2860
 *                     j += 1
 *                     if lval != right[j]:
 *                         i += 1             # <<<<<<<<<<<<<<
 *                 else:
 *                     # end of the road
 */
            __pyx_v_i = (__pyx_v_i + 1);
            goto __pyx_L14;
          }
          __pyx_L14:;
          goto __pyx_L11;
        }
        /*else*/ {

          /* "pandas/src/generated.pyx":2863
 *                 else:
 *                     # end of the road
 *                     break             # <<<<<<<<<<<<<<
 *             elif lval < rval:
 *                 count += 1
 */
          goto __pyx_L8_break;
        }
        __pyx_L11:;
        goto __pyx_L10;
      }

      /* "pandas/src/generated.pyx":2864
 *                     # end of the road
 *                     break
 *             elif lval < rval:             # <<<<<<<<<<<<<<
 *                 count += 1
 *                 i += 1
 */
      __pyx_t_7 = PyObject_RichCompare(__pyx_v_lval, __pyx_v_rval, Py_LT); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2864; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_7);
      __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_7); if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2864; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
      if (__pyx_t_9) {

        /* "pandas/src/generated.pyx":2865
 *                     break
 *             elif lval < rval:
 *                 count += 1             # <<<<<<<<<<<<<<
 *                 i += 1
 *             else:
 */
        __pyx_v_count = (__pyx_v_count + 1);

        /* "pandas/src/generated.pyx":2866
 *             elif lval < rval:
 *                 count += 1
 *                 i += 1             # <<<<<<<<<<<<<<
 *             else:
 *                 j += 1
 */
        __pyx_v_i = (__pyx_v_i + 1);
        goto __pyx_L10;
      }
      /*else*/ {

        /* "pandas/src/generated.pyx":2868
 *                 i += 1
 *             else:
 *                 j += 1             # <<<<<<<<<<<<<<
 * 
 *     # do it again now that result size is known
 */
        __pyx_v_j = (__pyx_v_j + 1);
      }
      __pyx_L10:;
    }
    __pyx_L8_break:;
    goto __pyx_L6;
  }
  __pyx_L6:;

  /* "pandas/src/generated.pyx":2872
 *     # do it again now that result size is known
 * 
 *     lindexer = np.empty(count, dtype=np.int64)             # <<<<<<<<<<<<<<
 *     rindexer = np.empty(count, dtype=np.int64)
 *     result = np.empty(count, dtype=object)
 */
  __pyx_t_7 = __Pyx_GetName(__pyx_m, __pyx_n_s__np); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2872; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_3 = PyObject_GetAttr(__pyx_t_7, __pyx_n_s__empty); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2872; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  __pyx_t_7 = PyInt_FromSsize_t(__pyx_v_count); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2872; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_12 = PyTuple_New(1); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2872; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_12));
  PyTuple_SET_ITEM(__pyx_t_12, 0, __pyx_t_7);
  __Pyx_GIVEREF(__pyx_t_7);
  __pyx_t_7 = 0;
  __pyx_t_7 = PyDict_New(); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2872; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_7));
  __pyx_t_13 = __Pyx_GetName(__pyx_m, __pyx_n_s__np); if (unlikely(!__pyx_t_13)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2872; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_13);
  __pyx_t_14 = PyObject_GetAttr(__pyx_t_13, __pyx_n_s__int64); if (unlikely(!__pyx_t_14)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2872; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_14);
  __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
  if (PyDict_SetItem(__pyx_t_7, ((PyObject *)__pyx_n_s__dtype), __pyx_t_14) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2872; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
  __pyx_t_14 = PyEval_CallObjectWithKeywords(__pyx_t_3, ((PyObject *)__pyx_t_12), ((PyObject *)__pyx_t_7)); if (unlikely(!__pyx_t_14)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2872; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_14);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_DECREF(((PyObject *)__pyx_t_12)); __pyx_t_12 = 0;
  __Pyx_DECREF(((PyObject *)__pyx_t_7)); __pyx_t_7 = 0;
  if (!(likely(((__pyx_t_14) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_14, __pyx_ptype_5numpy_ndarray))))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2872; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_t_15 = ((PyArrayObject *)__pyx_t_14);
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    __Pyx_SafeReleaseBuffer(&__pyx_bstruct_lindexer);
    __pyx_t_4 = __Pyx_GetBufferAndValidate(&__pyx_bstruct_lindexer, (PyObject*)__pyx_t_15, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack);
    if (unlikely(__pyx_t_4 < 0)) {
      PyErr_Fetch(&__pyx_t_16, &__pyx_t_17, &__pyx_t_18);
      if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_lindexer, (PyObject*)__pyx_v_lindexer, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) {
        Py_XDECREF(__pyx_t_16); Py_XDECREF(__pyx_t_17); Py_XDECREF(__pyx_t_18);
        __Pyx_RaiseBufferFallbackError();
      } else {
        PyErr_Restore(__pyx_t_16, __pyx_t_17, __pyx_t_18);
      }
    }
    __pyx_bstride_0_lindexer = __pyx_bstruct_lindexer.strides[0];
    __pyx_bshape_0_lindexer = __pyx_bstruct_lindexer.shape[0];
    if (unlikely(__pyx_t_4 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2872; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  }
  __pyx_t_15 = 0;
  __pyx_v_lindexer = ((PyArrayObject *)__pyx_t_14);
  __pyx_t_14 = 0;

  /* "pandas/src/generated.pyx":2873
 * 
 *     lindexer = np.empty(count, dtype=np.int64)
 *     rindexer = np.empty(count, dtype=np.int64)             # <<<<<<<<<<<<<<
 *     result = np.empty(count, dtype=object)
 * 
 */
  __pyx_t_14 = __Pyx_GetName(__pyx_m, __pyx_n_s__np); if (unlikely(!__pyx_t_14)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2873; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_14);
  __pyx_t_7 = PyObject_GetAttr(__pyx_t_14, __pyx_n_s__empty); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2873; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
  __pyx_t_14 = PyInt_FromSsize_t(__pyx_v_count); if (unlikely(!__pyx_t_14)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2873; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_14);
  __pyx_t_12 = PyTuple_New(1); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2873; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_12));
  PyTuple_SET_ITEM(__pyx_t_12, 0, __pyx_t_14);
  __Pyx_GIVEREF(__pyx_t_14);
  __pyx_t_14 = 0;
  __pyx_t_14 = PyDict_New(); if (unlikely(!__pyx_t_14)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2873; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_14));
  __pyx_t_3 = __Pyx_GetName(__pyx_m, __pyx_n_s__np); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2873; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_13 = PyObject_GetAttr(__pyx_t_3, __pyx_n_s__int64); if (unlikely(!__pyx_t_13)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2873; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_13);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (PyDict_SetItem(__pyx_t_14, ((PyObject *)__pyx_n_s__dtype), __pyx_t_13) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2873; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
  __pyx_t_13 = PyEval_CallObjectWithKeywords(__pyx_t_7, ((PyObject *)__pyx_t_12), ((PyObject *)__pyx_t_14)); if (unlikely(!__pyx_t_13)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2873; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_13);
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  __Pyx_DECREF(((PyObject *)__pyx_t_12)); __pyx_t_12 = 0;
  __Pyx_DECREF(((PyObject *)__pyx_t_14)); __pyx_t_14 = 0;
  if (!(likely(((__pyx_t_13) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_13, __pyx_ptype_5numpy_ndarray))))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2873; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_t_15 = ((PyArrayObject *)__pyx_t_13);
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    __Pyx_SafeReleaseBuffer(&__pyx_bstruct_rindexer);
    __pyx_t_4 = __Pyx_GetBufferAndValidate(&__pyx_bstruct_rindexer, (PyObject*)__pyx_t_15, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack);
    if (unlikely(__pyx_t_4 < 0)) {
      PyErr_Fetch(&__pyx_t_18, &__pyx_t_17, &__pyx_t_16);
      if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_rindexer, (PyObject*)__pyx_v_rindexer, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) {
        Py_XDECREF(__pyx_t_18); Py_XDECREF(__pyx_t_17); Py_XDECREF(__pyx_t_16);
        __Pyx_RaiseBufferFallbackError();
      } else {
        PyErr_Restore(__pyx_t_18, __pyx_t_17, __pyx_t_16);
      }
    }
    __pyx_bstride_0_rindexer = __pyx_bstruct_rindexer.strides[0];
    __pyx_bshape_0_rindexer = __pyx_bstruct_rindexer.shape[0];
    if (unlikely(__pyx_t_4 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2873; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  }
  __pyx_t_15 = 0;
  __pyx_v_rindexer = ((PyArrayObject *)__pyx_t_13);
  __pyx_t_13 = 0;

  /* "pandas/src/generated.pyx":2874
 *     lindexer = np.empty(count, dtype=np.int64)
 *     rindexer = np.empty(count, dtype=np.int64)
 *     result = np.empty(count, dtype=object)             # <<<<<<<<<<<<<<
 * 
 *     i = 0
 */
  __pyx_t_13 = __Pyx_GetName(__pyx_m, __pyx_n_s__np); if (unlikely(!__pyx_t_13)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2874; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_13);
  __pyx_t_14 = PyObject_GetAttr(__pyx_t_13, __pyx_n_s__empty); if (unlikely(!__pyx_t_14)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2874; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_14);
  __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
  __pyx_t_13 = PyInt_FromSsize_t(__pyx_v_count); if (unlikely(!__pyx_t_13)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2874; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_13);
  __pyx_t_12 = PyTuple_New(1); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2874; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_12));
  PyTuple_SET_ITEM(__pyx_t_12, 0, __pyx_t_13);
  __Pyx_GIVEREF(__pyx_t_13);
  __pyx_t_13 = 0;
  __pyx_t_13 = PyDict_New(); if (unlikely(!__pyx_t_13)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2874; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_13));
  if (PyDict_SetItem(__pyx_t_13, ((PyObject *)__pyx_n_s__dtype), __pyx_builtin_object) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2874; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_t_7 = PyEval_CallObjectWithKeywords(__pyx_t_14, ((PyObject *)__pyx_t_12), ((PyObject *)__pyx_t_13)); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2874; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
  __Pyx_DECREF(((PyObject *)__pyx_t_12)); __pyx_t_12 = 0;
  __Pyx_DECREF(((PyObject *)__pyx_t_13)); __pyx_t_13 = 0;
  if (!(likely(((__pyx_t_7) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_7, __pyx_ptype_5numpy_ndarray))))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2874; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_t_19 = ((PyArrayObject *)__pyx_t_7);
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    __Pyx_SafeReleaseBuffer(&__pyx_bstruct_result);
    __pyx_t_4 = __Pyx_GetBufferAndValidate(&__pyx_bstruct_result, (PyObject*)__pyx_t_19, &__Pyx_TypeInfo_object, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack);
    if (unlikely(__pyx_t_4 < 0)) {
      PyErr_Fetch(&__pyx_t_16, &__pyx_t_17, &__pyx_t_18);
      if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_result, (PyObject*)__pyx_v_result, &__Pyx_TypeInfo_object, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) {
        Py_XDECREF(__pyx_t_16); Py_XDECREF(__pyx_t_17); Py_XDECREF(__pyx_t_18);
        __Pyx_RaiseBufferFallbackError();
      } else {
        PyErr_Restore(__pyx_t_16, __pyx_t_17, __pyx_t_18);
      }
    }
    __pyx_bstride_0_result = __pyx_bstruct_result.strides[0];
    __pyx_bshape_0_result = __pyx_bstruct_result.shape[0];
    if (unlikely(__pyx_t_4 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2874; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  }
  __pyx_t_19 = 0;
  __pyx_v_result = ((PyArrayObject *)__pyx_t_7);
  __pyx_t_7 = 0;

  /* "pandas/src/generated.pyx":2876
 *     result = np.empty(count, dtype=object)
 * 
 *     i = 0             # <<<<<<<<<<<<<<
 *     j = 0
 *     count = 0
 */
  __pyx_v_i = 0;

  /* "pandas/src/generated.pyx":2877
 * 
 *     i = 0
 *     j = 0             # <<<<<<<<<<<<<<
 *     count = 0
 *     if nleft > 0:
 */
  __pyx_v_j = 0;

  /* "pandas/src/generated.pyx":2878
 *     i = 0
 *     j = 0
 *     count = 0             # <<<<<<<<<<<<<<
 *     if nleft > 0:
 *         while i < nleft:
 */
  __pyx_v_count = 0;

  /* "pandas/src/generated.pyx":2879
 *     j = 0
 *     count = 0
 *     if nleft > 0:             # <<<<<<<<<<<<<<
 *         while i < nleft:
 *             if j == nright:
 */
  __pyx_t_9 = (__pyx_v_nleft > 0);
  if (__pyx_t_9) {

    /* "pandas/src/generated.pyx":2880
 *     count = 0
 *     if nleft > 0:
 *         while i < nleft:             # <<<<<<<<<<<<<<
 *             if j == nright:
 *                 while i < nleft:
 */
    while (1) {
      __pyx_t_9 = (__pyx_v_i < __pyx_v_nleft);
      if (!__pyx_t_9) break;

      /* "pandas/src/generated.pyx":2881
 *     if nleft > 0:
 *         while i < nleft:
 *             if j == nright:             # <<<<<<<<<<<<<<
 *                 while i < nleft:
 *                     lindexer[count] = i
 */
      __pyx_t_9 = (__pyx_v_j == __pyx_v_nright);
      if (__pyx_t_9) {

        /* "pandas/src/generated.pyx":2882
 *         while i < nleft:
 *             if j == nright:
 *                 while i < nleft:             # <<<<<<<<<<<<<<
 *                     lindexer[count] = i
 *                     rindexer[count] = -1
 */
        while (1) {
          __pyx_t_9 = (__pyx_v_i < __pyx_v_nleft);
          if (!__pyx_t_9) break;

          /* "pandas/src/generated.pyx":2883
 *             if j == nright:
 *                 while i < nleft:
 *                     lindexer[count] = i             # <<<<<<<<<<<<<<
 *                     rindexer[count] = -1
 *                     result[count] = left[i]
 */
          __pyx_t_20 = __pyx_v_count;
          __pyx_t_4 = -1;
          if (__pyx_t_20 < 0) {
            __pyx_t_20 += __pyx_bshape_0_lindexer;
            if (unlikely(__pyx_t_20 < 0)) __pyx_t_4 = 0;
          } else if (unlikely(__pyx_t_20 >= __pyx_bshape_0_lindexer)) __pyx_t_4 = 0;
          if (unlikely(__pyx_t_4 != -1)) {
            __Pyx_RaiseBufferIndexError(__pyx_t_4);
            {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2883; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
          }
          *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_bstruct_lindexer.buf, __pyx_t_20, __pyx_bstride_0_lindexer) = __pyx_v_i;

          /* "pandas/src/generated.pyx":2884
 *                 while i < nleft:
 *                     lindexer[count] = i
 *                     rindexer[count] = -1             # <<<<<<<<<<<<<<
 *                     result[count] = left[i]
 *                     i += 1
 */
          __pyx_t_21 = __pyx_v_count;
          __pyx_t_4 = -1;
          if (__pyx_t_21 < 0) {
            __pyx_t_21 += __pyx_bshape_0_rindexer;
            if (unlikely(__pyx_t_21 < 0)) __pyx_t_4 = 0;
          } else if (unlikely(__pyx_t_21 >= __pyx_bshape_0_rindexer)) __pyx_t_4 = 0;
          if (unlikely(__pyx_t_4 != -1)) {
            __Pyx_RaiseBufferIndexError(__pyx_t_4);
            {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2884; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
          }
          *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_bstruct_rindexer.buf, __pyx_t_21, __pyx_bstride_0_rindexer) = -1;

          /* "pandas/src/generated.pyx":2885
 *                     lindexer[count] = i
 *                     rindexer[count] = -1
 *                     result[count] = left[i]             # <<<<<<<<<<<<<<
 *                     i += 1
 *                     count += 1
 */
          __pyx_t_22 = __pyx_v_i;
          __pyx_t_4 = -1;
          if (__pyx_t_22 < 0) {
            __pyx_t_22 += __pyx_bshape_0_left;
            if (unlikely(__pyx_t_22 < 0)) __pyx_t_4 = 0;
          } else if (unlikely(__pyx_t_22 >= __pyx_bshape_0_left)) __pyx_t_4 = 0;
          if (unlikely(__pyx_t_4 != -1)) {
            __Pyx_RaiseBufferIndexError(__pyx_t_4);
            {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2885; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
          }
          __pyx_t_7 = *__Pyx_BufPtrStrided1d(PyObject **, __pyx_bstruct_left.buf, __pyx_t_22, __pyx_bstride_0_left);
          __Pyx_INCREF((PyObject*)__pyx_t_7);
          __pyx_t_23 = __pyx_v_count;
          __pyx_t_4 = -1;
          if (__pyx_t_23 < 0) {
            __pyx_t_23 += __pyx_bshape_0_result;
            if (unlikely(__pyx_t_23 < 0)) __pyx_t_4 = 0;
          } else if (unlikely(__pyx_t_23 >= __pyx_bshape_0_result)) __pyx_t_4 = 0;
          if (unlikely(__pyx_t_4 != -1)) {
            __Pyx_RaiseBufferIndexError(__pyx_t_4);
            {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2885; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
          }
          __pyx_t_24 = __Pyx_BufPtrStrided1d(PyObject **, __pyx_bstruct_result.buf, __pyx_t_23, __pyx_bstride_0_result);
          __Pyx_GOTREF(*__pyx_t_24);
          __Pyx_DECREF(*__pyx_t_24); __Pyx_INCREF(__pyx_t_7);
          *__pyx_t_24 = __pyx_t_7;
          __Pyx_GIVEREF(*__pyx_t_24);
          __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;

          /* "pandas/src/generated.pyx":2886
 *                     rindexer[count] = -1
 *                     result[count] = left[i]
 *                     i += 1             # <<<<<<<<<<<<<<
 *                     count += 1
 *                 break
 */
          __pyx_v_i = (__pyx_v_i + 1);

          /* "pandas/src/generated.pyx":2887
 *                     result[count] = left[i]
 *                     i += 1
 *                     count += 1             # <<<<<<<<<<<<<<
 *                 break
 * 
 */
          __pyx_v_count = (__pyx_v_count + 1);
        }

        /* "pandas/src/generated.pyx":2888
 *                     i += 1
 *                     count += 1
 *                 break             # <<<<<<<<<<<<<<
 * 
 *             lval = left[i]
 */
        goto __pyx_L17_break;
        goto __pyx_L18;
      }
      __pyx_L18:;

      /* "pandas/src/generated.pyx":2890
 *                 break
 * 
 *             lval = left[i]             # <<<<<<<<<<<<<<
 *             rval = right[j]
 * 
 */
      __pyx_t_25 = __pyx_v_i;
      __pyx_t_4 = -1;
      if (__pyx_t_25 < 0) {
        __pyx_t_25 += __pyx_bshape_0_left;
        if (unlikely(__pyx_t_25 < 0)) __pyx_t_4 = 0;
      } else if (unlikely(__pyx_t_25 >= __pyx_bshape_0_left)) __pyx_t_4 = 0;
      if (unlikely(__pyx_t_4 != -1)) {
        __Pyx_RaiseBufferIndexError(__pyx_t_4);
        {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2890; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      }
      __pyx_t_7 = *__Pyx_BufPtrStrided1d(PyObject **, __pyx_bstruct_left.buf, __pyx_t_25, __pyx_bstride_0_left);
      __Pyx_INCREF((PyObject*)__pyx_t_7);
      __Pyx_XDECREF(__pyx_v_lval);
      __pyx_v_lval = __pyx_t_7;
      __pyx_t_7 = 0;

      /* "pandas/src/generated.pyx":2891
 * 
 *             lval = left[i]
 *             rval = right[j]             # <<<<<<<<<<<<<<
 * 
 *             if lval == rval:
 */
      __pyx_t_26 = __pyx_v_j;
      __pyx_t_4 = -1;
      if (__pyx_t_26 < 0) {
        __pyx_t_26 += __pyx_bshape_0_right;
        if (unlikely(__pyx_t_26 < 0)) __pyx_t_4 = 0;
      } else if (unlikely(__pyx_t_26 >= __pyx_bshape_0_right)) __pyx_t_4 = 0;
      if (unlikely(__pyx_t_4 != -1)) {
        __Pyx_RaiseBufferIndexError(__pyx_t_4);
        {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2891; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      }
      __pyx_t_7 = *__Pyx_BufPtrStrided1d(PyObject **, __pyx_bstruct_right.buf, __pyx_t_26, __pyx_bstride_0_right);
      __Pyx_INCREF((PyObject*)__pyx_t_7);
      __Pyx_XDECREF(__pyx_v_rval);
      __pyx_v_rval = __pyx_t_7;
      __pyx_t_7 = 0;

      /* "pandas/src/generated.pyx":2893
 *             rval = right[j]
 * 
 *             if lval == rval:             # <<<<<<<<<<<<<<
 *                 lindexer[count] = i
 *                 rindexer[count] = j
 */
      __pyx_t_7 = PyObject_RichCompare(__pyx_v_lval, __pyx_v_rval, Py_EQ); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2893; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_7);
      __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_7); if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2893; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
      if (__pyx_t_9) {

        /* "pandas/src/generated.pyx":2894
 * 
 *             if lval == rval:
 *                 lindexer[count] = i             # <<<<<<<<<<<<<<
 *                 rindexer[count] = j
 *                 result[count] = lval
 */
        __pyx_t_27 = __pyx_v_count;
        __pyx_t_4 = -1;
        if (__pyx_t_27 < 0) {
          __pyx_t_27 += __pyx_bshape_0_lindexer;
          if (unlikely(__pyx_t_27 < 0)) __pyx_t_4 = 0;
        } else if (unlikely(__pyx_t_27 >= __pyx_bshape_0_lindexer)) __pyx_t_4 = 0;
        if (unlikely(__pyx_t_4 != -1)) {
          __Pyx_RaiseBufferIndexError(__pyx_t_4);
          {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2894; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        }
        *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_bstruct_lindexer.buf, __pyx_t_27, __pyx_bstride_0_lindexer) = __pyx_v_i;

        /* "pandas/src/generated.pyx":2895
 *             if lval == rval:
 *                 lindexer[count] = i
 *                 rindexer[count] = j             # <<<<<<<<<<<<<<
 *                 result[count] = lval
 *                 count += 1
 */
        __pyx_t_28 = __pyx_v_count;
        __pyx_t_4 = -1;
        if (__pyx_t_28 < 0) {
          __pyx_t_28 += __pyx_bshape_0_rindexer;
          if (unlikely(__pyx_t_28 < 0)) __pyx_t_4 = 0;
        } else if (unlikely(__pyx_t_28 >= __pyx_bshape_0_rindexer)) __pyx_t_4 = 0;
        if (unlikely(__pyx_t_4 != -1)) {
          __Pyx_RaiseBufferIndexError(__pyx_t_4);
          {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2895; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        }
        *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_bstruct_rindexer.buf, __pyx_t_28, __pyx_bstride_0_rindexer) = __pyx_v_j;

        /* "pandas/src/generated.pyx":2896
 *                 lindexer[count] = i
 *                 rindexer[count] = j
 *                 result[count] = lval             # <<<<<<<<<<<<<<
 *                 count += 1
 *                 if i < nleft - 1:
 */
        __pyx_t_29 = __pyx_v_count;
        __pyx_t_4 = -1;
        if (__pyx_t_29 < 0) {
          __pyx_t_29 += __pyx_bshape_0_result;
          if (unlikely(__pyx_t_29 < 0)) __pyx_t_4 = 0;
        } else if (unlikely(__pyx_t_29 >= __pyx_bshape_0_result)) __pyx_t_4 = 0;
        if (unlikely(__pyx_t_4 != -1)) {
          __Pyx_RaiseBufferIndexError(__pyx_t_4);
          {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2896; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        }
        __pyx_t_24 = __Pyx_BufPtrStrided1d(PyObject **, __pyx_bstruct_result.buf, __pyx_t_29, __pyx_bstride_0_result);
        __Pyx_GOTREF(*__pyx_t_24);
        __Pyx_DECREF(*__pyx_t_24); __Pyx_INCREF(__pyx_v_lval);
        *__pyx_t_24 = __pyx_v_lval;
        __Pyx_GIVEREF(*__pyx_t_24);

        /* "pandas/src/generated.pyx":2897
 *                 rindexer[count] = j
 *                 result[count] = lval
 *                 count += 1             # <<<<<<<<<<<<<<
 *                 if i < nleft - 1:
 *                     if j < nright - 1 and right[j + 1] == rval:
 */
        __pyx_v_count = (__pyx_v_count + 1);

        /* "pandas/src/generated.pyx":2898
 *                 result[count] = lval
 *                 count += 1
 *                 if i < nleft - 1:             # <<<<<<<<<<<<<<
 *                     if j < nright - 1 and right[j + 1] == rval:
 *                         j += 1
 */
        __pyx_t_9 = (__pyx_v_i < (__pyx_v_nleft - 1));
        if (__pyx_t_9) {

          /* "pandas/src/generated.pyx":2899
 *                 count += 1
 *                 if i < nleft - 1:
 *                     if j < nright - 1 and right[j + 1] == rval:             # <<<<<<<<<<<<<<
 *                         j += 1
 *                     else:
 */
          __pyx_t_9 = (__pyx_v_j < (__pyx_v_nright - 1));
          if (__pyx_t_9) {
            __pyx_t_30 = (__pyx_v_j + 1);
            __pyx_t_4 = -1;
            if (__pyx_t_30 < 0) {
              __pyx_t_30 += __pyx_bshape_0_right;
              if (unlikely(__pyx_t_30 < 0)) __pyx_t_4 = 0;
            } else if (unlikely(__pyx_t_30 >= __pyx_bshape_0_right)) __pyx_t_4 = 0;
            if (unlikely(__pyx_t_4 != -1)) {
              __Pyx_RaiseBufferIndexError(__pyx_t_4);
              {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2899; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
            }
            __pyx_t_7 = *__Pyx_BufPtrStrided1d(PyObject **, __pyx_bstruct_right.buf, __pyx_t_30, __pyx_bstride_0_right);
            __Pyx_INCREF((PyObject*)__pyx_t_7);
            __pyx_t_13 = PyObject_RichCompare(__pyx_t_7, __pyx_v_rval, Py_EQ); if (unlikely(!__pyx_t_13)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2899; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
            __Pyx_GOTREF(__pyx_t_13);
            __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
            __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_13); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2899; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
            __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
            __pyx_t_8 = __pyx_t_2;
          } else {
            __pyx_t_8 = __pyx_t_9;
          }
          if (__pyx_t_8) {

            /* "pandas/src/generated.pyx":2900
 *                 if i < nleft - 1:
 *                     if j < nright - 1 and right[j + 1] == rval:
 *                         j += 1             # <<<<<<<<<<<<<<
 *                     else:
 *                         i += 1
 */
            __pyx_v_j = (__pyx_v_j + 1);
            goto __pyx_L23;
          }
          /*else*/ {

            /* "pandas/src/generated.pyx":2902
 *                         j += 1
 *                     else:
 *                         i += 1             # <<<<<<<<<<<<<<
 *                         if left[i] != rval:
 *                             j += 1
 */
            __pyx_v_i = (__pyx_v_i + 1);

            /* "pandas/src/generated.pyx":2903
 *                     else:
 *                         i += 1
 *                         if left[i] != rval:             # <<<<<<<<<<<<<<
 *                             j += 1
 *                 elif j < nright - 1:
 */
            __pyx_t_31 = __pyx_v_i;
            __pyx_t_4 = -1;
            if (__pyx_t_31 < 0) {
              __pyx_t_31 += __pyx_bshape_0_left;
              if (unlikely(__pyx_t_31 < 0)) __pyx_t_4 = 0;
            } else if (unlikely(__pyx_t_31 >= __pyx_bshape_0_left)) __pyx_t_4 = 0;
            if (unlikely(__pyx_t_4 != -1)) {
              __Pyx_RaiseBufferIndexError(__pyx_t_4);
              {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2903; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
            }
            __pyx_t_13 = *__Pyx_BufPtrStrided1d(PyObject **, __pyx_bstruct_left.buf, __pyx_t_31, __pyx_bstride_0_left);
            __Pyx_INCREF((PyObject*)__pyx_t_13);
            __pyx_t_7 = PyObject_RichCompare(__pyx_t_13, __pyx_v_rval, Py_NE); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2903; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
            __Pyx_GOTREF(__pyx_t_7);
            __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
            __pyx_t_8 = __Pyx_PyObject_IsTrue(__pyx_t_7); if (unlikely(__pyx_t_8 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2903; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
            __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
            if (__pyx_t_8) {

              /* "pandas/src/generated.pyx":2904
 *                         i += 1
 *                         if left[i] != rval:
 *                             j += 1             # <<<<<<<<<<<<<<
 *                 elif j < nright - 1:
 *                     j += 1
 */
              __pyx_v_j = (__pyx_v_j + 1);
              goto __pyx_L24;
            }
            __pyx_L24:;
          }
          __pyx_L23:;
          goto __pyx_L22;
        }

        /* "pandas/src/generated.pyx":2905
 *                         if left[i] != rval:
 *                             j += 1
 *                 elif j < nright - 1:             # <<<<<<<<<<<<<<
 *                     j += 1
 *                     if lval != right[j]:
 */
        __pyx_t_8 = (__pyx_v_j < (__pyx_v_nright - 1));
        if (__pyx_t_8) {

          /* "pandas/src/generated.pyx":2906
 *                             j += 1
 *                 elif j < nright - 1:
 *                     j += 1             # <<<<<<<<<<<<<<
 *                     if lval != right[j]:
 *                         i += 1
 */
          __pyx_v_j = (__pyx_v_j + 1);

          /* "pandas/src/generated.pyx":2907
 *                 elif j < nright - 1:
 *                     j += 1
 *                     if lval != right[j]:             # <<<<<<<<<<<<<<
 *                         i += 1
 *                 else:
 */
          __pyx_t_32 = __pyx_v_j;
          __pyx_t_4 = -1;
          if (__pyx_t_32 < 0) {
            __pyx_t_32 += __pyx_bshape_0_right;
            if (unlikely(__pyx_t_32 < 0)) __pyx_t_4 = 0;
          } else if (unlikely(__pyx_t_32 >= __pyx_bshape_0_right)) __pyx_t_4 = 0;
          if (unlikely(__pyx_t_4 != -1)) {
            __Pyx_RaiseBufferIndexError(__pyx_t_4);
            {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2907; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
          }
          __pyx_t_7 = *__Pyx_BufPtrStrided1d(PyObject **, __pyx_bstruct_right.buf, __pyx_t_32, __pyx_bstride_0_right);
          __Pyx_INCREF((PyObject*)__pyx_t_7);
          __pyx_t_13 = PyObject_RichCompare(__pyx_v_lval, __pyx_t_7, Py_NE); if (unlikely(!__pyx_t_13)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2907; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
          __Pyx_GOTREF(__pyx_t_13);
          __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
          __pyx_t_8 = __Pyx_PyObject_IsTrue(__pyx_t_13); if (unlikely(__pyx_t_8 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2907; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
          __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
          if (__pyx_t_8) {

            /* "pandas/src/generated.pyx":2908
 *                     j += 1
 *                     if lval != right[j]:
 *                         i += 1             # <<<<<<<<<<<<<<
 *                 else:
 *                     # end of the road
 */
            __pyx_v_i = (__pyx_v_i + 1);
            goto __pyx_L25;
          }
          __pyx_L25:;
          goto __pyx_L22;
        }
        /*else*/ {

          /* "pandas/src/generated.pyx":2911
 *                 else:
 *                     # end of the road
 *                     break             # <<<<<<<<<<<<<<
 *             elif lval < rval:
 *                 lindexer[count] = i
 */
          goto __pyx_L17_break;
        }
        __pyx_L22:;
        goto __pyx_L21;
      }

      /* "pandas/src/generated.pyx":2912
 *                     # end of the road
 *                     break
 *             elif lval < rval:             # <<<<<<<<<<<<<<
 *                 lindexer[count] = i
 *                 rindexer[count] = -1
 */
      __pyx_t_13 = PyObject_RichCompare(__pyx_v_lval, __pyx_v_rval, Py_LT); if (unlikely(!__pyx_t_13)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2912; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_13);
      __pyx_t_8 = __Pyx_PyObject_IsTrue(__pyx_t_13); if (unlikely(__pyx_t_8 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2912; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
      if (__pyx_t_8) {

        /* "pandas/src/generated.pyx":2913
 *                     break
 *             elif lval < rval:
 *                 lindexer[count] = i             # <<<<<<<<<<<<<<
 *                 rindexer[count] = -1
 *                 result[count] = left[i]
 */
        __pyx_t_33 = __pyx_v_count;
        __pyx_t_4 = -1;
        if (__pyx_t_33 < 0) {
          __pyx_t_33 += __pyx_bshape_0_lindexer;
          if (unlikely(__pyx_t_33 < 0)) __pyx_t_4 = 0;
        } else if (unlikely(__pyx_t_33 >= __pyx_bshape_0_lindexer)) __pyx_t_4 = 0;
        if (unlikely(__pyx_t_4 != -1)) {
          __Pyx_RaiseBufferIndexError(__pyx_t_4);
          {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2913; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        }
        *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_bstruct_lindexer.buf, __pyx_t_33, __pyx_bstride_0_lindexer) = __pyx_v_i;

        /* "pandas/src/generated.pyx":2914
 *             elif lval < rval:
 *                 lindexer[count] = i
 *                 rindexer[count] = -1             # <<<<<<<<<<<<<<
 *                 result[count] = left[i]
 *                 count += 1
 */
        __pyx_t_34 = __pyx_v_count;
        __pyx_t_4 = -1;
        if (__pyx_t_34 < 0) {
          __pyx_t_34 += __pyx_bshape_0_rindexer;
          if (unlikely(__pyx_t_34 < 0)) __pyx_t_4 = 0;
        } else if (unlikely(__pyx_t_34 >= __pyx_bshape_0_rindexer)) __pyx_t_4 = 0;
        if (unlikely(__pyx_t_4 != -1)) {
          __Pyx_RaiseBufferIndexError(__pyx_t_4);
          {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2914; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        }
        *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_bstruct_rindexer.buf, __pyx_t_34, __pyx_bstride_0_rindexer) = -1;

        /* "pandas/src/generated.pyx":2915
 *                 lindexer[count] = i
 *                 rindexer[count] = -1
 *                 result[count] = left[i]             # <<<<<<<<<<<<<<
 *                 count += 1
 *                 i += 1
 */
        __pyx_t_35 = __pyx_v_i;
        __pyx_t_4 = -1;
        if (__pyx_t_35 < 0) {
          __pyx_t_35 += __pyx_bshape_0_left;
          if (unlikely(__pyx_t_35 < 0)) __pyx_t_4 = 0;
        } else if (unlikely(__pyx_t_35 >= __pyx_bshape_0_left)) __pyx_t_4 = 0;
        if (unlikely(__pyx_t_4 != -1)) {
          __Pyx_RaiseBufferIndexError(__pyx_t_4);
          {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2915; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        }
        __pyx_t_13 = *__Pyx_BufPtrStrided1d(PyObject **, __pyx_bstruct_left.buf, __pyx_t_35, __pyx_bstride_0_left);
        __Pyx_INCREF((PyObject*)__pyx_t_13);
        __pyx_t_36 = __pyx_v_count;
        __pyx_t_4 = -1;
        if (__pyx_t_36 < 0) {
          __pyx_t_36 += __pyx_bshape_0_result;
          if (unlikely(__pyx_t_36 < 0)) __pyx_t_4 = 0;
        } else if (unlikely(__pyx_t_36 >= __pyx_bshape_0_result)) __pyx_t_4 = 0;
        if (unlikely(__pyx_t_4 != -1)) {
          __Pyx_RaiseBufferIndexError(__pyx_t_4);
          {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2915; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        }
        __pyx_t_24 = __Pyx_BufPtrStrided1d(PyObject **, __pyx_bstruct_result.buf, __pyx_t_36, __pyx_bstride_0_result);
        __Pyx_GOTREF(*__pyx_t_24);
        __Pyx_DECREF(*__pyx_t_24); __Pyx_INCREF(__pyx_t_13);
        *__pyx_t_24 = __pyx_t_13;
        __Pyx_GIVEREF(*__pyx_t_24);
        __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;

        /* "pandas/src/generated.pyx":2916
 *                 rindexer[count] = -1
 *                 result[count] = left[i]
 *                 count += 1             # <<<<<<<<<<<<<<
 *                 i += 1
 *             else:
 */
        __pyx_v_count = (__pyx_v_count + 1);

        /* "pandas/src/generated.pyx":2917
 *                 result[count] = left[i]
 *                 count += 1
 *                 i += 1             # <<<<<<<<<<<<<<
 *             else:
 *                 j += 1
 */
        __pyx_v_i = (__pyx_v_i + 1);
        goto __pyx_L21;
      }
      /*else*/ {

        /* "pandas/src/generated.pyx":2919
 *                 i += 1
 *             else:
 *                 j += 1             # <<<<<<<<<<<<<<
 * 
 *     return result, lindexer, rindexer
 */
        __pyx_v_j = (__pyx_v_j + 1);
      }
      __pyx_L21:;
    }
    __pyx_L17_break:;
    goto __pyx_L15;
  }
  __pyx_L15:;

  /* "pandas/src/generated.pyx":2921
 *                 j += 1
 * 
 *     return result, lindexer, rindexer             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_13 = PyTuple_New(3); if (unlikely(!__pyx_t_13)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2921; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_13));
  __Pyx_INCREF(((PyObject *)__pyx_v_result));
  PyTuple_SET_ITEM(__pyx_t_13, 0, ((PyObject *)__pyx_v_result));
  __Pyx_GIVEREF(((PyObject *)__pyx_v_result));
  __Pyx_INCREF(((PyObject *)__pyx_v_lindexer));
  PyTuple_SET_ITEM(__pyx_t_13, 1, ((PyObject *)__pyx_v_lindexer));
  __Pyx_GIVEREF(((PyObject *)__pyx_v_lindexer));
  __Pyx_INCREF(((PyObject *)__pyx_v_rindexer));
  PyTuple_SET_ITEM(__pyx_t_13, 2, ((PyObject *)__pyx_v_rindexer));
  __Pyx_GIVEREF(((PyObject *)__pyx_v_rindexer));
  __pyx_r = ((PyObject *)__pyx_t_13);
  __pyx_t_13 = 0;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_XDECREF(__pyx_t_12);
  __Pyx_XDECREF(__pyx_t_13);
  __Pyx_XDECREF(__pyx_t_14);
  { PyObject *__pyx_type, *__pyx_value, *__pyx_tb;
    __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);
    __Pyx_SafeReleaseBuffer(&__pyx_bstruct_result);
    __Pyx_SafeReleaseBuffer(&__pyx_bstruct_right);
    __Pyx_SafeReleaseBuffer(&__pyx_bstruct_lindexer);
    __Pyx_SafeReleaseBuffer(&__pyx_bstruct_rindexer);
    __Pyx_SafeReleaseBuffer(&__pyx_bstruct_left);
  __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);}
  __Pyx_AddTraceback("pandas._algos.left_join_indexer_object", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  goto __pyx_L2;
  __pyx_L0:;
  __Pyx_SafeReleaseBuffer(&__pyx_bstruct_result);
  __Pyx_SafeReleaseBuffer(&__pyx_bstruct_right);
  __Pyx_SafeReleaseBuffer(&__pyx_bstruct_lindexer);
  __Pyx_SafeReleaseBuffer(&__pyx_bstruct_rindexer);
  __Pyx_SafeReleaseBuffer(&__pyx_bstruct_left);
  __pyx_L2:;
  __Pyx_XDECREF(__pyx_v_lval);
  __Pyx_XDECREF(__pyx_v_rval);
  __Pyx_XDECREF((PyObject *)__pyx_v_lindexer);
  __Pyx_XDECREF((PyObject *)__pyx_v_rindexer);
  __Pyx_XDECREF((PyObject *)__pyx_v_result);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "pandas/src/generated.pyx":2924
 * 
 * 
 * def left_join_indexer_int32(ndarray[int32_t] left,             # <<<<<<<<<<<<<<
 *                               ndarray[int32_t] right):
 *     '''
 */

static PyObject *__pyx_pf_6pandas_6_algos_81left_join_indexer_int32(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6pandas_6_algos_81left_join_indexer_int32[] = "\n    Two-pass algorithm for monotonic indexes. Handles many-to-one merges\n    ";
static PyMethodDef __pyx_mdef_6pandas_6_algos_81left_join_indexer_int32 = {__Pyx_NAMESTR("left_join_indexer_int32"), (PyCFunction)__pyx_pf_6pandas_6_algos_81left_join_indexer_int32, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6pandas_6_algos_81left_join_indexer_int32)};
static PyObject *__pyx_pf_6pandas_6_algos_81left_join_indexer_int32(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyArrayObject *__pyx_v_left = 0;
  PyArrayObject *__pyx_v_right = 0;
  Py_ssize_t __pyx_v_i;
  Py_ssize_t __pyx_v_j;
  Py_ssize_t __pyx_v_nright;
  Py_ssize_t __pyx_v_nleft;
  Py_ssize_t __pyx_v_count;
  __pyx_t_5numpy_int32_t __pyx_v_lval;
  __pyx_t_5numpy_int32_t __pyx_v_rval;
  PyArrayObject *__pyx_v_lindexer = 0;
  PyArrayObject *__pyx_v_rindexer = 0;
  PyArrayObject *__pyx_v_result = 0;
  Py_buffer __pyx_bstruct_result;
  Py_ssize_t __pyx_bstride_0_result = 0;
  Py_ssize_t __pyx_bshape_0_result = 0;
  Py_buffer __pyx_bstruct_right;
  Py_ssize_t __pyx_bstride_0_right = 0;
  Py_ssize_t __pyx_bshape_0_right = 0;
  Py_buffer __pyx_bstruct_lindexer;
  Py_ssize_t __pyx_bstride_0_lindexer = 0;
  Py_ssize_t __pyx_bshape_0_lindexer = 0;
  Py_buffer __pyx_bstruct_rindexer;
  Py_ssize_t __pyx_bstride_0_rindexer = 0;
  Py_ssize_t __pyx_bshape_0_rindexer = 0;
  Py_buffer __pyx_bstruct_left;
  Py_ssize_t __pyx_bstride_0_left = 0;
  Py_ssize_t __pyx_bshape_0_left = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  Py_ssize_t __pyx_t_1;
  int __pyx_t_2;
  int __pyx_t_3;
  Py_ssize_t __pyx_t_4;
  Py_ssize_t __pyx_t_5;
  int __pyx_t_6;
  int __pyx_t_7;
  Py_ssize_t __pyx_t_8;
  Py_ssize_t __pyx_t_9;
  PyObject *__pyx_t_10 = NULL;
  PyObject *__pyx_t_11 = NULL;
  PyObject *__pyx_t_12 = NULL;
  PyObject *__pyx_t_13 = NULL;
  PyObject *__pyx_t_14 = NULL;
  PyArrayObject *__pyx_t_15 = NULL;
  PyObject *__pyx_t_16 = NULL;
  PyObject *__pyx_t_17 = NULL;
  PyObject *__pyx_t_18 = NULL;
  PyArrayObject *__pyx_t_19 = NULL;
  Py_ssize_t __pyx_t_20;
  Py_ssize_t __pyx_t_21;
  Py_ssize_t __pyx_t_22;
  Py_ssize_t __pyx_t_23;
  Py_ssize_t __pyx_t_24;
  Py_ssize_t __pyx_t_25;
  Py_ssize_t __pyx_t_26;
  Py_ssize_t __pyx_t_27;
  Py_ssize_t __pyx_t_28;
  Py_ssize_t __pyx_t_29;
  Py_ssize_t __pyx_t_30;
  Py_ssize_t __pyx_t_31;
  Py_ssize_t __pyx_t_32;
  Py_ssize_t __pyx_t_33;
  Py_ssize_t __pyx_t_34;
  Py_ssize_t __pyx_t_35;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__left,&__pyx_n_s__right,0};
  __Pyx_RefNannySetupContext("left_join_indexer_int32");
  __pyx_self = __pyx_self;
  {
    PyObject* values[2] = {0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  0:
        values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__left);
        if (likely(values[0])) kw_args--;
        else goto __pyx_L5_argtuple_error;
        case  1:
        values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__right);
        if (likely(values[1])) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("left_join_indexer_int32", 1, 2, 2, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2924; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "left_join_indexer_int32") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2924; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
    }
    __pyx_v_left = ((PyArrayObject *)values[0]);
    __pyx_v_right = ((PyArrayObject *)values[1]);
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("left_join_indexer_int32", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2924; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("pandas._algos.left_join_indexer_int32", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_bstruct_lindexer.buf = NULL;
  __pyx_bstruct_rindexer.buf = NULL;
  __pyx_bstruct_result.buf = NULL;
  __pyx_bstruct_left.buf = NULL;
  __pyx_bstruct_right.buf = NULL;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_left), __pyx_ptype_5numpy_ndarray, 1, "left", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2924; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_right), __pyx_ptype_5numpy_ndarray, 1, "right", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2925; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_left, (PyObject*)__pyx_v_left, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int32_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2924; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  }
  __pyx_bstride_0_left = __pyx_bstruct_left.strides[0];
  __pyx_bshape_0_left = __pyx_bstruct_left.shape[0];
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_right, (PyObject*)__pyx_v_right, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int32_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2924; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  }
  __pyx_bstride_0_right = __pyx_bstruct_right.strides[0];
  __pyx_bshape_0_right = __pyx_bstruct_right.shape[0];

  /* "pandas/src/generated.pyx":2935
 *         ndarray[int32_t] result
 * 
 *     nleft = len(left)             # <<<<<<<<<<<<<<
 *     nright = len(right)
 * 
 */
  __pyx_t_1 = PyObject_Length(((PyObject *)__pyx_v_left)); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2935; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_v_nleft = __pyx_t_1;

  /* "pandas/src/generated.pyx":2936
 * 
 *     nleft = len(left)
 *     nright = len(right)             # <<<<<<<<<<<<<<
 * 
 *     i = 0
 */
  __pyx_t_1 = PyObject_Length(((PyObject *)__pyx_v_right)); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2936; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_v_nright = __pyx_t_1;

  /* "pandas/src/generated.pyx":2938
 *     nright = len(right)
 * 
 *     i = 0             # <<<<<<<<<<<<<<
 *     j = 0
 *     count = 0
 */
  __pyx_v_i = 0;

  /* "pandas/src/generated.pyx":2939
 * 
 *     i = 0
 *     j = 0             # <<<<<<<<<<<<<<
 *     count = 0
 *     if nleft > 0:
 */
  __pyx_v_j = 0;

  /* "pandas/src/generated.pyx":2940
 *     i = 0
 *     j = 0
 *     count = 0             # <<<<<<<<<<<<<<
 *     if nleft > 0:
 *         while i < nleft:
 */
  __pyx_v_count = 0;

  /* "pandas/src/generated.pyx":2941
 *     j = 0
 *     count = 0
 *     if nleft > 0:             # <<<<<<<<<<<<<<
 *         while i < nleft:
 *             if j == nright:
 */
  __pyx_t_2 = (__pyx_v_nleft > 0);
  if (__pyx_t_2) {

    /* "pandas/src/generated.pyx":2942
 *     count = 0
 *     if nleft > 0:
 *         while i < nleft:             # <<<<<<<<<<<<<<
 *             if j == nright:
 *                 count += nleft - i
 */
    while (1) {
      __pyx_t_2 = (__pyx_v_i < __pyx_v_nleft);
      if (!__pyx_t_2) break;

      /* "pandas/src/generated.pyx":2943
 *     if nleft > 0:
 *         while i < nleft:
 *             if j == nright:             # <<<<<<<<<<<<<<
 *                 count += nleft - i
 *                 break
 */
      __pyx_t_2 = (__pyx_v_j == __pyx_v_nright);
      if (__pyx_t_2) {

        /* "pandas/src/generated.pyx":2944
 *         while i < nleft:
 *             if j == nright:
 *                 count += nleft - i             # <<<<<<<<<<<<<<
 *                 break
 * 
 */
        __pyx_v_count = (__pyx_v_count + (__pyx_v_nleft - __pyx_v_i));

        /* "pandas/src/generated.pyx":2945
 *             if j == nright:
 *                 count += nleft - i
 *                 break             # <<<<<<<<<<<<<<
 * 
 *             lval = left[i]
 */
        goto __pyx_L8_break;
        goto __pyx_L9;
      }
      __pyx_L9:;

      /* "pandas/src/generated.pyx":2947
 *                 break
 * 
 *             lval = left[i]             # <<<<<<<<<<<<<<
 *             rval = right[j]
 * 
 */
      __pyx_t_1 = __pyx_v_i;
      __pyx_t_3 = -1;
      if (__pyx_t_1 < 0) {
        __pyx_t_1 += __pyx_bshape_0_left;
        if (unlikely(__pyx_t_1 < 0)) __pyx_t_3 = 0;
      } else if (unlikely(__pyx_t_1 >= __pyx_bshape_0_left)) __pyx_t_3 = 0;
      if (unlikely(__pyx_t_3 != -1)) {
        __Pyx_RaiseBufferIndexError(__pyx_t_3);
        {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2947; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      }
      __pyx_v_lval = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int32_t *, __pyx_bstruct_left.buf, __pyx_t_1, __pyx_bstride_0_left));

      /* "pandas/src/generated.pyx":2948
 * 
 *             lval = left[i]
 *             rval = right[j]             # <<<<<<<<<<<<<<
 * 
 *             if lval == rval:
 */
      __pyx_t_4 = __pyx_v_j;
      __pyx_t_3 = -1;
      if (__pyx_t_4 < 0) {
        __pyx_t_4 += __pyx_bshape_0_right;
        if (unlikely(__pyx_t_4 < 0)) __pyx_t_3 = 0;
      } else if (unlikely(__pyx_t_4 >= __pyx_bshape_0_right)) __pyx_t_3 = 0;
      if (unlikely(__pyx_t_3 != -1)) {
        __Pyx_RaiseBufferIndexError(__pyx_t_3);
        {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2948; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      }
      __pyx_v_rval = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int32_t *, __pyx_bstruct_right.buf, __pyx_t_4, __pyx_bstride_0_right));

      /* "pandas/src/generated.pyx":2950
 *             rval = right[j]
 * 
 *             if lval == rval:             # <<<<<<<<<<<<<<
 *                 count += 1
 *                 if i < nleft - 1:
 */
      __pyx_t_2 = (__pyx_v_lval == __pyx_v_rval);
      if (__pyx_t_2) {

        /* "pandas/src/generated.pyx":2951
 * 
 *             if lval == rval:
 *                 count += 1             # <<<<<<<<<<<<<<
 *                 if i < nleft - 1:
 *                     if j < nright - 1 and right[j + 1] == rval:
 */
        __pyx_v_count = (__pyx_v_count + 1);

        /* "pandas/src/generated.pyx":2952
 *             if lval == rval:
 *                 count += 1
 *                 if i < nleft - 1:             # <<<<<<<<<<<<<<
 *                     if j < nright - 1 and right[j + 1] == rval:
 *                         j += 1
 */
        __pyx_t_2 = (__pyx_v_i < (__pyx_v_nleft - 1));
        if (__pyx_t_2) {

          /* "pandas/src/generated.pyx":2953
 *                 count += 1
 *                 if i < nleft - 1:
 *                     if j < nright - 1 and right[j + 1] == rval:             # <<<<<<<<<<<<<<
 *                         j += 1
 *                     else:
 */
          __pyx_t_2 = (__pyx_v_j < (__pyx_v_nright - 1));
          if (__pyx_t_2) {
            __pyx_t_5 = (__pyx_v_j + 1);
            __pyx_t_3 = -1;
            if (__pyx_t_5 < 0) {
              __pyx_t_5 += __pyx_bshape_0_right;
              if (unlikely(__pyx_t_5 < 0)) __pyx_t_3 = 0;
            } else if (unlikely(__pyx_t_5 >= __pyx_bshape_0_right)) __pyx_t_3 = 0;
            if (unlikely(__pyx_t_3 != -1)) {
              __Pyx_RaiseBufferIndexError(__pyx_t_3);
              {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2953; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
            }
            __pyx_t_6 = ((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int32_t *, __pyx_bstruct_right.buf, __pyx_t_5, __pyx_bstride_0_right)) == __pyx_v_rval);
            __pyx_t_7 = __pyx_t_6;
          } else {
            __pyx_t_7 = __pyx_t_2;
          }
          if (__pyx_t_7) {

            /* "pandas/src/generated.pyx":2954
 *                 if i < nleft - 1:
 *                     if j < nright - 1 and right[j + 1] == rval:
 *                         j += 1             # <<<<<<<<<<<<<<
 *                     else:
 *                         i += 1
 */
            __pyx_v_j = (__pyx_v_j + 1);
            goto __pyx_L12;
          }
          /*else*/ {

            /* "pandas/src/generated.pyx":2956
 *                         j += 1
 *                     else:
 *                         i += 1             # <<<<<<<<<<<<<<
 *                         if left[i] != rval:
 *                             j += 1
 */
            __pyx_v_i = (__pyx_v_i + 1);

            /* "pandas/src/generated.pyx":2957
 *                     else:
 *                         i += 1
 *                         if left[i] != rval:             # <<<<<<<<<<<<<<
 *                             j += 1
 *                 elif j < nright - 1:
 */
            __pyx_t_8 = __pyx_v_i;
            __pyx_t_3 = -1;
            if (__pyx_t_8 < 0) {
              __pyx_t_8 += __pyx_bshape_0_left;
              if (unlikely(__pyx_t_8 < 0)) __pyx_t_3 = 0;
            } else if (unlikely(__pyx_t_8 >= __pyx_bshape_0_left)) __pyx_t_3 = 0;
            if (unlikely(__pyx_t_3 != -1)) {
              __Pyx_RaiseBufferIndexError(__pyx_t_3);
              {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2957; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
            }
            __pyx_t_7 = ((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int32_t *, __pyx_bstruct_left.buf, __pyx_t_8, __pyx_bstride_0_left)) != __pyx_v_rval);
            if (__pyx_t_7) {

              /* "pandas/src/generated.pyx":2958
 *                         i += 1
 *                         if left[i] != rval:
 *                             j += 1             # <<<<<<<<<<<<<<
 *                 elif j < nright - 1:
 *                     j += 1
 */
              __pyx_v_j = (__pyx_v_j + 1);
              goto __pyx_L13;
            }
            __pyx_L13:;
          }
          __pyx_L12:;
          goto __pyx_L11;
        }

        /* "pandas/src/generated.pyx":2959
 *                         if left[i] != rval:
 *                             j += 1
 *                 elif j < nright - 1:             # <<<<<<<<<<<<<<
 *                     j += 1
 *                     if lval != right[j]:
 */
        __pyx_t_7 = (__pyx_v_j < (__pyx_v_nright - 1));
        if (__pyx_t_7) {

          /* "pandas/src/generated.pyx":2960
 *                             j += 1
 *                 elif j < nright - 1:
 *                     j += 1             # <<<<<<<<<<<<<<
 *                     if lval != right[j]:
 *                         i += 1
 */
          __pyx_v_j = (__pyx_v_j + 1);

          /* "pandas/src/generated.pyx":2961
 *                 elif j < nright - 1:
 *                     j += 1
 *                     if lval != right[j]:             # <<<<<<<<<<<<<<
 *                         i += 1
 *                 else:
 */
          __pyx_t_9 = __pyx_v_j;
          __pyx_t_3 = -1;
          if (__pyx_t_9 < 0) {
            __pyx_t_9 += __pyx_bshape_0_right;
            if (unlikely(__pyx_t_9 < 0)) __pyx_t_3 = 0;
          } else if (unlikely(__pyx_t_9 >= __pyx_bshape_0_right)) __pyx_t_3 = 0;
          if (unlikely(__pyx_t_3 != -1)) {
            __Pyx_RaiseBufferIndexError(__pyx_t_3);
            {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2961; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
          }
          __pyx_t_7 = (__pyx_v_lval != (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int32_t *, __pyx_bstruct_right.buf, __pyx_t_9, __pyx_bstride_0_right)));
          if (__pyx_t_7) {

            /* "pandas/src/generated.pyx":2962
 *                     j += 1
 *                     if lval != right[j]:
 *                         i += 1             # <<<<<<<<<<<<<<
 *                 else:
 *                     # end of the road
 */
            __pyx_v_i = (__pyx_v_i + 1);
            goto __pyx_L14;
          }
          __pyx_L14:;
          goto __pyx_L11;
        }
        /*else*/ {

          /* "pandas/src/generated.pyx":2965
 *                 else:
 *                     # end of the road
 *                     break             # <<<<<<<<<<<<<<
 *             elif lval < rval:
 *                 count += 1
 */
          goto __pyx_L8_break;
        }
        __pyx_L11:;
        goto __pyx_L10;
      }

      /* "pandas/src/generated.pyx":2966
 *                     # end of the road
 *                     break
 *             elif lval < rval:             # <<<<<<<<<<<<<<
 *                 count += 1
 *                 i += 1
 */
      __pyx_t_7 = (__pyx_v_lval < __pyx_v_rval);
      if (__pyx_t_7) {

        /* "pandas/src/generated.pyx":2967
 *                     break
 *             elif lval < rval:
 *                 count += 1             # <<<<<<<<<<<<<<
 *                 i += 1
 *             else:
 */
        __pyx_v_count = (__pyx_v_count + 1);

        /* "pandas/src/generated.pyx":2968
 *             elif lval < rval:
 *                 count += 1
 *                 i += 1             # <<<<<<<<<<<<<<
 *             else:
 *                 j += 1
 */
        __pyx_v_i = (__pyx_v_i + 1);
        goto __pyx_L10;
      }
      /*else*/ {

        /* "pandas/src/generated.pyx":2970
 *                 i += 1
 *             else:
 *                 j += 1             # <<<<<<<<<<<<<<
 * 
 *     # do it again now that result size is known
 */
        __pyx_v_j = (__pyx_v_j + 1);
      }
      __pyx_L10:;
    }
    __pyx_L8_break:;
    goto __pyx_L6;
  }
  __pyx_L6:;

  /* "pandas/src/generated.pyx":2974
 *     # do it again now that result size is known
 * 
 *     lindexer = np.empty(count, dtype=np.int64)             # <<<<<<<<<<<<<<
 *     rindexer = np.empty(count, dtype=np.int64)
 *     result = np.empty(count, dtype=np.int32)
 */
  __pyx_t_10 = __Pyx_GetName(__pyx_m, __pyx_n_s__np); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2974; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_10);
  __pyx_t_11 = PyObject_GetAttr(__pyx_t_10, __pyx_n_s__empty); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2974; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_11);
  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
  __pyx_t_10 = PyInt_FromSsize_t(__pyx_v_count); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2974; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_10);
  __pyx_t_12 = PyTuple_New(1); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2974; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_12));
  PyTuple_SET_ITEM(__pyx_t_12, 0, __pyx_t_10);
  __Pyx_GIVEREF(__pyx_t_10);
  __pyx_t_10 = 0;
  __pyx_t_10 = PyDict_New(); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2974; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_10));
  __pyx_t_13 = __Pyx_GetName(__pyx_m, __pyx_n_s__np); if (unlikely(!__pyx_t_13)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2974; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_13);
  __pyx_t_14 = PyObject_GetAttr(__pyx_t_13, __pyx_n_s__int64); if (unlikely(!__pyx_t_14)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2974; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_14);
  __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
  if (PyDict_SetItem(__pyx_t_10, ((PyObject *)__pyx_n_s__dtype), __pyx_t_14) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2974; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
  __pyx_t_14 = PyEval_CallObjectWithKeywords(__pyx_t_11, ((PyObject *)__pyx_t_12), ((PyObject *)__pyx_t_10)); if (unlikely(!__pyx_t_14)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2974; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_14);
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  __Pyx_DECREF(((PyObject *)__pyx_t_12)); __pyx_t_12 = 0;
  __Pyx_DECREF(((PyObject *)__pyx_t_10)); __pyx_t_10 = 0;
  if (!(likely(((__pyx_t_14) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_14, __pyx_ptype_5numpy_ndarray))))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2974; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_t_15 = ((PyArrayObject *)__pyx_t_14);
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    __Pyx_SafeReleaseBuffer(&__pyx_bstruct_lindexer);
    __pyx_t_3 = __Pyx_GetBufferAndValidate(&__pyx_bstruct_lindexer, (PyObject*)__pyx_t_15, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack);
    if (unlikely(__pyx_t_3 < 0)) {
      PyErr_Fetch(&__pyx_t_16, &__pyx_t_17, &__pyx_t_18);
      if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_lindexer, (PyObject*)__pyx_v_lindexer, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) {
        Py_XDECREF(__pyx_t_16); Py_XDECREF(__pyx_t_17); Py_XDECREF(__pyx_t_18);
        __Pyx_RaiseBufferFallbackError();
      } else {
        PyErr_Restore(__pyx_t_16, __pyx_t_17, __pyx_t_18);
      }
    }
    __pyx_bstride_0_lindexer = __pyx_bstruct_lindexer.strides[0];
    __pyx_bshape_0_lindexer = __pyx_bstruct_lindexer.shape[0];
    if (unlikely(__pyx_t_3 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2974; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  }
  __pyx_t_15 = 0;
  __pyx_v_lindexer = ((PyArrayObject *)__pyx_t_14);
  __pyx_t_14 = 0;

  /* "pandas/src/generated.pyx":2975
 * 
 *     lindexer = np.empty(count, dtype=np.int64)
 *     rindexer = np.empty(count, dtype=np.int64)             # <<<<<<<<<<<<<<
 *     result = np.empty(count, dtype=np.int32)
 * 
 */
  __pyx_t_14 = __Pyx_GetName(__pyx_m, __pyx_n_s__np); if (unlikely(!__pyx_t_14)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2975; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_14);
  __pyx_t_10 = PyObject_GetAttr(__pyx_t_14, __pyx_n_s__empty); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2975; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_10);
  __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
  __pyx_t_14 = PyInt_FromSsize_t(__pyx_v_count); if (unlikely(!__pyx_t_14)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2975; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_14);
  __pyx_t_12 = PyTuple_New(1); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2975; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_12));
  PyTuple_SET_ITEM(__pyx_t_12, 0, __pyx_t_14);
  __Pyx_GIVEREF(__pyx_t_14);
  __pyx_t_14 = 0;
  __pyx_t_14 = PyDict_New(); if (unlikely(!__pyx_t_14)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2975; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_14));
  __pyx_t_11 = __Pyx_GetName(__pyx_m, __pyx_n_s__np); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2975; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_11);
  __pyx_t_13 = PyObject_GetAttr(__pyx_t_11, __pyx_n_s__int64); if (unlikely(!__pyx_t_13)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2975; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_13);
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  if (PyDict_SetItem(__pyx_t_14, ((PyObject *)__pyx_n_s__dtype), __pyx_t_13) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2975; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
  __pyx_t_13 = PyEval_CallObjectWithKeywords(__pyx_t_10, ((PyObject *)__pyx_t_12), ((PyObject *)__pyx_t_14)); if (unlikely(!__pyx_t_13)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2975; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_13);
  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
  __Pyx_DECREF(((PyObject *)__pyx_t_12)); __pyx_t_12 = 0;
  __Pyx_DECREF(((PyObject *)__pyx_t_14)); __pyx_t_14 = 0;
  if (!(likely(((__pyx_t_13) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_13, __pyx_ptype_5numpy_ndarray))))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2975; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_t_15 = ((PyArrayObject *)__pyx_t_13);
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    __Pyx_SafeReleaseBuffer(&__pyx_bstruct_rindexer);
    __pyx_t_3 = __Pyx_GetBufferAndValidate(&__pyx_bstruct_rindexer, (PyObject*)__pyx_t_15, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack);
    if (unlikely(__pyx_t_3 < 0)) {
      PyErr_Fetch(&__pyx_t_18, &__pyx_t_17, &__pyx_t_16);
      if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_rindexer, (PyObject*)__pyx_v_rindexer, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) {
        Py_XDECREF(__pyx_t_18); Py_XDECREF(__pyx_t_17); Py_XDECREF(__pyx_t_16);
        __Pyx_RaiseBufferFallbackError();
      } else {
        PyErr_Restore(__pyx_t_18, __pyx_t_17, __pyx_t_16);
      }
    }
    __pyx_bstride_0_rindexer = __pyx_bstruct_rindexer.strides[0];
    __pyx_bshape_0_rindexer = __pyx_bstruct_rindexer.shape[0];
    if (unlikely(__pyx_t_3 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2975; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  }
  __pyx_t_15 = 0;
  __pyx_v_rindexer = ((PyArrayObject *)__pyx_t_13);
  __pyx_t_13 = 0;

  /* "pandas/src/generated.pyx":2976
 *     lindexer = np.empty(count, dtype=np.int64)
 *     rindexer = np.empty(count, dtype=np.int64)
 *     result = np.empty(count, dtype=np.int32)             # <<<<<<<<<<<<<<
 * 
 *     i = 0
 */
  __pyx_t_13 = __Pyx_GetName(__pyx_m, __pyx_n_s__np); if (unlikely(!__pyx_t_13)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2976; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_13);
  __pyx_t_14 = PyObject_GetAttr(__pyx_t_13, __pyx_n_s__empty); if (unlikely(!__pyx_t_14)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2976; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_14);
  __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
  __pyx_t_13 = PyInt_FromSsize_t(__pyx_v_count); if (unlikely(!__pyx_t_13)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2976; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_13);
  __pyx_t_12 = PyTuple_New(1); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2976; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_12));
  PyTuple_SET_ITEM(__pyx_t_12, 0, __pyx_t_13);
  __Pyx_GIVEREF(__pyx_t_13);
  __pyx_t_13 = 0;
  __pyx_t_13 = PyDict_New(); if (unlikely(!__pyx_t_13)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2976; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_13));
  __pyx_t_10 = __Pyx_GetName(__pyx_m, __pyx_n_s__np); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2976; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_10);
  __pyx_t_11 = PyObject_GetAttr(__pyx_t_10, __pyx_n_s__int32); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2976; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_11);
  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
  if (PyDict_SetItem(__pyx_t_13, ((PyObject *)__pyx_n_s__dtype), __pyx_t_11) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2976; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  __pyx_t_11 = PyEval_CallObjectWithKeywords(__pyx_t_14, ((PyObject *)__pyx_t_12), ((PyObject *)__pyx_t_13)); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2976; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_11);
  __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
  __Pyx_DECREF(((PyObject *)__pyx_t_12)); __pyx_t_12 = 0;
  __Pyx_DECREF(((PyObject *)__pyx_t_13)); __pyx_t_13 = 0;
  if (!(likely(((__pyx_t_11) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_11, __pyx_ptype_5numpy_ndarray))))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2976; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_t_19 = ((PyArrayObject *)__pyx_t_11);
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    __Pyx_SafeReleaseBuffer(&__pyx_bstruct_result);
    __pyx_t_3 = __Pyx_GetBufferAndValidate(&__pyx_bstruct_result, (PyObject*)__pyx_t_19, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int32_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack);
    if (unlikely(__pyx_t_3 < 0)) {
      PyErr_Fetch(&__pyx_t_16, &__pyx_t_17, &__pyx_t_18);
      if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_result, (PyObject*)__pyx_v_result, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int32_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) {
        Py_XDECREF(__pyx_t_16); Py_XDECREF(__pyx_t_17); Py_XDECREF(__pyx_t_18);
        __Pyx_RaiseBufferFallbackError();
      } else {
        PyErr_Restore(__pyx_t_16, __pyx_t_17, __pyx_t_18);
      }
    }
    __pyx_bstride_0_result = __pyx_bstruct_result.strides[0];
    __pyx_bshape_0_result = __pyx_bstruct_result.shape[0];
    if (unlikely(__pyx_t_3 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2976; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  }
  __pyx_t_19 = 0;
  __pyx_v_result = ((PyArrayObject *)__pyx_t_11);
  __pyx_t_11 = 0;

  /* "pandas/src/generated.pyx":2978
 *     result = np.empty(count, dtype=np.int32)
 * 
 *     i = 0             # <<<<<<<<<<<<<<
 *     j = 0
 *     count = 0
 */
  __pyx_v_i = 0;

  /* "pandas/src/generated.pyx":2979
 * 
 *     i = 0
 *     j = 0             # <<<<<<<<<<<<<<
 *     count = 0
 *     if nleft > 0:
 */
  __pyx_v_j = 0;

  /* "pandas/src/generated.pyx":2980
 *     i = 0
 *     j = 0
 *     count = 0             # <<<<<<<<<<<<<<
 *     if nleft > 0:
 *         while i < nleft:
 */
  __pyx_v_count = 0;

  /* "pandas/src/generated.pyx":2981
 *     j = 0
 *     count = 0
 *     if nleft > 0:             # <<<<<<<<<<<<<<
 *         while i < nleft:
 *             if j == nright:
 */
  __pyx_t_7 = (__pyx_v_nleft > 0);
  if (__pyx_t_7) {

    /* "pandas/src/generated.pyx":2982
 *     count = 0
 *     if nleft > 0:
 *         while i < nleft:             # <<<<<<<<<<<<<<
 *             if j == nright:
 *                 while i < nleft:
 */
    while (1) {
      __pyx_t_7 = (__pyx_v_i < __pyx_v_nleft);
      if (!__pyx_t_7) break;

      /* "pandas/src/generated.pyx":2983
 *     if nleft > 0:
 *         while i < nleft:
 *             if j == nright:             # <<<<<<<<<<<<<<
 *                 while i < nleft:
 *                     lindexer[count] = i
 */
      __pyx_t_7 = (__pyx_v_j == __pyx_v_nright);
      if (__pyx_t_7) {

        /* "pandas/src/generated.pyx":2984
 *         while i < nleft:
 *             if j == nright:
 *                 while i < nleft:             # <<<<<<<<<<<<<<
 *                     lindexer[count] = i
 *                     rindexer[count] = -1
 */
        while (1) {
          __pyx_t_7 = (__pyx_v_i < __pyx_v_nleft);
          if (!__pyx_t_7) break;

          /* "pandas/src/generated.pyx":2985
 *             if j == nright:
 *                 while i < nleft:
 *                     lindexer[count] = i             # <<<<<<<<<<<<<<
 *                     rindexer[count] = -1
 *                     result[count] = left[i]
 */
          __pyx_t_20 = __pyx_v_count;
          __pyx_t_3 = -1;
          if (__pyx_t_20 < 0) {
            __pyx_t_20 += __pyx_bshape_0_lindexer;
            if (unlikely(__pyx_t_20 < 0)) __pyx_t_3 = 0;
          } else if (unlikely(__pyx_t_20 >= __pyx_bshape_0_lindexer)) __pyx_t_3 = 0;
          if (unlikely(__pyx_t_3 != -1)) {
            __Pyx_RaiseBufferIndexError(__pyx_t_3);
            {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2985; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
          }
          *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_bstruct_lindexer.buf, __pyx_t_20, __pyx_bstride_0_lindexer) = __pyx_v_i;

          /* "pandas/src/generated.pyx":2986
 *                 while i < nleft:
 *                     lindexer[count] = i
 *                     rindexer[count] = -1             # <<<<<<<<<<<<<<
 *                     result[count] = left[i]
 *                     i += 1
 */
          __pyx_t_21 = __pyx_v_count;
          __pyx_t_3 = -1;
          if (__pyx_t_21 < 0) {
            __pyx_t_21 += __pyx_bshape_0_rindexer;
            if (unlikely(__pyx_t_21 < 0)) __pyx_t_3 = 0;
          } else if (unlikely(__pyx_t_21 >= __pyx_bshape_0_rindexer)) __pyx_t_3 = 0;
          if (unlikely(__pyx_t_3 != -1)) {
            __Pyx_RaiseBufferIndexError(__pyx_t_3);
            {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2986; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
          }
          *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_bstruct_rindexer.buf, __pyx_t_21, __pyx_bstride_0_rindexer) = -1;

          /* "pandas/src/generated.pyx":2987
 *                     lindexer[count] = i
 *                     rindexer[count] = -1
 *                     result[count] = left[i]             # <<<<<<<<<<<<<<
 *                     i += 1
 *                     count += 1
 */
          __pyx_t_22 = __pyx_v_i;
          __pyx_t_3 = -1;
          if (__pyx_t_22 < 0) {
            __pyx_t_22 += __pyx_bshape_0_left;
            if (unlikely(__pyx_t_22 < 0)) __pyx_t_3 = 0;
          } else if (unlikely(__pyx_t_22 >= __pyx_bshape_0_left)) __pyx_t_3 = 0;
          if (unlikely(__pyx_t_3 != -1)) {
            __Pyx_RaiseBufferIndexError(__pyx_t_3);
            {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2987; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
          }
          __pyx_t_23 = __pyx_v_count;
          __pyx_t_3 = -1;
          if (__pyx_t_23 < 0) {
            __pyx_t_23 += __pyx_bshape_0_result;
            if (unlikely(__pyx_t_23 < 0)) __pyx_t_3 = 0;
          } else if (unlikely(__pyx_t_23 >= __pyx_bshape_0_result)) __pyx_t_3 = 0;
          if (unlikely(__pyx_t_3 != -1)) {
            __Pyx_RaiseBufferIndexError(__pyx_t_3);
            {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2987; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
          }
          *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int32_t *, __pyx_bstruct_result.buf, __pyx_t_23, __pyx_bstride_0_result) = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int32_t *, __pyx_bstruct_left.buf, __pyx_t_22, __pyx_bstride_0_left));

          /* "pandas/src/generated.pyx":2988
 *                     rindexer[count] = -1
 *                     result[count] = left[i]
 *                     i += 1             # <<<<<<<<<<<<<<
 *                     count += 1
 *                 break
 */
          __pyx_v_i = (__pyx_v_i + 1);

          /* "pandas/src/generated.pyx":2989
 *                     result[count] = left[i]
 *                     i += 1
 *                     count += 1             # <<<<<<<<<<<<<<
 *                 break
 * 
 */
          __pyx_v_count = (__pyx_v_count + 1);
        }

        /* "pandas/src/generated.pyx":2990
 *                     i += 1
 *                     count += 1
 *                 break             # <<<<<<<<<<<<<<
 * 
 *             lval = left[i]
 */
        goto __pyx_L17_break;
        goto __pyx_L18;
      }
      __pyx_L18:;

      /* "pandas/src/generated.pyx":2992
 *                 break
 * 
 *             lval = left[i]             # <<<<<<<<<<<<<<
 *             rval = right[j]
 * 
 */
      __pyx_t_24 = __pyx_v_i;
      __pyx_t_3 = -1;
      if (__pyx_t_24 < 0) {
        __pyx_t_24 += __pyx_bshape_0_left;
        if (unlikely(__pyx_t_24 < 0)) __pyx_t_3 = 0;
      } else if (unlikely(__pyx_t_24 >= __pyx_bshape_0_left)) __pyx_t_3 = 0;
      if (unlikely(__pyx_t_3 != -1)) {
        __Pyx_RaiseBufferIndexError(__pyx_t_3);
        {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2992; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      }
      __pyx_v_lval = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int32_t *, __pyx_bstruct_left.buf, __pyx_t_24, __pyx_bstride_0_left));

      /* "pandas/src/generated.pyx":2993
 * 
 *             lval = left[i]
 *             rval = right[j]             # <<<<<<<<<<<<<<
 * 
 *             if lval == rval:
 */
      __pyx_t_25 = __pyx_v_j;
      __pyx_t_3 = -1;
      if (__pyx_t_25 < 0) {
        __pyx_t_25 += __pyx_bshape_0_right;
        if (unlikely(__pyx_t_25 < 0)) __pyx_t_3 = 0;
      } else if (unlikely(__pyx_t_25 >= __pyx_bshape_0_right)) __pyx_t_3 = 0;
      if (unlikely(__pyx_t_3 != -1)) {
        __Pyx_RaiseBufferIndexError(__pyx_t_3);
        {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2993; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      }
      __pyx_v_rval = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int32_t *, __pyx_bstruct_right.buf, __pyx_t_25, __pyx_bstride_0_right));

      /* "pandas/src/generated.pyx":2995
 *             rval = right[j]
 * 
 *             if lval == rval:             # <<<<<<<<<<<<<<
 *                 lindexer[count] = i
 *                 rindexer[count] = j
 */
      __pyx_t_7 = (__pyx_v_lval == __pyx_v_rval);
      if (__pyx_t_7) {

        /* "pandas/src/generated.pyx":2996
 * 
 *             if lval == rval:
 *                 lindexer[count] = i             # <<<<<<<<<<<<<<
 *                 rindexer[count] = j
 *                 result[count] = lval
 */
        __pyx_t_26 = __pyx_v_count;
        __pyx_t_3 = -1;
        if (__pyx_t_26 < 0) {
          __pyx_t_26 += __pyx_bshape_0_lindexer;
          if (unlikely(__pyx_t_26 < 0)) __pyx_t_3 = 0;
        } else if (unlikely(__pyx_t_26 >= __pyx_bshape_0_lindexer)) __pyx_t_3 = 0;
        if (unlikely(__pyx_t_3 != -1)) {
          __Pyx_RaiseBufferIndexError(__pyx_t_3);
          {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2996; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        }
        *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_bstruct_lindexer.buf, __pyx_t_26, __pyx_bstride_0_lindexer) = __pyx_v_i;

        /* "pandas/src/generated.pyx":2997
 *             if lval == rval:
 *                 lindexer[count] = i
 *                 rindexer[count] = j             # <<<<<<<<<<<<<<
 *                 result[count] = lval
 *                 count += 1
 */
        __pyx_t_27 = __pyx_v_count;
        __pyx_t_3 = -1;
        if (__pyx_t_27 < 0) {
          __pyx_t_27 += __pyx_bshape_0_rindexer;
          if (unlikely(__pyx_t_27 < 0)) __pyx_t_3 = 0;
        } else if (unlikely(__pyx_t_27 >= __pyx_bshape_0_rindexer)) __pyx_t_3 = 0;
        if (unlikely(__pyx_t_3 != -1)) {
          __Pyx_RaiseBufferIndexError(__pyx_t_3);
          {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2997; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        }
        *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_bstruct_rindexer.buf, __pyx_t_27, __pyx_bstride_0_rindexer) = __pyx_v_j;

        /* "pandas/src/generated.pyx":2998
 *                 lindexer[count] = i
 *                 rindexer[count] = j
 *                 result[count] = lval             # <<<<<<<<<<<<<<
 *                 count += 1
 *                 if i < nleft - 1:
 */
        __pyx_t_28 = __pyx_v_count;
        __pyx_t_3 = -1;
        if (__pyx_t_28 < 0) {
          __pyx_t_28 += __pyx_bshape_0_result;
          if (unlikely(__pyx_t_28 < 0)) __pyx_t_3 = 0;
        } else if (unlikely(__pyx_t_28 >= __pyx_bshape_0_result)) __pyx_t_3 = 0;
        if (unlikely(__pyx_t_3 != -1)) {
          __Pyx_RaiseBufferIndexError(__pyx_t_3);
          {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2998; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        }
        *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int32_t *, __pyx_bstruct_result.buf, __pyx_t_28, __pyx_bstride_0_result) = __pyx_v_lval;

        /* "pandas/src/generated.pyx":2999
 *                 rindexer[count] = j
 *                 result[count] = lval
 *                 count += 1             # <<<<<<<<<<<<<<
 *                 if i < nleft - 1:
 *                     if j < nright - 1 and right[j + 1] == rval:
 */
        __pyx_v_count = (__pyx_v_count + 1);

        /* "pandas/src/generated.pyx":3000
 *                 result[count] = lval
 *                 count += 1
 *                 if i < nleft - 1:             # <<<<<<<<<<<<<<
 *                     if j < nright - 1 and right[j + 1] == rval:
 *                         j += 1
 */
        __pyx_t_7 = (__pyx_v_i < (__pyx_v_nleft - 1));
        if (__pyx_t_7) {

          /* "pandas/src/generated.pyx":3001
 *                 count += 1
 *                 if i < nleft - 1:
 *                     if j < nright - 1 and right[j + 1] == rval:             # <<<<<<<<<<<<<<
 *                         j += 1
 *                     else:
 */
          __pyx_t_7 = (__pyx_v_j < (__pyx_v_nright - 1));
          if (__pyx_t_7) {
            __pyx_t_29 = (__pyx_v_j + 1);
            __pyx_t_3 = -1;
            if (__pyx_t_29 < 0) {
              __pyx_t_29 += __pyx_bshape_0_right;
              if (unlikely(__pyx_t_29 < 0)) __pyx_t_3 = 0;
            } else if (unlikely(__pyx_t_29 >= __pyx_bshape_0_right)) __pyx_t_3 = 0;
            if (unlikely(__pyx_t_3 != -1)) {
              __Pyx_RaiseBufferIndexError(__pyx_t_3);
              {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3001; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
            }
            __pyx_t_2 = ((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int32_t *, __pyx_bstruct_right.buf, __pyx_t_29, __pyx_bstride_0_right)) == __pyx_v_rval);
            __pyx_t_6 = __pyx_t_2;
          } else {
            __pyx_t_6 = __pyx_t_7;
          }
          if (__pyx_t_6) {

            /* "pandas/src/generated.pyx":3002
 *                 if i < nleft - 1:
 *                     if j < nright - 1 and right[j + 1] == rval:
 *                         j += 1             # <<<<<<<<<<<<<<
 *                     else:
 *                         i += 1
 */
            __pyx_v_j = (__pyx_v_j + 1);
            goto __pyx_L23;
          }
          /*else*/ {

            /* "pandas/src/generated.pyx":3004
 *                         j += 1
 *                     else:
 *                         i += 1             # <<<<<<<<<<<<<<
 *                         if left[i] != rval:
 *                             j += 1
 */
            __pyx_v_i = (__pyx_v_i + 1);

            /* "pandas/src/generated.pyx":3005
 *                     else:
 *                         i += 1
 *                         if left[i] != rval:             # <<<<<<<<<<<<<<
 *                             j += 1
 *                 elif j < nright - 1:
 */
            __pyx_t_30 = __pyx_v_i;
            __pyx_t_3 = -1;
            if (__pyx_t_30 < 0) {
              __pyx_t_30 += __pyx_bshape_0_left;
              if (unlikely(__pyx_t_30 < 0)) __pyx_t_3 = 0;
            } else if (unlikely(__pyx_t_30 >= __pyx_bshape_0_left)) __pyx_t_3 = 0;
            if (unlikely(__pyx_t_3 != -1)) {
              __Pyx_RaiseBufferIndexError(__pyx_t_3);
              {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3005; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
            }
            __pyx_t_6 = ((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int32_t *, __pyx_bstruct_left.buf, __pyx_t_30, __pyx_bstride_0_left)) != __pyx_v_rval);
            if (__pyx_t_6) {

              /* "pandas/src/generated.pyx":3006
 *                         i += 1
 *                         if left[i] != rval:
 *                             j += 1             # <<<<<<<<<<<<<<
 *                 elif j < nright - 1:
 *                     j += 1
 */
              __pyx_v_j = (__pyx_v_j + 1);
              goto __pyx_L24;
            }
            __pyx_L24:;
          }
          __pyx_L23:;
          goto __pyx_L22;
        }

        /* "pandas/src/generated.pyx":3007
 *                         if left[i] != rval:
 *                             j += 1
 *                 elif j < nright - 1:             # <<<<<<<<<<<<<<
 *                     j += 1
 *                     if lval != right[j]:
 */
        __pyx_t_6 = (__pyx_v_j < (__pyx_v_nright - 1));
        if (__pyx_t_6) {

          /* "pandas/src/generated.pyx":3008
 *                             j += 1
 *                 elif j < nright - 1:
 *                     j += 1             # <<<<<<<<<<<<<<
 *                     if lval != right[j]:
 *                         i += 1
 */
          __pyx_v_j = (__pyx_v_j + 1);

          /* "pandas/src/generated.pyx":3009
 *                 elif j < nright - 1:
 *                     j += 1
 *                     if lval != right[j]:             # <<<<<<<<<<<<<<
 *                         i += 1
 *                 else:
 */
          __pyx_t_31 = __pyx_v_j;
          __pyx_t_3 = -1;
          if (__pyx_t_31 < 0) {
            __pyx_t_31 += __pyx_bshape_0_right;
            if (unlikely(__pyx_t_31 < 0)) __pyx_t_3 = 0;
          } else if (unlikely(__pyx_t_31 >= __pyx_bshape_0_right)) __pyx_t_3 = 0;
          if (unlikely(__pyx_t_3 != -1)) {
            __Pyx_RaiseBufferIndexError(__pyx_t_3);
            {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3009; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
          }
          __pyx_t_6 = (__pyx_v_lval != (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int32_t *, __pyx_bstruct_right.buf, __pyx_t_31, __pyx_bstride_0_right)));
          if (__pyx_t_6) {

            /* "pandas/src/generated.pyx":3010
 *                     j += 1
 *                     if lval != right[j]:
 *                         i += 1             # <<<<<<<<<<<<<<
 *                 else:
 *                     # end of the road
 */
            __pyx_v_i = (__pyx_v_i + 1);
            goto __pyx_L25;
          }
          __pyx_L25:;
          goto __pyx_L22;
        }
        /*else*/ {

          /* "pandas/src/generated.pyx":3013
 *                 else:
 *                     # end of the road
 *                     break             # <<<<<<<<<<<<<<
 *             elif lval < rval:
 *                 lindexer[count] = i
 */
          goto __pyx_L17_break;
        }
        __pyx_L22:;
        goto __pyx_L21;
      }

      /* "pandas/src/generated.pyx":3014
 *                     # end of the road
 *                     break
 *             elif lval < rval:             # <<<<<<<<<<<<<<
 *                 lindexer[count] = i
 *                 rindexer[count] = -1
 */
      __pyx_t_6 = (__pyx_v_lval < __pyx_v_rval);
      if (__pyx_t_6) {

        /* "pandas/src/generated.pyx":3015
 *                     break
 *             elif lval < rval:
 *                 lindexer[count] = i             # <<<<<<<<<<<<<<
 *                 rindexer[count] = -1
 *                 result[count] = left[i]
 */
        __pyx_t_32 = __pyx_v_count;
        __pyx_t_3 = -1;
        if (__pyx_t_32 < 0) {
          __pyx_t_32 += __pyx_bshape_0_lindexer;
          if (unlikely(__pyx_t_32 < 0)) __pyx_t_3 = 0;
        } else if (unlikely(__pyx_t_32 >= __pyx_bshape_0_lindexer)) __pyx_t_3 = 0;
        if (unlikely(__pyx_t_3 != -1)) {
          __Pyx_RaiseBufferIndexError(__pyx_t_3);
          {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3015; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        }
        *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_bstruct_lindexer.buf, __pyx_t_32, __pyx_bstride_0_lindexer) = __pyx_v_i;

        /* "pandas/src/generated.pyx":3016
 *             elif lval < rval:
 *                 lindexer[count] = i
 *                 rindexer[count] = -1             # <<<<<<<<<<<<<<
 *                 result[count] = left[i]
 *                 count += 1
 */
        __pyx_t_33 = __pyx_v_count;
        __pyx_t_3 = -1;
        if (__pyx_t_33 < 0) {
          __pyx_t_33 += __pyx_bshape_0_rindexer;
          if (unlikely(__pyx_t_33 < 0)) __pyx_t_3 = 0;
        } else if (unlikely(__pyx_t_33 >= __pyx_bshape_0_rindexer)) __pyx_t_3 = 0;
        if (unlikely(__pyx_t_3 != -1)) {
          __Pyx_RaiseBufferIndexError(__pyx_t_3);
          {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3016; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        }
        *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_bstruct_rindexer.buf, __pyx_t_33, __pyx_bstride_0_rindexer) = -1;

        /* "pandas/src/generated.pyx":3017
 *                 lindexer[count] = i
 *                 rindexer[count] = -1
 *                 result[count] = left[i]             # <<<<<<<<<<<<<<
 *                 count += 1
 *                 i += 1
 */
        __pyx_t_34 = __pyx_v_i;
        __pyx_t_3 = -1;
        if (__pyx_t_34 < 0) {
          __pyx_t_34 += __pyx_bshape_0_left;
          if (unlikely(__pyx_t_34 < 0)) __pyx_t_3 = 0;
        } else if (unlikely(__pyx_t_34 >= __pyx_bshape_0_left)) __pyx_t_3 = 0;
        if (unlikely(__pyx_t_3 != -1)) {
          __Pyx_RaiseBufferIndexError(__pyx_t_3);
          {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3017; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        }
        __pyx_t_35 = __pyx_v_count;
        __pyx_t_3 = -1;
        if (__pyx_t_35 < 0) {
          __pyx_t_35 += __pyx_bshape_0_result;
          if (unlikely(__pyx_t_35 < 0)) __pyx_t_3 = 0;
        } else if (unlikely(__pyx_t_35 >= __pyx_bshape_0_result)) __pyx_t_3 = 0;
        if (unlikely(__pyx_t_3 != -1)) {
          __Pyx_RaiseBufferIndexError(__pyx_t_3);
          {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3017; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        }
        *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int32_t *, __pyx_bstruct_result.buf, __pyx_t_35, __pyx_bstride_0_result) = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int32_t *, __pyx_bstruct_left.buf, __pyx_t_34, __pyx_bstride_0_left));

        /* "pandas/src/generated.pyx":3018
 *                 rindexer[count] = -1
 *                 result[count] = left[i]
 *                 count += 1             # <<<<<<<<<<<<<<
 *                 i += 1
 *             else:
 */
        __pyx_v_count = (__pyx_v_count + 1);

        /* "pandas/src/generated.pyx":3019
 *                 result[count] = left[i]
 *                 count += 1
 *                 i += 1             # <<<<<<<<<<<<<<
 *             else:
 *                 j += 1
 */
        __pyx_v_i = (__pyx_v_i + 1);
        goto __pyx_L21;
      }
      /*else*/ {

        /* "pandas/src/generated.pyx":3021
 *                 i += 1
 *             else:
 *                 j += 1             # <<<<<<<<<<<<<<
 * 
 *     return result, lindexer, rindexer
 */
        __pyx_v_j = (__pyx_v_j + 1);
      }
      __pyx_L21:;
    }
    __pyx_L17_break:;
    goto __pyx_L15;
  }
  __pyx_L15:;

  /* "pandas/src/generated.pyx":3023
 *                 j += 1
 * 
 *     return result, lindexer, rindexer             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_11 = PyTuple_New(3); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3023; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_11));
  __Pyx_INCREF(((PyObject *)__pyx_v_result));
  PyTuple_SET_ITEM(__pyx_t_11, 0, ((PyObject *)__pyx_v_result));
  __Pyx_GIVEREF(((PyObject *)__pyx_v_result));
  __Pyx_INCREF(((PyObject *)__pyx_v_lindexer));
  PyTuple_SET_ITEM(__pyx_t_11, 1, ((PyObject *)__pyx_v_lindexer));
  __Pyx_GIVEREF(((PyObject *)__pyx_v_lindexer));
  __Pyx_INCREF(((PyObject *)__pyx_v_rindexer));
  PyTuple_SET_ITEM(__pyx_t_11, 2, ((PyObject *)__pyx_v_rindexer));
  __Pyx_GIVEREF(((PyObject *)__pyx_v_rindexer));
  __pyx_r = ((PyObject *)__pyx_t_11);
  __pyx_t_11 = 0;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_10);
  __Pyx_XDECREF(__pyx_t_11);
  __Pyx_XDECREF(__pyx_t_12);
  __Pyx_XDECREF(__pyx_t_13);
  __Pyx_XDECREF(__pyx_t_14);
  { PyObject *__pyx_type, *__pyx_value, *__pyx_tb;
    __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);
    __Pyx_SafeReleaseBuffer(&__pyx_bstruct_result);
    __Pyx_SafeReleaseBuffer(&__pyx_bstruct_right);
    __Pyx_SafeReleaseBuffer(&__pyx_bstruct_lindexer);
    __Pyx_SafeReleaseBuffer(&__pyx_bstruct_rindexer);
    __Pyx_SafeReleaseBuffer(&__pyx_bstruct_left);
  __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);}
  __Pyx_AddTraceback("pandas._algos.left_join_indexer_int32", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  goto __pyx_L2;
  __pyx_L0:;
  __Pyx_SafeReleaseBuffer(&__pyx_bstruct_result);
  __Pyx_SafeReleaseBuffer(&__pyx_bstruct_right);
  __Pyx_SafeReleaseBuffer(&__pyx_bstruct_lindexer);
  __Pyx_SafeReleaseBuffer(&__pyx_bstruct_rindexer);
  __Pyx_SafeReleaseBuffer(&__pyx_bstruct_left);
  __pyx_L2:;
  __Pyx_XDECREF((PyObject *)__pyx_v_lindexer);
  __Pyx_XDECREF((PyObject *)__pyx_v_rindexer);
  __Pyx_XDECREF((PyObject *)__pyx_v_result);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "pandas/src/generated.pyx":3026
 * 
 * 
 * def left_join_indexer_int64(ndarray[int64_t] left,             # <<<<<<<<<<<<<<
 *                               ndarray[int64_t] right):
 *     '''
 */

static PyObject *__pyx_pf_6pandas_6_algos_82left_join_indexer_int64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6pandas_6_algos_82left_join_indexer_int64[] = "\n    Two-pass algorithm for monotonic indexes. Handles many-to-one merges\n    ";
static PyMethodDef __pyx_mdef_6pandas_6_algos_82left_join_indexer_int64 = {__Pyx_NAMESTR("left_join_indexer_int64"), (PyCFunction)__pyx_pf_6pandas_6_algos_82left_join_indexer_int64, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6pandas_6_algos_82left_join_indexer_int64)};
static PyObject *__pyx_pf_6pandas_6_algos_82left_join_indexer_int64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyArrayObject *__pyx_v_left = 0;
  PyArrayObject *__pyx_v_right = 0;
  Py_ssize_t __pyx_v_i;
  Py_ssize_t __pyx_v_j;
  Py_ssize_t __pyx_v_nright;
  Py_ssize_t __pyx_v_nleft;
  Py_ssize_t __pyx_v_count;
  __pyx_t_5numpy_int64_t __pyx_v_lval;
  __pyx_t_5numpy_int64_t __pyx_v_rval;
  PyArrayObject *__pyx_v_lindexer = 0;
  PyArrayObject *__pyx_v_rindexer = 0;
  PyArrayObject *__pyx_v_result = 0;
  Py_buffer __pyx_bstruct_result;
  Py_ssize_t __pyx_bstride_0_result = 0;
  Py_ssize_t __pyx_bshape_0_result = 0;
  Py_buffer __pyx_bstruct_right;
  Py_ssize_t __pyx_bstride_0_right = 0;
  Py_ssize_t __pyx_bshape_0_right = 0;
  Py_buffer __pyx_bstruct_lindexer;
  Py_ssize_t __pyx_bstride_0_lindexer = 0;
  Py_ssize_t __pyx_bshape_0_lindexer = 0;
  Py_buffer __pyx_bstruct_rindexer;
  Py_ssize_t __pyx_bstride_0_rindexer = 0;
  Py_ssize_t __pyx_bshape_0_rindexer = 0;
  Py_buffer __pyx_bstruct_left;
  Py_ssize_t __pyx_bstride_0_left = 0;
  Py_ssize_t __pyx_bshape_0_left = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  Py_ssize_t __pyx_t_1;
  int __pyx_t_2;
  int __pyx_t_3;
  Py_ssize_t __pyx_t_4;
  Py_ssize_t __pyx_t_5;
  int __pyx_t_6;
  int __pyx_t_7;
  Py_ssize_t __pyx_t_8;
  Py_ssize_t __pyx_t_9;
  PyObject *__pyx_t_10 = NULL;
  PyObject *__pyx_t_11 = NULL;
  PyObject *__pyx_t_12 = NULL;
  PyObject *__pyx_t_13 = NULL;
  PyObject *__pyx_t_14 = NULL;
  PyArrayObject *__pyx_t_15 = NULL;
  PyObject *__pyx_t_16 = NULL;
  PyObject *__pyx_t_17 = NULL;
  PyObject *__pyx_t_18 = NULL;
  PyArrayObject *__pyx_t_19 = NULL;
  Py_ssize_t __pyx_t_20;
  Py_ssize_t __pyx_t_21;
  Py_ssize_t __pyx_t_22;
  Py_ssize_t __pyx_t_23;
  Py_ssize_t __pyx_t_24;
  Py_ssize_t __pyx_t_25;
  Py_ssize_t __pyx_t_26;
  Py_ssize_t __pyx_t_27;
  Py_ssize_t __pyx_t_28;
  Py_ssize_t __pyx_t_29;
  Py_ssize_t __pyx_t_30;
  Py_ssize_t __pyx_t_31;
  Py_ssize_t __pyx_t_32;
  Py_ssize_t __pyx_t_33;
  Py_ssize_t __pyx_t_34;
  Py_ssize_t __pyx_t_35;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__left,&__pyx_n_s__right,0};
  __Pyx_RefNannySetupContext("left_join_indexer_int64");
  __pyx_self = __pyx_self;
  {
    PyObject* values[2] = {0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  0:
        values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__left);
        if (likely(values[0])) kw_args--;
        else goto __pyx_L5_argtuple_error;
        case  1:
        values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__right);
        if (likely(values[1])) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("left_join_indexer_int64", 1, 2, 2, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3026; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "left_join_indexer_int64") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3026; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
    }
    __pyx_v_left = ((PyArrayObject *)values[0]);
    __pyx_v_right = ((PyArrayObject *)values[1]);
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("left_join_indexer_int64", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3026; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("pandas._algos.left_join_indexer_int64", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_bstruct_lindexer.buf = NULL;
  __pyx_bstruct_rindexer.buf = NULL;
  __pyx_bstruct_result.buf = NULL;
  __pyx_bstruct_left.buf = NULL;
  __pyx_bstruct_right.buf = NULL;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_left), __pyx_ptype_5numpy_ndarray, 1, "left", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3026; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_right), __pyx_ptype_5numpy_ndarray, 1, "right", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3027; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_left, (PyObject*)__pyx_v_left, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3026; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  }
  __pyx_bstride_0_left = __pyx_bstruct_left.strides[0];
  __pyx_bshape_0_left = __pyx_bstruct_left.shape[0];
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_right, (PyObject*)__pyx_v_right, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3026; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  }
  __pyx_bstride_0_right = __pyx_bstruct_right.strides[0];
  __pyx_bshape_0_right = __pyx_bstruct_right.shape[0];

  /* "pandas/src/generated.pyx":3037
 *         ndarray[int64_t] result
 * 
 *     nleft = len(left)             # <<<<<<<<<<<<<<
 *     nright = len(right)
 * 
 */
  __pyx_t_1 = PyObject_Length(((PyObject *)__pyx_v_left)); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3037; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_v_nleft = __pyx_t_1;

  /* "pandas/src/generated.pyx":3038
 * 
 *     nleft = len(left)
 *     nright = len(right)             # <<<<<<<<<<<<<<
 * 
 *     i = 0
 */
  __pyx_t_1 = PyObject_Length(((PyObject *)__pyx_v_right)); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3038; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_v_nright = __pyx_t_1;

  /* "pandas/src/generated.pyx":3040
 *     nright = len(right)
 * 
 *     i = 0             # <<<<<<<<<<<<<<
 *     j = 0
 *     count = 0
 */
  __pyx_v_i = 0;

  /* "pandas/src/generated.pyx":3041
 * 
 *     i = 0
 *     j = 0             # <<<<<<<<<<<<<<
 *     count = 0
 *     if nleft > 0:
 */
  __pyx_v_j = 0;

  /* "pandas/src/generated.pyx":3042
 *     i = 0
 *     j = 0
 *     count = 0             # <<<<<<<<<<<<<<
 *     if nleft > 0:
 *         while i < nleft:
 */
  __pyx_v_count = 0;

  /* "pandas/src/generated.pyx":3043
 *     j = 0
 *     count = 0
 *     if nleft > 0:             # <<<<<<<<<<<<<<
 *         while i < nleft:
 *             if j == nright:
 */
  __pyx_t_2 = (__pyx_v_nleft > 0);
  if (__pyx_t_2) {

    /* "pandas/src/generated.pyx":3044
 *     count = 0
 *     if nleft > 0:
 *         while i < nleft:             # <<<<<<<<<<<<<<
 *             if j == nright:
 *                 count += nleft - i
 */
    while (1) {
      __pyx_t_2 = (__pyx_v_i < __pyx_v_nleft);
      if (!__pyx_t_2) break;

      /* "pandas/src/generated.pyx":3045
 *     if nleft > 0:
 *         while i < nleft:
 *             if j == nright:             # <<<<<<<<<<<<<<
 *                 count += nleft - i
 *                 break
 */
      __pyx_t_2 = (__pyx_v_j == __pyx_v_nright);
      if (__pyx_t_2) {

        /* "pandas/src/generated.pyx":3046
 *         while i < nleft:
 *             if j == nright:
 *                 count += nleft - i             # <<<<<<<<<<<<<<
 *                 break
 * 
 */
        __pyx_v_count = (__pyx_v_count + (__pyx_v_nleft - __pyx_v_i));

        /* "pandas/src/generated.pyx":3047
 *             if j == nright:
 *                 count += nleft - i
 *                 break             # <<<<<<<<<<<<<<
 * 
 *             lval = left[i]
 */
        goto __pyx_L8_break;
        goto __pyx_L9;
      }
      __pyx_L9:;

      /* "pandas/src/generated.pyx":3049
 *                 break
 * 
 *             lval = left[i]             # <<<<<<<<<<<<<<
 *             rval = right[j]
 * 
 */
      __pyx_t_1 = __pyx_v_i;
      __pyx_t_3 = -1;
      if (__pyx_t_1 < 0) {
        __pyx_t_1 += __pyx_bshape_0_left;
        if (unlikely(__pyx_t_1 < 0)) __pyx_t_3 = 0;
      } else if (unlikely(__pyx_t_1 >= __pyx_bshape_0_left)) __pyx_t_3 = 0;
      if (unlikely(__pyx_t_3 != -1)) {
        __Pyx_RaiseBufferIndexError(__pyx_t_3);
        {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3049; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      }
      __pyx_v_lval = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_bstruct_left.buf, __pyx_t_1, __pyx_bstride_0_left));

      /* "pandas/src/generated.pyx":3050
 * 
 *             lval = left[i]
 *             rval = right[j]             # <<<<<<<<<<<<<<
 * 
 *             if lval == rval:
 */
      __pyx_t_4 = __pyx_v_j;
      __pyx_t_3 = -1;
      if (__pyx_t_4 < 0) {
        __pyx_t_4 += __pyx_bshape_0_right;
        if (unlikely(__pyx_t_4 < 0)) __pyx_t_3 = 0;
      } else if (unlikely(__pyx_t_4 >= __pyx_bshape_0_right)) __pyx_t_3 = 0;
      if (unlikely(__pyx_t_3 != -1)) {
        __Pyx_RaiseBufferIndexError(__pyx_t_3);
        {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3050; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      }
      __pyx_v_rval = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_bstruct_right.buf, __pyx_t_4, __pyx_bstride_0_right));

      /* "pandas/src/generated.pyx":3052
 *             rval = right[j]
 * 
 *             if lval == rval:             # <<<<<<<<<<<<<<
 *                 count += 1
 *                 if i < nleft - 1:
 */
      __pyx_t_2 = (__pyx_v_lval == __pyx_v_rval);
      if (__pyx_t_2) {

        /* "pandas/src/generated.pyx":3053
 * 
 *             if lval == rval:
 *                 count += 1             # <<<<<<<<<<<<<<
 *                 if i < nleft - 1:
 *                     if j < nright - 1 and right[j + 1] == rval:
 */
        __pyx_v_count = (__pyx_v_count + 1);

        /* "pandas/src/generated.pyx":3054
 *             if lval == rval:
 *                 count += 1
 *                 if i < nleft - 1:             # <<<<<<<<<<<<<<
 *                     if j < nright - 1 and right[j + 1] == rval:
 *                         j += 1
 */
        __pyx_t_2 = (__pyx_v_i < (__pyx_v_nleft - 1));
        if (__pyx_t_2) {

          /* "pandas/src/generated.pyx":3055
 *                 count += 1
 *                 if i < nleft - 1:
 *                     if j < nright - 1 and right[j + 1] == rval:             # <<<<<<<<<<<<<<
 *                         j += 1
 *                     else:
 */
          __pyx_t_2 = (__pyx_v_j < (__pyx_v_nright - 1));
          if (__pyx_t_2) {
            __pyx_t_5 = (__pyx_v_j + 1);
            __pyx_t_3 = -1;
            if (__pyx_t_5 < 0) {
              __pyx_t_5 += __pyx_bshape_0_right;
              if (unlikely(__pyx_t_5 < 0)) __pyx_t_3 = 0;
            } else if (unlikely(__pyx_t_5 >= __pyx_bshape_0_right)) __pyx_t_3 = 0;
            if (unlikely(__pyx_t_3 != -1)) {
              __Pyx_RaiseBufferIndexError(__pyx_t_3);
              {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3055; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
            }
            __pyx_t_6 = ((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_bstruct_right.buf, __pyx_t_5, __pyx_bstride_0_right)) == __pyx_v_rval);
            __pyx_t_7 = __pyx_t_6;
          } else {
            __pyx_t_7 = __pyx_t_2;
          }
          if (__pyx_t_7) {

            /* "pandas/src/generated.pyx":3056
 *                 if i < nleft - 1:
 *                     if j < nright - 1 and right[j + 1] == rval:
 *                         j += 1             # <<<<<<<<<<<<<<
 *                     else:
 *                         i += 1
 */
            __pyx_v_j = (__pyx_v_j + 1);
            goto __pyx_L12;
          }
          /*else*/ {

            /* "pandas/src/generated.pyx":3058
 *                         j += 1
 *                     else:
 *                         i += 1             # <<<<<<<<<<<<<<
 *                         if left[i] != rval:
 *                             j += 1
 */
            __pyx_v_i = (__pyx_v_i + 1);

            /* "pandas/src/generated.pyx":3059
 *                     else:
 *                         i += 1
 *                         if left[i] != rval:             # <<<<<<<<<<<<<<
 *                             j += 1
 *                 elif j < nright - 1:
 */
            __pyx_t_8 = __pyx_v_i;
            __pyx_t_3 = -1;
            if (__pyx_t_8 < 0) {
              __pyx_t_8 += __pyx_bshape_0_left;
              if (unlikely(__pyx_t_8 < 0)) __pyx_t_3 = 0;
            } else if (unlikely(__pyx_t_8 >= __pyx_bshape_0_left)) __pyx_t_3 = 0;
            if (unlikely(__pyx_t_3 != -1)) {
              __Pyx_RaiseBufferIndexError(__pyx_t_3);
              {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3059; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
            }
            __pyx_t_7 = ((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_bstruct_left.buf, __pyx_t_8, __pyx_bstride_0_left)) != __pyx_v_rval);
            if (__pyx_t_7) {

              /* "pandas/src/generated.pyx":3060
 *                         i += 1
 *                         if left[i] != rval:
 *                             j += 1             # <<<<<<<<<<<<<<
 *                 elif j < nright - 1:
 *                     j += 1
 */
              __pyx_v_j = (__pyx_v_j + 1);
              goto __pyx_L13;
            }
            __pyx_L13:;
          }
          __pyx_L12:;
          goto __pyx_L11;
        }

        /* "pandas/src/generated.pyx":3061
 *                         if left[i] != rval:
 *                             j += 1
 *                 elif j < nright - 1:             # <<<<<<<<<<<<<<
 *                     j += 1
 *                     if lval != right[j]:
 */
        __pyx_t_7 = (__pyx_v_j < (__pyx_v_nright - 1));
        if (__pyx_t_7) {

          /* "pandas/src/generated.pyx":3062
 *                             j += 1
 *                 elif j < nright - 1:
 *                     j += 1             # <<<<<<<<<<<<<<
 *                     if lval != right[j]:
 *                         i += 1
 */
          __pyx_v_j = (__pyx_v_j + 1);

          /* "pandas/src/generated.pyx":3063
 *                 elif j < nright - 1:
 *                     j += 1
 *                     if lval != right[j]:             # <<<<<<<<<<<<<<
 *                         i += 1
 *                 else:
 */
          __pyx_t_9 = __pyx_v_j;
          __pyx_t_3 = -1;
          if (__pyx_t_9 < 0) {
            __pyx_t_9 += __pyx_bshape_0_right;
            if (unlikely(__pyx_t_9 < 0)) __pyx_t_3 = 0;
          } else if (unlikely(__pyx_t_9 >= __pyx_bshape_0_right)) __pyx_t_3 = 0;
          if (unlikely(__pyx_t_3 != -1)) {
            __Pyx_RaiseBufferIndexError(__pyx_t_3);
            {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3063; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
          }
          __pyx_t_7 = (__pyx_v_lval != (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_bstruct_right.buf, __pyx_t_9, __pyx_bstride_0_right)));
          if (__pyx_t_7) {

            /* "pandas/src/generated.pyx":3064
 *                     j += 1
 *                     if lval != right[j]:
 *                         i += 1             # <<<<<<<<<<<<<<
 *                 else:
 *                     # end of the road
 */
            __pyx_v_i = (__pyx_v_i + 1);
            goto __pyx_L14;
          }
          __pyx_L14:;
          goto __pyx_L11;
        }
        /*else*/ {

          /* "pandas/src/generated.pyx":3067
 *                 else:
 *                     # end of the road
 *                     break             # <<<<<<<<<<<<<<
 *             elif lval < rval:
 *                 count += 1
 */
          goto __pyx_L8_break;
        }
        __pyx_L11:;
        goto __pyx_L10;
      }

      /* "pandas/src/generated.pyx":3068
 *                     # end of the road
 *                     break
 *             elif lval < rval:             # <<<<<<<<<<<<<<
 *                 count += 1
 *                 i += 1
 */
      __pyx_t_7 = (__pyx_v_lval < __pyx_v_rval);
      if (__pyx_t_7) {

        /* "pandas/src/generated.pyx":3069
 *                     break
 *             elif lval < rval:
 *                 count += 1             # <<<<<<<<<<<<<<
 *                 i += 1
 *             else:
 */
        __pyx_v_count = (__pyx_v_count + 1);

        /* "pandas/src/generated.pyx":3070
 *             elif lval < rval:
 *                 count += 1
 *                 i += 1             # <<<<<<<<<<<<<<
 *             else:
 *                 j += 1
 */
        __pyx_v_i = (__pyx_v_i + 1);
        goto __pyx_L10;
      }
      /*else*/ {

        /* "pandas/src/generated.pyx":3072
 *                 i += 1
 *             else:
 *                 j += 1             # <<<<<<<<<<<<<<
 * 
 *     # do it again now that result size is known
 */
        __pyx_v_j = (__pyx_v_j + 1);
      }
      __pyx_L10:;
    }
    __pyx_L8_break:;
    goto __pyx_L6;
  }
  __pyx_L6:;

  /* "pandas/src/generated.pyx":3076
 *     # do it again now that result size is known
 * 
 *     lindexer = np.empty(count, dtype=np.int64)             # <<<<<<<<<<<<<<
 *     rindexer = np.empty(count, dtype=np.int64)
 *     result = np.empty(count, dtype=np.int64)
 */
  __pyx_t_10 = __Pyx_GetName(__pyx_m, __pyx_n_s__np); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3076; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_10);
  __pyx_t_11 = PyObject_GetAttr(__pyx_t_10, __pyx_n_s__empty); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3076; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_11);
  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
  __pyx_t_10 = PyInt_FromSsize_t(__pyx_v_count); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3076; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_10);
  __pyx_t_12 = PyTuple_New(1); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3076; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_12));
  PyTuple_SET_ITEM(__pyx_t_12, 0, __pyx_t_10);
  __Pyx_GIVEREF(__pyx_t_10);
  __pyx_t_10 = 0;
  __pyx_t_10 = PyDict_New(); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3076; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_10));
  __pyx_t_13 = __Pyx_GetName(__pyx_m, __pyx_n_s__np); if (unlikely(!__pyx_t_13)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3076; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_13);
  __pyx_t_14 = PyObject_GetAttr(__pyx_t_13, __pyx_n_s__int64); if (unlikely(!__pyx_t_14)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3076; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_14);
  __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
  if (PyDict_SetItem(__pyx_t_10, ((PyObject *)__pyx_n_s__dtype), __pyx_t_14) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3076; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
  __pyx_t_14 = PyEval_CallObjectWithKeywords(__pyx_t_11, ((PyObject *)__pyx_t_12), ((PyObject *)__pyx_t_10)); if (unlikely(!__pyx_t_14)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3076; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_14);
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  __Pyx_DECREF(((PyObject *)__pyx_t_12)); __pyx_t_12 = 0;
  __Pyx_DECREF(((PyObject *)__pyx_t_10)); __pyx_t_10 = 0;
  if (!(likely(((__pyx_t_14) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_14, __pyx_ptype_5numpy_ndarray))))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3076; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_t_15 = ((PyArrayObject *)__pyx_t_14);
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    __Pyx_SafeReleaseBuffer(&__pyx_bstruct_lindexer);
    __pyx_t_3 = __Pyx_GetBufferAndValidate(&__pyx_bstruct_lindexer, (PyObject*)__pyx_t_15, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack);
    if (unlikely(__pyx_t_3 < 0)) {
      PyErr_Fetch(&__pyx_t_16, &__pyx_t_17, &__pyx_t_18);
      if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_lindexer, (PyObject*)__pyx_v_lindexer, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) {
        Py_XDECREF(__pyx_t_16); Py_XDECREF(__pyx_t_17); Py_XDECREF(__pyx_t_18);
        __Pyx_RaiseBufferFallbackError();
      } else {
        PyErr_Restore(__pyx_t_16, __pyx_t_17, __pyx_t_18);
      }
    }
    __pyx_bstride_0_lindexer = __pyx_bstruct_lindexer.strides[0];
    __pyx_bshape_0_lindexer = __pyx_bstruct_lindexer.shape[0];
    if (unlikely(__pyx_t_3 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3076; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  }
  __pyx_t_15 = 0;
  __pyx_v_lindexer = ((PyArrayObject *)__pyx_t_14);
  __pyx_t_14 = 0;

  /* "pandas/src/generated.pyx":3077
 * 
 *     lindexer = np.empty(count, dtype=np.int64)
 *     rindexer = np.empty(count, dtype=np.int64)             # <<<<<<<<<<<<<<
 *     result = np.empty(count, dtype=np.int64)
 * 
 */
  __pyx_t_14 = __Pyx_GetName(__pyx_m, __pyx_n_s__np); if (unlikely(!__pyx_t_14)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3077; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_14);
  __pyx_t_10 = PyObject_GetAttr(__pyx_t_14, __pyx_n_s__empty); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3077; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_10);
  __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
  __pyx_t_14 = PyInt_FromSsize_t(__pyx_v_count); if (unlikely(!__pyx_t_14)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3077; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_14);
  __pyx_t_12 = PyTuple_New(1); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3077; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_12));
  PyTuple_SET_ITEM(__pyx_t_12, 0, __pyx_t_14);
  __Pyx_GIVEREF(__pyx_t_14);
  __pyx_t_14 = 0;
  __pyx_t_14 = PyDict_New(); if (unlikely(!__pyx_t_14)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3077; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_14));
  __pyx_t_11 = __Pyx_GetName(__pyx_m, __pyx_n_s__np); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3077; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_11);
  __pyx_t_13 = PyObject_GetAttr(__pyx_t_11, __pyx_n_s__int64); if (unlikely(!__pyx_t_13)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3077; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_13);
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  if (PyDict_SetItem(__pyx_t_14, ((PyObject *)__pyx_n_s__dtype), __pyx_t_13) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3077; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
  __pyx_t_13 = PyEval_CallObjectWithKeywords(__pyx_t_10, ((PyObject *)__pyx_t_12), ((PyObject *)__pyx_t_14)); if (unlikely(!__pyx_t_13)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3077; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_13);
  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
  __Pyx_DECREF(((PyObject *)__pyx_t_12)); __pyx_t_12 = 0;
  __Pyx_DECREF(((PyObject *)__pyx_t_14)); __pyx_t_14 = 0;
  if (!(likely(((__pyx_t_13) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_13, __pyx_ptype_5numpy_ndarray))))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3077; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_t_15 = ((PyArrayObject *)__pyx_t_13);
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    __Pyx_SafeReleaseBuffer(&__pyx_bstruct_rindexer);
    __pyx_t_3 = __Pyx_GetBufferAndValidate(&__pyx_bstruct_rindexer, (PyObject*)__pyx_t_15, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack);
    if (unlikely(__pyx_t_3 < 0)) {
      PyErr_Fetch(&__pyx_t_18, &__pyx_t_17, &__pyx_t_16);
      if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_rindexer, (PyObject*)__pyx_v_rindexer, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) {
        Py_XDECREF(__pyx_t_18); Py_XDECREF(__pyx_t_17); Py_XDECREF(__pyx_t_16);
        __Pyx_RaiseBufferFallbackError();
      } else {
        PyErr_Restore(__pyx_t_18, __pyx_t_17, __pyx_t_16);
      }
    }
    __pyx_bstride_0_rindexer = __pyx_bstruct_rindexer.strides[0];
    __pyx_bshape_0_rindexer = __pyx_bstruct_rindexer.shape[0];
    if (unlikely(__pyx_t_3 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3077; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  }
  __pyx_t_15 = 0;
  __pyx_v_rindexer = ((PyArrayObject *)__pyx_t_13);
  __pyx_t_13 = 0;

  /* "pandas/src/generated.pyx":3078
 *     lindexer = np.empty(count, dtype=np.int64)
 *     rindexer = np.empty(count, dtype=np.int64)
 *     result = np.empty(count, dtype=np.int64)             # <<<<<<<<<<<<<<
 * 
 *     i = 0
 */
  __pyx_t_13 = __Pyx_GetName(__pyx_m, __pyx_n_s__np); if (unlikely(!__pyx_t_13)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3078; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_13);
  __pyx_t_14 = PyObject_GetAttr(__pyx_t_13, __pyx_n_s__empty); if (unlikely(!__pyx_t_14)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3078; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_14);
  __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
  __pyx_t_13 = PyInt_FromSsize_t(__pyx_v_count); if (unlikely(!__pyx_t_13)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3078; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_13);
  __pyx_t_12 = PyTuple_New(1); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3078; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_12));
  PyTuple_SET_ITEM(__pyx_t_12, 0, __pyx_t_13);
  __Pyx_GIVEREF(__pyx_t_13);
  __pyx_t_13 = 0;
  __pyx_t_13 = PyDict_New(); if (unlikely(!__pyx_t_13)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3078; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_13));
  __pyx_t_10 = __Pyx_GetName(__pyx_m, __pyx_n_s__np); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3078; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_10);
  __pyx_t_11 = PyObject_GetAttr(__pyx_t_10, __pyx_n_s__int64); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3078; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_11);
  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
  if (PyDict_SetItem(__pyx_t_13, ((PyObject *)__pyx_n_s__dtype), __pyx_t_11) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3078; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
  __pyx_t_11 = PyEval_CallObjectWithKeywords(__pyx_t_14, ((PyObject *)__pyx_t_12), ((PyObject *)__pyx_t_13)); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3078; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_11);
  __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
  __Pyx_DECREF(((PyObject *)__pyx_t_12)); __pyx_t_12 = 0;
  __Pyx_DECREF(((PyObject *)__pyx_t_13)); __pyx_t_13 = 0;
  if (!(likely(((__pyx_t_11) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_11, __pyx_ptype_5numpy_ndarray))))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3078; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_t_19 = ((PyArrayObject *)__pyx_t_11);
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    __Pyx_SafeReleaseBuffer(&__pyx_bstruct_result);
    __pyx_t_3 = __Pyx_GetBufferAndValidate(&__pyx_bstruct_result, (PyObject*)__pyx_t_19, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack);
    if (unlikely(__pyx_t_3 < 0)) {
      PyErr_Fetch(&__pyx_t_16, &__pyx_t_17, &__pyx_t_18);
      if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_result, (PyObject*)__pyx_v_result, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) {
        Py_XDECREF(__pyx_t_16); Py_XDECREF(__pyx_t_17); Py_XDECREF(__pyx_t_18);
        __Pyx_RaiseBufferFallbackError();
      } else {
        PyErr_Restore(__pyx_t_16, __pyx_t_17, __pyx_t_18);
      }
    }
    __pyx_bstride_0_result = __pyx_bstruct_result.strides[0];
    __pyx_bshape_0_result = __pyx_bstruct_result.shape[0];
    if (unlikely(__pyx_t_3 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3078; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  }
  __pyx_t_19 = 0;
  __pyx_v_result = ((PyArrayObject *)__pyx_t_11);
  __pyx_t_11 = 0;

  /* "pandas/src/generated.pyx":3080
 *     result = np.empty(count, dtype=np.int64)
 * 
 *     i = 0             # <<<<<<<<<<<<<<
 *     j = 0
 *     count = 0
 */
  __pyx_v_i = 0;

  /* "pandas/src/generated.pyx":3081
 * 
 *     i = 0
 *     j = 0             # <<<<<<<<<<<<<<
 *     count = 0
 *     if nleft > 0:
 */
  __pyx_v_j = 0;

  /* "pandas/src/generated.pyx":3082
 *     i = 0
 *     j = 0
 *     count = 0             # <<<<<<<<<<<<<<
 *     if nleft > 0:
 *         while i < nleft:
 */
  __pyx_v_count = 0;

  /* "pandas/src/generated.pyx":3083
 *     j = 0
 *     count = 0
 *     if nleft > 0:             # <<<<<<<<<<<<<<
 *         while i < nleft:
 *             if j == nright:
 */
  __pyx_t_7 = (__pyx_v_nleft > 0);
  if (__pyx_t_7) {

    /* "pandas/src/generated.pyx":3084
 *     count = 0
 *     if nleft > 0:
 *         while i < nleft:             # <<<<<<<<<<<<<<
 *             if j == nright:
 *                 while i < nleft:
 */
    while (1) {
      __pyx_t_7 = (__pyx_v_i < __pyx_v_nleft);
      if (!__pyx_t_7) break;

      /* "pandas/src/generated.pyx":3085
 *     if nleft > 0:
 *         while i < nleft:
 *             if j == nright:             # <<<<<<<<<<<<<<
 *                 while i < nleft:
 *                     lindexer[count] = i
 */
      __pyx_t_7 = (__pyx_v_j == __pyx_v_nright);
      if (__pyx_t_7) {

        /* "pandas/src/generated.pyx":3086
 *         while i < nleft:
 *             if j == nright:
 *                 while i < nleft:             # <<<<<<<<<<<<<<
 *                     lindexer[count] = i
 *                     rindexer[count] = -1
 */
        while (1) {
          __pyx_t_7 = (__pyx_v_i < __pyx_v_nleft);
          if (!__pyx_t_7) break;

          /* "pandas/src/generated.pyx":3087
 *             if j == nright:
 *                 while i < nleft:
 *                     lindexer[count] = i             # <<<<<<<<<<<<<<
 *                     rindexer[count] = -1
 *                     result[count] = left[i]
 */
          __pyx_t_20 = __pyx_v_count;
          __pyx_t_3 = -1;
          if (__pyx_t_20 < 0) {
            __pyx_t_20 += __pyx_bshape_0_lindexer;
            if (unlikely(__pyx_t_20 < 0)) __pyx_t_3 = 0;
          } else if (unlikely(__pyx_t_20 >= __pyx_bshape_0_lindexer)) __pyx_t_3 = 0;
          if (unlikely(__pyx_t_3 != -1)) {
            __Pyx_RaiseBufferIndexError(__pyx_t_3);
            {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3087; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
          }
          *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_bstruct_lindexer.buf, __pyx_t_20, __pyx_bstride_0_lindexer) = __pyx_v_i;

          /* "pandas/src/generated.pyx":3088
 *                 while i < nleft:
 *                     lindexer[count] = i
 *                     rindexer[count] = -1             # <<<<<<<<<<<<<<
 *                     result[count] = left[i]
 *                     i += 1
 */
          __pyx_t_21 = __pyx_v_count;
          __pyx_t_3 = -1;
          if (__pyx_t_21 < 0) {
            __pyx_t_21 += __pyx_bshape_0_rindexer;
            if (unlikely(__pyx_t_21 < 0)) __pyx_t_3 = 0;
          } else if (unlikely(__pyx_t_21 >= __pyx_bshape_0_rindexer)) __pyx_t_3 = 0;
          if (unlikely(__pyx_t_3 != -1)) {
            __Pyx_RaiseBufferIndexError(__pyx_t_3);
            {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3088; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
          }
          *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_bstruct_rindexer.buf, __pyx_t_21, __pyx_bstride_0_rindexer) = -1;

          /* "pandas/src/generated.pyx":3089
 *                     lindexer[count] = i
 *                     rindexer[count] = -1
 *                     result[count] = left[i]             # <<<<<<<<<<<<<<
 *                     i += 1
 *                     count += 1
 */
          __pyx_t_22 = __pyx_v_i;
          __pyx_t_3 = -1;
          if (__pyx_t_22 < 0) {
            __pyx_t_22 += __pyx_bshape_0_left;
            if (unlikely(__pyx_t_22 < 0)) __pyx_t_3 = 0;
          } else if (unlikely(__pyx_t_22 >= __pyx_bshape_0_left)) __pyx_t_3 = 0;
          if (unlikely(__pyx_t_3 != -1)) {
            __Pyx_RaiseBufferIndexError(__pyx_t_3);
            {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3089; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
          }
          __pyx_t_23 = __pyx_v_count;
          __pyx_t_3 = -1;
          if (__pyx_t_23 < 0) {
            __pyx_t_23 += __pyx_bshape_0_result;
            if (unlikely(__pyx_t_23 < 0)) __pyx_t_3 = 0;
          } else if (unlikely(__pyx_t_23 >= __pyx_bshape_0_result)) __pyx_t_3 = 0;
          if (unlikely(__pyx_t_3 != -1)) {
            __Pyx_RaiseBufferIndexError(__pyx_t_3);
            {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3089; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
          }
          *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_bstruct_result.buf, __pyx_t_23, __pyx_bstride_0_result) = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_bstruct_left.buf, __pyx_t_22, __pyx_bstride_0_left));

          /* "pandas/src/generated.pyx":3090
 *                     rindexer[count] = -1
 *                     result[count] = left[i]
 *                     i += 1             # <<<<<<<<<<<<<<
 *                     count += 1
 *                 break
 */
          __pyx_v_i = (__pyx_v_i + 1);

          /* "pandas/src/generated.pyx":3091
 *                     result[count] = left[i]
 *                     i += 1
 *                     count += 1             # <<<<<<<<<<<<<<
 *                 break
 * 
 */
          __pyx_v_count = (__pyx_v_count + 1);
        }

        /* "pandas/src/generated.pyx":3092
 *                     i += 1
 *                     count += 1
 *                 break             # <<<<<<<<<<<<<<
 * 
 *             lval = left[i]
 */
        goto __pyx_L17_break;
        goto __pyx_L18;
      }
      __pyx_L18:;

      /* "pandas/src/generated.pyx":3094
 *                 break
 * 
 *             lval = left[i]             # <<<<<<<<<<<<<<
 *             rval = right[j]
 * 
 */
      __pyx_t_24 = __pyx_v_i;
      __pyx_t_3 = -1;
      if (__pyx_t_24 < 0) {
        __pyx_t_24 += __pyx_bshape_0_left;
        if (unlikely(__pyx_t_24 < 0)) __pyx_t_3 = 0;
      } else if (unlikely(__pyx_t_24 >= __pyx_bshape_0_left)) __pyx_t_3 = 0;
      if (unlikely(__pyx_t_3 != -1)) {
        __Pyx_RaiseBufferIndexError(__pyx_t_3);
        {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3094; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      }
      __pyx_v_lval = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_bstruct_left.buf, __pyx_t_24, __pyx_bstride_0_left));

      /* "pandas/src/generated.pyx":3095
 * 
 *             lval = left[i]
 *             rval = right[j]             # <<<<<<<<<<<<<<
 * 
 *             if lval == rval:
 */
      __pyx_t_25 = __pyx_v_j;
      __pyx_t_3 = -1;
      if (__pyx_t_25 < 0) {
        __pyx_t_25 += __pyx_bshape_0_right;
        if (unlikely(__pyx_t_25 < 0)) __pyx_t_3 = 0;
      } else if (unlikely(__pyx_t_25 >= __pyx_bshape_0_right)) __pyx_t_3 = 0;
      if (unlikely(__pyx_t_3 != -1)) {
        __Pyx_RaiseBufferIndexError(__pyx_t_3);
        {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3095; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      }
      __pyx_v_rval = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_bstruct_right.buf, __pyx_t_25, __pyx_bstride_0_right));

      /* "pandas/src/generated.pyx":3097
 *             rval = right[j]
 * 
 *             if lval == rval:             # <<<<<<<<<<<<<<
 *                 lindexer[count] = i
 *                 rindexer[count] = j
 */
      __pyx_t_7 = (__pyx_v_lval == __pyx_v_rval);
      if (__pyx_t_7) {

        /* "pandas/src/generated.pyx":3098
 * 
 *             if lval == rval:
 *                 lindexer[count] = i             # <<<<<<<<<<<<<<
 *                 rindexer[count] = j
 *                 result[count] = lval
 */
        __pyx_t_26 = __pyx_v_count;
        __pyx_t_3 = -1;
        if (__pyx_t_26 < 0) {
          __pyx_t_26 += __pyx_bshape_0_lindexer;
          if (unlikely(__pyx_t_26 < 0)) __pyx_t_3 = 0;
        } else if (unlikely(__pyx_t_26 >= __pyx_bshape_0_lindexer)) __pyx_t_3 = 0;
        if (unlikely(__pyx_t_3 != -1)) {
          __Pyx_RaiseBufferIndexError(__pyx_t_3);
          {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3098; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        }
        *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_bstruct_lindexer.buf, __pyx_t_26, __pyx_bstride_0_lindexer) = __pyx_v_i;

        /* "pandas/src/generated.pyx":3099
 *             if lval == rval:
 *                 lindexer[count] = i
 *                 rindexer[count] = j             # <<<<<<<<<<<<<<
 *                 result[count] = lval
 *                 count += 1
 */
        __pyx_t_27 = __pyx_v_count;
        __pyx_t_3 = -1;
        if (__pyx_t_27 < 0) {
          __pyx_t_27 += __pyx_bshape_0_rindexer;
          if (unlikely(__pyx_t_27 < 0)) __pyx_t_3 = 0;
        } else if (unlikely(__pyx_t_27 >= __pyx_bshape_0_rindexer)) __pyx_t_3 = 0;
        if (unlikely(__pyx_t_3 != -1)) {
          __Pyx_RaiseBufferIndexError(__pyx_t_3);
          {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3099; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        }
        *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_bstruct_rindexer.buf, __pyx_t_27, __pyx_bstride_0_rindexer) = __pyx_v_j;

        /* "pandas/src/generated.pyx":3100
 *                 lindexer[count] = i
 *                 rindexer[count] = j
 *                 result[count] = lval             # <<<<<<<<<<<<<<
 *                 count += 1
 *                 if i < nleft - 1:
 */
        __pyx_t_28 = __pyx_v_count;
        __pyx_t_3 = -1;
        if (__pyx_t_28 < 0) {
          __pyx_t_28 += __pyx_bshape_0_result;
          if (unlikely(__pyx_t_28 < 0)) __pyx_t_3 = 0;
        } else if (unlikely(__pyx_t_28 >= __pyx_bshape_0_result)) __pyx_t_3 = 0;
        if (unlikely(__pyx_t_3 != -1)) {
          __Pyx_RaiseBufferIndexError(__pyx_t_3);
          {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3100; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        }
        *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_bstruct_result.buf, __pyx_t_28, __pyx_bstride_0_result) = __pyx_v_lval;

        /* "pandas/src/generated.pyx":3101
 *                 rindexer[count] = j
 *                 result[count] = lval
 *                 count += 1             # <<<<<<<<<<<<<<
 *                 if i < nleft - 1:
 *                     if j < nright - 1 and right[j + 1] == rval:
 */
        __pyx_v_count = (__pyx_v_count + 1);

        /* "pandas/src/generated.pyx":3102
 *                 result[count] = lval
 *                 count += 1
 *                 if i < nleft - 1:             # <<<<<<<<<<<<<<
 *                     if j < nright - 1 and right[j + 1] == rval:
 *                         j += 1
 */
        __pyx_t_7 = (__pyx_v_i < (__pyx_v_nleft - 1));
        if (__pyx_t_7) {

          /* "pandas/src/generated.pyx":3103
 *                 count += 1
 *                 if i < nleft - 1:
 *                     if j < nright - 1 and right[j + 1] == rval:             # <<<<<<<<<<<<<<
 *                         j += 1
 *                     else:
 */
          __pyx_t_7 = (__pyx_v_j < (__pyx_v_nright - 1));
          if (__pyx_t_7) {
            __pyx_t_29 = (__pyx_v_j + 1);
            __pyx_t_3 = -1;
            if (__pyx_t_29 < 0) {
              __pyx_t_29 += __pyx_bshape_0_right;
              if (unlikely(__pyx_t_29 < 0)) __pyx_t_3 = 0;
            } else if (unlikely(__pyx_t_29 >= __pyx_bshape_0_right)) __pyx_t_3 = 0;
            if (unlikely(__pyx_t_3 != -1)) {
              __Pyx_RaiseBufferIndexError(__pyx_t_3);
              {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3103; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
            }
            __pyx_t_2 = ((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_bstruct_right.buf, __pyx_t_29, __pyx_bstride_0_right)) == __pyx_v_rval);
            __pyx_t_6 = __pyx_t_2;
          } else {
            __pyx_t_6 = __pyx_t_7;
          }
          if (__pyx_t_6) {

            /* "pandas/src/generated.pyx":3104
 *                 if i < nleft - 1:
 *                     if j < nright - 1 and right[j + 1] == rval:
 *                         j += 1             # <<<<<<<<<<<<<<
 *                     else:
 *                         i += 1
 */
            __pyx_v_j = (__pyx_v_j + 1);
            goto __pyx_L23;
          }
          /*else*/ {

            /* "pandas/src/generated.pyx":3106
 *                         j += 1
 *                     else:
 *                         i += 1             # <<<<<<<<<<<<<<
 *                         if left[i] != rval:
 *                             j += 1
 */
            __pyx_v_i = (__pyx_v_i + 1);

            /* "pandas/src/generated.pyx":3107
 *                     else:
 *                         i += 1
 *                         if left[i] != rval:             # <<<<<<<<<<<<<<
 *                             j += 1
 *                 elif j < nright - 1:
 */
            __pyx_t_30 = __pyx_v_i;
            __pyx_t_3 = -1;
            if (__pyx_t_30 < 0) {
              __pyx_t_30 += __pyx_bshape_0_left;
              if (unlikely(__pyx_t_30 < 0)) __pyx_t_3 = 0;
            } else if (unlikely(__pyx_t_30 >= __pyx_bshape_0_left)) __pyx_t_3 = 0;
            if (unlikely(__pyx_t_3 != -1)) {
              __Pyx_RaiseBufferIndexError(__pyx_t_3);
              {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3107; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
            }
            __pyx_t_6 = ((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_bstruct_left.buf, __pyx_t_30, __pyx_bstride_0_left)) != __pyx_v_rval);
            if (__pyx_t_6) {

              /* "pandas/src/generated.pyx":3108
 *                         i += 1
 *                         if left[i] != rval:
 *                             j += 1             # <<<<<<<<<<<<<<
 *                 elif j < nright - 1:
 *                     j += 1
 */
              __pyx_v_j = (__pyx_v_j + 1);
              goto __pyx_L24;
            }
            __pyx_L24:;
          }
          __pyx_L23:;
          goto __pyx_L22;
        }

        /* "pandas/src/generated.pyx":3109
 *                         if left[i] != rval:
 *                             j += 1
 *                 elif j < nright - 1:             # <<<<<<<<<<<<<<
 *                     j += 1
 *                     if lval != right[j]:
 */
        __pyx_t_6 = (__pyx_v_j < (__pyx_v_nright - 1));
        if (__pyx_t_6) {

          /* "pandas/src/generated.pyx":3110
 *                             j += 1
 *                 elif j < nright - 1:
 *                     j += 1             # <<<<<<<<<<<<<<
 *                     if lval != right[j]:
 *                         i += 1
 */
          __pyx_v_j = (__pyx_v_j + 1);

          /* "pandas/src/generated.pyx":3111
 *                 elif j < nright - 1:
 *                     j += 1
 *                     if lval != right[j]:             # <<<<<<<<<<<<<<
 *                         i += 1
 *                 else:
 */
          __pyx_t_31 = __pyx_v_j;
          __pyx_t_3 = -1;
          if (__pyx_t_31 < 0) {
            __pyx_t_31 += __pyx_bshape_0_right;
            if (unlikely(__pyx_t_31 < 0)) __pyx_t_3 = 0;
          } else if (unlikely(__pyx_t_31 >= __pyx_bshape_0_right)) __pyx_t_3 = 0;
          if (unlikely(__pyx_t_3 != -1)) {
            __Pyx_RaiseBufferIndexError(__pyx_t_3);
            {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3111; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
          }
          __pyx_t_6 = (__pyx_v_lval != (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_bstruct_right.buf, __pyx_t_31, __pyx_bstride_0_right)));
          if (__pyx_t_6) {

            /* "pandas/src/generated.pyx":3112
 *                     j += 1
 *                     if lval != right[j]:
 *                         i += 1             # <<<<<<<<<<<<<<
 *                 else:
 *                     # end of the road
 */
            __pyx_v_i = (__pyx_v_i + 1);
            goto __pyx_L25;
          }
          __pyx_L25:;
          goto __pyx_L22;
        }
        /*else*/ {

          /* "pandas/src/generated.pyx":3115
 *                 else:
 *                     # end of the road
 *                     break             # <<<<<<<<<<<<<<
 *             elif lval < rval:
 *                 lindexer[count] = i
 */
          goto __pyx_L17_break;
        }
        __pyx_L22:;
        goto __pyx_L21;
      }

      /* "pandas/src/generated.pyx":3116
 *                     # end of the road
 *                     break
 *             elif lval < rval:             # <<<<<<<<<<<<<<
 *                 lindexer[count] = i
 *                 rindexer[count] = -1
 */
      __pyx_t_6 = (__pyx_v_lval < __pyx_v_rval);
      if (__pyx_t_6) {

        /* "pandas/src/generated.pyx":3117
 *                     break
 *             elif lval < rval:
 *                 lindexer[count] = i             # <<<<<<<<<<<<<<
 *                 rindexer[count] = -1
 *                 result[count] = left[i]
 */
        __pyx_t_32 = __pyx_v_count;
        __pyx_t_3 = -1;
        if (__pyx_t_32 < 0) {
          __pyx_t_32 += __pyx_bshape_0_lindexer;
          if (unlikely(__pyx_t_32 < 0)) __pyx_t_3 = 0;
        } else if (unlikely(__pyx_t_32 >= __pyx_bshape_0_lindexer)) __pyx_t_3 = 0;
        if (unlikely(__pyx_t_3 != -1)) {
          __Pyx_RaiseBufferIndexError(__pyx_t_3);
          {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3117; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        }
        *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_bstruct_lindexer.buf, __pyx_t_32, __pyx_bstride_0_lindexer) = __pyx_v_i;

        /* "pandas/src/generated.pyx":3118
 *             elif lval < rval:
 *                 lindexer[count] = i
 *                 rindexer[count] = -1             # <<<<<<<<<<<<<<
 *                 result[count] = left[i]
 *                 count += 1
 */
        __pyx_t_33 = __pyx_v_count;
        __pyx_t_3 = -1;
        if (__pyx_t_33 < 0) {
          __pyx_t_33 += __pyx_bshape_0_rindexer;
          if (unlikely(__pyx_t_33 < 0)) __pyx_t_3 = 0;
        } else if (unlikely(__pyx_t_33 >= __pyx_bshape_0_rindexer)) __pyx_t_3 = 0;
        if (unlikely(__pyx_t_3 != -1)) {
          __Pyx_RaiseBufferIndexError(__pyx_t_3);
          {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3118; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        }
        *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_bstruct_rindexer.buf, __pyx_t_33, __pyx_bstride_0_rindexer) = -1;

        /* "pandas/src/generated.pyx":3119
 *                 lindexer[count] = i
 *                 rindexer[count] = -1
 *                 result[count] = left[i]             # <<<<<<<<<<<<<<
 *                 count += 1
 *                 i += 1
 */
        __pyx_t_34 = __pyx_v_i;
        __pyx_t_3 = -1;
        if (__pyx_t_34 < 0) {
          __pyx_t_34 += __pyx_bshape_0_left;
          if (unlikely(__pyx_t_34 < 0)) __pyx_t_3 = 0;
        } else if (unlikely(__pyx_t_34 >= __pyx_bshape_0_left)) __pyx_t_3 = 0;
        if (unlikely(__pyx_t_3 != -1)) {
          __Pyx_RaiseBufferIndexError(__pyx_t_3);
          {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3119; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        }
        __pyx_t_35 = __pyx_v_count;
        __pyx_t_3 = -1;
        if (__pyx_t_35 < 0) {
          __pyx_t_35 += __pyx_bshape_0_result;
          if (unlikely(__pyx_t_35 < 0)) __pyx_t_3 = 0;
        } else if (unlikely(__pyx_t_35 >= __pyx_bshape_0_result)) __pyx_t_3 = 0;
        if (unlikely(__pyx_t_3 != -1)) {
          __Pyx_RaiseBufferIndexError(__pyx_t_3);
          {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3119; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        }
        *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_bstruct_result.buf, __pyx_t_35, __pyx_bstride_0_result) = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_bstruct_left.buf, __pyx_t_34, __pyx_bstride_0_left));

        /* "pandas/src/generated.pyx":3120
 *                 rindexer[count] = -1
 *                 result[count] = left[i]
 *                 count += 1             # <<<<<<<<<<<<<<
 *                 i += 1
 *             else:
 */
        __pyx_v_count = (__pyx_v_count + 1);

        /* "pandas/src/generated.pyx":3121
 *                 result[count] = left[i]
 *                 count += 1
 *                 i += 1             # <<<<<<<<<<<<<<
 *             else:
 *                 j += 1
 */
        __pyx_v_i = (__pyx_v_i + 1);
        goto __pyx_L21;
      }
      /*else*/ {

        /* "pandas/src/generated.pyx":3123
 *                 i += 1
 *             else:
 *                 j += 1             # <<<<<<<<<<<<<<
 * 
 *     return result, lindexer, rindexer
 */
        __pyx_v_j = (__pyx_v_j + 1);
      }
      __pyx_L21:;
    }
    __pyx_L17_break:;
    goto __pyx_L15;
  }
  __pyx_L15:;

  /* "pandas/src/generated.pyx":3125
 *                 j += 1
 * 
 *     return result, lindexer, rindexer             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_11 = PyTuple_New(3); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3125; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_11));
  __Pyx_INCREF(((PyObject *)__pyx_v_result));
  PyTuple_SET_ITEM(__pyx_t_11, 0, ((PyObject *)__pyx_v_result));
  __Pyx_GIVEREF(((PyObject *)__pyx_v_result));
  __Pyx_INCREF(((PyObject *)__pyx_v_lindexer));
  PyTuple_SET_ITEM(__pyx_t_11, 1, ((PyObject *)__pyx_v_lindexer));
  __Pyx_GIVEREF(((PyObject *)__pyx_v_lindexer));
  __Pyx_INCREF(((PyObject *)__pyx_v_rindexer));
  PyTuple_SET_ITEM(__pyx_t_11, 2, ((PyObject *)__pyx_v_rindexer));
  __Pyx_GIVEREF(((PyObject *)__pyx_v_rindexer));
  __pyx_r = ((PyObject *)__pyx_t_11);
  __pyx_t_11 = 0;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_10);
  __Pyx_XDECREF(__pyx_t_11);
  __Pyx_XDECREF(__pyx_t_12);
  __Pyx_XDECREF(__pyx_t_13);
  __Pyx_XDECREF(__pyx_t_14);
  { PyObject *__pyx_type, *__pyx_value, *__pyx_tb;
    __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);
    __Pyx_SafeReleaseBuffer(&__pyx_bstruct_result);
    __Pyx_SafeReleaseBuffer(&__pyx_bstruct_right);
    __Pyx_SafeReleaseBuffer(&__pyx_bstruct_lindexer);
    __Pyx_SafeReleaseBuffer(&__pyx_bstruct_rindexer);
    __Pyx_SafeReleaseBuffer(&__pyx_bstruct_left);
  __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);}
  __Pyx_AddTraceback("pandas._algos.left_join_indexer_int64", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  goto __pyx_L2;
  __pyx_L0:;
  __Pyx_SafeReleaseBuffer(&__pyx_bstruct_result);
  __Pyx_SafeReleaseBuffer(&__pyx_bstruct_right);
  __Pyx_SafeReleaseBuffer(&__pyx_bstruct_lindexer);
  __Pyx_SafeReleaseBuffer(&__pyx_bstruct_rindexer);
  __Pyx_SafeReleaseBuffer(&__pyx_bstruct_left);
  __pyx_L2:;
  __Pyx_XDECREF((PyObject *)__pyx_v_lindexer);
  __Pyx_XDECREF((PyObject *)__pyx_v_rindexer);
  __Pyx_XDECREF((PyObject *)__pyx_v_result);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "pandas/src/generated.pyx":3130
 * @cython.wraparound(False)
 * @cython.boundscheck(False)
 * def outer_join_indexer_float64(ndarray[float64_t] left,             # <<<<<<<<<<<<<<
 *                                 ndarray[float64_t] right):
 *     cdef:
 */

static PyObject *__pyx_pf_6pandas_6_algos_83outer_join_indexer_float64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_6pandas_6_algos_83outer_join_indexer_float64 = {__Pyx_NAMESTR("outer_join_indexer_float64"), (PyCFunction)__pyx_pf_6pandas_6_algos_83outer_join_indexer_float64, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(0)};
static PyObject *__pyx_pf_6pandas_6_algos_83outer_join_indexer_float64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyArrayObject *__pyx_v_left = 0;
  PyArrayObject *__pyx_v_right = 0;
  Py_ssize_t __pyx_v_i;
  Py_ssize_t __pyx_v_j;
  Py_ssize_t __pyx_v_nright;
  Py_ssize_t __pyx_v_nleft;
  Py_ssize_t __pyx_v_count;
  __pyx_t_5numpy_float64_t __pyx_v_lval;
  __pyx_t_5numpy_float64_t __pyx_v_rval;
  PyArrayObject *__pyx_v_lindexer = 0;
  PyArrayObject *__pyx_v_rindexer = 0;
  PyArrayObject *__pyx_v_result = 0;
  Py_buffer __pyx_bstruct_result;
  Py_ssize_t __pyx_bstride_0_result = 0;
  Py_ssize_t __pyx_bshape_0_result = 0;
  Py_buffer __pyx_bstruct_right;
  Py_ssize_t __pyx_bstride_0_right = 0;
  Py_ssize_t __pyx_bshape_0_right = 0;
  Py_buffer __pyx_bstruct_lindexer;
  Py_ssize_t __pyx_bstride_0_lindexer = 0;
  Py_ssize_t __pyx_bshape_0_lindexer = 0;
  Py_buffer __pyx_bstruct_rindexer;
  Py_ssize_t __pyx_bstride_0_rindexer = 0;
  Py_ssize_t __pyx_bshape_0_rindexer = 0;
  Py_buffer __pyx_bstruct_left;
  Py_ssize_t __pyx_bstride_0_left = 0;
  Py_ssize_t __pyx_bshape_0_left = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  Py_ssize_t __pyx_t_1;
  int __pyx_t_2;
  Py_ssize_t __pyx_t_3;
  Py_ssize_t __pyx_t_4;
  int __pyx_t_5;
  int __pyx_t_6;
  Py_ssize_t __pyx_t_7;
  Py_ssize_t __pyx_t_8;
  PyObject *__pyx_t_9 = NULL;
  PyObject *__pyx_t_10 = NULL;
  PyObject *__pyx_t_11 = NULL;
  PyObject *__pyx_t_12 = NULL;
  PyObject *__pyx_t_13 = NULL;
  PyArrayObject *__pyx_t_14 = NULL;
  int __pyx_t_15;
  PyObject *__pyx_t_16 = NULL;
  PyObject *__pyx_t_17 = NULL;
  PyObject *__pyx_t_18 = NULL;
  PyArrayObject *__pyx_t_19 = NULL;
  Py_ssize_t __pyx_t_20;
  Py_ssize_t __pyx_t_21;
  Py_ssize_t __pyx_t_22;
  Py_ssize_t __pyx_t_23;
  Py_ssize_t __pyx_t_24;
  Py_ssize_t __pyx_t_25;
  Py_ssize_t __pyx_t_26;
  Py_ssize_t __pyx_t_27;
  Py_ssize_t __pyx_t_28;
  Py_ssize_t __pyx_t_29;
  Py_ssize_t __pyx_t_30;
  Py_ssize_t __pyx_t_31;
  Py_ssize_t __pyx_t_32;
  Py_ssize_t __pyx_t_33;
  Py_ssize_t __pyx_t_34;
  Py_ssize_t __pyx_t_35;
  Py_ssize_t __pyx_t_36;
  Py_ssize_t __pyx_t_37;
  Py_ssize_t __pyx_t_38;
  Py_ssize_t __pyx_t_39;
  Py_ssize_t __pyx_t_40;
  Py_ssize_t __pyx_t_41;
  Py_ssize_t __pyx_t_42;
  Py_ssize_t __pyx_t_43;
  Py_ssize_t __pyx_t_44;
  Py_ssize_t __pyx_t_45;
  Py_ssize_t __pyx_t_46;
  Py_ssize_t __pyx_t_47;
  Py_ssize_t __pyx_t_48;
  Py_ssize_t __pyx_t_49;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__left,&__pyx_n_s__right,0};
  __Pyx_RefNannySetupContext("outer_join_indexer_float64");
  __pyx_self = __pyx_self;
  {
    PyObject* values[2] = {0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  0:
        values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__left);
        if (likely(values[0])) kw_args--;
        else goto __pyx_L5_argtuple_error;
        case  1:
        values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__right);
        if (likely(values[1])) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("outer_join_indexer_float64", 1, 2, 2, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3130; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "outer_join_indexer_float64") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3130; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
    }
    __pyx_v_left = ((PyArrayObject *)values[0]);
    __pyx_v_right = ((PyArrayObject *)values[1]);
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("outer_join_indexer_float64", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3130; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("pandas._algos.outer_join_indexer_float64", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_bstruct_lindexer.buf = NULL;
  __pyx_bstruct_rindexer.buf = NULL;
  __pyx_bstruct_result.buf = NULL;
  __pyx_bstruct_left.buf = NULL;
  __pyx_bstruct_right.buf = NULL;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_left), __pyx_ptype_5numpy_ndarray, 1, "left", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3130; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_right), __pyx_ptype_5numpy_ndarray, 1, "right", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3131; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_left, (PyObject*)__pyx_v_left, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3130; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  }
  __pyx_bstride_0_left = __pyx_bstruct_left.strides[0];
  __pyx_bshape_0_left = __pyx_bstruct_left.shape[0];
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_right, (PyObject*)__pyx_v_right, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3130; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  }
  __pyx_bstride_0_right = __pyx_bstruct_right.strides[0];
  __pyx_bshape_0_right = __pyx_bstruct_right.shape[0];

  /* "pandas/src/generated.pyx":3138
 *         ndarray[float64_t] result
 * 
 *     nleft = len(left)             # <<<<<<<<<<<<<<
 *     nright = len(right)
 * 
 */
  __pyx_t_1 = PyObject_Length(((PyObject *)__pyx_v_left)); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3138; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_v_nleft = __pyx_t_1;

  /* "pandas/src/generated.pyx":3139
 * 
 *     nleft = len(left)
 *     nright = len(right)             # <<<<<<<<<<<<<<
 * 
 *     i = 0
 */
  __pyx_t_1 = PyObject_Length(((PyObject *)__pyx_v_right)); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3139; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_v_nright = __pyx_t_1;

  /* "pandas/src/generated.pyx":3141
 *     nright = len(right)
 * 
 *     i = 0             # <<<<<<<<<<<<<<
 *     j = 0
 *     count = 0
 */
  __pyx_v_i = 0;

  /* "pandas/src/generated.pyx":3142
 * 
 *     i = 0
 *     j = 0             # <<<<<<<<<<<<<<
 *     count = 0
 *     if nleft == 0:
 */
  __pyx_v_j = 0;

  /* "pandas/src/generated.pyx":3143
 *     i = 0
 *     j = 0
 *     count = 0             # <<<<<<<<<<<<<<
 *     if nleft == 0:
 *         count = nright
 */
  __pyx_v_count = 0;

  /* "pandas/src/generated.pyx":3144
 *     j = 0
 *     count = 0
 *     if nleft == 0:             # <<<<<<<<<<<<<<
 *         count = nright
 *     elif nright == 0:
 */
  __pyx_t_2 = (__pyx_v_nleft == 0);
  if (__pyx_t_2) {

    /* "pandas/src/generated.pyx":3145
 *     count = 0
 *     if nleft == 0:
 *         count = nright             # <<<<<<<<<<<<<<
 *     elif nright == 0:
 *         count = nleft
 */
    __pyx_v_count = __pyx_v_nright;
    goto __pyx_L6;
  }

  /* "pandas/src/generated.pyx":3146
 *     if nleft == 0:
 *         count = nright
 *     elif nright == 0:             # <<<<<<<<<<<<<<
 *         count = nleft
 *     else:
 */
  __pyx_t_2 = (__pyx_v_nright == 0);
  if (__pyx_t_2) {

    /* "pandas/src/generated.pyx":3147
 *         count = nright
 *     elif nright == 0:
 *         count = nleft             # <<<<<<<<<<<<<<
 *     else:
 *         while True:
 */
    __pyx_v_count = __pyx_v_nleft;
    goto __pyx_L6;
  }
  /*else*/ {

    /* "pandas/src/generated.pyx":3149
 *         count = nleft
 *     else:
 *         while True:             # <<<<<<<<<<<<<<
 *             if i == nleft:
 *                 count += nright - j
 */
    while (1) {
      if (!1) break;

      /* "pandas/src/generated.pyx":3150
 *     else:
 *         while True:
 *             if i == nleft:             # <<<<<<<<<<<<<<
 *                 count += nright - j
 *                 break
 */
      __pyx_t_2 = (__pyx_v_i == __pyx_v_nleft);
      if (__pyx_t_2) {

        /* "pandas/src/generated.pyx":3151
 *         while True:
 *             if i == nleft:
 *                 count += nright - j             # <<<<<<<<<<<<<<
 *                 break
 *             if j == nright:
 */
        __pyx_v_count = (__pyx_v_count + (__pyx_v_nright - __pyx_v_j));

        /* "pandas/src/generated.pyx":3152
 *             if i == nleft:
 *                 count += nright - j
 *                 break             # <<<<<<<<<<<<<<
 *             if j == nright:
 *                 count += nleft - i
 */
        goto __pyx_L8_break;
        goto __pyx_L9;
      }
      __pyx_L9:;

      /* "pandas/src/generated.pyx":3153
 *                 count += nright - j
 *                 break
 *             if j == nright:             # <<<<<<<<<<<<<<
 *                 count += nleft - i
 *                 break
 */
      __pyx_t_2 = (__pyx_v_j == __pyx_v_nright);
      if (__pyx_t_2) {

        /* "pandas/src/generated.pyx":3154
 *                 break
 *             if j == nright:
 *                 count += nleft - i             # <<<<<<<<<<<<<<
 *                 break
 * 
 */
        __pyx_v_count = (__pyx_v_count + (__pyx_v_nleft - __pyx_v_i));

        /* "pandas/src/generated.pyx":3155
 *             if j == nright:
 *                 count += nleft - i
 *                 break             # <<<<<<<<<<<<<<
 * 
 *             lval = left[i]
 */
        goto __pyx_L8_break;
        goto __pyx_L10;
      }
      __pyx_L10:;

      /* "pandas/src/generated.pyx":3157
 *                 break
 * 
 *             lval = left[i]             # <<<<<<<<<<<<<<
 *             rval = right[j]
 *             if lval == rval:
 */
      __pyx_t_1 = __pyx_v_i;
      __pyx_v_lval = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_left.buf, __pyx_t_1, __pyx_bstride_0_left));

      /* "pandas/src/generated.pyx":3158
 * 
 *             lval = left[i]
 *             rval = right[j]             # <<<<<<<<<<<<<<
 *             if lval == rval:
 *                 count += 1
 */
      __pyx_t_3 = __pyx_v_j;
      __pyx_v_rval = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_right.buf, __pyx_t_3, __pyx_bstride_0_right));

      /* "pandas/src/generated.pyx":3159
 *             lval = left[i]
 *             rval = right[j]
 *             if lval == rval:             # <<<<<<<<<<<<<<
 *                 count += 1
 *                 if i < nleft - 1:
 */
      __pyx_t_2 = (__pyx_v_lval == __pyx_v_rval);
      if (__pyx_t_2) {

        /* "pandas/src/generated.pyx":3160
 *             rval = right[j]
 *             if lval == rval:
 *                 count += 1             # <<<<<<<<<<<<<<
 *                 if i < nleft - 1:
 *                     if j < nright - 1 and right[j + 1] == rval:
 */
        __pyx_v_count = (__pyx_v_count + 1);

        /* "pandas/src/generated.pyx":3161
 *             if lval == rval:
 *                 count += 1
 *                 if i < nleft - 1:             # <<<<<<<<<<<<<<
 *                     if j < nright - 1 and right[j + 1] == rval:
 *                         j += 1
 */
        __pyx_t_2 = (__pyx_v_i < (__pyx_v_nleft - 1));
        if (__pyx_t_2) {

          /* "pandas/src/generated.pyx":3162
 *                 count += 1
 *                 if i < nleft - 1:
 *                     if j < nright - 1 and right[j + 1] == rval:             # <<<<<<<<<<<<<<
 *                         j += 1
 *                     else:
 */
          __pyx_t_2 = (__pyx_v_j < (__pyx_v_nright - 1));
          if (__pyx_t_2) {
            __pyx_t_4 = (__pyx_v_j + 1);
            __pyx_t_5 = ((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_right.buf, __pyx_t_4, __pyx_bstride_0_right)) == __pyx_v_rval);
            __pyx_t_6 = __pyx_t_5;
          } else {
            __pyx_t_6 = __pyx_t_2;
          }
          if (__pyx_t_6) {

            /* "pandas/src/generated.pyx":3163
 *                 if i < nleft - 1:
 *                     if j < nright - 1 and right[j + 1] == rval:
 *                         j += 1             # <<<<<<<<<<<<<<
 *                     else:
 *                         i += 1
 */
            __pyx_v_j = (__pyx_v_j + 1);
            goto __pyx_L13;
          }
          /*else*/ {

            /* "pandas/src/generated.pyx":3165
 *                         j += 1
 *                     else:
 *                         i += 1             # <<<<<<<<<<<<<<
 *                         if left[i] != rval:
 *                             j += 1
 */
            __pyx_v_i = (__pyx_v_i + 1);

            /* "pandas/src/generated.pyx":3166
 *                     else:
 *                         i += 1
 *                         if left[i] != rval:             # <<<<<<<<<<<<<<
 *                             j += 1
 *                 elif j < nright - 1:
 */
            __pyx_t_7 = __pyx_v_i;
            __pyx_t_6 = ((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_left.buf, __pyx_t_7, __pyx_bstride_0_left)) != __pyx_v_rval);
            if (__pyx_t_6) {

              /* "pandas/src/generated.pyx":3167
 *                         i += 1
 *                         if left[i] != rval:
 *                             j += 1             # <<<<<<<<<<<<<<
 *                 elif j < nright - 1:
 *                     j += 1
 */
              __pyx_v_j = (__pyx_v_j + 1);
              goto __pyx_L14;
            }
            __pyx_L14:;
          }
          __pyx_L13:;
          goto __pyx_L12;
        }

        /* "pandas/src/generated.pyx":3168
 *                         if left[i] != rval:
 *                             j += 1
 *                 elif j < nright - 1:             # <<<<<<<<<<<<<<
 *                     j += 1
 *                     if lval != right[j]:
 */
        __pyx_t_6 = (__pyx_v_j < (__pyx_v_nright - 1));
        if (__pyx_t_6) {

          /* "pandas/src/generated.pyx":3169
 *                             j += 1
 *                 elif j < nright - 1:
 *                     j += 1             # <<<<<<<<<<<<<<
 *                     if lval != right[j]:
 *                         i += 1
 */
          __pyx_v_j = (__pyx_v_j + 1);

          /* "pandas/src/generated.pyx":3170
 *                 elif j < nright - 1:
 *                     j += 1
 *                     if lval != right[j]:             # <<<<<<<<<<<<<<
 *                         i += 1
 *                 else:
 */
          __pyx_t_8 = __pyx_v_j;
          __pyx_t_6 = (__pyx_v_lval != (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_right.buf, __pyx_t_8, __pyx_bstride_0_right)));
          if (__pyx_t_6) {

            /* "pandas/src/generated.pyx":3171
 *                     j += 1
 *                     if lval != right[j]:
 *                         i += 1             # <<<<<<<<<<<<<<
 *                 else:
 *                     # end of the road
 */
            __pyx_v_i = (__pyx_v_i + 1);
            goto __pyx_L15;
          }
          __pyx_L15:;
          goto __pyx_L12;
        }
        /*else*/ {

          /* "pandas/src/generated.pyx":3174
 *                 else:
 *                     # end of the road
 *                     break             # <<<<<<<<<<<<<<
 *             elif lval < rval:
 *                 count += 1
 */
          goto __pyx_L8_break;
        }
        __pyx_L12:;
        goto __pyx_L11;
      }

      /* "pandas/src/generated.pyx":3175
 *                     # end of the road
 *                     break
 *             elif lval < rval:             # <<<<<<<<<<<<<<
 *                 count += 1
 *                 i += 1
 */
      __pyx_t_6 = (__pyx_v_lval < __pyx_v_rval);
      if (__pyx_t_6) {

        /* "pandas/src/generated.pyx":3176
 *                     break
 *             elif lval < rval:
 *                 count += 1             # <<<<<<<<<<<<<<
 *                 i += 1
 *             else:
 */
        __pyx_v_count = (__pyx_v_count + 1);

        /* "pandas/src/generated.pyx":3177
 *             elif lval < rval:
 *                 count += 1
 *                 i += 1             # <<<<<<<<<<<<<<
 *             else:
 *                 count += 1
 */
        __pyx_v_i = (__pyx_v_i + 1);
        goto __pyx_L11;
      }
      /*else*/ {

        /* "pandas/src/generated.pyx":3179
 *                 i += 1
 *             else:
 *                 count += 1             # <<<<<<<<<<<<<<
 *                 j += 1
 * 
 */
        __pyx_v_count = (__pyx_v_count + 1);

        /* "pandas/src/generated.pyx":3180
 *             else:
 *                 count += 1
 *                 j += 1             # <<<<<<<<<<<<<<
 * 
 *     lindexer = np.empty(count, dtype=np.int64)
 */
        __pyx_v_j = (__pyx_v_j + 1);
      }
      __pyx_L11:;
    }
    __pyx_L8_break:;
  }
  __pyx_L6:;

  /* "pandas/src/generated.pyx":3182
 *                 j += 1
 * 
 *     lindexer = np.empty(count, dtype=np.int64)             # <<<<<<<<<<<<<<
 *     rindexer = np.empty(count, dtype=np.int64)
 *     result = np.empty(count, dtype=np.float64)
 */
  __pyx_t_9 = __Pyx_GetName(__pyx_m, __pyx_n_s__np); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3182; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_9);
  __pyx_t_10 = PyObject_GetAttr(__pyx_t_9, __pyx_n_s__empty); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3182; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_10);
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  __pyx_t_9 = PyInt_FromSsize_t(__pyx_v_count); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3182; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_9);
  __pyx_t_11 = PyTuple_New(1); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3182; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_11));
  PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_9);
  __Pyx_GIVEREF(__pyx_t_9);
  __pyx_t_9 = 0;
  __pyx_t_9 = PyDict_New(); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3182; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_9));
  __pyx_t_12 = __Pyx_GetName(__pyx_m, __pyx_n_s__np); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3182; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_12);
  __pyx_t_13 = PyObject_GetAttr(__pyx_t_12, __pyx_n_s__int64); if (unlikely(!__pyx_t_13)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3182; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_13);
  __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
  if (PyDict_SetItem(__pyx_t_9, ((PyObject *)__pyx_n_s__dtype), __pyx_t_13) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3182; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
  __pyx_t_13 = PyEval_CallObjectWithKeywords(__pyx_t_10, ((PyObject *)__pyx_t_11), ((PyObject *)__pyx_t_9)); if (unlikely(!__pyx_t_13)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3182; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_13);
  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
  __Pyx_DECREF(((PyObject *)__pyx_t_11)); __pyx_t_11 = 0;
  __Pyx_DECREF(((PyObject *)__pyx_t_9)); __pyx_t_9 = 0;
  if (!(likely(((__pyx_t_13) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_13, __pyx_ptype_5numpy_ndarray))))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3182; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_t_14 = ((PyArrayObject *)__pyx_t_13);
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    __Pyx_SafeReleaseBuffer(&__pyx_bstruct_lindexer);
    __pyx_t_15 = __Pyx_GetBufferAndValidate(&__pyx_bstruct_lindexer, (PyObject*)__pyx_t_14, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack);
    if (unlikely(__pyx_t_15 < 0)) {
      PyErr_Fetch(&__pyx_t_16, &__pyx_t_17, &__pyx_t_18);
      if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_lindexer, (PyObject*)__pyx_v_lindexer, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) {
        Py_XDECREF(__pyx_t_16); Py_XDECREF(__pyx_t_17); Py_XDECREF(__pyx_t_18);
        __Pyx_RaiseBufferFallbackError();
      } else {
        PyErr_Restore(__pyx_t_16, __pyx_t_17, __pyx_t_18);
      }
    }
    __pyx_bstride_0_lindexer = __pyx_bstruct_lindexer.strides[0];
    __pyx_bshape_0_lindexer = __pyx_bstruct_lindexer.shape[0];
    if (unlikely(__pyx_t_15 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3182; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  }
  __pyx_t_14 = 0;
  __pyx_v_lindexer = ((PyArrayObject *)__pyx_t_13);
  __pyx_t_13 = 0;

  /* "pandas/src/generated.pyx":3183
 * 
 *     lindexer = np.empty(count, dtype=np.int64)
 *     rindexer = np.empty(count, dtype=np.int64)             # <<<<<<<<<<<<<<
 *     result = np.empty(count, dtype=np.float64)
 * 
 */
  __pyx_t_13 = __Pyx_GetName(__pyx_m, __pyx_n_s__np); if (unlikely(!__pyx_t_13)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3183; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_13);
  __pyx_t_9 = PyObject_GetAttr(__pyx_t_13, __pyx_n_s__empty); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3183; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_9);
  __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
  __pyx_t_13 = PyInt_FromSsize_t(__pyx_v_count); if (unlikely(!__pyx_t_13)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3183; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_13);
  __pyx_t_11 = PyTuple_New(1); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3183; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_11));
  PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_13);
  __Pyx_GIVEREF(__pyx_t_13);
  __pyx_t_13 = 0;
  __pyx_t_13 = PyDict_New(); if (unlikely(!__pyx_t_13)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3183; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_13));
  __pyx_t_10 = __Pyx_GetName(__pyx_m, __pyx_n_s__np); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3183; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_10);
  __pyx_t_12 = PyObject_GetAttr(__pyx_t_10, __pyx_n_s__int64); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3183; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_12);
  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
  if (PyDict_SetItem(__pyx_t_13, ((PyObject *)__pyx_n_s__dtype), __pyx_t_12) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3183; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
  __pyx_t_12 = PyEval_CallObjectWithKeywords(__pyx_t_9, ((PyObject *)__pyx_t_11), ((PyObject *)__pyx_t_13)); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3183; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_12);
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  __Pyx_DECREF(((PyObject *)__pyx_t_11)); __pyx_t_11 = 0;
  __Pyx_DECREF(((PyObject *)__pyx_t_13)); __pyx_t_13 = 0;
  if (!(likely(((__pyx_t_12) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_12, __pyx_ptype_5numpy_ndarray))))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3183; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_t_14 = ((PyArrayObject *)__pyx_t_12);
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    __Pyx_SafeReleaseBuffer(&__pyx_bstruct_rindexer);
    __pyx_t_15 = __Pyx_GetBufferAndValidate(&__pyx_bstruct_rindexer, (PyObject*)__pyx_t_14, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack);
    if (unlikely(__pyx_t_15 < 0)) {
      PyErr_Fetch(&__pyx_t_18, &__pyx_t_17, &__pyx_t_16);
      if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_rindexer, (PyObject*)__pyx_v_rindexer, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) {
        Py_XDECREF(__pyx_t_18); Py_XDECREF(__pyx_t_17); Py_XDECREF(__pyx_t_16);
        __Pyx_RaiseBufferFallbackError();
      } else {
        PyErr_Restore(__pyx_t_18, __pyx_t_17, __pyx_t_16);
      }
    }
    __pyx_bstride_0_rindexer = __pyx_bstruct_rindexer.strides[0];
    __pyx_bshape_0_rindexer = __pyx_bstruct_rindexer.shape[0];
    if (unlikely(__pyx_t_15 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3183; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  }
  __pyx_t_14 = 0;
  __pyx_v_rindexer = ((PyArrayObject *)__pyx_t_12);
  __pyx_t_12 = 0;

  /* "pandas/src/generated.pyx":3184
 *     lindexer = np.empty(count, dtype=np.int64)
 *     rindexer = np.empty(count, dtype=np.int64)
 *     result = np.empty(count, dtype=np.float64)             # <<<<<<<<<<<<<<
 * 
 *     # do it again, but populate the indexers / result
 */
  __pyx_t_12 = __Pyx_GetName(__pyx_m, __pyx_n_s__np); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3184; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_12);
  __pyx_t_13 = PyObject_GetAttr(__pyx_t_12, __pyx_n_s__empty); if (unlikely(!__pyx_t_13)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3184; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_13);
  __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
  __pyx_t_12 = PyInt_FromSsize_t(__pyx_v_count); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3184; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_12);
  __pyx_t_11 = PyTuple_New(1); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3184; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_11));
  PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_12);
  __Pyx_GIVEREF(__pyx_t_12);
  __pyx_t_12 = 0;
  __pyx_t_12 = PyDict_New(); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3184; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_12));
  __pyx_t_9 = __Pyx_GetName(__pyx_m, __pyx_n_s__np); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3184; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_9);
  __pyx_t_10 = PyObject_GetAttr(__pyx_t_9, __pyx_n_s__float64); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3184; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_10);
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  if (PyDict_SetItem(__pyx_t_12, ((PyObject *)__pyx_n_s__dtype), __pyx_t_10) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3184; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
  __pyx_t_10 = PyEval_CallObjectWithKeywords(__pyx_t_13, ((PyObject *)__pyx_t_11), ((PyObject *)__pyx_t_12)); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3184; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_10);
  __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
  __Pyx_DECREF(((PyObject *)__pyx_t_11)); __pyx_t_11 = 0;
  __Pyx_DECREF(((PyObject *)__pyx_t_12)); __pyx_t_12 = 0;
  if (!(likely(((__pyx_t_10) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_10, __pyx_ptype_5numpy_ndarray))))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3184; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_t_19 = ((PyArrayObject *)__pyx_t_10);
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    __Pyx_SafeReleaseBuffer(&__pyx_bstruct_result);
    __pyx_t_15 = __Pyx_GetBufferAndValidate(&__pyx_bstruct_result, (PyObject*)__pyx_t_19, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack);
    if (unlikely(__pyx_t_15 < 0)) {
      PyErr_Fetch(&__pyx_t_16, &__pyx_t_17, &__pyx_t_18);
      if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_result, (PyObject*)__pyx_v_result, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) {
        Py_XDECREF(__pyx_t_16); Py_XDECREF(__pyx_t_17); Py_XDECREF(__pyx_t_18);
        __Pyx_RaiseBufferFallbackError();
      } else {
        PyErr_Restore(__pyx_t_16, __pyx_t_17, __pyx_t_18);
      }
    }
    __pyx_bstride_0_result = __pyx_bstruct_result.strides[0];
    __pyx_bshape_0_result = __pyx_bstruct_result.shape[0];
    if (unlikely(__pyx_t_15 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3184; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  }
  __pyx_t_19 = 0;
  __pyx_v_result = ((PyArrayObject *)__pyx_t_10);
  __pyx_t_10 = 0;

  /* "pandas/src/generated.pyx":3188
 *     # do it again, but populate the indexers / result
 * 
 *     i = 0             # <<<<<<<<<<<<<<
 *     j = 0
 *     count = 0
 */
  __pyx_v_i = 0;

  /* "pandas/src/generated.pyx":3189
 * 
 *     i = 0
 *     j = 0             # <<<<<<<<<<<<<<
 *     count = 0
 *     if nleft == 0:
 */
  __pyx_v_j = 0;

  /* "pandas/src/generated.pyx":3190
 *     i = 0
 *     j = 0
 *     count = 0             # <<<<<<<<<<<<<<
 *     if nleft == 0:
 *         for j in range(nright):
 */
  __pyx_v_count = 0;

  /* "pandas/src/generated.pyx":3191
 *     j = 0
 *     count = 0
 *     if nleft == 0:             # <<<<<<<<<<<<<<
 *         for j in range(nright):
 *             lindexer[j] = -1
 */
  __pyx_t_6 = (__pyx_v_nleft == 0);
  if (__pyx_t_6) {

    /* "pandas/src/generated.pyx":3192
 *     count = 0
 *     if nleft == 0:
 *         for j in range(nright):             # <<<<<<<<<<<<<<
 *             lindexer[j] = -1
 *             rindexer[j] = j
 */
    __pyx_t_20 = __pyx_v_nright;
    for (__pyx_t_21 = 0; __pyx_t_21 < __pyx_t_20; __pyx_t_21+=1) {
      __pyx_v_j = __pyx_t_21;

      /* "pandas/src/generated.pyx":3193
 *     if nleft == 0:
 *         for j in range(nright):
 *             lindexer[j] = -1             # <<<<<<<<<<<<<<
 *             rindexer[j] = j
 *             result[j] = right[j]
 */
      __pyx_t_22 = __pyx_v_j;
      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_bstruct_lindexer.buf, __pyx_t_22, __pyx_bstride_0_lindexer) = -1;

      /* "pandas/src/generated.pyx":3194
 *         for j in range(nright):
 *             lindexer[j] = -1
 *             rindexer[j] = j             # <<<<<<<<<<<<<<
 *             result[j] = right[j]
 *     elif nright == 0:
 */
      __pyx_t_23 = __pyx_v_j;
      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_bstruct_rindexer.buf, __pyx_t_23, __pyx_bstride_0_rindexer) = __pyx_v_j;

      /* "pandas/src/generated.pyx":3195
 *             lindexer[j] = -1
 *             rindexer[j] = j
 *             result[j] = right[j]             # <<<<<<<<<<<<<<
 *     elif nright == 0:
 *         for i in range(nright):
 */
      __pyx_t_24 = __pyx_v_j;
      __pyx_t_25 = __pyx_v_j;
      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_result.buf, __pyx_t_25, __pyx_bstride_0_result) = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_right.buf, __pyx_t_24, __pyx_bstride_0_right));
    }
    goto __pyx_L16;
  }

  /* "pandas/src/generated.pyx":3196
 *             rindexer[j] = j
 *             result[j] = right[j]
 *     elif nright == 0:             # <<<<<<<<<<<<<<
 *         for i in range(nright):
 *             lindexer[i] = i
 */
  __pyx_t_6 = (__pyx_v_nright == 0);
  if (__pyx_t_6) {

    /* "pandas/src/generated.pyx":3197
 *             result[j] = right[j]
 *     elif nright == 0:
 *         for i in range(nright):             # <<<<<<<<<<<<<<
 *             lindexer[i] = i
 *             rindexer[i] = -1
 */
    __pyx_t_20 = __pyx_v_nright;
    for (__pyx_t_21 = 0; __pyx_t_21 < __pyx_t_20; __pyx_t_21+=1) {
      __pyx_v_i = __pyx_t_21;

      /* "pandas/src/generated.pyx":3198
 *     elif nright == 0:
 *         for i in range(nright):
 *             lindexer[i] = i             # <<<<<<<<<<<<<<
 *             rindexer[i] = -1
 *             result[i] = left[i]
 */
      __pyx_t_26 = __pyx_v_i;
      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_bstruct_lindexer.buf, __pyx_t_26, __pyx_bstride_0_lindexer) = __pyx_v_i;

      /* "pandas/src/generated.pyx":3199
 *         for i in range(nright):
 *             lindexer[i] = i
 *             rindexer[i] = -1             # <<<<<<<<<<<<<<
 *             result[i] = left[i]
 *     else:
 */
      __pyx_t_27 = __pyx_v_i;
      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_bstruct_rindexer.buf, __pyx_t_27, __pyx_bstride_0_rindexer) = -1;

      /* "pandas/src/generated.pyx":3200
 *             lindexer[i] = i
 *             rindexer[i] = -1
 *             result[i] = left[i]             # <<<<<<<<<<<<<<
 *     else:
 *         while True:
 */
      __pyx_t_28 = __pyx_v_i;
      __pyx_t_29 = __pyx_v_i;
      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_result.buf, __pyx_t_29, __pyx_bstride_0_result) = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_left.buf, __pyx_t_28, __pyx_bstride_0_left));
    }
    goto __pyx_L16;
  }
  /*else*/ {

    /* "pandas/src/generated.pyx":3202
 *             result[i] = left[i]
 *     else:
 *         while True:             # <<<<<<<<<<<<<<
 *             if i == nleft:
 *                 while j < nright:
 */
    while (1) {
      if (!1) break;

      /* "pandas/src/generated.pyx":3203
 *     else:
 *         while True:
 *             if i == nleft:             # <<<<<<<<<<<<<<
 *                 while j < nright:
 *                     lindexer[count] = -1
 */
      __pyx_t_6 = (__pyx_v_i == __pyx_v_nleft);
      if (__pyx_t_6) {

        /* "pandas/src/generated.pyx":3204
 *         while True:
 *             if i == nleft:
 *                 while j < nright:             # <<<<<<<<<<<<<<
 *                     lindexer[count] = -1
 *                     rindexer[count] = j
 */
        while (1) {
          __pyx_t_6 = (__pyx_v_j < __pyx_v_nright);
          if (!__pyx_t_6) break;

          /* "pandas/src/generated.pyx":3205
 *             if i == nleft:
 *                 while j < nright:
 *                     lindexer[count] = -1             # <<<<<<<<<<<<<<
 *                     rindexer[count] = j
 *                     result[count] = right[j]
 */
          __pyx_t_20 = __pyx_v_count;
          *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_bstruct_lindexer.buf, __pyx_t_20, __pyx_bstride_0_lindexer) = -1;

          /* "pandas/src/generated.pyx":3206
 *                 while j < nright:
 *                     lindexer[count] = -1
 *                     rindexer[count] = j             # <<<<<<<<<<<<<<
 *                     result[count] = right[j]
 *                     count += 1
 */
          __pyx_t_21 = __pyx_v_count;
          *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_bstruct_rindexer.buf, __pyx_t_21, __pyx_bstride_0_rindexer) = __pyx_v_j;

          /* "pandas/src/generated.pyx":3207
 *                     lindexer[count] = -1
 *                     rindexer[count] = j
 *                     result[count] = right[j]             # <<<<<<<<<<<<<<
 *                     count += 1
 *                     j += 1
 */
          __pyx_t_30 = __pyx_v_j;
          __pyx_t_31 = __pyx_v_count;
          *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_result.buf, __pyx_t_31, __pyx_bstride_0_result) = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_right.buf, __pyx_t_30, __pyx_bstride_0_right));

          /* "pandas/src/generated.pyx":3208
 *                     rindexer[count] = j
 *                     result[count] = right[j]
 *                     count += 1             # <<<<<<<<<<<<<<
 *                     j += 1
 *                 break
 */
          __pyx_v_count = (__pyx_v_count + 1);

          /* "pandas/src/generated.pyx":3209
 *                     result[count] = right[j]
 *                     count += 1
 *                     j += 1             # <<<<<<<<<<<<<<
 *                 break
 *             if j == nright:
 */
          __pyx_v_j = (__pyx_v_j + 1);
        }

        /* "pandas/src/generated.pyx":3210
 *                     count += 1
 *                     j += 1
 *                 break             # <<<<<<<<<<<<<<
 *             if j == nright:
 *                 while i < nleft:
 */
        goto __pyx_L22_break;
        goto __pyx_L23;
      }
      __pyx_L23:;

      /* "pandas/src/generated.pyx":3211
 *                     j += 1
 *                 break
 *             if j == nright:             # <<<<<<<<<<<<<<
 *                 while i < nleft:
 *                     lindexer[count] = i
 */
      __pyx_t_6 = (__pyx_v_j == __pyx_v_nright);
      if (__pyx_t_6) {

        /* "pandas/src/generated.pyx":3212
 *                 break
 *             if j == nright:
 *                 while i < nleft:             # <<<<<<<<<<<<<<
 *                     lindexer[count] = i
 *                     rindexer[count] = -1
 */
        while (1) {
          __pyx_t_6 = (__pyx_v_i < __pyx_v_nleft);
          if (!__pyx_t_6) break;

          /* "pandas/src/generated.pyx":3213
 *             if j == nright:
 *                 while i < nleft:
 *                     lindexer[count] = i             # <<<<<<<<<<<<<<
 *                     rindexer[count] = -1
 *                     result[count] = left[i]
 */
          __pyx_t_32 = __pyx_v_count;
          *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_bstruct_lindexer.buf, __pyx_t_32, __pyx_bstride_0_lindexer) = __pyx_v_i;

          /* "pandas/src/generated.pyx":3214
 *                 while i < nleft:
 *                     lindexer[count] = i
 *                     rindexer[count] = -1             # <<<<<<<<<<<<<<
 *                     result[count] = left[i]
 *                     count += 1
 */
          __pyx_t_33 = __pyx_v_count;
          *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_bstruct_rindexer.buf, __pyx_t_33, __pyx_bstride_0_rindexer) = -1;

          /* "pandas/src/generated.pyx":3215
 *                     lindexer[count] = i
 *                     rindexer[count] = -1
 *                     result[count] = left[i]             # <<<<<<<<<<<<<<
 *                     count += 1
 *                     i += 1
 */
          __pyx_t_34 = __pyx_v_i;
          __pyx_t_35 = __pyx_v_count;
          *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_result.buf, __pyx_t_35, __pyx_bstride_0_result) = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_left.buf, __pyx_t_34, __pyx_bstride_0_left));

          /* "pandas/src/generated.pyx":3216
 *                     rindexer[count] = -1
 *                     result[count] = left[i]
 *                     count += 1             # <<<<<<<<<<<<<<
 *                     i += 1
 *                 break
 */
          __pyx_v_count = (__pyx_v_count + 1);

          /* "pandas/src/generated.pyx":3217
 *                     result[count] = left[i]
 *                     count += 1
 *                     i += 1             # <<<<<<<<<<<<<<
 *                 break
 * 
 */
          __pyx_v_i = (__pyx_v_i + 1);
        }

        /* "pandas/src/generated.pyx":3218
 *                     count += 1
 *                     i += 1
 *                 break             # <<<<<<<<<<<<<<
 * 
 *             lval = left[i]
 */
        goto __pyx_L22_break;
        goto __pyx_L26;
      }
      __pyx_L26:;

      /* "pandas/src/generated.pyx":3220
 *                 break
 * 
 *             lval = left[i]             # <<<<<<<<<<<<<<
 *             rval = right[j]
 * 
 */
      __pyx_t_36 = __pyx_v_i;
      __pyx_v_lval = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_left.buf, __pyx_t_36, __pyx_bstride_0_left));

      /* "pandas/src/generated.pyx":3221
 * 
 *             lval = left[i]
 *             rval = right[j]             # <<<<<<<<<<<<<<
 * 
 *             if lval == rval:
 */
      __pyx_t_37 = __pyx_v_j;
      __pyx_v_rval = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_right.buf, __pyx_t_37, __pyx_bstride_0_right));

      /* "pandas/src/generated.pyx":3223
 *             rval = right[j]
 * 
 *             if lval == rval:             # <<<<<<<<<<<<<<
 *                 lindexer[count] = i
 *                 rindexer[count] = j
 */
      __pyx_t_6 = (__pyx_v_lval == __pyx_v_rval);
      if (__pyx_t_6) {

        /* "pandas/src/generated.pyx":3224
 * 
 *             if lval == rval:
 *                 lindexer[count] = i             # <<<<<<<<<<<<<<
 *                 rindexer[count] = j
 *                 result[count] = lval
 */
        __pyx_t_38 = __pyx_v_count;
        *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_bstruct_lindexer.buf, __pyx_t_38, __pyx_bstride_0_lindexer) = __pyx_v_i;

        /* "pandas/src/generated.pyx":3225
 *             if lval == rval:
 *                 lindexer[count] = i
 *                 rindexer[count] = j             # <<<<<<<<<<<<<<
 *                 result[count] = lval
 *                 count += 1
 */
        __pyx_t_39 = __pyx_v_count;
        *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_bstruct_rindexer.buf, __pyx_t_39, __pyx_bstride_0_rindexer) = __pyx_v_j;

        /* "pandas/src/generated.pyx":3226
 *                 lindexer[count] = i
 *                 rindexer[count] = j
 *                 result[count] = lval             # <<<<<<<<<<<<<<
 *                 count += 1
 *                 if i < nleft - 1:
 */
        __pyx_t_40 = __pyx_v_count;
        *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_result.buf, __pyx_t_40, __pyx_bstride_0_result) = __pyx_v_lval;

        /* "pandas/src/generated.pyx":3227
 *                 rindexer[count] = j
 *                 result[count] = lval
 *                 count += 1             # <<<<<<<<<<<<<<
 *                 if i < nleft - 1:
 *                     if j < nright - 1 and right[j + 1] == rval:
 */
        __pyx_v_count = (__pyx_v_count + 1);

        /* "pandas/src/generated.pyx":3228
 *                 result[count] = lval
 *                 count += 1
 *                 if i < nleft - 1:             # <<<<<<<<<<<<<<
 *                     if j < nright - 1 and right[j + 1] == rval:
 *                         j += 1
 */
        __pyx_t_6 = (__pyx_v_i < (__pyx_v_nleft - 1));
        if (__pyx_t_6) {

          /* "pandas/src/generated.pyx":3229
 *                 count += 1
 *                 if i < nleft - 1:
 *                     if j < nright - 1 and right[j + 1] == rval:             # <<<<<<<<<<<<<<
 *                         j += 1
 *                     else:
 */
          __pyx_t_6 = (__pyx_v_j < (__pyx_v_nright - 1));
          if (__pyx_t_6) {
            __pyx_t_41 = (__pyx_v_j + 1);
            __pyx_t_2 = ((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_right.buf, __pyx_t_41, __pyx_bstride_0_right)) == __pyx_v_rval);
            __pyx_t_5 = __pyx_t_2;
          } else {
            __pyx_t_5 = __pyx_t_6;
          }
          if (__pyx_t_5) {

            /* "pandas/src/generated.pyx":3230
 *                 if i < nleft - 1:
 *                     if j < nright - 1 and right[j + 1] == rval:
 *                         j += 1             # <<<<<<<<<<<<<<
 *                     else:
 *                         i += 1
 */
            __pyx_v_j = (__pyx_v_j + 1);
            goto __pyx_L31;
          }
          /*else*/ {

            /* "pandas/src/generated.pyx":3232
 *                         j += 1
 *                     else:
 *                         i += 1             # <<<<<<<<<<<<<<
 *                         if left[i] != rval:
 *                             j += 1
 */
            __pyx_v_i = (__pyx_v_i + 1);

            /* "pandas/src/generated.pyx":3233
 *                     else:
 *                         i += 1
 *                         if left[i] != rval:             # <<<<<<<<<<<<<<
 *                             j += 1
 *                 elif j < nright - 1:
 */
            __pyx_t_42 = __pyx_v_i;
            __pyx_t_5 = ((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_left.buf, __pyx_t_42, __pyx_bstride_0_left)) != __pyx_v_rval);
            if (__pyx_t_5) {

              /* "pandas/src/generated.pyx":3234
 *                         i += 1
 *                         if left[i] != rval:
 *                             j += 1             # <<<<<<<<<<<<<<
 *                 elif j < nright - 1:
 *                     j += 1
 */
              __pyx_v_j = (__pyx_v_j + 1);
              goto __pyx_L32;
            }
            __pyx_L32:;
          }
          __pyx_L31:;
          goto __pyx_L30;
        }

        /* "pandas/src/generated.pyx":3235
 *                         if left[i] != rval:
 *                             j += 1
 *                 elif j < nright - 1:             # <<<<<<<<<<<<<<
 *                     j += 1
 *                     if lval != right[j]:
 */
        __pyx_t_5 = (__pyx_v_j < (__pyx_v_nright - 1));
        if (__pyx_t_5) {

          /* "pandas/src/generated.pyx":3236
 *                             j += 1
 *                 elif j < nright - 1:
 *                     j += 1             # <<<<<<<<<<<<<<
 *                     if lval != right[j]:
 *                         i += 1
 */
          __pyx_v_j = (__pyx_v_j + 1);

          /* "pandas/src/generated.pyx":3237
 *                 elif j < nright - 1:
 *                     j += 1
 *                     if lval != right[j]:             # <<<<<<<<<<<<<<
 *                         i += 1
 *                 else:
 */
          __pyx_t_43 = __pyx_v_j;
          __pyx_t_5 = (__pyx_v_lval != (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_right.buf, __pyx_t_43, __pyx_bstride_0_right)));
          if (__pyx_t_5) {

            /* "pandas/src/generated.pyx":3238
 *                     j += 1
 *                     if lval != right[j]:
 *                         i += 1             # <<<<<<<<<<<<<<
 *                 else:
 *                     # end of the road
 */
            __pyx_v_i = (__pyx_v_i + 1);
            goto __pyx_L33;
          }
          __pyx_L33:;
          goto __pyx_L30;
        }
        /*else*/ {

          /* "pandas/src/generated.pyx":3241
 *                 else:
 *                     # end of the road
 *                     break             # <<<<<<<<<<<<<<
 *             elif lval < rval:
 *                 lindexer[count] = i
 */
          goto __pyx_L22_break;
        }
        __pyx_L30:;
        goto __pyx_L29;
      }

      /* "pandas/src/generated.pyx":3242
 *                     # end of the road
 *                     break
 *             elif lval < rval:             # <<<<<<<<<<<<<<
 *                 lindexer[count] = i
 *                 rindexer[count] = -1
 */
      __pyx_t_5 = (__pyx_v_lval < __pyx_v_rval);
      if (__pyx_t_5) {

        /* "pandas/src/generated.pyx":3243
 *                     break
 *             elif lval < rval:
 *                 lindexer[count] = i             # <<<<<<<<<<<<<<
 *                 rindexer[count] = -1
 *                 result[count] = lval
 */
        __pyx_t_44 = __pyx_v_count;
        *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_bstruct_lindexer.buf, __pyx_t_44, __pyx_bstride_0_lindexer) = __pyx_v_i;

        /* "pandas/src/generated.pyx":3244
 *             elif lval < rval:
 *                 lindexer[count] = i
 *                 rindexer[count] = -1             # <<<<<<<<<<<<<<
 *                 result[count] = lval
 *                 count += 1
 */
        __pyx_t_45 = __pyx_v_count;
        *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_bstruct_rindexer.buf, __pyx_t_45, __pyx_bstride_0_rindexer) = -1;

        /* "pandas/src/generated.pyx":3245
 *                 lindexer[count] = i
 *                 rindexer[count] = -1
 *                 result[count] = lval             # <<<<<<<<<<<<<<
 *                 count += 1
 *                 i += 1
 */
        __pyx_t_46 = __pyx_v_count;
        *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_result.buf, __pyx_t_46, __pyx_bstride_0_result) = __pyx_v_lval;

        /* "pandas/src/generated.pyx":3246
 *                 rindexer[count] = -1
 *                 result[count] = lval
 *                 count += 1             # <<<<<<<<<<<<<<
 *                 i += 1
 *             else:
 */
        __pyx_v_count = (__pyx_v_count + 1);

        /* "pandas/src/generated.pyx":3247
 *                 result[count] = lval
 *                 count += 1
 *                 i += 1             # <<<<<<<<<<<<<<
 *             else:
 *                 lindexer[count] = -1
 */
        __pyx_v_i = (__pyx_v_i + 1);
        goto __pyx_L29;
      }
      /*else*/ {

        /* "pandas/src/generated.pyx":3249
 *                 i += 1
 *             else:
 *                 lindexer[count] = -1             # <<<<<<<<<<<<<<
 *                 rindexer[count] = j
 *                 result[count] = rval
 */
        __pyx_t_47 = __pyx_v_count;
        *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_bstruct_lindexer.buf, __pyx_t_47, __pyx_bstride_0_lindexer) = -1;

        /* "pandas/src/generated.pyx":3250
 *             else:
 *                 lindexer[count] = -1
 *                 rindexer[count] = j             # <<<<<<<<<<<<<<
 *                 result[count] = rval
 *                 count += 1
 */
        __pyx_t_48 = __pyx_v_count;
        *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_bstruct_rindexer.buf, __pyx_t_48, __pyx_bstride_0_rindexer) = __pyx_v_j;

        /* "pandas/src/generated.pyx":3251
 *                 lindexer[count] = -1
 *                 rindexer[count] = j
 *                 result[count] = rval             # <<<<<<<<<<<<<<
 *                 count += 1
 *                 j += 1
 */
        __pyx_t_49 = __pyx_v_count;
        *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_result.buf, __pyx_t_49, __pyx_bstride_0_result) = __pyx_v_rval;

        /* "pandas/src/generated.pyx":3252
 *                 rindexer[count] = j
 *                 result[count] = rval
 *                 count += 1             # <<<<<<<<<<<<<<
 *                 j += 1
 * 
 */
        __pyx_v_count = (__pyx_v_count + 1);

        /* "pandas/src/generated.pyx":3253
 *                 result[count] = rval
 *                 count += 1
 *                 j += 1             # <<<<<<<<<<<<<<
 * 
 *     return result, lindexer, rindexer
 */
        __pyx_v_j = (__pyx_v_j + 1);
      }
      __pyx_L29:;
    }
    __pyx_L22_break:;
  }
  __pyx_L16:;

  /* "pandas/src/generated.pyx":3255
 *                 j += 1
 * 
 *     return result, lindexer, rindexer             # <<<<<<<<<<<<<<
 * 
 * @cython.wraparound(False)
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_10 = PyTuple_New(3); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3255; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_10));
  __Pyx_INCREF(((PyObject *)__pyx_v_result));
  PyTuple_SET_ITEM(__pyx_t_10, 0, ((PyObject *)__pyx_v_result));
  __Pyx_GIVEREF(((PyObject *)__pyx_v_result));
  __Pyx_INCREF(((PyObject *)__pyx_v_lindexer));
  PyTuple_SET_ITEM(__pyx_t_10, 1, ((PyObject *)__pyx_v_lindexer));
  __Pyx_GIVEREF(((PyObject *)__pyx_v_lindexer));
  __Pyx_INCREF(((PyObject *)__pyx_v_rindexer));
  PyTuple_SET_ITEM(__pyx_t_10, 2, ((PyObject *)__pyx_v_rindexer));
  __Pyx_GIVEREF(((PyObject *)__pyx_v_rindexer));
  __pyx_r = ((PyObject *)__pyx_t_10);
  __pyx_t_10 = 0;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_9);
  __Pyx_XDECREF(__pyx_t_10);
  __Pyx_XDECREF(__pyx_t_11);
  __Pyx_XDECREF(__pyx_t_12);
  __Pyx_XDECREF(__pyx_t_13);
  { PyObject *__pyx_type, *__pyx_value, *__pyx_tb;
    __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);
    __Pyx_SafeReleaseBuffer(&__pyx_bstruct_result);
    __Pyx_SafeReleaseBuffer(&__pyx_bstruct_right);
    __Pyx_SafeReleaseBuffer(&__pyx_bstruct_lindexer);
    __Pyx_SafeReleaseBuffer(&__pyx_bstruct_rindexer);
    __Pyx_SafeReleaseBuffer(&__pyx_bstruct_left);
  __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);}
  __Pyx_AddTraceback("pandas._algos.outer_join_indexer_float64", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  goto __pyx_L2;
  __pyx_L0:;
  __Pyx_SafeReleaseBuffer(&__pyx_bstruct_result);
  __Pyx_SafeReleaseBuffer(&__pyx_bstruct_right);
  __Pyx_SafeReleaseBuffer(&__pyx_bstruct_lindexer);
  __Pyx_SafeReleaseBuffer(&__pyx_bstruct_rindexer);
  __Pyx_SafeReleaseBuffer(&__pyx_bstruct_left);
  __pyx_L2:;
  __Pyx_XDECREF((PyObject *)__pyx_v_lindexer);
  __Pyx_XDECREF((PyObject *)__pyx_v_rindexer);
  __Pyx_XDECREF((PyObject *)__pyx_v_result);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "pandas/src/generated.pyx":3259
 * @cython.wraparound(False)
 * @cython.boundscheck(False)
 * def outer_join_indexer_object(ndarray[object] left,             # <<<<<<<<<<<<<<
 *                                 ndarray[object] right):
 *     cdef:
 */

static PyObject *__pyx_pf_6pandas_6_algos_84outer_join_indexer_object(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_6pandas_6_algos_84outer_join_indexer_object = {__Pyx_NAMESTR("outer_join_indexer_object"), (PyCFunction)__pyx_pf_6pandas_6_algos_84outer_join_indexer_object, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(0)};
static PyObject *__pyx_pf_6pandas_6_algos_84outer_join_indexer_object(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyArrayObject *__pyx_v_left = 0;
  PyArrayObject *__pyx_v_right = 0;
  Py_ssize_t __pyx_v_i;
  Py_ssize_t __pyx_v_j;
  Py_ssize_t __pyx_v_nright;
  Py_ssize_t __pyx_v_nleft;
  Py_ssize_t __pyx_v_count;
  PyObject *__pyx_v_lval = 0;
  PyObject *__pyx_v_rval = 0;
  PyArrayObject *__pyx_v_lindexer = 0;
  PyArrayObject *__pyx_v_rindexer = 0;
  PyArrayObject *__pyx_v_result = 0;
  Py_buffer __pyx_bstruct_result;
  Py_ssize_t __pyx_bstride_0_result = 0;
  Py_ssize_t __pyx_bshape_0_result = 0;
  Py_buffer __pyx_bstruct_right;
  Py_ssize_t __pyx_bstride_0_right = 0;
  Py_ssize_t __pyx_bshape_0_right = 0;
  Py_buffer __pyx_bstruct_lindexer;
  Py_ssize_t __pyx_bstride_0_lindexer = 0;
  Py_ssize_t __pyx_bshape_0_lindexer = 0;
  Py_buffer __pyx_bstruct_rindexer;
  Py_ssize_t __pyx_bstride_0_rindexer = 0;
  Py_ssize_t __pyx_bshape_0_rindexer = 0;
  Py_buffer __pyx_bstruct_left;
  Py_ssize_t __pyx_bstride_0_left = 0;
  Py_ssize_t __pyx_bshape_0_left = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  Py_ssize_t __pyx_t_1;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  Py_ssize_t __pyx_t_4;
  Py_ssize_t __pyx_t_5;
  PyObject *__pyx_t_6 = NULL;
  int __pyx_t_7;
  int __pyx_t_8;
  Py_ssize_t __pyx_t_9;
  Py_ssize_t __pyx_t_10;
  PyObject *__pyx_t_11 = NULL;
  PyObject *__pyx_t_12 = NULL;
  PyObject *__pyx_t_13 = NULL;
  PyArrayObject *__pyx_t_14 = NULL;
  int __pyx_t_15;
  PyObject *__pyx_t_16 = NULL;
  PyObject *__pyx_t_17 = NULL;
  PyObject *__pyx_t_18 = NULL;
  PyArrayObject *__pyx_t_19 = NULL;
  Py_ssize_t __pyx_t_20;
  Py_ssize_t __pyx_t_21;
  Py_ssize_t __pyx_t_22;
  Py_ssize_t __pyx_t_23;
  Py_ssize_t __pyx_t_24;
  Py_ssize_t __pyx_t_25;
  PyObject **__pyx_t_26;
  Py_ssize_t __pyx_t_27;
  Py_ssize_t __pyx_t_28;
  Py_ssize_t __pyx_t_29;
  Py_ssize_t __pyx_t_30;
  Py_ssize_t __pyx_t_31;
  Py_ssize_t __pyx_t_32;
  Py_ssize_t __pyx_t_33;
  Py_ssize_t __pyx_t_34;
  Py_ssize_t __pyx_t_35;
  Py_ssize_t __pyx_t_36;
  Py_ssize_t __pyx_t_37;
  Py_ssize_t __pyx_t_38;
  Py_ssize_t __pyx_t_39;
  Py_ssize_t __pyx_t_40;
  Py_ssize_t __pyx_t_41;
  Py_ssize_t __pyx_t_42;
  Py_ssize_t __pyx_t_43;
  Py_ssize_t __pyx_t_44;
  Py_ssize_t __pyx_t_45;
  Py_ssize_t __pyx_t_46;
  Py_ssize_t __pyx_t_47;
  Py_ssize_t __pyx_t_48;
  Py_ssize_t __pyx_t_49;
  Py_ssize_t __pyx_t_50;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__left,&__pyx_n_s__right,0};
  __Pyx_RefNannySetupContext("outer_join_indexer_object");
  __pyx_self = __pyx_self;
  {
    PyObject* values[2] = {0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  0:
        values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__left);
        if (likely(values[0])) kw_args--;
        else goto __pyx_L5_argtuple_error;
        case  1:
        values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__right);
        if (likely(values[1])) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("outer_join_indexer_object", 1, 2, 2, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3259; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "outer_join_indexer_object") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3259; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
    }
    __pyx_v_left = ((PyArrayObject *)values[0]);
    __pyx_v_right = ((PyArrayObject *)values[1]);
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("outer_join_indexer_object", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3259; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("pandas._algos.outer_join_indexer_object", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_bstruct_lindexer.buf = NULL;
  __pyx_bstruct_rindexer.buf = NULL;
  __pyx_bstruct_result.buf = NULL;
  __pyx_bstruct_left.buf = NULL;
  __pyx_bstruct_right.buf = NULL;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_left), __pyx_ptype_5numpy_ndarray, 1, "left", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3259; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_right), __pyx_ptype_5numpy_ndarray, 1, "right", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3260; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_left, (PyObject*)__pyx_v_left, &__Pyx_TypeInfo_object, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3259; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  }
  __pyx_bstride_0_left = __pyx_bstruct_left.strides[0];
  __pyx_bshape_0_left = __pyx_bstruct_left.shape[0];
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_right, (PyObject*)__pyx_v_right, &__Pyx_TypeInfo_object, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3259; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  }
  __pyx_bstride_0_right = __pyx_bstruct_right.strides[0];
  __pyx_bshape_0_right = __pyx_bstruct_right.shape[0];

  /* "pandas/src/generated.pyx":3267
 *         ndarray[object] result
 * 
 *     nleft = len(left)             # <<<<<<<<<<<<<<
 *     nright = len(right)
 * 
 */
  __pyx_t_1 = PyObject_Length(((PyObject *)__pyx_v_left)); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3267; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_v_nleft = __pyx_t_1;

  /* "pandas/src/generated.pyx":3268
 * 
 *     nleft = len(left)
 *     nright = len(right)             # <<<<<<<<<<<<<<
 * 
 *     i = 0
 */
  __pyx_t_1 = PyObject_Length(((PyObject *)__pyx_v_right)); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3268; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_v_nright = __pyx_t_1;

  /* "pandas/src/generated.pyx":3270
 *     nright = len(right)
 * 
 *     i = 0             # <<<<<<<<<<<<<<
 *     j = 0
 *     count = 0
 */
  __pyx_v_i = 0;

  /* "pandas/src/generated.pyx":3271
 * 
 *     i = 0
 *     j = 0             # <<<<<<<<<<<<<<
 *     count = 0
 *     if nleft == 0:
 */
  __pyx_v_j = 0;

  /* "pandas/src/generated.pyx":3272
 *     i = 0
 *     j = 0
 *     count = 0             # <<<<<<<<<<<<<<
 *     if nleft == 0:
 *         count = nright
 */
  __pyx_v_count = 0;

  /* "pandas/src/generated.pyx":3273
 *     j = 0
 *     count = 0
 *     if nleft == 0:             # <<<<<<<<<<<<<<
 *         count = nright
 *     elif nright == 0:
 */
  __pyx_t_2 = (__pyx_v_nleft == 0);
  if (__pyx_t_2) {

    /* "pandas/src/generated.pyx":3274
 *     count = 0
 *     if nleft == 0:
 *         count = nright             # <<<<<<<<<<<<<<
 *     elif nright == 0:
 *         count = nleft
 */
    __pyx_v_count = __pyx_v_nright;
    goto __pyx_L6;
  }

  /* "pandas/src/generated.pyx":3275
 *     if nleft == 0:
 *         count = nright
 *     elif nright == 0:             # <<<<<<<<<<<<<<
 *         count = nleft
 *     else:
 */
  __pyx_t_2 = (__pyx_v_nright == 0);
  if (__pyx_t_2) {

    /* "pandas/src/generated.pyx":3276
 *         count = nright
 *     elif nright == 0:
 *         count = nleft             # <<<<<<<<<<<<<<
 *     else:
 *         while True:
 */
    __pyx_v_count = __pyx_v_nleft;
    goto __pyx_L6;
  }
  /*else*/ {

    /* "pandas/src/generated.pyx":3278
 *         count = nleft
 *     else:
 *         while True:             # <<<<<<<<<<<<<<
 *             if i == nleft:
 *                 count += nright - j
 */
    while (1) {
      if (!1) break;

      /* "pandas/src/generated.pyx":3279
 *     else:
 *         while True:
 *             if i == nleft:             # <<<<<<<<<<<<<<
 *                 count += nright - j
 *                 break
 */
      __pyx_t_2 = (__pyx_v_i == __pyx_v_nleft);
      if (__pyx_t_2) {

        /* "pandas/src/generated.pyx":3280
 *         while True:
 *             if i == nleft:
 *                 count += nright - j             # <<<<<<<<<<<<<<
 *                 break
 *             if j == nright:
 */
        __pyx_v_count = (__pyx_v_count + (__pyx_v_nright - __pyx_v_j));

        /* "pandas/src/generated.pyx":3281
 *             if i == nleft:
 *                 count += nright - j
 *                 break             # <<<<<<<<<<<<<<
 *             if j == nright:
 *                 count += nleft - i
 */
        goto __pyx_L8_break;
        goto __pyx_L9;
      }
      __pyx_L9:;

      /* "pandas/src/generated.pyx":3282
 *                 count += nright - j
 *                 break
 *             if j == nright:             # <<<<<<<<<<<<<<
 *                 count += nleft - i
 *                 break
 */
      __pyx_t_2 = (__pyx_v_j == __pyx_v_nright);
      if (__pyx_t_2) {

        /* "pandas/src/generated.pyx":3283
 *                 break
 *             if j == nright:
 *                 count += nleft - i             # <<<<<<<<<<<<<<
 *                 break
 * 
 */
        __pyx_v_count = (__pyx_v_count + (__pyx_v_nleft - __pyx_v_i));

        /* "pandas/src/generated.pyx":3284
 *             if j == nright:
 *                 count += nleft - i
 *                 break             # <<<<<<<<<<<<<<
 * 
 *             lval = left[i]
 */
        goto __pyx_L8_break;
        goto __pyx_L10;
      }
      __pyx_L10:;

      /* "pandas/src/generated.pyx":3286
 *                 break
 * 
 *             lval = left[i]             # <<<<<<<<<<<<<<
 *             rval = right[j]
 *             if lval == rval:
 */
      __pyx_t_1 = __pyx_v_i;
      __pyx_t_3 = *__Pyx_BufPtrStrided1d(PyObject **, __pyx_bstruct_left.buf, __pyx_t_1, __pyx_bstride_0_left);
      __Pyx_INCREF((PyObject*)__pyx_t_3);
      __Pyx_XDECREF(__pyx_v_lval);
      __pyx_v_lval = __pyx_t_3;
      __pyx_t_3 = 0;

      /* "pandas/src/generated.pyx":3287
 * 
 *             lval = left[i]
 *             rval = right[j]             # <<<<<<<<<<<<<<
 *             if lval == rval:
 *                 count += 1
 */
      __pyx_t_4 = __pyx_v_j;
      __pyx_t_3 = *__Pyx_BufPtrStrided1d(PyObject **, __pyx_bstruct_right.buf, __pyx_t_4, __pyx_bstride_0_right);
      __Pyx_INCREF((PyObject*)__pyx_t_3);
      __Pyx_XDECREF(__pyx_v_rval);
      __pyx_v_rval = __pyx_t_3;
      __pyx_t_3 = 0;

      /* "pandas/src/generated.pyx":3288
 *             lval = left[i]
 *             rval = right[j]
 *             if lval == rval:             # <<<<<<<<<<<<<<
 *                 count += 1
 *                 if i < nleft - 1:
 */
      __pyx_t_3 = PyObject_RichCompare(__pyx_v_lval, __pyx_v_rval, Py_EQ); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3288; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_3);
      __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3288; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      if (__pyx_t_2) {

        /* "pandas/src/generated.pyx":3289
 *             rval = right[j]
 *             if lval == rval:
 *                 count += 1             # <<<<<<<<<<<<<<
 *                 if i < nleft - 1:
 *                     if j < nright - 1 and right[j + 1] == rval:
 */
        __pyx_v_count = (__pyx_v_count + 1);

        /* "pandas/src/generated.pyx":3290
 *             if lval == rval:
 *                 count += 1
 *                 if i < nleft - 1:             # <<<<<<<<<<<<<<
 *                     if j < nright - 1 and right[j + 1] == rval:
 *                         j += 1
 */
        __pyx_t_2 = (__pyx_v_i < (__pyx_v_nleft - 1));
        if (__pyx_t_2) {

          /* "pandas/src/generated.pyx":3291
 *                 count += 1
 *                 if i < nleft - 1:
 *                     if j < nright - 1 and right[j + 1] == rval:             # <<<<<<<<<<<<<<
 *                         j += 1
 *                     else:
 */
          __pyx_t_2 = (__pyx_v_j < (__pyx_v_nright - 1));
          if (__pyx_t_2) {
            __pyx_t_5 = (__pyx_v_j + 1);
            __pyx_t_3 = *__Pyx_BufPtrStrided1d(PyObject **, __pyx_bstruct_right.buf, __pyx_t_5, __pyx_bstride_0_right);
            __Pyx_INCREF((PyObject*)__pyx_t_3);
            __pyx_t_6 = PyObject_RichCompare(__pyx_t_3, __pyx_v_rval, Py_EQ); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3291; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
            __Pyx_GOTREF(__pyx_t_6);
            __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
            __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_t_6); if (unlikely(__pyx_t_7 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3291; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
            __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
            __pyx_t_8 = __pyx_t_7;
          } else {
            __pyx_t_8 = __pyx_t_2;
          }
          if (__pyx_t_8) {

            /* "pandas/src/generated.pyx":3292
 *                 if i < nleft - 1:
 *                     if j < nright - 1 and right[j + 1] == rval:
 *                         j += 1             # <<<<<<<<<<<<<<
 *                     else:
 *                         i += 1
 */
            __pyx_v_j = (__pyx_v_j + 1);
            goto __pyx_L13;
          }
          /*else*/ {

            /* "pandas/src/generated.pyx":3294
 *                         j += 1
 *                     else:
 *                         i += 1             # <<<<<<<<<<<<<<
 *                         if left[i] != rval:
 *                             j += 1
 */
            __pyx_v_i = (__pyx_v_i + 1);

            /* "pandas/src/generated.pyx":3295
 *                     else:
 *                         i += 1
 *                         if left[i] != rval:             # <<<<<<<<<<<<<<
 *                             j += 1
 *                 elif j < nright - 1:
 */
            __pyx_t_9 = __pyx_v_i;
            __pyx_t_6 = *__Pyx_BufPtrStrided1d(PyObject **, __pyx_bstruct_left.buf, __pyx_t_9, __pyx_bstride_0_left);
            __Pyx_INCREF((PyObject*)__pyx_t_6);
            __pyx_t_3 = PyObject_RichCompare(__pyx_t_6, __pyx_v_rval, Py_NE); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3295; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
            __Pyx_GOTREF(__pyx_t_3);
            __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
            __pyx_t_8 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_8 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3295; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
            __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
            if (__pyx_t_8) {

              /* "pandas/src/generated.pyx":3296
 *                         i += 1
 *                         if left[i] != rval:
 *                             j += 1             # <<<<<<<<<<<<<<
 *                 elif j < nright - 1:
 *                     j += 1
 */
              __pyx_v_j = (__pyx_v_j + 1);
              goto __pyx_L14;
            }
            __pyx_L14:;
          }
          __pyx_L13:;
          goto __pyx_L12;
        }

        /* "pandas/src/generated.pyx":3297
 *                         if left[i] != rval:
 *                             j += 1
 *                 elif j < nright - 1:             # <<<<<<<<<<<<<<
 *                     j += 1
 *                     if lval != right[j]:
 */
        __pyx_t_8 = (__pyx_v_j < (__pyx_v_nright - 1));
        if (__pyx_t_8) {

          /* "pandas/src/generated.pyx":3298
 *                             j += 1
 *                 elif j < nright - 1:
 *                     j += 1             # <<<<<<<<<<<<<<
 *                     if lval != right[j]:
 *                         i += 1
 */
          __pyx_v_j = (__pyx_v_j + 1);

          /* "pandas/src/generated.pyx":3299
 *                 elif j < nright - 1:
 *                     j += 1
 *                     if lval != right[j]:             # <<<<<<<<<<<<<<
 *                         i += 1
 *                 else:
 */
          __pyx_t_10 = __pyx_v_j;
          __pyx_t_3 = *__Pyx_BufPtrStrided1d(PyObject **, __pyx_bstruct_right.buf, __pyx_t_10, __pyx_bstride_0_right);
          __Pyx_INCREF((PyObject*)__pyx_t_3);
          __pyx_t_6 = PyObject_RichCompare(__pyx_v_lval, __pyx_t_3, Py_NE); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3299; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
          __Pyx_GOTREF(__pyx_t_6);
          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
          __pyx_t_8 = __Pyx_PyObject_IsTrue(__pyx_t_6); if (unlikely(__pyx_t_8 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3299; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
          __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
          if (__pyx_t_8) {

            /* "pandas/src/generated.pyx":3300
 *                     j += 1
 *                     if lval != right[j]:
 *                         i += 1             # <<<<<<<<<<<<<<
 *                 else:
 *                     # end of the road
 */
            __pyx_v_i = (__pyx_v_i + 1);
            goto __pyx_L15;
          }
          __pyx_L15:;
          goto __pyx_L12;
        }
        /*else*/ {

          /* "pandas/src/generated.pyx":3303
 *                 else:
 *                     # end of the road
 *                     break             # <<<<<<<<<<<<<<
 *             elif lval < rval:
 *                 count += 1
 */
          goto __pyx_L8_break;
        }
        __pyx_L12:;
        goto __pyx_L11;
      }

      /* "pandas/src/generated.pyx":3304
 *                     # end of the road
 *                     break
 *             elif lval < rval:             # <<<<<<<<<<<<<<
 *                 count += 1
 *                 i += 1
 */
      __pyx_t_6 = PyObject_RichCompare(__pyx_v_lval, __pyx_v_rval, Py_LT); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3304; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_6);
      __pyx_t_8 = __Pyx_PyObject_IsTrue(__pyx_t_6); if (unlikely(__pyx_t_8 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3304; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      if (__pyx_t_8) {

        /* "pandas/src/generated.pyx":3305
 *                     break
 *             elif lval < rval:
 *                 count += 1             # <<<<<<<<<<<<<<
 *                 i += 1
 *             else:
 */
        __pyx_v_count = (__pyx_v_count + 1);

        /* "pandas/src/generated.pyx":3306
 *             elif lval < rval:
 *                 count += 1
 *                 i += 1             # <<<<<<<<<<<<<<
 *             else:
 *                 count += 1
 */
        __pyx_v_i = (__pyx_v_i + 1);
        goto __pyx_L11;
      }
      /*else*/ {

        /* "pandas/src/generated.pyx":3308
 *                 i += 1
 *             else:
 *                 count += 1             # <<<<<<<<<<<<<<
 *                 j += 1
 * 
 */
        __pyx_v_count = (__pyx_v_count + 1);

        /* "pandas/src/generated.pyx":3309
 *             else:
 *                 count += 1
 *                 j += 1             # <<<<<<<<<<<<<<
 * 
 *     lindexer = np.empty(count, dtype=np.int64)
 */
        __pyx_v_j = (__pyx_v_j + 1);
      }
      __pyx_L11:;
    }
    __pyx_L8_break:;
  }
  __pyx_L6:;

  /* "pandas/src/generated.pyx":3311
 *                 j += 1
 * 
 *     lindexer = np.empty(count, dtype=np.int64)             # <<<<<<<<<<<<<<
 *     rindexer = np.empty(count, dtype=np.int64)
 *     result = np.empty(count, dtype=object)
 */
  __pyx_t_6 = __Pyx_GetName(__pyx_m, __pyx_n_s__np); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3311; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_3 = PyObject_GetAttr(__pyx_t_6, __pyx_n_s__empty); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3311; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __pyx_t_6 = PyInt_FromSsize_t(__pyx_v_count); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3311; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_11 = PyTuple_New(1); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3311; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_11));
  PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_6);
  __Pyx_GIVEREF(__pyx_t_6);
  __pyx_t_6 = 0;
  __pyx_t_6 = PyDict_New(); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3311; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_6));
  __pyx_t_12 = __Pyx_GetName(__pyx_m, __pyx_n_s__np); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3311; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_12);
  __pyx_t_13 = PyObject_GetAttr(__pyx_t_12, __pyx_n_s__int64); if (unlikely(!__pyx_t_13)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3311; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_13);
  __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
  if (PyDict_SetItem(__pyx_t_6, ((PyObject *)__pyx_n_s__dtype), __pyx_t_13) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3311; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
  __pyx_t_13 = PyEval_CallObjectWithKeywords(__pyx_t_3, ((PyObject *)__pyx_t_11), ((PyObject *)__pyx_t_6)); if (unlikely(!__pyx_t_13)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3311; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_13);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_DECREF(((PyObject *)__pyx_t_11)); __pyx_t_11 = 0;
  __Pyx_DECREF(((PyObject *)__pyx_t_6)); __pyx_t_6 = 0;
  if (!(likely(((__pyx_t_13) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_13, __pyx_ptype_5numpy_ndarray))))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3311; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_t_14 = ((PyArrayObject *)__pyx_t_13);
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    __Pyx_SafeReleaseBuffer(&__pyx_bstruct_lindexer);
    __pyx_t_15 = __Pyx_GetBufferAndValidate(&__pyx_bstruct_lindexer, (PyObject*)__pyx_t_14, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack);
    if (unlikely(__pyx_t_15 < 0)) {
      PyErr_Fetch(&__pyx_t_16, &__pyx_t_17, &__pyx_t_18);
      if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_lindexer, (PyObject*)__pyx_v_lindexer, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) {
        Py_XDECREF(__pyx_t_16); Py_XDECREF(__pyx_t_17); Py_XDECREF(__pyx_t_18);
        __Pyx_RaiseBufferFallbackError();
      } else {
        PyErr_Restore(__pyx_t_16, __pyx_t_17, __pyx_t_18);
      }
    }
    __pyx_bstride_0_lindexer = __pyx_bstruct_lindexer.strides[0];
    __pyx_bshape_0_lindexer = __pyx_bstruct_lindexer.shape[0];
    if (unlikely(__pyx_t_15 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3311; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  }
  __pyx_t_14 = 0;
  __pyx_v_lindexer = ((PyArrayObject *)__pyx_t_13);
  __pyx_t_13 = 0;

  /* "pandas/src/generated.pyx":3312
 * 
 *     lindexer = np.empty(count, dtype=np.int64)
 *     rindexer = np.empty(count, dtype=np.int64)             # <<<<<<<<<<<<<<
 *     result = np.empty(count, dtype=object)
 * 
 */
  __pyx_t_13 = __Pyx_GetName(__pyx_m, __pyx_n_s__np); if (unlikely(!__pyx_t_13)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3312; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_13);
  __pyx_t_6 = PyObject_GetAttr(__pyx_t_13, __pyx_n_s__empty); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3312; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
  __pyx_t_13 = PyInt_FromSsize_t(__pyx_v_count); if (unlikely(!__pyx_t_13)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3312; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_13);
  __pyx_t_11 = PyTuple_New(1); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3312; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_11));
  PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_13);
  __Pyx_GIVEREF(__pyx_t_13);
  __pyx_t_13 = 0;
  __pyx_t_13 = PyDict_New(); if (unlikely(!__pyx_t_13)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3312; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_13));
  __pyx_t_3 = __Pyx_GetName(__pyx_m, __pyx_n_s__np); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3312; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_12 = PyObject_GetAttr(__pyx_t_3, __pyx_n_s__int64); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3312; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_12);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (PyDict_SetItem(__pyx_t_13, ((PyObject *)__pyx_n_s__dtype), __pyx_t_12) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3312; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
  __pyx_t_12 = PyEval_CallObjectWithKeywords(__pyx_t_6, ((PyObject *)__pyx_t_11), ((PyObject *)__pyx_t_13)); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3312; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_12);
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __Pyx_DECREF(((PyObject *)__pyx_t_11)); __pyx_t_11 = 0;
  __Pyx_DECREF(((PyObject *)__pyx_t_13)); __pyx_t_13 = 0;
  if (!(likely(((__pyx_t_12) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_12, __pyx_ptype_5numpy_ndarray))))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3312; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_t_14 = ((PyArrayObject *)__pyx_t_12);
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    __Pyx_SafeReleaseBuffer(&__pyx_bstruct_rindexer);
    __pyx_t_15 = __Pyx_GetBufferAndValidate(&__pyx_bstruct_rindexer, (PyObject*)__pyx_t_14, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack);
    if (unlikely(__pyx_t_15 < 0)) {
      PyErr_Fetch(&__pyx_t_18, &__pyx_t_17, &__pyx_t_16);
      if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_rindexer, (PyObject*)__pyx_v_rindexer, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) {
        Py_XDECREF(__pyx_t_18); Py_XDECREF(__pyx_t_17); Py_XDECREF(__pyx_t_16);
        __Pyx_RaiseBufferFallbackError();
      } else {
        PyErr_Restore(__pyx_t_18, __pyx_t_17, __pyx_t_16);
      }
    }
    __pyx_bstride_0_rindexer = __pyx_bstruct_rindexer.strides[0];
    __pyx_bshape_0_rindexer = __pyx_bstruct_rindexer.shape[0];
    if (unlikely(__pyx_t_15 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3312; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  }
  __pyx_t_14 = 0;
  __pyx_v_rindexer = ((PyArrayObject *)__pyx_t_12);
  __pyx_t_12 = 0;

  /* "pandas/src/generated.pyx":3313
 *     lindexer = np.empty(count, dtype=np.int64)
 *     rindexer = np.empty(count, dtype=np.int64)
 *     result = np.empty(count, dtype=object)             # <<<<<<<<<<<<<<
 * 
 *     # do it again, but populate the indexers / result
 */
  __pyx_t_12 = __Pyx_GetName(__pyx_m, __pyx_n_s__np); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3313; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_12);
  __pyx_t_13 = PyObject_GetAttr(__pyx_t_12, __pyx_n_s__empty); if (unlikely(!__pyx_t_13)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3313; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_13);
  __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
  __pyx_t_12 = PyInt_FromSsize_t(__pyx_v_count); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3313; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_12);
  __pyx_t_11 = PyTuple_New(1); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3313; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_11));
  PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_12);
  __Pyx_GIVEREF(__pyx_t_12);
  __pyx_t_12 = 0;
  __pyx_t_12 = PyDict_New(); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3313; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_12));
  if (PyDict_SetItem(__pyx_t_12, ((PyObject *)__pyx_n_s__dtype), __pyx_builtin_object) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3313; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_t_6 = PyEval_CallObjectWithKeywords(__pyx_t_13, ((PyObject *)__pyx_t_11), ((PyObject *)__pyx_t_12)); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3313; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
  __Pyx_DECREF(((PyObject *)__pyx_t_11)); __pyx_t_11 = 0;
  __Pyx_DECREF(((PyObject *)__pyx_t_12)); __pyx_t_12 = 0;
  if (!(likely(((__pyx_t_6) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_6, __pyx_ptype_5numpy_ndarray))))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3313; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_t_19 = ((PyArrayObject *)__pyx_t_6);
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    __Pyx_SafeReleaseBuffer(&__pyx_bstruct_result);
    __pyx_t_15 = __Pyx_GetBufferAndValidate(&__pyx_bstruct_result, (PyObject*)__pyx_t_19, &__Pyx_TypeInfo_object, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack);
    if (unlikely(__pyx_t_15 < 0)) {
      PyErr_Fetch(&__pyx_t_16, &__pyx_t_17, &__pyx_t_18);
      if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_result, (PyObject*)__pyx_v_result, &__Pyx_TypeInfo_object, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) {
        Py_XDECREF(__pyx_t_16); Py_XDECREF(__pyx_t_17); Py_XDECREF(__pyx_t_18);
        __Pyx_RaiseBufferFallbackError();
      } else {
        PyErr_Restore(__pyx_t_16, __pyx_t_17, __pyx_t_18);
      }
    }
    __pyx_bstride_0_result = __pyx_bstruct_result.strides[0];
    __pyx_bshape_0_result = __pyx_bstruct_result.shape[0];
    if (unlikely(__pyx_t_15 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3313; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  }
  __pyx_t_19 = 0;
  __pyx_v_result = ((PyArrayObject *)__pyx_t_6);
  __pyx_t_6 = 0;

  /* "pandas/src/generated.pyx":3317
 *     # do it again, but populate the indexers / result
 * 
 *     i = 0             # <<<<<<<<<<<<<<
 *     j = 0
 *     count = 0
 */
  __pyx_v_i = 0;

  /* "pandas/src/generated.pyx":3318
 * 
 *     i = 0
 *     j = 0             # <<<<<<<<<<<<<<
 *     count = 0
 *     if nleft == 0:
 */
  __pyx_v_j = 0;

  /* "pandas/src/generated.pyx":3319
 *     i = 0
 *     j = 0
 *     count = 0             # <<<<<<<<<<<<<<
 *     if nleft == 0:
 *         for j in range(nright):
 */
  __pyx_v_count = 0;

  /* "pandas/src/generated.pyx":3320
 *     j = 0
 *     count = 0
 *     if nleft == 0:             # <<<<<<<<<<<<<<
 *         for j in range(nright):
 *             lindexer[j] = -1
 */
  __pyx_t_8 = (__pyx_v_nleft == 0);
  if (__pyx_t_8) {

    /* "pandas/src/generated.pyx":3321
 *     count = 0
 *     if nleft == 0:
 *         for j in range(nright):             # <<<<<<<<<<<<<<
 *             lindexer[j] = -1
 *             rindexer[j] = j
 */
    __pyx_t_20 = __pyx_v_nright;
    for (__pyx_t_21 = 0; __pyx_t_21 < __pyx_t_20; __pyx_t_21+=1) {
      __pyx_v_j = __pyx_t_21;

      /* "pandas/src/generated.pyx":3322
 *     if nleft == 0:
 *         for j in range(nright):
 *             lindexer[j] = -1             # <<<<<<<<<<<<<<
 *             rindexer[j] = j
 *             result[j] = right[j]
 */
      __pyx_t_22 = __pyx_v_j;
      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_bstruct_lindexer.buf, __pyx_t_22, __pyx_bstride_0_lindexer) = -1;

      /* "pandas/src/generated.pyx":3323
 *         for j in range(nright):
 *             lindexer[j] = -1
 *             rindexer[j] = j             # <<<<<<<<<<<<<<
 *             result[j] = right[j]
 *     elif nright == 0:
 */
      __pyx_t_23 = __pyx_v_j;
      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_bstruct_rindexer.buf, __pyx_t_23, __pyx_bstride_0_rindexer) = __pyx_v_j;

      /* "pandas/src/generated.pyx":3324
 *             lindexer[j] = -1
 *             rindexer[j] = j
 *             result[j] = right[j]             # <<<<<<<<<<<<<<
 *     elif nright == 0:
 *         for i in range(nright):
 */
      __pyx_t_24 = __pyx_v_j;
      __pyx_t_6 = *__Pyx_BufPtrStrided1d(PyObject **, __pyx_bstruct_right.buf, __pyx_t_24, __pyx_bstride_0_right);
      __Pyx_INCREF((PyObject*)__pyx_t_6);
      __pyx_t_25 = __pyx_v_j;
      __pyx_t_26 = __Pyx_BufPtrStrided1d(PyObject **, __pyx_bstruct_result.buf, __pyx_t_25, __pyx_bstride_0_result);
      __Pyx_GOTREF(*__pyx_t_26);
      __Pyx_DECREF(*__pyx_t_26); __Pyx_INCREF(__pyx_t_6);
      *__pyx_t_26 = __pyx_t_6;
      __Pyx_GIVEREF(*__pyx_t_26);
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    }
    goto __pyx_L16;
  }

  /* "pandas/src/generated.pyx":3325
 *             rindexer[j] = j
 *             result[j] = right[j]
 *     elif nright == 0:             # <<<<<<<<<<<<<<
 *         for i in range(nright):
 *             lindexer[i] = i
 */
  __pyx_t_8 = (__pyx_v_nright == 0);
  if (__pyx_t_8) {

    /* "pandas/src/generated.pyx":3326
 *             result[j] = right[j]
 *     elif nright == 0:
 *         for i in range(nright):             # <<<<<<<<<<<<<<
 *             lindexer[i] = i
 *             rindexer[i] = -1
 */
    __pyx_t_20 = __pyx_v_nright;
    for (__pyx_t_21 = 0; __pyx_t_21 < __pyx_t_20; __pyx_t_21+=1) {
      __pyx_v_i = __pyx_t_21;

      /* "pandas/src/generated.pyx":3327
 *     elif nright == 0:
 *         for i in range(nright):
 *             lindexer[i] = i             # <<<<<<<<<<<<<<
 *             rindexer[i] = -1
 *             result[i] = left[i]
 */
      __pyx_t_27 = __pyx_v_i;
      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_bstruct_lindexer.buf, __pyx_t_27, __pyx_bstride_0_lindexer) = __pyx_v_i;

      /* "pandas/src/generated.pyx":3328
 *         for i in range(nright):
 *             lindexer[i] = i
 *             rindexer[i] = -1             # <<<<<<<<<<<<<<
 *             result[i] = left[i]
 *     else:
 */
      __pyx_t_28 = __pyx_v_i;
      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_bstruct_rindexer.buf, __pyx_t_28, __pyx_bstride_0_rindexer) = -1;

      /* "pandas/src/generated.pyx":3329
 *             lindexer[i] = i
 *             rindexer[i] = -1
 *             result[i] = left[i]             # <<<<<<<<<<<<<<
 *     else:
 *         while True:
 */
      __pyx_t_29 = __pyx_v_i;
      __pyx_t_6 = *__Pyx_BufPtrStrided1d(PyObject **, __pyx_bstruct_left.buf, __pyx_t_29, __pyx_bstride_0_left);
      __Pyx_INCREF((PyObject*)__pyx_t_6);
      __pyx_t_30 = __pyx_v_i;
      __pyx_t_26 = __Pyx_BufPtrStrided1d(PyObject **, __pyx_bstruct_result.buf, __pyx_t_30, __pyx_bstride_0_result);
      __Pyx_GOTREF(*__pyx_t_26);
      __Pyx_DECREF(*__pyx_t_26); __Pyx_INCREF(__pyx_t_6);
      *__pyx_t_26 = __pyx_t_6;
      __Pyx_GIVEREF(*__pyx_t_26);
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    }
    goto __pyx_L16;
  }
  /*else*/ {

    /* "pandas/src/generated.pyx":3331
 *             result[i] = left[i]
 *     else:
 *         while True:             # <<<<<<<<<<<<<<
 *             if i == nleft:
 *                 while j < nright:
 */
    while (1) {
      if (!1) break;

      /* "pandas/src/generated.pyx":3332
 *     else:
 *         while True:
 *             if i == nleft:             # <<<<<<<<<<<<<<
 *                 while j < nright:
 *                     lindexer[count] = -1
 */
      __pyx_t_8 = (__pyx_v_i == __pyx_v_nleft);
      if (__pyx_t_8) {

        /* "pandas/src/generated.pyx":3333
 *         while True:
 *             if i == nleft:
 *                 while j < nright:             # <<<<<<<<<<<<<<
 *                     lindexer[count] = -1
 *                     rindexer[count] = j
 */
        while (1) {
          __pyx_t_8 = (__pyx_v_j < __pyx_v_nright);
          if (!__pyx_t_8) break;

          /* "pandas/src/generated.pyx":3334
 *             if i == nleft:
 *                 while j < nright:
 *                     lindexer[count] = -1             # <<<<<<<<<<<<<<
 *                     rindexer[count] = j
 *                     result[count] = right[j]
 */
          __pyx_t_20 = __pyx_v_count;
          *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_bstruct_lindexer.buf, __pyx_t_20, __pyx_bstride_0_lindexer) = -1;

          /* "pandas/src/generated.pyx":3335
 *                 while j < nright:
 *                     lindexer[count] = -1
 *                     rindexer[count] = j             # <<<<<<<<<<<<<<
 *                     result[count] = right[j]
 *                     count += 1
 */
          __pyx_t_21 = __pyx_v_count;
          *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_bstruct_rindexer.buf, __pyx_t_21, __pyx_bstride_0_rindexer) = __pyx_v_j;

          /* "pandas/src/generated.pyx":3336
 *                     lindexer[count] = -1
 *                     rindexer[count] = j
 *                     result[count] = right[j]             # <<<<<<<<<<<<<<
 *                     count += 1
 *                     j += 1
 */
          __pyx_t_31 = __pyx_v_j;
          __pyx_t_6 = *__Pyx_BufPtrStrided1d(PyObject **, __pyx_bstruct_right.buf, __pyx_t_31, __pyx_bstride_0_right);
          __Pyx_INCREF((PyObject*)__pyx_t_6);
          __pyx_t_32 = __pyx_v_count;
          __pyx_t_26 = __Pyx_BufPtrStrided1d(PyObject **, __pyx_bstruct_result.buf, __pyx_t_32, __pyx_bstride_0_result);
          __Pyx_GOTREF(*__pyx_t_26);
          __Pyx_DECREF(*__pyx_t_26); __Pyx_INCREF(__pyx_t_6);
          *__pyx_t_26 = __pyx_t_6;
          __Pyx_GIVEREF(*__pyx_t_26);
          __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;

          /* "pandas/src/generated.pyx":3337
 *                     rindexer[count] = j
 *                     result[count] = right[j]
 *                     count += 1             # <<<<<<<<<<<<<<
 *                     j += 1
 *                 break
 */
          __pyx_v_count = (__pyx_v_count + 1);

          /* "pandas/src/generated.pyx":3338
 *                     result[count] = right[j]
 *                     count += 1
 *                     j += 1             # <<<<<<<<<<<<<<
 *                 break
 *             if j == nright:
 */
          __pyx_v_j = (__pyx_v_j + 1);
        }

        /* "pandas/src/generated.pyx":3339
 *                     count += 1
 *                     j += 1
 *                 break             # <<<<<<<<<<<<<<
 *             if j == nright:
 *                 while i < nleft:
 */
        goto __pyx_L22_break;
        goto __pyx_L23;
      }
      __pyx_L23:;

      /* "pandas/src/generated.pyx":3340
 *                     j += 1
 *                 break
 *             if j == nright:             # <<<<<<<<<<<<<<
 *                 while i < nleft:
 *                     lindexer[count] = i
 */
      __pyx_t_8 = (__pyx_v_j == __pyx_v_nright);
      if (__pyx_t_8) {

        /* "pandas/src/generated.pyx":3341
 *                 break
 *             if j == nright:
 *                 while i < nleft:             # <<<<<<<<<<<<<<
 *                     lindexer[count] = i
 *                     rindexer[count] = -1
 */
        while (1) {
          __pyx_t_8 = (__pyx_v_i < __pyx_v_nleft);
          if (!__pyx_t_8) break;

          /* "pandas/src/generated.pyx":3342
 *             if j == nright:
 *                 while i < nleft:
 *                     lindexer[count] = i             # <<<<<<<<<<<<<<
 *                     rindexer[count] = -1
 *                     result[count] = left[i]
 */
          __pyx_t_33 = __pyx_v_count;
          *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_bstruct_lindexer.buf, __pyx_t_33, __pyx_bstride_0_lindexer) = __pyx_v_i;

          /* "pandas/src/generated.pyx":3343
 *                 while i < nleft:
 *                     lindexer[count] = i
 *                     rindexer[count] = -1             # <<<<<<<<<<<<<<
 *                     result[count] = left[i]
 *                     count += 1
 */
          __pyx_t_34 = __pyx_v_count;
          *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_bstruct_rindexer.buf, __pyx_t_34, __pyx_bstride_0_rindexer) = -1;

          /* "pandas/src/generated.pyx":3344
 *                     lindexer[count] = i
 *                     rindexer[count] = -1
 *                     result[count] = left[i]             # <<<<<<<<<<<<<<
 *                     count += 1
 *                     i += 1
 */
          __pyx_t_35 = __pyx_v_i;
          __pyx_t_6 = *__Pyx_BufPtrStrided1d(PyObject **, __pyx_bstruct_left.buf, __pyx_t_35, __pyx_bstride_0_left);
          __Pyx_INCREF((PyObject*)__pyx_t_6);
          __pyx_t_36 = __pyx_v_count;
          __pyx_t_26 = __Pyx_BufPtrStrided1d(PyObject **, __pyx_bstruct_result.buf, __pyx_t_36, __pyx_bstride_0_result);
          __Pyx_GOTREF(*__pyx_t_26);
          __Pyx_DECREF(*__pyx_t_26); __Pyx_INCREF(__pyx_t_6);
          *__pyx_t_26 = __pyx_t_6;
          __Pyx_GIVEREF(*__pyx_t_26);
          __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;

          /* "pandas/src/generated.pyx":3345
 *                     rindexer[count] = -1
 *                     result[count] = left[i]
 *                     count += 1             # <<<<<<<<<<<<<<
 *                     i += 1
 *                 break
 */
          __pyx_v_count = (__pyx_v_count + 1);

          /* "pandas/src/generated.pyx":3346
 *                     result[count] = left[i]
 *                     count += 1
 *                     i += 1             # <<<<<<<<<<<<<<
 *                 break
 * 
 */
          __pyx_v_i = (__pyx_v_i + 1);
        }

        /* "pandas/src/generated.pyx":3347
 *                     count += 1
 *                     i += 1
 *                 break             # <<<<<<<<<<<<<<
 * 
 *             lval = left[i]
 */
        goto __pyx_L22_break;
        goto __pyx_L26;
      }
      __pyx_L26:;

      /* "pandas/src/generated.pyx":3349
 *                 break
 * 
 *             lval = left[i]             # <<<<<<<<<<<<<<
 *             rval = right[j]
 * 
 */
      __pyx_t_37 = __pyx_v_i;
      __pyx_t_6 = *__Pyx_BufPtrStrided1d(PyObject **, __pyx_bstruct_left.buf, __pyx_t_37, __pyx_bstride_0_left);
      __Pyx_INCREF((PyObject*)__pyx_t_6);
      __Pyx_XDECREF(__pyx_v_lval);
      __pyx_v_lval = __pyx_t_6;
      __pyx_t_6 = 0;

      /* "pandas/src/generated.pyx":3350
 * 
 *             lval = left[i]
 *             rval = right[j]             # <<<<<<<<<<<<<<
 * 
 *             if lval == rval:
 */
      __pyx_t_38 = __pyx_v_j;
      __pyx_t_6 = *__Pyx_BufPtrStrided1d(PyObject **, __pyx_bstruct_right.buf, __pyx_t_38, __pyx_bstride_0_right);
      __Pyx_INCREF((PyObject*)__pyx_t_6);
      __Pyx_XDECREF(__pyx_v_rval);
      __pyx_v_rval = __pyx_t_6;
      __pyx_t_6 = 0;

      /* "pandas/src/generated.pyx":3352
 *             rval = right[j]
 * 
 *             if lval == rval:             # <<<<<<<<<<<<<<
 *                 lindexer[count] = i
 *                 rindexer[count] = j
 */
      __pyx_t_6 = PyObject_RichCompare(__pyx_v_lval, __pyx_v_rval, Py_EQ); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3352; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_6);
      __pyx_t_8 = __Pyx_PyObject_IsTrue(__pyx_t_6); if (unlikely(__pyx_t_8 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3352; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      if (__pyx_t_8) {

        /* "pandas/src/generated.pyx":3353
 * 
 *             if lval == rval:
 *                 lindexer[count] = i             # <<<<<<<<<<<<<<
 *                 rindexer[count] = j
 *                 result[count] = lval
 */
        __pyx_t_39 = __pyx_v_count;
        *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_bstruct_lindexer.buf, __pyx_t_39, __pyx_bstride_0_lindexer) = __pyx_v_i;

        /* "pandas/src/generated.pyx":3354
 *             if lval == rval:
 *                 lindexer[count] = i
 *                 rindexer[count] = j             # <<<<<<<<<<<<<<
 *                 result[count] = lval
 *                 count += 1
 */
        __pyx_t_40 = __pyx_v_count;
        *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_bstruct_rindexer.buf, __pyx_t_40, __pyx_bstride_0_rindexer) = __pyx_v_j;

        /* "pandas/src/generated.pyx":3355
 *                 lindexer[count] = i
 *                 rindexer[count] = j
 *                 result[count] = lval             # <<<<<<<<<<<<<<
 *                 count += 1
 *                 if i < nleft - 1:
 */
        __pyx_t_41 = __pyx_v_count;
        __pyx_t_26 = __Pyx_BufPtrStrided1d(PyObject **, __pyx_bstruct_result.buf, __pyx_t_41, __pyx_bstride_0_result);
        __Pyx_GOTREF(*__pyx_t_26);
        __Pyx_DECREF(*__pyx_t_26); __Pyx_INCREF(__pyx_v_lval);
        *__pyx_t_26 = __pyx_v_lval;
        __Pyx_GIVEREF(*__pyx_t_26);

        /* "pandas/src/generated.pyx":3356
 *                 rindexer[count] = j
 *                 result[count] = lval
 *                 count += 1             # <<<<<<<<<<<<<<
 *                 if i < nleft - 1:
 *                     if j < nright - 1 and right[j + 1] == rval:
 */
        __pyx_v_count = (__pyx_v_count + 1);

        /* "pandas/src/generated.pyx":3357
 *                 result[count] = lval
 *                 count += 1
 *                 if i < nleft - 1:             # <<<<<<<<<<<<<<
 *                     if j < nright - 1 and right[j + 1] == rval:
 *                         j += 1
 */
        __pyx_t_8 = (__pyx_v_i < (__pyx_v_nleft - 1));
        if (__pyx_t_8) {

          /* "pandas/src/generated.pyx":3358
 *                 count += 1
 *                 if i < nleft - 1:
 *                     if j < nright - 1 and right[j + 1] == rval:             # <<<<<<<<<<<<<<
 *                         j += 1
 *                     else:
 */
          __pyx_t_8 = (__pyx_v_j < (__pyx_v_nright - 1));
          if (__pyx_t_8) {
            __pyx_t_42 = (__pyx_v_j + 1);
            __pyx_t_6 = *__Pyx_BufPtrStrided1d(PyObject **, __pyx_bstruct_right.buf, __pyx_t_42, __pyx_bstride_0_right);
            __Pyx_INCREF((PyObject*)__pyx_t_6);
            __pyx_t_12 = PyObject_RichCompare(__pyx_t_6, __pyx_v_rval, Py_EQ); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3358; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
            __Pyx_GOTREF(__pyx_t_12);
            __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
            __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_12); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3358; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
            __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
            __pyx_t_7 = __pyx_t_2;
          } else {
            __pyx_t_7 = __pyx_t_8;
          }
          if (__pyx_t_7) {

            /* "pandas/src/generated.pyx":3359
 *                 if i < nleft - 1:
 *                     if j < nright - 1 and right[j + 1] == rval:
 *                         j += 1             # <<<<<<<<<<<<<<
 *                     else:
 *                         i += 1
 */
            __pyx_v_j = (__pyx_v_j + 1);
            goto __pyx_L31;
          }
          /*else*/ {

            /* "pandas/src/generated.pyx":3361
 *                         j += 1
 *                     else:
 *                         i += 1             # <<<<<<<<<<<<<<
 *                         if left[i] != rval:
 *                             j += 1
 */
            __pyx_v_i = (__pyx_v_i + 1);

            /* "pandas/src/generated.pyx":3362
 *                     else:
 *                         i += 1
 *                         if left[i] != rval:             # <<<<<<<<<<<<<<
 *                             j += 1
 *                 elif j < nright - 1:
 */
            __pyx_t_43 = __pyx_v_i;
            __pyx_t_12 = *__Pyx_BufPtrStrided1d(PyObject **, __pyx_bstruct_left.buf, __pyx_t_43, __pyx_bstride_0_left);
            __Pyx_INCREF((PyObject*)__pyx_t_12);
            __pyx_t_6 = PyObject_RichCompare(__pyx_t_12, __pyx_v_rval, Py_NE); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3362; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
            __Pyx_GOTREF(__pyx_t_6);
            __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
            __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_t_6); if (unlikely(__pyx_t_7 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3362; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
            __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
            if (__pyx_t_7) {

              /* "pandas/src/generated.pyx":3363
 *                         i += 1
 *                         if left[i] != rval:
 *                             j += 1             # <<<<<<<<<<<<<<
 *                 elif j < nright - 1:
 *                     j += 1
 */
              __pyx_v_j = (__pyx_v_j + 1);
              goto __pyx_L32;
            }
            __pyx_L32:;
          }
          __pyx_L31:;
          goto __pyx_L30;
        }

        /* "pandas/src/generated.pyx":3364
 *                         if left[i] != rval:
 *                             j += 1
 *                 elif j < nright - 1:             # <<<<<<<<<<<<<<
 *                     j += 1
 *                     if lval != right[j]:
 */
        __pyx_t_7 = (__pyx_v_j < (__pyx_v_nright - 1));
        if (__pyx_t_7) {

          /* "pandas/src/generated.pyx":3365
 *                             j += 1
 *                 elif j < nright - 1:
 *                     j += 1             # <<<<<<<<<<<<<<
 *                     if lval != right[j]:
 *                         i += 1
 */
          __pyx_v_j = (__pyx_v_j + 1);

          /* "pandas/src/generated.pyx":3366
 *                 elif j < nright - 1:
 *                     j += 1
 *                     if lval != right[j]:             # <<<<<<<<<<<<<<
 *                         i += 1
 *                 else:
 */
          __pyx_t_44 = __pyx_v_j;
          __pyx_t_6 = *__Pyx_BufPtrStrided1d(PyObject **, __pyx_bstruct_right.buf, __pyx_t_44, __pyx_bstride_0_right);
          __Pyx_INCREF((PyObject*)__pyx_t_6);
          __pyx_t_12 = PyObject_RichCompare(__pyx_v_lval, __pyx_t_6, Py_NE); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3366; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
          __Pyx_GOTREF(__pyx_t_12);
          __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
          __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_t_12); if (unlikely(__pyx_t_7 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3366; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
          __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
          if (__pyx_t_7) {

            /* "pandas/src/generated.pyx":3367
 *                     j += 1
 *                     if lval != right[j]:
 *                         i += 1             # <<<<<<<<<<<<<<
 *                 else:
 *                     # end of the road
 */
            __pyx_v_i = (__pyx_v_i + 1);
            goto __pyx_L33;
          }
          __pyx_L33:;
          goto __pyx_L30;
        }
        /*else*/ {

          /* "pandas/src/generated.pyx":3370
 *                 else:
 *                     # end of the road
 *                     break             # <<<<<<<<<<<<<<
 *             elif lval < rval:
 *                 lindexer[count] = i
 */
          goto __pyx_L22_break;
        }
        __pyx_L30:;
        goto __pyx_L29;
      }

      /* "pandas/src/generated.pyx":3371
 *                     # end of the road
 *                     break
 *             elif lval < rval:             # <<<<<<<<<<<<<<
 *                 lindexer[count] = i
 *                 rindexer[count] = -1
 */
      __pyx_t_12 = PyObject_RichCompare(__pyx_v_lval, __pyx_v_rval, Py_LT); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3371; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_12);
      __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_t_12); if (unlikely(__pyx_t_7 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3371; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
      if (__pyx_t_7) {

        /* "pandas/src/generated.pyx":3372
 *                     break
 *             elif lval < rval:
 *                 lindexer[count] = i             # <<<<<<<<<<<<<<
 *                 rindexer[count] = -1
 *                 result[count] = lval
 */
        __pyx_t_45 = __pyx_v_count;
        *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_bstruct_lindexer.buf, __pyx_t_45, __pyx_bstride_0_lindexer) = __pyx_v_i;

        /* "pandas/src/generated.pyx":3373
 *             elif lval < rval:
 *                 lindexer[count] = i
 *                 rindexer[count] = -1             # <<<<<<<<<<<<<<
 *                 result[count] = lval
 *                 count += 1
 */
        __pyx_t_46 = __pyx_v_count;
        *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_bstruct_rindexer.buf, __pyx_t_46, __pyx_bstride_0_rindexer) = -1;

        /* "pandas/src/generated.pyx":3374
 *                 lindexer[count] = i
 *                 rindexer[count] = -1
 *                 result[count] = lval             # <<<<<<<<<<<<<<
 *                 count += 1
 *                 i += 1
 */
        __pyx_t_47 = __pyx_v_count;
        __pyx_t_26 = __Pyx_BufPtrStrided1d(PyObject **, __pyx_bstruct_result.buf, __pyx_t_47, __pyx_bstride_0_result);
        __Pyx_GOTREF(*__pyx_t_26);
        __Pyx_DECREF(*__pyx_t_26); __Pyx_INCREF(__pyx_v_lval);
        *__pyx_t_26 = __pyx_v_lval;
        __Pyx_GIVEREF(*__pyx_t_26);

        /* "pandas/src/generated.pyx":3375
 *                 rindexer[count] = -1
 *                 result[count] = lval
 *                 count += 1             # <<<<<<<<<<<<<<
 *                 i += 1
 *             else:
 */
        __pyx_v_count = (__pyx_v_count + 1);

        /* "pandas/src/generated.pyx":3376
 *                 result[count] = lval
 *                 count += 1
 *                 i += 1             # <<<<<<<<<<<<<<
 *             else:
 *                 lindexer[count] = -1
 */
        __pyx_v_i = (__pyx_v_i + 1);
        goto __pyx_L29;
      }
      /*else*/ {

        /* "pandas/src/generated.pyx":3378
 *                 i += 1
 *             else:
 *                 lindexer[count] = -1             # <<<<<<<<<<<<<<
 *                 rindexer[count] = j
 *                 result[count] = rval
 */
        __pyx_t_48 = __pyx_v_count;
        *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_bstruct_lindexer.buf, __pyx_t_48, __pyx_bstride_0_lindexer) = -1;

        /* "pandas/src/generated.pyx":3379
 *             else:
 *                 lindexer[count] = -1
 *                 rindexer[count] = j             # <<<<<<<<<<<<<<
 *                 result[count] = rval
 *                 count += 1
 */
        __pyx_t_49 = __pyx_v_count;
        *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_bstruct_rindexer.buf, __pyx_t_49, __pyx_bstride_0_rindexer) = __pyx_v_j;

        /* "pandas/src/generated.pyx":3380
 *                 lindexer[count] = -1
 *                 rindexer[count] = j
 *                 result[count] = rval             # <<<<<<<<<<<<<<
 *                 count += 1
 *                 j += 1
 */
        __pyx_t_50 = __pyx_v_count;
        __pyx_t_26 = __Pyx_BufPtrStrided1d(PyObject **, __pyx_bstruct_result.buf, __pyx_t_50, __pyx_bstride_0_result);
        __Pyx_GOTREF(*__pyx_t_26);
        __Pyx_DECREF(*__pyx_t_26); __Pyx_INCREF(__pyx_v_rval);
        *__pyx_t_26 = __pyx_v_rval;
        __Pyx_GIVEREF(*__pyx_t_26);

        /* "pandas/src/generated.pyx":3381
 *                 rindexer[count] = j
 *                 result[count] = rval
 *                 count += 1             # <<<<<<<<<<<<<<
 *                 j += 1
 * 
 */
        __pyx_v_count = (__pyx_v_count + 1);

        /* "pandas/src/generated.pyx":3382
 *                 result[count] = rval
 *                 count += 1
 *                 j += 1             # <<<<<<<<<<<<<<
 * 
 *     return result, lindexer, rindexer
 */
        __pyx_v_j = (__pyx_v_j + 1);
      }
      __pyx_L29:;
    }
    __pyx_L22_break:;
  }
  __pyx_L16:;

  /* "pandas/src/generated.pyx":3384
 *                 j += 1
 * 
 *     return result, lindexer, rindexer             # <<<<<<<<<<<<<<
 * 
 * @cython.wraparound(False)
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_12 = PyTuple_New(3); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3384; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_12));
  __Pyx_INCREF(((PyObject *)__pyx_v_result));
  PyTuple_SET_ITEM(__pyx_t_12, 0, ((PyObject *)__pyx_v_result));
  __Pyx_GIVEREF(((PyObject *)__pyx_v_result));
  __Pyx_INCREF(((PyObject *)__pyx_v_lindexer));
  PyTuple_SET_ITEM(__pyx_t_12, 1, ((PyObject *)__pyx_v_lindexer));
  __Pyx_GIVEREF(((PyObject *)__pyx_v_lindexer));
  __Pyx_INCREF(((PyObject *)__pyx_v_rindexer));
  PyTuple_SET_ITEM(__pyx_t_12, 2, ((PyObject *)__pyx_v_rindexer));
  __Pyx_GIVEREF(((PyObject *)__pyx_v_rindexer));
  __pyx_r = ((PyObject *)__pyx_t_12);
  __pyx_t_12 = 0;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_11);
  __Pyx_XDECREF(__pyx_t_12);
  __Pyx_XDECREF(__pyx_t_13);
  { PyObject *__pyx_type, *__pyx_value, *__pyx_tb;
    __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);
    __Pyx_SafeReleaseBuffer(&__pyx_bstruct_result);
    __Pyx_SafeReleaseBuffer(&__pyx_bstruct_right);
    __Pyx_SafeReleaseBuffer(&__pyx_bstruct_lindexer);
    __Pyx_SafeReleaseBuffer(&__pyx_bstruct_rindexer);
    __Pyx_SafeReleaseBuffer(&__pyx_bstruct_left);
  __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);}
  __Pyx_AddTraceback("pandas._algos.outer_join_indexer_object", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  goto __pyx_L2;
  __pyx_L0:;
  __Pyx_SafeReleaseBuffer(&__pyx_bstruct_result);
  __Pyx_SafeReleaseBuffer(&__pyx_bstruct_right);
  __Pyx_SafeReleaseBuffer(&__pyx_bstruct_lindexer);
  __Pyx_SafeReleaseBuffer(&__pyx_bstruct_rindexer);
  __Pyx_SafeReleaseBuffer(&__pyx_bstruct_left);
  __pyx_L2:;
  __Pyx_XDECREF(__pyx_v_lval);
  __Pyx_XDECREF(__pyx_v_rval);
  __Pyx_XDECREF((PyObject *)__pyx_v_lindexer);
  __Pyx_XDECREF((PyObject *)__pyx_v_rindexer);
  __Pyx_XDECREF((PyObject *)__pyx_v_result);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "pandas/src/generated.pyx":3388
 * @cython.wraparound(False)
 * @cython.boundscheck(False)
 * def outer_join_indexer_int32(ndarray[int32_t] left,             # <<<<<<<<<<<<<<
 *                                 ndarray[int32_t] right):
 *     cdef:
 */

static PyObject *__pyx_pf_6pandas_6_algos_85outer_join_indexer_int32(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_6pandas_6_algos_85outer_join_indexer_int32 = {__Pyx_NAMESTR("outer_join_indexer_int32"), (PyCFunction)__pyx_pf_6pandas_6_algos_85outer_join_indexer_int32, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(0)};
static PyObject *__pyx_pf_6pandas_6_algos_85outer_join_indexer_int32(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyArrayObject *__pyx_v_left = 0;
  PyArrayObject *__pyx_v_right = 0;
  Py_ssize_t __pyx_v_i;
  Py_ssize_t __pyx_v_j;
  Py_ssize_t __pyx_v_nright;
  Py_ssize_t __pyx_v_nleft;
  Py_ssize_t __pyx_v_count;
  __pyx_t_5numpy_int32_t __pyx_v_lval;
  __pyx_t_5numpy_int32_t __pyx_v_rval;
  PyArrayObject *__pyx_v_lindexer = 0;
  PyArrayObject *__pyx_v_rindexer = 0;
  PyArrayObject *__pyx_v_result = 0;
  Py_buffer __pyx_bstruct_result;
  Py_ssize_t __pyx_bstride_0_result = 0;
  Py_ssize_t __pyx_bshape_0_result = 0;
  Py_buffer __pyx_bstruct_right;
  Py_ssize_t __pyx_bstride_0_right = 0;
  Py_ssize_t __pyx_bshape_0_right = 0;
  Py_buffer __pyx_bstruct_lindexer;
  Py_ssize_t __pyx_bstride_0_lindexer = 0;
  Py_ssize_t __pyx_bshape_0_lindexer = 0;
  Py_buffer __pyx_bstruct_rindexer;
  Py_ssize_t __pyx_bstride_0_rindexer = 0;
  Py_ssize_t __pyx_bshape_0_rindexer = 0;
  Py_buffer __pyx_bstruct_left;
  Py_ssize_t __pyx_bstride_0_left = 0;
  Py_ssize_t __pyx_bshape_0_left = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  Py_ssize_t __pyx_t_1;
  int __pyx_t_2;
  Py_ssize_t __pyx_t_3;
  Py_ssize_t __pyx_t_4;
  int __pyx_t_5;
  int __pyx_t_6;
  Py_ssize_t __pyx_t_7;
  Py_ssize_t __pyx_t_8;
  PyObject *__pyx_t_9 = NULL;
  PyObject *__pyx_t_10 = NULL;
  PyObject *__pyx_t_11 = NULL;
  PyObject *__pyx_t_12 = NULL;
  PyObject *__pyx_t_13 = NULL;
  PyArrayObject *__pyx_t_14 = NULL;
  int __pyx_t_15;
  PyObject *__pyx_t_16 = NULL;
  PyObject *__pyx_t_17 = NULL;
  PyObject *__pyx_t_18 = NULL;
  PyArrayObject *__pyx_t_19 = NULL;
  Py_ssize_t __pyx_t_20;
  Py_ssize_t __pyx_t_21;
  Py_ssize_t __pyx_t_22;
  Py_ssize_t __pyx_t_23;
  Py_ssize_t __pyx_t_24;
  Py_ssize_t __pyx_t_25;
  Py_ssize_t __pyx_t_26;
  Py_ssize_t __pyx_t_27;
  Py_ssize_t __pyx_t_28;
  Py_ssize_t __pyx_t_29;
  Py_ssize_t __pyx_t_30;
  Py_ssize_t __pyx_t_31;
  Py_ssize_t __pyx_t_32;
  Py_ssize_t __pyx_t_33;
  Py_ssize_t __pyx_t_34;
  Py_ssize_t __pyx_t_35;
  Py_ssize_t __pyx_t_36;
  Py_ssize_t __pyx_t_37;
  Py_ssize_t __pyx_t_38;
  Py_ssize_t __pyx_t_39;
  Py_ssize_t __pyx_t_40;
  Py_ssize_t __pyx_t_41;
  Py_ssize_t __pyx_t_42;
  Py_ssize_t __pyx_t_43;
  Py_ssize_t __pyx_t_44;
  Py_ssize_t __pyx_t_45;
  Py_ssize_t __pyx_t_46;
  Py_ssize_t __pyx_t_47;
  Py_ssize_t __pyx_t_48;
  Py_ssize_t __pyx_t_49;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__left,&__pyx_n_s__right,0};
  __Pyx_RefNannySetupContext("outer_join_indexer_int32");
  __pyx_self = __pyx_self;
  {
    PyObject* values[2] = {0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  0:
        values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__left);
        if (likely(values[0])) kw_args--;
        else goto __pyx_L5_argtuple_error;
        case  1:
        values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__right);
        if (likely(values[1])) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("outer_join_indexer_int32", 1, 2, 2, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3388; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "outer_join_indexer_int32") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3388; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
    }
    __pyx_v_left = ((PyArrayObject *)values[0]);
    __pyx_v_right = ((PyArrayObject *)values[1]);
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("outer_join_indexer_int32", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3388; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("pandas._algos.outer_join_indexer_int32", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_bstruct_lindexer.buf = NULL;
  __pyx_bstruct_rindexer.buf = NULL;
  __pyx_bstruct_result.buf = NULL;
  __pyx_bstruct_left.buf = NULL;
  __pyx_bstruct_right.buf = NULL;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_left), __pyx_ptype_5numpy_ndarray, 1, "left", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3388; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_right), __pyx_ptype_5numpy_ndarray, 1, "right", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3389; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_left, (PyObject*)__pyx_v_left, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int32_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3388; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  }
  __pyx_bstride_0_left = __pyx_bstruct_left.strides[0];
  __pyx_bshape_0_left = __pyx_bstruct_left.shape[0];
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_right, (PyObject*)__pyx_v_right, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int32_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3388; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  }
  __pyx_bstride_0_right = __pyx_bstruct_right.strides[0];
  __pyx_bshape_0_right = __pyx_bstruct_right.shape[0];

  /* "pandas/src/generated.pyx":3396
 *         ndarray[int32_t] result
 * 
 *     nleft = len(left)             # <<<<<<<<<<<<<<
 *     nright = len(right)
 * 
 */
  __pyx_t_1 = PyObject_Length(((PyObject *)__pyx_v_left)); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3396; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_v_nleft = __pyx_t_1;

  /* "pandas/src/generated.pyx":3397
 * 
 *     nleft = len(left)
 *     nright = len(right)             # <<<<<<<<<<<<<<
 * 
 *     i = 0
 */
  __pyx_t_1 = PyObject_Length(((PyObject *)__pyx_v_right)); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3397; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_v_nright = __pyx_t_1;

  /* "pandas/src/generated.pyx":3399
 *     nright = len(right)
 * 
 *     i = 0             # <<<<<<<<<<<<<<
 *     j = 0
 *     count = 0
 */
  __pyx_v_i = 0;

  /* "pandas/src/generated.pyx":3400
 * 
 *     i = 0
 *     j = 0             # <<<<<<<<<<<<<<
 *     count = 0
 *     if nleft == 0:
 */
  __pyx_v_j = 0;

  /* "pandas/src/generated.pyx":3401
 *     i = 0
 *     j = 0
 *     count = 0             # <<<<<<<<<<<<<<
 *     if nleft == 0:
 *         count = nright
 */
  __pyx_v_count = 0;

  /* "pandas/src/generated.pyx":3402
 *     j = 0
 *     count = 0
 *     if nleft == 0:             # <<<<<<<<<<<<<<
 *         count = nright
 *     elif nright == 0:
 */
  __pyx_t_2 = (__pyx_v_nleft == 0);
  if (__pyx_t_2) {

    /* "pandas/src/generated.pyx":3403
 *     count = 0
 *     if nleft == 0:
 *         count = nright             # <<<<<<<<<<<<<<
 *     elif nright == 0:
 *         count = nleft
 */
    __pyx_v_count = __pyx_v_nright;
    goto __pyx_L6;
  }

  /* "pandas/src/generated.pyx":3404
 *     if nleft == 0:
 *         count = nright
 *     elif nright == 0:             # <<<<<<<<<<<<<<
 *         count = nleft
 *     else:
 */
  __pyx_t_2 = (__pyx_v_nright == 0);
  if (__pyx_t_2) {

    /* "pandas/src/generated.pyx":3405
 *         count = nright
 *     elif nright == 0:
 *         count = nleft             # <<<<<<<<<<<<<<
 *     else:
 *         while True:
 */
    __pyx_v_count = __pyx_v_nleft;
    goto __pyx_L6;
  }
  /*else*/ {

    /* "pandas/src/generated.pyx":3407
 *         count = nleft
 *     else:
 *         while True:             # <<<<<<<<<<<<<<
 *             if i == nleft:
 *                 count += nright - j
 */
    while (1) {
      if (!1) break;

      /* "pandas/src/generated.pyx":3408
 *     else:
 *         while True:
 *             if i == nleft:             # <<<<<<<<<<<<<<
 *                 count += nright - j
 *                 break
 */
      __pyx_t_2 = (__pyx_v_i == __pyx_v_nleft);
      if (__pyx_t_2) {

        /* "pandas/src/generated.pyx":3409
 *         while True:
 *             if i == nleft:
 *                 count += nright - j             # <<<<<<<<<<<<<<
 *                 break
 *             if j == nright:
 */
        __pyx_v_count = (__pyx_v_count + (__pyx_v_nright - __pyx_v_j));

        /* "pandas/src/generated.pyx":3410
 *             if i == nleft:
 *                 count += nright - j
 *                 break             # <<<<<<<<<<<<<<
 *             if j == nright:
 *                 count += nleft - i
 */
        goto __pyx_L8_break;
        goto __pyx_L9;
      }
      __pyx_L9:;

      /* "pandas/src/generated.pyx":3411
 *                 count += nright - j
 *                 break
 *             if j == nright:             # <<<<<<<<<<<<<<
 *                 count += nleft - i
 *                 break
 */
      __pyx_t_2 = (__pyx_v_j == __pyx_v_nright);
      if (__pyx_t_2) {

        /* "pandas/src/generated.pyx":3412
 *                 break
 *             if j == nright:
 *                 count += nleft - i             # <<<<<<<<<<<<<<
 *                 break
 * 
 */
        __pyx_v_count = (__pyx_v_count + (__pyx_v_nleft - __pyx_v_i));

        /* "pandas/src/generated.pyx":3413
 *             if j == nright:
 *                 count += nleft - i
 *                 break             # <<<<<<<<<<<<<<
 * 
 *             lval = left[i]
 */
        goto __pyx_L8_break;
        goto __pyx_L10;
      }
      __pyx_L10:;

      /* "pandas/src/generated.pyx":3415
 *                 break
 * 
 *             lval = left[i]             # <<<<<<<<<<<<<<
 *             rval = right[j]
 *             if lval == rval:
 */
      __pyx_t_1 = __pyx_v_i;
      __pyx_v_lval = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int32_t *, __pyx_bstruct_left.buf, __pyx_t_1, __pyx_bstride_0_left));

      /* "pandas/src/generated.pyx":3416
 * 
 *             lval = left[i]
 *             rval = right[j]             # <<<<<<<<<<<<<<
 *             if lval == rval:
 *                 count += 1
 */
      __pyx_t_3 = __pyx_v_j;
      __pyx_v_rval = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int32_t *, __pyx_bstruct_right.buf, __pyx_t_3, __pyx_bstride_0_right));

      /* "pandas/src/generated.pyx":3417
 *             lval = left[i]
 *             rval = right[j]
 *             if lval == rval:             # <<<<<<<<<<<<<<
 *                 count += 1
 *                 if i < nleft - 1:
 */
      __pyx_t_2 = (__pyx_v_lval == __pyx_v_rval);
      if (__pyx_t_2) {

        /* "pandas/src/generated.pyx":3418
 *             rval = right[j]
 *             if lval == rval:
 *                 count += 1             # <<<<<<<<<<<<<<
 *                 if i < nleft - 1:
 *                     if j < nright - 1 and right[j + 1] == rval:
 */
        __pyx_v_count = (__pyx_v_count + 1);

        /* "pandas/src/generated.pyx":3419
 *             if lval == rval:
 *                 count += 1
 *                 if i < nleft - 1:             # <<<<<<<<<<<<<<
 *                     if j < nright - 1 and right[j + 1] == rval:
 *                         j += 1
 */
        __pyx_t_2 = (__pyx_v_i < (__pyx_v_nleft - 1));
        if (__pyx_t_2) {

          /* "pandas/src/generated.pyx":3420
 *                 count += 1
 *                 if i < nleft - 1:
 *                     if j < nright - 1 and right[j + 1] == rval:             # <<<<<<<<<<<<<<
 *                         j += 1
 *                     else:
 */
          __pyx_t_2 = (__pyx_v_j < (__pyx_v_nright - 1));
          if (__pyx_t_2) {
            __pyx_t_4 = (__pyx_v_j + 1);
            __pyx_t_5 = ((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int32_t *, __pyx_bstruct_right.buf, __pyx_t_4, __pyx_bstride_0_right)) == __pyx_v_rval);
            __pyx_t_6 = __pyx_t_5;
          } else {
            __pyx_t_6 = __pyx_t_2;
          }
          if (__pyx_t_6) {

            /* "pandas/src/generated.pyx":3421
 *                 if i < nleft - 1:
 *                     if j < nright - 1 and right[j + 1] == rval:
 *                         j += 1             # <<<<<<<<<<<<<<
 *                     else:
 *                         i += 1
 */
            __pyx_v_j = (__pyx_v_j + 1);
            goto __pyx_L13;
          }
          /*else*/ {

            /* "pandas/src/generated.pyx":3423
 *                         j += 1
 *                     else:
 *                         i += 1             # <<<<<<<<<<<<<<
 *                         if left[i] != rval:
 *                             j += 1
 */
            __pyx_v_i = (__pyx_v_i + 1);

            /* "pandas/src/generated.pyx":3424
 *                     else:
 *                         i += 1
 *                         if left[i] != rval:             # <<<<<<<<<<<<<<
 *                             j += 1
 *                 elif j < nright - 1:
 */
            __pyx_t_7 = __pyx_v_i;
            __pyx_t_6 = ((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int32_t *, __pyx_bstruct_left.buf, __pyx_t_7, __pyx_bstride_0_left)) != __pyx_v_rval);
            if (__pyx_t_6) {

              /* "pandas/src/generated.pyx":3425
 *                         i += 1
 *                         if left[i] != rval:
 *                             j += 1             # <<<<<<<<<<<<<<
 *                 elif j < nright - 1:
 *                     j += 1
 */
              __pyx_v_j = (__pyx_v_j + 1);
              goto __pyx_L14;
            }
            __pyx_L14:;
          }
          __pyx_L13:;
          goto __pyx_L12;
        }

        /* "pandas/src/generated.pyx":3426
 *                         if left[i] != rval:
 *                             j += 1
 *                 elif j < nright - 1:             # <<<<<<<<<<<<<<
 *                     j += 1
 *                     if lval != right[j]:
 */
        __pyx_t_6 = (__pyx_v_j < (__pyx_v_nright - 1));
        if (__pyx_t_6) {

          /* "pandas/src/generated.pyx":3427
 *                             j += 1
 *                 elif j < nright - 1:
 *                     j += 1             # <<<<<<<<<<<<<<
 *                     if lval != right[j]:
 *                         i += 1
 */
          __pyx_v_j = (__pyx_v_j + 1);

          /* "pandas/src/generated.pyx":3428
 *                 elif j < nright - 1:
 *                     j += 1
 *                     if lval != right[j]:             # <<<<<<<<<<<<<<
 *                         i += 1
 *                 else:
 */
          __pyx_t_8 = __pyx_v_j;
          __pyx_t_6 = (__pyx_v_lval != (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int32_t *, __pyx_bstruct_right.buf, __pyx_t_8, __pyx_bstride_0_right)));
          if (__pyx_t_6) {

            /* "pandas/src/generated.pyx":3429
 *                     j += 1
 *                     if lval != right[j]:
 *                         i += 1             # <<<<<<<<<<<<<<
 *                 else:
 *                     # end of the road
 */
            __pyx_v_i = (__pyx_v_i + 1);
            goto __pyx_L15;
          }
          __pyx_L15:;
          goto __pyx_L12;
        }
        /*else*/ {

          /* "pandas/src/generated.pyx":3432
 *                 else:
 *                     # end of the road
 *                     break             # <<<<<<<<<<<<<<
 *             elif lval < rval:
 *                 count += 1
 */
          goto __pyx_L8_break;
        }
        __pyx_L12:;
        goto __pyx_L11;
      }

      /* "pandas/src/generated.pyx":3433
 *                     # end of the road
 *                     break
 *             elif lval < rval:             # <<<<<<<<<<<<<<
 *                 count += 1
 *                 i += 1
 */
      __pyx_t_6 = (__pyx_v_lval < __pyx_v_rval);
      if (__pyx_t_6) {

        /* "pandas/src/generated.pyx":3434
 *                     break
 *             elif lval < rval:
 *                 count += 1             # <<<<<<<<<<<<<<
 *                 i += 1
 *             else:
 */
        __pyx_v_count = (__pyx_v_count + 1);

        /* "pandas/src/generated.pyx":3435
 *             elif lval < rval:
 *                 count += 1
 *                 i += 1             # <<<<<<<<<<<<<<
 *             else:
 *                 count += 1
 */
        __pyx_v_i = (__pyx_v_i + 1);
        goto __pyx_L11;
      }
      /*else*/ {

        /* "pandas/src/generated.pyx":3437
 *                 i += 1
 *             else:
 *                 count += 1             # <<<<<<<<<<<<<<
 *                 j += 1
 * 
 */
        __pyx_v_count = (__pyx_v_count + 1);

        /* "pandas/src/generated.pyx":3438
 *             else:
 *                 count += 1
 *                 j += 1             # <<<<<<<<<<<<<<
 * 
 *     lindexer = np.empty(count, dtype=np.int64)
 */
        __pyx_v_j = (__pyx_v_j + 1);
      }
      __pyx_L11:;
    }
    __pyx_L8_break:;
  }
  __pyx_L6:;

  /* "pandas/src/generated.pyx":3440
 *                 j += 1
 * 
 *     lindexer = np.empty(count, dtype=np.int64)             # <<<<<<<<<<<<<<
 *     rindexer = np.empty(count, dtype=np.int64)
 *     result = np.empty(count, dtype=np.int32)
 */
  __pyx_t_9 = __Pyx_GetName(__pyx_m, __pyx_n_s__np); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3440; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_9);
  __pyx_t_10 = PyObject_GetAttr(__pyx_t_9, __pyx_n_s__empty); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3440; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_10);
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  __pyx_t_9 = PyInt_FromSsize_t(__pyx_v_count); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3440; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_9);
  __pyx_t_11 = PyTuple_New(1); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3440; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_11));
  PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_9);
  __Pyx_GIVEREF(__pyx_t_9);
  __pyx_t_9 = 0;
  __pyx_t_9 = PyDict_New(); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3440; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_9));
  __pyx_t_12 = __Pyx_GetName(__pyx_m, __pyx_n_s__np); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3440; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_12);
  __pyx_t_13 = PyObject_GetAttr(__pyx_t_12, __pyx_n_s__int64); if (unlikely(!__pyx_t_13)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3440; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_13);
  __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
  if (PyDict_SetItem(__pyx_t_9, ((PyObject *)__pyx_n_s__dtype), __pyx_t_13) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3440; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
  __pyx_t_13 = PyEval_CallObjectWithKeywords(__pyx_t_10, ((PyObject *)__pyx_t_11), ((PyObject *)__pyx_t_9)); if (unlikely(!__pyx_t_13)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3440; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_13);
  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
  __Pyx_DECREF(((PyObject *)__pyx_t_11)); __pyx_t_11 = 0;
  __Pyx_DECREF(((PyObject *)__pyx_t_9)); __pyx_t_9 = 0;
  if (!(likely(((__pyx_t_13) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_13, __pyx_ptype_5numpy_ndarray))))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3440; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_t_14 = ((PyArrayObject *)__pyx_t_13);
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    __Pyx_SafeReleaseBuffer(&__pyx_bstruct_lindexer);
    __pyx_t_15 = __Pyx_GetBufferAndValidate(&__pyx_bstruct_lindexer, (PyObject*)__pyx_t_14, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack);
    if (unlikely(__pyx_t_15 < 0)) {
      PyErr_Fetch(&__pyx_t_16, &__pyx_t_17, &__pyx_t_18);
      if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_lindexer, (PyObject*)__pyx_v_lindexer, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) {
        Py_XDECREF(__pyx_t_16); Py_XDECREF(__pyx_t_17); Py_XDECREF(__pyx_t_18);
        __Pyx_RaiseBufferFallbackError();
      } else {
        PyErr_Restore(__pyx_t_16, __pyx_t_17, __pyx_t_18);
      }
    }
    __pyx_bstride_0_lindexer = __pyx_bstruct_lindexer.strides[0];
    __pyx_bshape_0_lindexer = __pyx_bstruct_lindexer.shape[0];
    if (unlikely(__pyx_t_15 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3440; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  }
  __pyx_t_14 = 0;
  __pyx_v_lindexer = ((PyArrayObject *)__pyx_t_13);
  __pyx_t_13 = 0;

  /* "pandas/src/generated.pyx":3441
 * 
 *     lindexer = np.empty(count, dtype=np.int64)
 *     rindexer = np.empty(count, dtype=np.int64)             # <<<<<<<<<<<<<<
 *     result = np.empty(count, dtype=np.int32)
 * 
 */
  __pyx_t_13 = __Pyx_GetName(__pyx_m, __pyx_n_s__np); if (unlikely(!__pyx_t_13)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3441; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_13);
  __pyx_t_9 = PyObject_GetAttr(__pyx_t_13, __pyx_n_s__empty); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3441; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_9);
  __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
  __pyx_t_13 = PyInt_FromSsize_t(__pyx_v_count); if (unlikely(!__pyx_t_13)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3441; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_13);
  __pyx_t_11 = PyTuple_New(1); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3441; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_11));
  PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_13);
  __Pyx_GIVEREF(__pyx_t_13);
  __pyx_t_13 = 0;
  __pyx_t_13 = PyDict_New(); if (unlikely(!__pyx_t_13)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3441; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_13));
  __pyx_t_10 = __Pyx_GetName(__pyx_m, __pyx_n_s__np); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3441; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_10);
  __pyx_t_12 = PyObject_GetAttr(__pyx_t_10, __pyx_n_s__int64); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3441; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_12);
  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
  if (PyDict_SetItem(__pyx_t_13, ((PyObject *)__pyx_n_s__dtype), __pyx_t_12) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3441; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
  __pyx_t_12 = PyEval_CallObjectWithKeywords(__pyx_t_9, ((PyObject *)__pyx_t_11), ((PyObject *)__pyx_t_13)); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3441; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_12);
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  __Pyx_DECREF(((PyObject *)__pyx_t_11)); __pyx_t_11 = 0;
  __Pyx_DECREF(((PyObject *)__pyx_t_13)); __pyx_t_13 = 0;
  if (!(likely(((__pyx_t_12) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_12, __pyx_ptype_5numpy_ndarray))))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3441; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_t_14 = ((PyArrayObject *)__pyx_t_12);
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    __Pyx_SafeReleaseBuffer(&__pyx_bstruct_rindexer);
    __pyx_t_15 = __Pyx_GetBufferAndValidate(&__pyx_bstruct_rindexer, (PyObject*)__pyx_t_14, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack);
    if (unlikely(__pyx_t_15 < 0)) {
      PyErr_Fetch(&__pyx_t_18, &__pyx_t_17, &__pyx_t_16);
      if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_rindexer, (PyObject*)__pyx_v_rindexer, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) {
        Py_XDECREF(__pyx_t_18); Py_XDECREF(__pyx_t_17); Py_XDECREF(__pyx_t_16);
        __Pyx_RaiseBufferFallbackError();
      } else {
        PyErr_Restore(__pyx_t_18, __pyx_t_17, __pyx_t_16);
      }
    }
    __pyx_bstride_0_rindexer = __pyx_bstruct_rindexer.strides[0];
    __pyx_bshape_0_rindexer = __pyx_bstruct_rindexer.shape[0];
    if (unlikely(__pyx_t_15 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3441; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  }
  __pyx_t_14 = 0;
  __pyx_v_rindexer = ((PyArrayObject *)__pyx_t_12);
  __pyx_t_12 = 0;

  /* "pandas/src/generated.pyx":3442
 *     lindexer = np.empty(count, dtype=np.int64)
 *     rindexer = np.empty(count, dtype=np.int64)
 *     result = np.empty(count, dtype=np.int32)             # <<<<<<<<<<<<<<
 * 
 *     # do it again, but populate the indexers / result
 */
  __pyx_t_12 = __Pyx_GetName(__pyx_m, __pyx_n_s__np); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3442; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_12);
  __pyx_t_13 = PyObject_GetAttr(__pyx_t_12, __pyx_n_s__empty); if (unlikely(!__pyx_t_13)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3442; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_13);
  __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
  __pyx_t_12 = PyInt_FromSsize_t(__pyx_v_count); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3442; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_12);
  __pyx_t_11 = PyTuple_New(1); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3442; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_11));
  PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_12);
  __Pyx_GIVEREF(__pyx_t_12);
  __pyx_t_12 = 0;
  __pyx_t_12 = PyDict_New(); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3442; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_12));
  __pyx_t_9 = __Pyx_GetName(__pyx_m, __pyx_n_s__np); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3442; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_9);
  __pyx_t_10 = PyObject_GetAttr(__pyx_t_9, __pyx_n_s__int32); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3442; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_10);
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  if (PyDict_SetItem(__pyx_t_12, ((PyObject *)__pyx_n_s__dtype), __pyx_t_10) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3442; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
  __pyx_t_10 = PyEval_CallObjectWithKeywords(__pyx_t_13, ((PyObject *)__pyx_t_11), ((PyObject *)__pyx_t_12)); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3442; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_10);
  __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
  __Pyx_DECREF(((PyObject *)__pyx_t_11)); __pyx_t_11 = 0;
  __Pyx_DECREF(((PyObject *)__pyx_t_12)); __pyx_t_12 = 0;
  if (!(likely(((__pyx_t_10) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_10, __pyx_ptype_5numpy_ndarray))))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3442; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_t_19 = ((PyArrayObject *)__pyx_t_10);
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    __Pyx_SafeReleaseBuffer(&__pyx_bstruct_result);
    __pyx_t_15 = __Pyx_GetBufferAndValidate(&__pyx_bstruct_result, (PyObject*)__pyx_t_19, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int32_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack);
    if (unlikely(__pyx_t_15 < 0)) {
      PyErr_Fetch(&__pyx_t_16, &__pyx_t_17, &__pyx_t_18);
      if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_result, (PyObject*)__pyx_v_result, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int32_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) {
        Py_XDECREF(__pyx_t_16); Py_XDECREF(__pyx_t_17); Py_XDECREF(__pyx_t_18);
        __Pyx_RaiseBufferFallbackError();
      } else {
        PyErr_Restore(__pyx_t_16, __pyx_t_17, __pyx_t_18);
      }
    }
    __pyx_bstride_0_result = __pyx_bstruct_result.strides[0];
    __pyx_bshape_0_result = __pyx_bstruct_result.shape[0];
    if (unlikely(__pyx_t_15 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3442; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  }
  __pyx_t_19 = 0;
  __pyx_v_result = ((PyArrayObject *)__pyx_t_10);
  __pyx_t_10 = 0;

  /* "pandas/src/generated.pyx":3446
 *     # do it again, but populate the indexers / result
 * 
 *     i = 0             # <<<<<<<<<<<<<<
 *     j = 0
 *     count = 0
 */
  __pyx_v_i = 0;

  /* "pandas/src/generated.pyx":3447
 * 
 *     i = 0
 *     j = 0             # <<<<<<<<<<<<<<
 *     count = 0
 *     if nleft == 0:
 */
  __pyx_v_j = 0;

  /* "pandas/src/generated.pyx":3448
 *     i = 0
 *     j = 0
 *     count = 0             # <<<<<<<<<<<<<<
 *     if nleft == 0:
 *         for j in range(nright):
 */
  __pyx_v_count = 0;

  /* "pandas/src/generated.pyx":3449
 *     j = 0
 *     count = 0
 *     if nleft == 0:             # <<<<<<<<<<<<<<
 *         for j in range(nright):
 *             lindexer[j] = -1
 */
  __pyx_t_6 = (__pyx_v_nleft == 0);
  if (__pyx_t_6) {

    /* "pandas/src/generated.pyx":3450
 *     count = 0
 *     if nleft == 0:
 *         for j in range(nright):             # <<<<<<<<<<<<<<
 *             lindexer[j] = -1
 *             rindexer[j] = j
 */
    __pyx_t_20 = __pyx_v_nright;
    for (__pyx_t_21 = 0; __pyx_t_21 < __pyx_t_20; __pyx_t_21+=1) {
      __pyx_v_j = __pyx_t_21;

      /* "pandas/src/generated.pyx":3451
 *     if nleft == 0:
 *         for j in range(nright):
 *             lindexer[j] = -1             # <<<<<<<<<<<<<<
 *             rindexer[j] = j
 *             result[j] = right[j]
 */
      __pyx_t_22 = __pyx_v_j;
      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_bstruct_lindexer.buf, __pyx_t_22, __pyx_bstride_0_lindexer) = -1;

      /* "pandas/src/generated.pyx":3452
 *         for j in range(nright):
 *             lindexer[j] = -1
 *             rindexer[j] = j             # <<<<<<<<<<<<<<
 *             result[j] = right[j]
 *     elif nright == 0:
 */
      __pyx_t_23 = __pyx_v_j;
      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_bstruct_rindexer.buf, __pyx_t_23, __pyx_bstride_0_rindexer) = __pyx_v_j;

      /* "pandas/src/generated.pyx":3453
 *             lindexer[j] = -1
 *             rindexer[j] = j
 *             result[j] = right[j]             # <<<<<<<<<<<<<<
 *     elif nright == 0:
 *         for i in range(nright):
 */
      __pyx_t_24 = __pyx_v_j;
      __pyx_t_25 = __pyx_v_j;
      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int32_t *, __pyx_bstruct_result.buf, __pyx_t_25, __pyx_bstride_0_result) = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int32_t *, __pyx_bstruct_right.buf, __pyx_t_24, __pyx_bstride_0_right));
    }
    goto __pyx_L16;
  }

  /* "pandas/src/generated.pyx":3454
 *             rindexer[j] = j
 *             result[j] = right[j]
 *     elif nright == 0:             # <<<<<<<<<<<<<<
 *         for i in range(nright):
 *             lindexer[i] = i
 */
  __pyx_t_6 = (__pyx_v_nright == 0);
  if (__pyx_t_6) {

    /* "pandas/src/generated.pyx":3455
 *             result[j] = right[j]
 *     elif nright == 0:
 *         for i in range(nright):             # <<<<<<<<<<<<<<
 *             lindexer[i] = i
 *             rindexer[i] = -1
 */
    __pyx_t_20 = __pyx_v_nright;
    for (__pyx_t_21 = 0; __pyx_t_21 < __pyx_t_20; __pyx_t_21+=1) {
      __pyx_v_i = __pyx_t_21;

      /* "pandas/src/generated.pyx":3456
 *     elif nright == 0:
 *         for i in range(nright):
 *             lindexer[i] = i             # <<<<<<<<<<<<<<
 *             rindexer[i] = -1
 *             result[i] = left[i]
 */
      __pyx_t_26 = __pyx_v_i;
      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_bstruct_lindexer.buf, __pyx_t_26, __pyx_bstride_0_lindexer) = __pyx_v_i;

      /* "pandas/src/generated.pyx":3457
 *         for i in range(nright):
 *             lindexer[i] = i
 *             rindexer[i] = -1             # <<<<<<<<<<<<<<
 *             result[i] = left[i]
 *     else:
 */
      __pyx_t_27 = __pyx_v_i;
      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_bstruct_rindexer.buf, __pyx_t_27, __pyx_bstride_0_rindexer) = -1;

      /* "pandas/src/generated.pyx":3458
 *             lindexer[i] = i
 *             rindexer[i] = -1
 *             result[i] = left[i]             # <<<<<<<<<<<<<<
 *     else:
 *         while True:
 */
      __pyx_t_28 = __pyx_v_i;
      __pyx_t_29 = __pyx_v_i;
      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int32_t *, __pyx_bstruct_result.buf, __pyx_t_29, __pyx_bstride_0_result) = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int32_t *, __pyx_bstruct_left.buf, __pyx_t_28, __pyx_bstride_0_left));
    }
    goto __pyx_L16;
  }
  /*else*/ {

    /* "pandas/src/generated.pyx":3460
 *             result[i] = left[i]
 *     else:
 *         while True:             # <<<<<<<<<<<<<<
 *             if i == nleft:
 *                 while j < nright:
 */
    while (1) {
      if (!1) break;

      /* "pandas/src/generated.pyx":3461
 *     else:
 *         while True:
 *             if i == nleft:             # <<<<<<<<<<<<<<
 *                 while j < nright:
 *                     lindexer[count] = -1
 */
      __pyx_t_6 = (__pyx_v_i == __pyx_v_nleft);
      if (__pyx_t_6) {

        /* "pandas/src/generated.pyx":3462
 *         while True:
 *             if i == nleft:
 *                 while j < nright:             # <<<<<<<<<<<<<<
 *                     lindexer[count] = -1
 *                     rindexer[count] = j
 */
        while (1) {
          __pyx_t_6 = (__pyx_v_j < __pyx_v_nright);
          if (!__pyx_t_6) break;

          /* "pandas/src/generated.pyx":3463
 *             if i == nleft:
 *                 while j < nright:
 *                     lindexer[count] = -1             # <<<<<<<<<<<<<<
 *                     rindexer[count] = j
 *                     result[count] = right[j]
 */
          __pyx_t_20 = __pyx_v_count;
          *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_bstruct_lindexer.buf, __pyx_t_20, __pyx_bstride_0_lindexer) = -1;

          /* "pandas/src/generated.pyx":3464
 *                 while j < nright:
 *                     lindexer[count] = -1
 *                     rindexer[count] = j             # <<<<<<<<<<<<<<
 *                     result[count] = right[j]
 *                     count += 1
 */
          __pyx_t_21 = __pyx_v_count;
          *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_bstruct_rindexer.buf, __pyx_t_21, __pyx_bstride_0_rindexer) = __pyx_v_j;

          /* "pandas/src/generated.pyx":3465
 *                     lindexer[count] = -1
 *                     rindexer[count] = j
 *                     result[count] = right[j]             # <<<<<<<<<<<<<<
 *                     count += 1
 *                     j += 1
 */
          __pyx_t_30 = __pyx_v_j;
          __pyx_t_31 = __pyx_v_count;
          *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int32_t *, __pyx_bstruct_result.buf, __pyx_t_31, __pyx_bstride_0_result) = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int32_t *, __pyx_bstruct_right.buf, __pyx_t_30, __pyx_bstride_0_right));

          /* "pandas/src/generated.pyx":3466
 *                     rindexer[count] = j
 *                     result[count] = right[j]
 *                     count += 1             # <<<<<<<<<<<<<<
 *                     j += 1
 *                 break
 */
          __pyx_v_count = (__pyx_v_count + 1);

          /* "pandas/src/generated.pyx":3467
 *                     result[count] = right[j]
 *                     count += 1
 *                     j += 1             # <<<<<<<<<<<<<<
 *                 break
 *             if j == nright:
 */
          __pyx_v_j = (__pyx_v_j + 1);
        }

        /* "pandas/src/generated.pyx":3468
 *                     count += 1
 *                     j += 1
 *                 break             # <<<<<<<<<<<<<<
 *             if j == nright:
 *                 while i < nleft:
 */
        goto __pyx_L22_break;
        goto __pyx_L23;
      }
      __pyx_L23:;

      /* "pandas/src/generated.pyx":3469
 *                     j += 1
 *                 break
 *             if j == nright:             # <<<<<<<<<<<<<<
 *                 while i < nleft:
 *                     lindexer[count] = i
 */
      __pyx_t_6 = (__pyx_v_j == __pyx_v_nright);
      if (__pyx_t_6) {

        /* "pandas/src/generated.pyx":3470
 *                 break
 *             if j == nright:
 *                 while i < nleft:             # <<<<<<<<<<<<<<
 *                     lindexer[count] = i
 *                     rindexer[count] = -1
 */
        while (1) {
          __pyx_t_6 = (__pyx_v_i < __pyx_v_nleft);
          if (!__pyx_t_6) break;

          /* "pandas/src/generated.pyx":3471
 *             if j == nright:
 *                 while i < nleft:
 *                     lindexer[count] = i             # <<<<<<<<<<<<<<
 *                     rindexer[count] = -1
 *                     result[count] = left[i]
 */
          __pyx_t_32 = __pyx_v_count;
          *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_bstruct_lindexer.buf, __pyx_t_32, __pyx_bstride_0_lindexer) = __pyx_v_i;

          /* "pandas/src/generated.pyx":3472
 *                 while i < nleft:
 *                     lindexer[count] = i
 *                     rindexer[count] = -1             # <<<<<<<<<<<<<<
 *                     result[count] = left[i]
 *                     count += 1
 */
          __pyx_t_33 = __pyx_v_count;
          *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_bstruct_rindexer.buf, __pyx_t_33, __pyx_bstride_0_rindexer) = -1;

          /* "pandas/src/generated.pyx":3473
 *                     lindexer[count] = i
 *                     rindexer[count] = -1
 *                     result[count] = left[i]             # <<<<<<<<<<<<<<
 *                     count += 1
 *                     i += 1
 */
          __pyx_t_34 = __pyx_v_i;
          __pyx_t_35 = __pyx_v_count;
          *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int32_t *, __pyx_bstruct_result.buf, __pyx_t_35, __pyx_bstride_0_result) = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int32_t *, __pyx_bstruct_left.buf, __pyx_t_34, __pyx_bstride_0_left));

          /* "pandas/src/generated.pyx":3474
 *                     rindexer[count] = -1
 *                     result[count] = left[i]
 *                     count += 1             # <<<<<<<<<<<<<<
 *                     i += 1
 *                 break
 */
          __pyx_v_count = (__pyx_v_count + 1);

          /* "pandas/src/generated.pyx":3475
 *                     result[count] = left[i]
 *                     count += 1
 *                     i += 1             # <<<<<<<<<<<<<<
 *                 break
 * 
 */
          __pyx_v_i = (__pyx_v_i + 1);
        }

        /* "pandas/src/generated.pyx":3476
 *                     count += 1
 *                     i += 1
 *                 break             # <<<<<<<<<<<<<<
 * 
 *             lval = left[i]
 */
        goto __pyx_L22_break;
        goto __pyx_L26;
      }
      __pyx_L26:;

      /* "pandas/src/generated.pyx":3478
 *                 break
 * 
 *             lval = left[i]             # <<<<<<<<<<<<<<
 *             rval = right[j]
 * 
 */
      __pyx_t_36 = __pyx_v_i;
      __pyx_v_lval = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int32_t *, __pyx_bstruct_left.buf, __pyx_t_36, __pyx_bstride_0_left));

      /* "pandas/src/generated.pyx":3479
 * 
 *             lval = left[i]
 *             rval = right[j]             # <<<<<<<<<<<<<<
 * 
 *             if lval == rval:
 */
      __pyx_t_37 = __pyx_v_j;
      __pyx_v_rval = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int32_t *, __pyx_bstruct_right.buf, __pyx_t_37, __pyx_bstride_0_right));

      /* "pandas/src/generated.pyx":3481
 *             rval = right[j]
 * 
 *             if lval == rval:             # <<<<<<<<<<<<<<
 *                 lindexer[count] = i
 *                 rindexer[count] = j
 */
      __pyx_t_6 = (__pyx_v_lval == __pyx_v_rval);
      if (__pyx_t_6) {

        /* "pandas/src/generated.pyx":3482
 * 
 *             if lval == rval:
 *                 lindexer[count] = i             # <<<<<<<<<<<<<<
 *                 rindexer[count] = j
 *                 result[count] = lval
 */
        __pyx_t_38 = __pyx_v_count;
        *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_bstruct_lindexer.buf, __pyx_t_38, __pyx_bstride_0_lindexer) = __pyx_v_i;

        /* "pandas/src/generated.pyx":3483
 *             if lval == rval:
 *                 lindexer[count] = i
 *                 rindexer[count] = j             # <<<<<<<<<<<<<<
 *                 result[count] = lval
 *                 count += 1
 */
        __pyx_t_39 = __pyx_v_count;
        *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_bstruct_rindexer.buf, __pyx_t_39, __pyx_bstride_0_rindexer) = __pyx_v_j;

        /* "pandas/src/generated.pyx":3484
 *                 lindexer[count] = i
 *                 rindexer[count] = j
 *                 result[count] = lval             # <<<<<<<<<<<<<<
 *                 count += 1
 *                 if i < nleft - 1:
 */
        __pyx_t_40 = __pyx_v_count;
        *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int32_t *, __pyx_bstruct_result.buf, __pyx_t_40, __pyx_bstride_0_result) = __pyx_v_lval;

        /* "pandas/src/generated.pyx":3485
 *                 rindexer[count] = j
 *                 result[count] = lval
 *                 count += 1             # <<<<<<<<<<<<<<
 *                 if i < nleft - 1:
 *                     if j < nright - 1 and right[j + 1] == rval:
 */
        __pyx_v_count = (__pyx_v_count + 1);

        /* "pandas/src/generated.pyx":3486
 *                 result[count] = lval
 *                 count += 1
 *                 if i < nleft - 1:             # <<<<<<<<<<<<<<
 *                     if j < nright - 1 and right[j + 1] == rval:
 *                         j += 1
 */
        __pyx_t_6 = (__pyx_v_i < (__pyx_v_nleft - 1));
        if (__pyx_t_6) {

          /* "pandas/src/generated.pyx":3487
 *                 count += 1
 *                 if i < nleft - 1:
 *                     if j < nright - 1 and right[j + 1] == rval:             # <<<<<<<<<<<<<<
 *                         j += 1
 *                     else:
 */
          __pyx_t_6 = (__pyx_v_j < (__pyx_v_nright - 1));
          if (__pyx_t_6) {
            __pyx_t_41 = (__pyx_v_j + 1);
            __pyx_t_2 = ((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int32_t *, __pyx_bstruct_right.buf, __pyx_t_41, __pyx_bstride_0_right)) == __pyx_v_rval);
            __pyx_t_5 = __pyx_t_2;
          } else {
            __pyx_t_5 = __pyx_t_6;
          }
          if (__pyx_t_5) {

            /* "pandas/src/generated.pyx":3488
 *                 if i < nleft - 1:
 *                     if j < nright - 1 and right[j + 1] == rval:
 *                         j += 1             # <<<<<<<<<<<<<<
 *                     else:
 *                         i += 1
 */
            __pyx_v_j = (__pyx_v_j + 1);
            goto __pyx_L31;
          }
          /*else*/ {

            /* "pandas/src/generated.pyx":3490
 *                         j += 1
 *                     else:
 *                         i += 1             # <<<<<<<<<<<<<<
 *                         if left[i] != rval:
 *                             j += 1
 */
            __pyx_v_i = (__pyx_v_i + 1);

            /* "pandas/src/generated.pyx":3491
 *                     else:
 *                         i += 1
 *                         if left[i] != rval:             # <<<<<<<<<<<<<<
 *                             j += 1
 *                 elif j < nright - 1:
 */
            __pyx_t_42 = __pyx_v_i;
            __pyx_t_5 = ((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int32_t *, __pyx_bstruct_left.buf, __pyx_t_42, __pyx_bstride_0_left)) != __pyx_v_rval);
            if (__pyx_t_5) {

              /* "pandas/src/generated.pyx":3492
 *                         i += 1
 *                         if left[i] != rval:
 *                             j += 1             # <<<<<<<<<<<<<<
 *                 elif j < nright - 1:
 *                     j += 1
 */
              __pyx_v_j = (__pyx_v_j + 1);
              goto __pyx_L32;
            }
            __pyx_L32:;
          }
          __pyx_L31:;
          goto __pyx_L30;
        }

        /* "pandas/src/generated.pyx":3493
 *                         if left[i] != rval:
 *                             j += 1
 *                 elif j < nright - 1:             # <<<<<<<<<<<<<<
 *                     j += 1
 *                     if lval != right[j]:
 */
        __pyx_t_5 = (__pyx_v_j < (__pyx_v_nright - 1));
        if (__pyx_t_5) {

          /* "pandas/src/generated.pyx":3494
 *                             j += 1
 *                 elif j < nright - 1:
 *                     j += 1             # <<<<<<<<<<<<<<
 *                     if lval != right[j]:
 *                         i += 1
 */
          __pyx_v_j = (__pyx_v_j + 1);

          /* "pandas/src/generated.pyx":3495
 *                 elif j < nright - 1:
 *                     j += 1
 *                     if lval != right[j]:             # <<<<<<<<<<<<<<
 *                         i += 1
 *                 else:
 */
          __pyx_t_43 = __pyx_v_j;
          __pyx_t_5 = (__pyx_v_lval != (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int32_t *, __pyx_bstruct_right.buf, __pyx_t_43, __pyx_bstride_0_right)));
          if (__pyx_t_5) {

            /* "pandas/src/generated.pyx":3496
 *                     j += 1
 *                     if lval != right[j]:
 *                         i += 1             # <<<<<<<<<<<<<<
 *                 else:
 *                     # end of the road
 */
            __pyx_v_i = (__pyx_v_i + 1);
            goto __pyx_L33;
          }
          __pyx_L33:;
          goto __pyx_L30;
        }
        /*else*/ {

          /* "pandas/src/generated.pyx":3499
 *                 else:
 *                     # end of the road
 *                     break             # <<<<<<<<<<<<<<
 *             elif lval < rval:
 *                 lindexer[count] = i
 */
          goto __pyx_L22_break;
        }
        __pyx_L30:;
        goto __pyx_L29;
      }

      /* "pandas/src/generated.pyx":3500
 *                     # end of the road
 *                     break
 *             elif lval < rval:             # <<<<<<<<<<<<<<
 *                 lindexer[count] = i
 *                 rindexer[count] = -1
 */
      __pyx_t_5 = (__pyx_v_lval < __pyx_v_rval);
      if (__pyx_t_5) {

        /* "pandas/src/generated.pyx":3501
 *                     break
 *             elif lval < rval:
 *                 lindexer[count] = i             # <<<<<<<<<<<<<<
 *                 rindexer[count] = -1
 *                 result[count] = lval
 */
        __pyx_t_44 = __pyx_v_count;
        *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_bstruct_lindexer.buf, __pyx_t_44, __pyx_bstride_0_lindexer) = __pyx_v_i;

        /* "pandas/src/generated.pyx":3502
 *             elif lval < rval:
 *                 lindexer[count] = i
 *                 rindexer[count] = -1             # <<<<<<<<<<<<<<
 *                 result[count] = lval
 *                 count += 1
 */
        __pyx_t_45 = __pyx_v_count;
        *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_bstruct_rindexer.buf, __pyx_t_45, __pyx_bstride_0_rindexer) = -1;

        /* "pandas/src/generated.pyx":3503
 *                 lindexer[count] = i
 *                 rindexer[count] = -1
 *                 result[count] = lval             # <<<<<<<<<<<<<<
 *                 count += 1
 *                 i += 1
 */
        __pyx_t_46 = __pyx_v_count;
        *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int32_t *, __pyx_bstruct_result.buf, __pyx_t_46, __pyx_bstride_0_result) = __pyx_v_lval;

        /* "pandas/src/generated.pyx":3504
 *                 rindexer[count] = -1
 *                 result[count] = lval
 *                 count += 1             # <<<<<<<<<<<<<<
 *                 i += 1
 *             else:
 */
        __pyx_v_count = (__pyx_v_count + 1);

        /* "pandas/src/generated.pyx":3505
 *                 result[count] = lval
 *                 count += 1
 *                 i += 1             # <<<<<<<<<<<<<<
 *             else:
 *                 lindexer[count] = -1
 */
        __pyx_v_i = (__pyx_v_i + 1);
        goto __pyx_L29;
      }
      /*else*/ {

        /* "pandas/src/generated.pyx":3507
 *                 i += 1
 *             else:
 *                 lindexer[count] = -1             # <<<<<<<<<<<<<<
 *                 rindexer[count] = j
 *                 result[count] = rval
 */
        __pyx_t_47 = __pyx_v_count;
        *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_bstruct_lindexer.buf, __pyx_t_47, __pyx_bstride_0_lindexer) = -1;

        /* "pandas/src/generated.pyx":3508
 *             else:
 *                 lindexer[count] = -1
 *                 rindexer[count] = j             # <<<<<<<<<<<<<<
 *                 result[count] = rval
 *                 count += 1
 */
        __pyx_t_48 = __pyx_v_count;
        *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_bstruct_rindexer.buf, __pyx_t_48, __pyx_bstride_0_rindexer) = __pyx_v_j;

        /* "pandas/src/generated.pyx":3509
 *                 lindexer[count] = -1
 *                 rindexer[count] = j
 *                 result[count] = rval             # <<<<<<<<<<<<<<
 *                 count += 1
 *                 j += 1
 */
        __pyx_t_49 = __pyx_v_count;
        *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int32_t *, __pyx_bstruct_result.buf, __pyx_t_49, __pyx_bstride_0_result) = __pyx_v_rval;

        /* "pandas/src/generated.pyx":3510
 *                 rindexer[count] = j
 *                 result[count] = rval
 *                 count += 1             # <<<<<<<<<<<<<<
 *                 j += 1
 * 
 */
        __pyx_v_count = (__pyx_v_count + 1);

        /* "pandas/src/generated.pyx":3511
 *                 result[count] = rval
 *                 count += 1
 *                 j += 1             # <<<<<<<<<<<<<<
 * 
 *     return result, lindexer, rindexer
 */
        __pyx_v_j = (__pyx_v_j + 1);
      }
      __pyx_L29:;
    }
    __pyx_L22_break:;
  }
  __pyx_L16:;

  /* "pandas/src/generated.pyx":3513
 *                 j += 1
 * 
 *     return result, lindexer, rindexer             # <<<<<<<<<<<<<<
 * 
 * @cython.wraparound(False)
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_10 = PyTuple_New(3); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3513; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_10));
  __Pyx_INCREF(((PyObject *)__pyx_v_result));
  PyTuple_SET_ITEM(__pyx_t_10, 0, ((PyObject *)__pyx_v_result));
  __Pyx_GIVEREF(((PyObject *)__pyx_v_result));
  __Pyx_INCREF(((PyObject *)__pyx_v_lindexer));
  PyTuple_SET_ITEM(__pyx_t_10, 1, ((PyObject *)__pyx_v_lindexer));
  __Pyx_GIVEREF(((PyObject *)__pyx_v_lindexer));
  __Pyx_INCREF(((PyObject *)__pyx_v_rindexer));
  PyTuple_SET_ITEM(__pyx_t_10, 2, ((PyObject *)__pyx_v_rindexer));
  __Pyx_GIVEREF(((PyObject *)__pyx_v_rindexer));
  __pyx_r = ((PyObject *)__pyx_t_10);
  __pyx_t_10 = 0;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_9);
  __Pyx_XDECREF(__pyx_t_10);
  __Pyx_XDECREF(__pyx_t_11);
  __Pyx_XDECREF(__pyx_t_12);
  __Pyx_XDECREF(__pyx_t_13);
  { PyObject *__pyx_type, *__pyx_value, *__pyx_tb;
    __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);
    __Pyx_SafeReleaseBuffer(&__pyx_bstruct_result);
    __Pyx_SafeReleaseBuffer(&__pyx_bstruct_right);
    __Pyx_SafeReleaseBuffer(&__pyx_bstruct_lindexer);
    __Pyx_SafeReleaseBuffer(&__pyx_bstruct_rindexer);
    __Pyx_SafeReleaseBuffer(&__pyx_bstruct_left);
  __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);}
  __Pyx_AddTraceback("pandas._algos.outer_join_indexer_int32", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  goto __pyx_L2;
  __pyx_L0:;
  __Pyx_SafeReleaseBuffer(&__pyx_bstruct_result);
  __Pyx_SafeReleaseBuffer(&__pyx_bstruct_right);
  __Pyx_SafeReleaseBuffer(&__pyx_bstruct_lindexer);
  __Pyx_SafeReleaseBuffer(&__pyx_bstruct_rindexer);
  __Pyx_SafeReleaseBuffer(&__pyx_bstruct_left);
  __pyx_L2:;
  __Pyx_XDECREF((PyObject *)__pyx_v_lindexer);
  __Pyx_XDECREF((PyObject *)__pyx_v_rindexer);
  __Pyx_XDECREF((PyObject *)__pyx_v_result);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "pandas/src/generated.pyx":3517
 * @cython.wraparound(False)
 * @cython.boundscheck(False)
 * def outer_join_indexer_int64(ndarray[int64_t] left,             # <<<<<<<<<<<<<<
 *                                 ndarray[int64_t] right):
 *     cdef:
 */

static PyObject *__pyx_pf_6pandas_6_algos_86outer_join_indexer_int64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_6pandas_6_algos_86outer_join_indexer_int64 = {__Pyx_NAMESTR("outer_join_indexer_int64"), (PyCFunction)__pyx_pf_6pandas_6_algos_86outer_join_indexer_int64, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(0)};
static PyObject *__pyx_pf_6pandas_6_algos_86outer_join_indexer_int64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyArrayObject *__pyx_v_left = 0;
  PyArrayObject *__pyx_v_right = 0;
  Py_ssize_t __pyx_v_i;
  Py_ssize_t __pyx_v_j;
  Py_ssize_t __pyx_v_nright;
  Py_ssize_t __pyx_v_nleft;
  Py_ssize_t __pyx_v_count;
  __pyx_t_5numpy_int64_t __pyx_v_lval;
  __pyx_t_5numpy_int64_t __pyx_v_rval;
  PyArrayObject *__pyx_v_lindexer = 0;
  PyArrayObject *__pyx_v_rindexer = 0;
  PyArrayObject *__pyx_v_result = 0;
  Py_buffer __pyx_bstruct_result;
  Py_ssize_t __pyx_bstride_0_result = 0;
  Py_ssize_t __pyx_bshape_0_result = 0;
  Py_buffer __pyx_bstruct_right;
  Py_ssize_t __pyx_bstride_0_right = 0;
  Py_ssize_t __pyx_bshape_0_right = 0;
  Py_buffer __pyx_bstruct_lindexer;
  Py_ssize_t __pyx_bstride_0_lindexer = 0;
  Py_ssize_t __pyx_bshape_0_lindexer = 0;
  Py_buffer __pyx_bstruct_rindexer;
  Py_ssize_t __pyx_bstride_0_rindexer = 0;
  Py_ssize_t __pyx_bshape_0_rindexer = 0;
  Py_buffer __pyx_bstruct_left;
  Py_ssize_t __pyx_bstride_0_left = 0;
  Py_ssize_t __pyx_bshape_0_left = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  Py_ssize_t __pyx_t_1;
  int __pyx_t_2;
  Py_ssize_t __pyx_t_3;
  Py_ssize_t __pyx_t_4;
  int __pyx_t_5;
  int __pyx_t_6;
  Py_ssize_t __pyx_t_7;
  Py_ssize_t __pyx_t_8;
  PyObject *__pyx_t_9 = NULL;
  PyObject *__pyx_t_10 = NULL;
  PyObject *__pyx_t_11 = NULL;
  PyObject *__pyx_t_12 = NULL;
  PyObject *__pyx_t_13 = NULL;
  PyArrayObject *__pyx_t_14 = NULL;
  int __pyx_t_15;
  PyObject *__pyx_t_16 = NULL;
  PyObject *__pyx_t_17 = NULL;
  PyObject *__pyx_t_18 = NULL;
  PyArrayObject *__pyx_t_19 = NULL;
  Py_ssize_t __pyx_t_20;
  Py_ssize_t __pyx_t_21;
  Py_ssize_t __pyx_t_22;
  Py_ssize_t __pyx_t_23;
  Py_ssize_t __pyx_t_24;
  Py_ssize_t __pyx_t_25;
  Py_ssize_t __pyx_t_26;
  Py_ssize_t __pyx_t_27;
  Py_ssize_t __pyx_t_28;
  Py_ssize_t __pyx_t_29;
  Py_ssize_t __pyx_t_30;
  Py_ssize_t __pyx_t_31;
  Py_ssize_t __pyx_t_32;
  Py_ssize_t __pyx_t_33;
  Py_ssize_t __pyx_t_34;
  Py_ssize_t __pyx_t_35;
  Py_ssize_t __pyx_t_36;
  Py_ssize_t __pyx_t_37;
  Py_ssize_t __pyx_t_38;
  Py_ssize_t __pyx_t_39;
  Py_ssize_t __pyx_t_40;
  Py_ssize_t __pyx_t_41;
  Py_ssize_t __pyx_t_42;
  Py_ssize_t __pyx_t_43;
  Py_ssize_t __pyx_t_44;
  Py_ssize_t __pyx_t_45;
  Py_ssize_t __pyx_t_46;
  Py_ssize_t __pyx_t_47;
  Py_ssize_t __pyx_t_48;
  Py_ssize_t __pyx_t_49;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__left,&__pyx_n_s__right,0};
  __Pyx_RefNannySetupContext("outer_join_indexer_int64");
  __pyx_self = __pyx_self;
  {
    PyObject* values[2] = {0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  0:
        values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__left);
        if (likely(values[0])) kw_args--;
        else goto __pyx_L5_argtuple_error;
        case  1:
        values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__right);
        if (likely(values[1])) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("outer_join_indexer_int64", 1, 2, 2, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3517; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "outer_join_indexer_int64") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3517; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
    }
    __pyx_v_left = ((PyArrayObject *)values[0]);
    __pyx_v_right = ((PyArrayObject *)values[1]);
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("outer_join_indexer_int64", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3517; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("pandas._algos.outer_join_indexer_int64", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_bstruct_lindexer.buf = NULL;
  __pyx_bstruct_rindexer.buf = NULL;
  __pyx_bstruct_result.buf = NULL;
  __pyx_bstruct_left.buf = NULL;
  __pyx_bstruct_right.buf = NULL;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_left), __pyx_ptype_5numpy_ndarray, 1, "left", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3517; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_right), __pyx_ptype_5numpy_ndarray, 1, "right", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3518; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_left, (PyObject*)__pyx_v_left, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3517; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  }
  __pyx_bstride_0_left = __pyx_bstruct_left.strides[0];
  __pyx_bshape_0_left = __pyx_bstruct_left.shape[0];
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_right, (PyObject*)__pyx_v_right, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3517; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  }
  __pyx_bstride_0_right = __pyx_bstruct_right.strides[0];
  __pyx_bshape_0_right = __pyx_bstruct_right.shape[0];

  /* "pandas/src/generated.pyx":3525
 *         ndarray[int64_t] result
 * 
 *     nleft = len(left)             # <<<<<<<<<<<<<<
 *     nright = len(right)
 * 
 */
  __pyx_t_1 = PyObject_Length(((PyObject *)__pyx_v_left)); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3525; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_v_nleft = __pyx_t_1;

  /* "pandas/src/generated.pyx":3526
 * 
 *     nleft = len(left)
 *     nright = len(right)             # <<<<<<<<<<<<<<
 * 
 *     i = 0
 */
  __pyx_t_1 = PyObject_Length(((PyObject *)__pyx_v_right)); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3526; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_v_nright = __pyx_t_1;

  /* "pandas/src/generated.pyx":3528
 *     nright = len(right)
 * 
 *     i = 0             # <<<<<<<<<<<<<<
 *     j = 0
 *     count = 0
 */
  __pyx_v_i = 0;

  /* "pandas/src/generated.pyx":3529
 * 
 *     i = 0
 *     j = 0             # <<<<<<<<<<<<<<
 *     count = 0
 *     if nleft == 0:
 */
  __pyx_v_j = 0;

  /* "pandas/src/generated.pyx":3530
 *     i = 0
 *     j = 0
 *     count = 0             # <<<<<<<<<<<<<<
 *     if nleft == 0:
 *         count = nright
 */
  __pyx_v_count = 0;

  /* "pandas/src/generated.pyx":3531
 *     j = 0
 *     count = 0
 *     if nleft == 0:             # <<<<<<<<<<<<<<
 *         count = nright
 *     elif nright == 0:
 */
  __pyx_t_2 = (__pyx_v_nleft == 0);
  if (__pyx_t_2) {

    /* "pandas/src/generated.pyx":3532
 *     count = 0
 *     if nleft == 0:
 *         count = nright             # <<<<<<<<<<<<<<
 *     elif nright == 0:
 *         count = nleft
 */
    __pyx_v_count = __pyx_v_nright;
    goto __pyx_L6;
  }

  /* "pandas/src/generated.pyx":3533
 *     if nleft == 0:
 *         count = nright
 *     elif nright == 0:             # <<<<<<<<<<<<<<
 *         count = nleft
 *     else:
 */
  __pyx_t_2 = (__pyx_v_nright == 0);
  if (__pyx_t_2) {

    /* "pandas/src/generated.pyx":3534
 *         count = nright
 *     elif nright == 0:
 *         count = nleft             # <<<<<<<<<<<<<<
 *     else:
 *         while True:
 */
    __pyx_v_count = __pyx_v_nleft;
    goto __pyx_L6;
  }
  /*else*/ {

    /* "pandas/src/generated.pyx":3536
 *         count = nleft
 *     else:
 *         while True:             # <<<<<<<<<<<<<<
 *             if i == nleft:
 *                 count += nright - j
 */
    while (1) {
      if (!1) break;

      /* "pandas/src/generated.pyx":3537
 *     else:
 *         while True:
 *             if i == nleft:             # <<<<<<<<<<<<<<
 *                 count += nright - j
 *                 break
 */
      __pyx_t_2 = (__pyx_v_i == __pyx_v_nleft);
      if (__pyx_t_2) {

        /* "pandas/src/generated.pyx":3538
 *         while True:
 *             if i == nleft:
 *                 count += nright - j             # <<<<<<<<<<<<<<
 *                 break
 *             if j == nright:
 */
        __pyx_v_count = (__pyx_v_count + (__pyx_v_nright - __pyx_v_j));

        /* "pandas/src/generated.pyx":3539
 *             if i == nleft:
 *                 count += nright - j
 *                 break             # <<<<<<<<<<<<<<
 *             if j == nright:
 *                 count += nleft - i
 */
        goto __pyx_L8_break;
        goto __pyx_L9;
      }
      __pyx_L9:;

      /* "pandas/src/generated.pyx":3540
 *                 count += nright - j
 *                 break
 *             if j == nright:             # <<<<<<<<<<<<<<
 *                 count += nleft - i
 *                 break
 */
      __pyx_t_2 = (__pyx_v_j == __pyx_v_nright);
      if (__pyx_t_2) {

        /* "pandas/src/generated.pyx":3541
 *                 break
 *             if j == nright:
 *                 count += nleft - i             # <<<<<<<<<<<<<<
 *                 break
 * 
 */
        __pyx_v_count = (__pyx_v_count + (__pyx_v_nleft - __pyx_v_i));

        /* "pandas/src/generated.pyx":3542
 *             if j == nright:
 *                 count += nleft - i
 *                 break             # <<<<<<<<<<<<<<
 * 
 *             lval = left[i]
 */
        goto __pyx_L8_break;
        goto __pyx_L10;
      }
      __pyx_L10:;

      /* "pandas/src/generated.pyx":3544
 *                 break
 * 
 *             lval = left[i]             # <<<<<<<<<<<<<<
 *             rval = right[j]
 *             if lval == rval:
 */
      __pyx_t_1 = __pyx_v_i;
      __pyx_v_lval = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_bstruct_left.buf, __pyx_t_1, __pyx_bstride_0_left));

      /* "pandas/src/generated.pyx":3545
 * 
 *             lval = left[i]
 *             rval = right[j]             # <<<<<<<<<<<<<<
 *             if lval == rval:
 *                 count += 1
 */
      __pyx_t_3 = __pyx_v_j;
      __pyx_v_rval = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_bstruct_right.buf, __pyx_t_3, __pyx_bstride_0_right));

      /* "pandas/src/generated.pyx":3546
 *             lval = left[i]
 *             rval = right[j]
 *             if lval == rval:             # <<<<<<<<<<<<<<
 *                 count += 1
 *                 if i < nleft - 1:
 */
      __pyx_t_2 = (__pyx_v_lval == __pyx_v_rval);
      if (__pyx_t_2) {

        /* "pandas/src/generated.pyx":3547
 *             rval = right[j]
 *             if lval == rval:
 *                 count += 1             # <<<<<<<<<<<<<<
 *                 if i < nleft - 1:
 *                     if j < nright - 1 and right[j + 1] == rval:
 */
        __pyx_v_count = (__pyx_v_count + 1);

        /* "pandas/src/generated.pyx":3548
 *             if lval == rval:
 *                 count += 1
 *                 if i < nleft - 1:             # <<<<<<<<<<<<<<
 *                     if j < nright - 1 and right[j + 1] == rval:
 *                         j += 1
 */
        __pyx_t_2 = (__pyx_v_i < (__pyx_v_nleft - 1));
        if (__pyx_t_2) {

          /* "pandas/src/generated.pyx":3549
 *                 count += 1
 *                 if i < nleft - 1:
 *                     if j < nright - 1 and right[j + 1] == rval:             # <<<<<<<<<<<<<<
 *                         j += 1
 *                     else:
 */
          __pyx_t_2 = (__pyx_v_j < (__pyx_v_nright - 1));
          if (__pyx_t_2) {
            __pyx_t_4 = (__pyx_v_j + 1);
            __pyx_t_5 = ((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_bstruct_right.buf, __pyx_t_4, __pyx_bstride_0_right)) == __pyx_v_rval);
            __pyx_t_6 = __pyx_t_5;
          } else {
            __pyx_t_6 = __pyx_t_2;
          }
          if (__pyx_t_6) {

            /* "pandas/src/generated.pyx":3550
 *                 if i < nleft - 1:
 *                     if j < nright - 1 and right[j + 1] == rval:
 *                         j += 1             # <<<<<<<<<<<<<<
 *                     else:
 *                         i += 1
 */
            __pyx_v_j = (__pyx_v_j + 1);
            goto __pyx_L13;
          }
          /*else*/ {

            /* "pandas/src/generated.pyx":3552
 *                         j += 1
 *                     else:
 *                         i += 1             # <<<<<<<<<<<<<<
 *                         if left[i] != rval:
 *                             j += 1
 */
            __pyx_v_i = (__pyx_v_i + 1);

            /* "pandas/src/generated.pyx":3553
 *                     else:
 *                         i += 1
 *                         if left[i] != rval:             # <<<<<<<<<<<<<<
 *                             j += 1
 *                 elif j < nright - 1:
 */
            __pyx_t_7 = __pyx_v_i;
            __pyx_t_6 = ((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_bstruct_left.buf, __pyx_t_7, __pyx_bstride_0_left)) != __pyx_v_rval);
            if (__pyx_t_6) {

              /* "pandas/src/generated.pyx":3554
 *                         i += 1
 *                         if left[i] != rval:
 *                             j += 1             # <<<<<<<<<<<<<<
 *                 elif j < nright - 1:
 *                     j += 1
 */
              __pyx_v_j = (__pyx_v_j + 1);
              goto __pyx_L14;
            }
            __pyx_L14:;
          }
          __pyx_L13:;
          goto __pyx_L12;
        }

        /* "pandas/src/generated.pyx":3555
 *                         if left[i] != rval:
 *                             j += 1
 *                 elif j < nright - 1:             # <<<<<<<<<<<<<<
 *                     j += 1
 *                     if lval != right[j]:
 */
        __pyx_t_6 = (__pyx_v_j < (__pyx_v_nright - 1));
        if (__pyx_t_6) {

          /* "pandas/src/generated.pyx":3556
 *                             j += 1
 *                 elif j < nright - 1:
 *                     j += 1             # <<<<<<<<<<<<<<
 *                     if lval != right[j]:
 *                         i += 1
 */
          __pyx_v_j = (__pyx_v_j + 1);

          /* "pandas/src/generated.pyx":3557
 *                 elif j < nright - 1:
 *                     j += 1
 *                     if lval != right[j]:             # <<<<<<<<<<<<<<
 *                         i += 1
 *                 else:
 */
          __pyx_t_8 = __pyx_v_j;
          __pyx_t_6 = (__pyx_v_lval != (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_bstruct_right.buf, __pyx_t_8, __pyx_bstride_0_right)));
          if (__pyx_t_6) {

            /* "pandas/src/generated.pyx":3558
 *                     j += 1
 *                     if lval != right[j]:
 *                         i += 1             # <<<<<<<<<<<<<<
 *                 else:
 *                     # end of the road
 */
            __pyx_v_i = (__pyx_v_i + 1);
            goto __pyx_L15;
          }
          __pyx_L15:;
          goto __pyx_L12;
        }
        /*else*/ {

          /* "pandas/src/generated.pyx":3561
 *                 else:
 *                     # end of the road
 *                     break             # <<<<<<<<<<<<<<
 *             elif lval < rval:
 *                 count += 1
 */
          goto __pyx_L8_break;
        }
        __pyx_L12:;
        goto __pyx_L11;
      }

      /* "pandas/src/generated.pyx":3562
 *                     # end of the road
 *                     break
 *             elif lval < rval:             # <<<<<<<<<<<<<<
 *                 count += 1
 *                 i += 1
 */
      __pyx_t_6 = (__pyx_v_lval < __pyx_v_rval);
      if (__pyx_t_6) {

        /* "pandas/src/generated.pyx":3563
 *                     break
 *             elif lval < rval:
 *                 count += 1             # <<<<<<<<<<<<<<
 *                 i += 1
 *             else:
 */
        __pyx_v_count = (__pyx_v_count + 1);

        /* "pandas/src/generated.pyx":3564
 *             elif lval < rval:
 *                 count += 1
 *                 i += 1             # <<<<<<<<<<<<<<
 *             else:
 *                 count += 1
 */
        __pyx_v_i = (__pyx_v_i + 1);
        goto __pyx_L11;
      }
      /*else*/ {

        /* "pandas/src/generated.pyx":3566
 *                 i += 1
 *             else:
 *                 count += 1             # <<<<<<<<<<<<<<
 *                 j += 1
 * 
 */
        __pyx_v_count = (__pyx_v_count + 1);

        /* "pandas/src/generated.pyx":3567
 *             else:
 *                 count += 1
 *                 j += 1             # <<<<<<<<<<<<<<
 * 
 *     lindexer = np.empty(count, dtype=np.int64)
 */
        __pyx_v_j = (__pyx_v_j + 1);
      }
      __pyx_L11:;
    }
    __pyx_L8_break:;
  }
  __pyx_L6:;

  /* "pandas/src/generated.pyx":3569
 *                 j += 1
 * 
 *     lindexer = np.empty(count, dtype=np.int64)             # <<<<<<<<<<<<<<
 *     rindexer = np.empty(count, dtype=np.int64)
 *     result = np.empty(count, dtype=np.int64)
 */
  __pyx_t_9 = __Pyx_GetName(__pyx_m, __pyx_n_s__np); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3569; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_9);
  __pyx_t_10 = PyObject_GetAttr(__pyx_t_9, __pyx_n_s__empty); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3569; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_10);
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  __pyx_t_9 = PyInt_FromSsize_t(__pyx_v_count); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3569; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_9);
  __pyx_t_11 = PyTuple_New(1); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3569; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_11));
  PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_9);
  __Pyx_GIVEREF(__pyx_t_9);
  __pyx_t_9 = 0;
  __pyx_t_9 = PyDict_New(); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3569; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_9));
  __pyx_t_12 = __Pyx_GetName(__pyx_m, __pyx_n_s__np); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3569; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_12);
  __pyx_t_13 = PyObject_GetAttr(__pyx_t_12, __pyx_n_s__int64); if (unlikely(!__pyx_t_13)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3569; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_13);
  __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
  if (PyDict_SetItem(__pyx_t_9, ((PyObject *)__pyx_n_s__dtype), __pyx_t_13) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3569; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
  __pyx_t_13 = PyEval_CallObjectWithKeywords(__pyx_t_10, ((PyObject *)__pyx_t_11), ((PyObject *)__pyx_t_9)); if (unlikely(!__pyx_t_13)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3569; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_13);
  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
  __Pyx_DECREF(((PyObject *)__pyx_t_11)); __pyx_t_11 = 0;
  __Pyx_DECREF(((PyObject *)__pyx_t_9)); __pyx_t_9 = 0;
  if (!(likely(((__pyx_t_13) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_13, __pyx_ptype_5numpy_ndarray))))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3569; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_t_14 = ((PyArrayObject *)__pyx_t_13);
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    __Pyx_SafeReleaseBuffer(&__pyx_bstruct_lindexer);
    __pyx_t_15 = __Pyx_GetBufferAndValidate(&__pyx_bstruct_lindexer, (PyObject*)__pyx_t_14, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack);
    if (unlikely(__pyx_t_15 < 0)) {
      PyErr_Fetch(&__pyx_t_16, &__pyx_t_17, &__pyx_t_18);
      if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_lindexer, (PyObject*)__pyx_v_lindexer, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) {
        Py_XDECREF(__pyx_t_16); Py_XDECREF(__pyx_t_17); Py_XDECREF(__pyx_t_18);
        __Pyx_RaiseBufferFallbackError();
      } else {
        PyErr_Restore(__pyx_t_16, __pyx_t_17, __pyx_t_18);
      }
    }
    __pyx_bstride_0_lindexer = __pyx_bstruct_lindexer.strides[0];
    __pyx_bshape_0_lindexer = __pyx_bstruct_lindexer.shape[0];
    if (unlikely(__pyx_t_15 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3569; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  }
  __pyx_t_14 = 0;
  __pyx_v_lindexer = ((PyArrayObject *)__pyx_t_13);
  __pyx_t_13 = 0;

  /* "pandas/src/generated.pyx":3570
 * 
 *     lindexer = np.empty(count, dtype=np.int64)
 *     rindexer = np.empty(count, dtype=np.int64)             # <<<<<<<<<<<<<<
 *     result = np.empty(count, dtype=np.int64)
 * 
 */
  __pyx_t_13 = __Pyx_GetName(__pyx_m, __pyx_n_s__np); if (unlikely(!__pyx_t_13)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3570; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_13);
  __pyx_t_9 = PyObject_GetAttr(__pyx_t_13, __pyx_n_s__empty); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3570; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_9);
  __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
  __pyx_t_13 = PyInt_FromSsize_t(__pyx_v_count); if (unlikely(!__pyx_t_13)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3570; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_13);
  __pyx_t_11 = PyTuple_New(1); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3570; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_11));
  PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_13);
  __Pyx_GIVEREF(__pyx_t_13);
  __pyx_t_13 = 0;
  __pyx_t_13 = PyDict_New(); if (unlikely(!__pyx_t_13)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3570; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_13));
  __pyx_t_10 = __Pyx_GetName(__pyx_m, __pyx_n_s__np); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3570; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_10);
  __pyx_t_12 = PyObject_GetAttr(__pyx_t_10, __pyx_n_s__int64); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3570; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_12);
  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
  if (PyDict_SetItem(__pyx_t_13, ((PyObject *)__pyx_n_s__dtype), __pyx_t_12) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3570; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
  __pyx_t_12 = PyEval_CallObjectWithKeywords(__pyx_t_9, ((PyObject *)__pyx_t_11), ((PyObject *)__pyx_t_13)); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3570; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_12);
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  __Pyx_DECREF(((PyObject *)__pyx_t_11)); __pyx_t_11 = 0;
  __Pyx_DECREF(((PyObject *)__pyx_t_13)); __pyx_t_13 = 0;
  if (!(likely(((__pyx_t_12) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_12, __pyx_ptype_5numpy_ndarray))))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3570; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_t_14 = ((PyArrayObject *)__pyx_t_12);
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    __Pyx_SafeReleaseBuffer(&__pyx_bstruct_rindexer);
    __pyx_t_15 = __Pyx_GetBufferAndValidate(&__pyx_bstruct_rindexer, (PyObject*)__pyx_t_14, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack);
    if (unlikely(__pyx_t_15 < 0)) {
      PyErr_Fetch(&__pyx_t_18, &__pyx_t_17, &__pyx_t_16);
      if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_rindexer, (PyObject*)__pyx_v_rindexer, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) {
        Py_XDECREF(__pyx_t_18); Py_XDECREF(__pyx_t_17); Py_XDECREF(__pyx_t_16);
        __Pyx_RaiseBufferFallbackError();
      } else {
        PyErr_Restore(__pyx_t_18, __pyx_t_17, __pyx_t_16);
      }
    }
    __pyx_bstride_0_rindexer = __pyx_bstruct_rindexer.strides[0];
    __pyx_bshape_0_rindexer = __pyx_bstruct_rindexer.shape[0];
    if (unlikely(__pyx_t_15 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3570; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  }
  __pyx_t_14 = 0;
  __pyx_v_rindexer = ((PyArrayObject *)__pyx_t_12);
  __pyx_t_12 = 0;

  /* "pandas/src/generated.pyx":3571
 *     lindexer = np.empty(count, dtype=np.int64)
 *     rindexer = np.empty(count, dtype=np.int64)
 *     result = np.empty(count, dtype=np.int64)             # <<<<<<<<<<<<<<
 * 
 *     # do it again, but populate the indexers / result
 */
  __pyx_t_12 = __Pyx_GetName(__pyx_m, __pyx_n_s__np); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3571; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_12);
  __pyx_t_13 = PyObject_GetAttr(__pyx_t_12, __pyx_n_s__empty); if (unlikely(!__pyx_t_13)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3571; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_13);
  __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
  __pyx_t_12 = PyInt_FromSsize_t(__pyx_v_count); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3571; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_12);
  __pyx_t_11 = PyTuple_New(1); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3571; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_11));
  PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_12);
  __Pyx_GIVEREF(__pyx_t_12);
  __pyx_t_12 = 0;
  __pyx_t_12 = PyDict_New(); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3571; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_12));
  __pyx_t_9 = __Pyx_GetName(__pyx_m, __pyx_n_s__np); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3571; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_9);
  __pyx_t_10 = PyObject_GetAttr(__pyx_t_9, __pyx_n_s__int64); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3571; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_10);
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  if (PyDict_SetItem(__pyx_t_12, ((PyObject *)__pyx_n_s__dtype), __pyx_t_10) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3571; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
  __pyx_t_10 = PyEval_CallObjectWithKeywords(__pyx_t_13, ((PyObject *)__pyx_t_11), ((PyObject *)__pyx_t_12)); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3571; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_10);
  __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
  __Pyx_DECREF(((PyObject *)__pyx_t_11)); __pyx_t_11 = 0;
  __Pyx_DECREF(((PyObject *)__pyx_t_12)); __pyx_t_12 = 0;
  if (!(likely(((__pyx_t_10) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_10, __pyx_ptype_5numpy_ndarray))))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3571; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_t_19 = ((PyArrayObject *)__pyx_t_10);
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    __Pyx_SafeReleaseBuffer(&__pyx_bstruct_result);
    __pyx_t_15 = __Pyx_GetBufferAndValidate(&__pyx_bstruct_result, (PyObject*)__pyx_t_19, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack);
    if (unlikely(__pyx_t_15 < 0)) {
      PyErr_Fetch(&__pyx_t_16, &__pyx_t_17, &__pyx_t_18);
      if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_result, (PyObject*)__pyx_v_result, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) {
        Py_XDECREF(__pyx_t_16); Py_XDECREF(__pyx_t_17); Py_XDECREF(__pyx_t_18);
        __Pyx_RaiseBufferFallbackError();
      } else {
        PyErr_Restore(__pyx_t_16, __pyx_t_17, __pyx_t_18);
      }
    }
    __pyx_bstride_0_result = __pyx_bstruct_result.strides[0];
    __pyx_bshape_0_result = __pyx_bstruct_result.shape[0];
    if (unlikely(__pyx_t_15 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3571; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  }
  __pyx_t_19 = 0;
  __pyx_v_result = ((PyArrayObject *)__pyx_t_10);
  __pyx_t_10 = 0;

  /* "pandas/src/generated.pyx":3575
 *     # do it again, but populate the indexers / result
 * 
 *     i = 0             # <<<<<<<<<<<<<<
 *     j = 0
 *     count = 0
 */
  __pyx_v_i = 0;

  /* "pandas/src/generated.pyx":3576
 * 
 *     i = 0
 *     j = 0             # <<<<<<<<<<<<<<
 *     count = 0
 *     if nleft == 0:
 */
  __pyx_v_j = 0;

  /* "pandas/src/generated.pyx":3577
 *     i = 0
 *     j = 0
 *     count = 0             # <<<<<<<<<<<<<<
 *     if nleft == 0:
 *         for j in range(nright):
 */
  __pyx_v_count = 0;

  /* "pandas/src/generated.pyx":3578
 *     j = 0
 *     count = 0
 *     if nleft == 0:             # <<<<<<<<<<<<<<
 *         for j in range(nright):
 *             lindexer[j] = -1
 */
  __pyx_t_6 = (__pyx_v_nleft == 0);
  if (__pyx_t_6) {

    /* "pandas/src/generated.pyx":3579
 *     count = 0
 *     if nleft == 0:
 *         for j in range(nright):             # <<<<<<<<<<<<<<
 *             lindexer[j] = -1
 *             rindexer[j] = j
 */
    __pyx_t_20 = __pyx_v_nright;
    for (__pyx_t_21 = 0; __pyx_t_21 < __pyx_t_20; __pyx_t_21+=1) {
      __pyx_v_j = __pyx_t_21;

      /* "pandas/src/generated.pyx":3580
 *     if nleft == 0:
 *         for j in range(nright):
 *             lindexer[j] = -1             # <<<<<<<<<<<<<<
 *             rindexer[j] = j
 *             result[j] = right[j]
 */
      __pyx_t_22 = __pyx_v_j;
      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_bstruct_lindexer.buf, __pyx_t_22, __pyx_bstride_0_lindexer) = -1;

      /* "pandas/src/generated.pyx":3581
 *         for j in range(nright):
 *             lindexer[j] = -1
 *             rindexer[j] = j             # <<<<<<<<<<<<<<
 *             result[j] = right[j]
 *     elif nright == 0:
 */
      __pyx_t_23 = __pyx_v_j;
      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_bstruct_rindexer.buf, __pyx_t_23, __pyx_bstride_0_rindexer) = __pyx_v_j;

      /* "pandas/src/generated.pyx":3582
 *             lindexer[j] = -1
 *             rindexer[j] = j
 *             result[j] = right[j]             # <<<<<<<<<<<<<<
 *     elif nright == 0:
 *         for i in range(nright):
 */
      __pyx_t_24 = __pyx_v_j;
      __pyx_t_25 = __pyx_v_j;
      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_bstruct_result.buf, __pyx_t_25, __pyx_bstride_0_result) = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_bstruct_right.buf, __pyx_t_24, __pyx_bstride_0_right));
    }
    goto __pyx_L16;
  }

  /* "pandas/src/generated.pyx":3583
 *             rindexer[j] = j
 *             result[j] = right[j]
 *     elif nright == 0:             # <<<<<<<<<<<<<<
 *         for i in range(nright):
 *             lindexer[i] = i
 */
  __pyx_t_6 = (__pyx_v_nright == 0);
  if (__pyx_t_6) {

    /* "pandas/src/generated.pyx":3584
 *             result[j] = right[j]
 *     elif nright == 0:
 *         for i in range(nright):             # <<<<<<<<<<<<<<
 *             lindexer[i] = i
 *             rindexer[i] = -1
 */
    __pyx_t_20 = __pyx_v_nright;
    for (__pyx_t_21 = 0; __pyx_t_21 < __pyx_t_20; __pyx_t_21+=1) {
      __pyx_v_i = __pyx_t_21;

      /* "pandas/src/generated.pyx":3585
 *     elif nright == 0:
 *         for i in range(nright):
 *             lindexer[i] = i             # <<<<<<<<<<<<<<
 *             rindexer[i] = -1
 *             result[i] = left[i]
 */
      __pyx_t_26 = __pyx_v_i;
      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_bstruct_lindexer.buf, __pyx_t_26, __pyx_bstride_0_lindexer) = __pyx_v_i;

      /* "pandas/src/generated.pyx":3586
 *         for i in range(nright):
 *             lindexer[i] = i
 *             rindexer[i] = -1             # <<<<<<<<<<<<<<
 *             result[i] = left[i]
 *     else:
 */
      __pyx_t_27 = __pyx_v_i;
      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_bstruct_rindexer.buf, __pyx_t_27, __pyx_bstride_0_rindexer) = -1;

      /* "pandas/src/generated.pyx":3587
 *             lindexer[i] = i
 *             rindexer[i] = -1
 *             result[i] = left[i]             # <<<<<<<<<<<<<<
 *     else:
 *         while True:
 */
      __pyx_t_28 = __pyx_v_i;
      __pyx_t_29 = __pyx_v_i;
      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_bstruct_result.buf, __pyx_t_29, __pyx_bstride_0_result) = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_bstruct_left.buf, __pyx_t_28, __pyx_bstride_0_left));
    }
    goto __pyx_L16;
  }
  /*else*/ {

    /* "pandas/src/generated.pyx":3589
 *             result[i] = left[i]
 *     else:
 *         while True:             # <<<<<<<<<<<<<<
 *             if i == nleft:
 *                 while j < nright:
 */
    while (1) {
      if (!1) break;

      /* "pandas/src/generated.pyx":3590
 *     else:
 *         while True:
 *             if i == nleft:             # <<<<<<<<<<<<<<
 *                 while j < nright:
 *                     lindexer[count] = -1
 */
      __pyx_t_6 = (__pyx_v_i == __pyx_v_nleft);
      if (__pyx_t_6) {

        /* "pandas/src/generated.pyx":3591
 *         while True:
 *             if i == nleft:
 *                 while j < nright:             # <<<<<<<<<<<<<<
 *                     lindexer[count] = -1
 *                     rindexer[count] = j
 */
        while (1) {
          __pyx_t_6 = (__pyx_v_j < __pyx_v_nright);
          if (!__pyx_t_6) break;

          /* "pandas/src/generated.pyx":3592
 *             if i == nleft:
 *                 while j < nright:
 *                     lindexer[count] = -1             # <<<<<<<<<<<<<<
 *                     rindexer[count] = j
 *                     result[count] = right[j]
 */
          __pyx_t_20 = __pyx_v_count;
          *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_bstruct_lindexer.buf, __pyx_t_20, __pyx_bstride_0_lindexer) = -1;

          /* "pandas/src/generated.pyx":3593
 *                 while j < nright:
 *                     lindexer[count] = -1
 *                     rindexer[count] = j             # <<<<<<<<<<<<<<
 *                     result[count] = right[j]
 *                     count += 1
 */
          __pyx_t_21 = __pyx_v_count;
          *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_bstruct_rindexer.buf, __pyx_t_21, __pyx_bstride_0_rindexer) = __pyx_v_j;

          /* "pandas/src/generated.pyx":3594
 *                     lindexer[count] = -1
 *                     rindexer[count] = j
 *                     result[count] = right[j]             # <<<<<<<<<<<<<<
 *                     count += 1
 *                     j += 1
 */
          __pyx_t_30 = __pyx_v_j;
          __pyx_t_31 = __pyx_v_count;
          *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_bstruct_result.buf, __pyx_t_31, __pyx_bstride_0_result) = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_bstruct_right.buf, __pyx_t_30, __pyx_bstride_0_right));

          /* "pandas/src/generated.pyx":3595
 *                     rindexer[count] = j
 *                     result[count] = right[j]
 *                     count += 1             # <<<<<<<<<<<<<<
 *                     j += 1
 *                 break
 */
          __pyx_v_count = (__pyx_v_count + 1);

          /* "pandas/src/generated.pyx":3596
 *                     result[count] = right[j]
 *                     count += 1
 *                     j += 1             # <<<<<<<<<<<<<<
 *                 break
 *             if j == nright:
 */
          __pyx_v_j = (__pyx_v_j + 1);
        }

        /* "pandas/src/generated.pyx":3597
 *                     count += 1
 *                     j += 1
 *                 break             # <<<<<<<<<<<<<<
 *             if j == nright:
 *                 while i < nleft:
 */
        goto __pyx_L22_break;
        goto __pyx_L23;
      }
      __pyx_L23:;

      /* "pandas/src/generated.pyx":3598
 *                     j += 1
 *                 break
 *             if j == nright:             # <<<<<<<<<<<<<<
 *                 while i < nleft:
 *                     lindexer[count] = i
 */
      __pyx_t_6 = (__pyx_v_j == __pyx_v_nright);
      if (__pyx_t_6) {

        /* "pandas/src/generated.pyx":3599
 *                 break
 *             if j == nright:
 *                 while i < nleft:             # <<<<<<<<<<<<<<
 *                     lindexer[count] = i
 *                     rindexer[count] = -1
 */
        while (1) {
          __pyx_t_6 = (__pyx_v_i < __pyx_v_nleft);
          if (!__pyx_t_6) break;

          /* "pandas/src/generated.pyx":3600
 *             if j == nright:
 *                 while i < nleft:
 *                     lindexer[count] = i             # <<<<<<<<<<<<<<
 *                     rindexer[count] = -1
 *                     result[count] = left[i]
 */
          __pyx_t_32 = __pyx_v_count;
          *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_bstruct_lindexer.buf, __pyx_t_32, __pyx_bstride_0_lindexer) = __pyx_v_i;

          /* "pandas/src/generated.pyx":3601
 *                 while i < nleft:
 *                     lindexer[count] = i
 *                     rindexer[count] = -1             # <<<<<<<<<<<<<<
 *                     result[count] = left[i]
 *                     count += 1
 */
          __pyx_t_33 = __pyx_v_count;
          *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_bstruct_rindexer.buf, __pyx_t_33, __pyx_bstride_0_rindexer) = -1;

          /* "pandas/src/generated.pyx":3602
 *                     lindexer[count] = i
 *                     rindexer[count] = -1
 *                     result[count] = left[i]             # <<<<<<<<<<<<<<
 *                     count += 1
 *                     i += 1
 */
          __pyx_t_34 = __pyx_v_i;
          __pyx_t_35 = __pyx_v_count;
          *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_bstruct_result.buf, __pyx_t_35, __pyx_bstride_0_result) = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_bstruct_left.buf, __pyx_t_34, __pyx_bstride_0_left));

          /* "pandas/src/generated.pyx":3603
 *                     rindexer[count] = -1
 *                     result[count] = left[i]
 *                     count += 1             # <<<<<<<<<<<<<<
 *                     i += 1
 *                 break
 */
          __pyx_v_count = (__pyx_v_count + 1);

          /* "pandas/src/generated.pyx":3604
 *                     result[count] = left[i]
 *                     count += 1
 *                     i += 1             # <<<<<<<<<<<<<<
 *                 break
 * 
 */
          __pyx_v_i = (__pyx_v_i + 1);
        }

        /* "pandas/src/generated.pyx":3605
 *                     count += 1
 *                     i += 1
 *                 break             # <<<<<<<<<<<<<<
 * 
 *             lval = left[i]
 */
        goto __pyx_L22_break;
        goto __pyx_L26;
      }
      __pyx_L26:;

      /* "pandas/src/generated.pyx":3607
 *                 break
 * 
 *             lval = left[i]             # <<<<<<<<<<<<<<
 *             rval = right[j]
 * 
 */
      __pyx_t_36 = __pyx_v_i;
      __pyx_v_lval = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_bstruct_left.buf, __pyx_t_36, __pyx_bstride_0_left));

      /* "pandas/src/generated.pyx":3608
 * 
 *             lval = left[i]
 *             rval = right[j]             # <<<<<<<<<<<<<<
 * 
 *             if lval == rval:
 */
      __pyx_t_37 = __pyx_v_j;
      __pyx_v_rval = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_bstruct_right.buf, __pyx_t_37, __pyx_bstride_0_right));

      /* "pandas/src/generated.pyx":3610
 *             rval = right[j]
 * 
 *             if lval == rval:             # <<<<<<<<<<<<<<
 *                 lindexer[count] = i
 *                 rindexer[count] = j
 */
      __pyx_t_6 = (__pyx_v_lval == __pyx_v_rval);
      if (__pyx_t_6) {

        /* "pandas/src/generated.pyx":3611
 * 
 *             if lval == rval:
 *                 lindexer[count] = i             # <<<<<<<<<<<<<<
 *                 rindexer[count] = j
 *                 result[count] = lval
 */
        __pyx_t_38 = __pyx_v_count;
        *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_bstruct_lindexer.buf, __pyx_t_38, __pyx_bstride_0_lindexer) = __pyx_v_i;

        /* "pandas/src/generated.pyx":3612
 *             if lval == rval:
 *                 lindexer[count] = i
 *                 rindexer[count] = j             # <<<<<<<<<<<<<<
 *                 result[count] = lval
 *                 count += 1
 */
        __pyx_t_39 = __pyx_v_count;
        *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_bstruct_rindexer.buf, __pyx_t_39, __pyx_bstride_0_rindexer) = __pyx_v_j;

        /* "pandas/src/generated.pyx":3613
 *                 lindexer[count] = i
 *                 rindexer[count] = j
 *                 result[count] = lval             # <<<<<<<<<<<<<<
 *                 count += 1
 *                 if i < nleft - 1:
 */
        __pyx_t_40 = __pyx_v_count;
        *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_bstruct_result.buf, __pyx_t_40, __pyx_bstride_0_result) = __pyx_v_lval;

        /* "pandas/src/generated.pyx":3614
 *                 rindexer[count] = j
 *                 result[count] = lval
 *                 count += 1             # <<<<<<<<<<<<<<
 *                 if i < nleft - 1:
 *                     if j < nright - 1 and right[j + 1] == rval:
 */
        __pyx_v_count = (__pyx_v_count + 1);

        /* "pandas/src/generated.pyx":3615
 *                 result[count] = lval
 *                 count += 1
 *                 if i < nleft - 1:             # <<<<<<<<<<<<<<
 *                     if j < nright - 1 and right[j + 1] == rval:
 *                         j += 1
 */
        __pyx_t_6 = (__pyx_v_i < (__pyx_v_nleft - 1));
        if (__pyx_t_6) {

          /* "pandas/src/generated.pyx":3616
 *                 count += 1
 *                 if i < nleft - 1:
 *                     if j < nright - 1 and right[j + 1] == rval:             # <<<<<<<<<<<<<<
 *                         j += 1
 *                     else:
 */
          __pyx_t_6 = (__pyx_v_j < (__pyx_v_nright - 1));
          if (__pyx_t_6) {
            __pyx_t_41 = (__pyx_v_j + 1);
            __pyx_t_2 = ((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_bstruct_right.buf, __pyx_t_41, __pyx_bstride_0_right)) == __pyx_v_rval);
            __pyx_t_5 = __pyx_t_2;
          } else {
            __pyx_t_5 = __pyx_t_6;
          }
          if (__pyx_t_5) {

            /* "pandas/src/generated.pyx":3617
 *                 if i < nleft - 1:
 *                     if j < nright - 1 and right[j + 1] == rval:
 *                         j += 1             # <<<<<<<<<<<<<<
 *                     else:
 *                         i += 1
 */
            __pyx_v_j = (__pyx_v_j + 1);
            goto __pyx_L31;
          }
          /*else*/ {

            /* "pandas/src/generated.pyx":3619
 *                         j += 1
 *                     else:
 *                         i += 1             # <<<<<<<<<<<<<<
 *                         if left[i] != rval:
 *                             j += 1
 */
            __pyx_v_i = (__pyx_v_i + 1);

            /* "pandas/src/generated.pyx":3620
 *                     else:
 *                         i += 1
 *                         if left[i] != rval:             # <<<<<<<<<<<<<<
 *                             j += 1
 *                 elif j < nright - 1:
 */
            __pyx_t_42 = __pyx_v_i;
            __pyx_t_5 = ((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_bstruct_left.buf, __pyx_t_42, __pyx_bstride_0_left)) != __pyx_v_rval);
            if (__pyx_t_5) {

              /* "pandas/src/generated.pyx":3621
 *                         i += 1
 *                         if left[i] != rval:
 *                             j += 1             # <<<<<<<<<<<<<<
 *                 elif j < nright - 1:
 *                     j += 1
 */
              __pyx_v_j = (__pyx_v_j + 1);
              goto __pyx_L32;
            }
            __pyx_L32:;
          }
          __pyx_L31:;
          goto __pyx_L30;
        }

        /* "pandas/src/generated.pyx":3622
 *                         if left[i] != rval:
 *                             j += 1
 *                 elif j < nright - 1:             # <<<<<<<<<<<<<<
 *                     j += 1
 *                     if lval != right[j]:
 */
        __pyx_t_5 = (__pyx_v_j < (__pyx_v_nright - 1));
        if (__pyx_t_5) {

          /* "pandas/src/generated.pyx":3623
 *                             j += 1
 *                 elif j < nright - 1:
 *                     j += 1             # <<<<<<<<<<<<<<
 *                     if lval != right[j]:
 *                         i += 1
 */
          __pyx_v_j = (__pyx_v_j + 1);

          /* "pandas/src/generated.pyx":3624
 *                 elif j < nright - 1:
 *                     j += 1
 *                     if lval != right[j]:             # <<<<<<<<<<<<<<
 *                         i += 1
 *                 else:
 */
          __pyx_t_43 = __pyx_v_j;
          __pyx_t_5 = (__pyx_v_lval != (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_bstruct_right.buf, __pyx_t_43, __pyx_bstride_0_right)));
          if (__pyx_t_5) {

            /* "pandas/src/generated.pyx":3625
 *                     j += 1
 *                     if lval != right[j]:
 *                         i += 1             # <<<<<<<<<<<<<<
 *                 else:
 *                     # end of the road
 */
            __pyx_v_i = (__pyx_v_i + 1);
            goto __pyx_L33;
          }
          __pyx_L33:;
          goto __pyx_L30;
        }
        /*else*/ {

          /* "pandas/src/generated.pyx":3628
 *                 else:
 *                     # end of the road
 *                     break             # <<<<<<<<<<<<<<
 *             elif lval < rval:
 *                 lindexer[count] = i
 */
          goto __pyx_L22_break;
        }
        __pyx_L30:;
        goto __pyx_L29;
      }

      /* "pandas/src/generated.pyx":3629
 *                     # end of the road
 *                     break
 *             elif lval < rval:             # <<<<<<<<<<<<<<
 *                 lindexer[count] = i
 *                 rindexer[count] = -1
 */
      __pyx_t_5 = (__pyx_v_lval < __pyx_v_rval);
      if (__pyx_t_5) {

        /* "pandas/src/generated.pyx":3630
 *                     break
 *             elif lval < rval:
 *                 lindexer[count] = i             # <<<<<<<<<<<<<<
 *                 rindexer[count] = -1
 *                 result[count] = lval
 */
        __pyx_t_44 = __pyx_v_count;
        *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_bstruct_lindexer.buf, __pyx_t_44, __pyx_bstride_0_lindexer) = __pyx_v_i;

        /* "pandas/src/generated.pyx":3631
 *             elif lval < rval:
 *                 lindexer[count] = i
 *                 rindexer[count] = -1             # <<<<<<<<<<<<<<
 *                 result[count] = lval
 *                 count += 1
 */
        __pyx_t_45 = __pyx_v_count;
        *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_bstruct_rindexer.buf, __pyx_t_45, __pyx_bstride_0_rindexer) = -1;

        /* "pandas/src/generated.pyx":3632
 *                 lindexer[count] = i
 *                 rindexer[count] = -1
 *                 result[count] = lval             # <<<<<<<<<<<<<<
 *                 count += 1
 *                 i += 1
 */
        __pyx_t_46 = __pyx_v_count;
        *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_bstruct_result.buf, __pyx_t_46, __pyx_bstride_0_result) = __pyx_v_lval;

        /* "pandas/src/generated.pyx":3633
 *                 rindexer[count] = -1
 *                 result[count] = lval
 *                 count += 1             # <<<<<<<<<<<<<<
 *                 i += 1
 *             else:
 */
        __pyx_v_count = (__pyx_v_count + 1);

        /* "pandas/src/generated.pyx":3634
 *                 result[count] = lval
 *                 count += 1
 *                 i += 1             # <<<<<<<<<<<<<<
 *             else:
 *                 lindexer[count] = -1
 */
        __pyx_v_i = (__pyx_v_i + 1);
        goto __pyx_L29;
      }
      /*else*/ {

        /* "pandas/src/generated.pyx":3636
 *                 i += 1
 *             else:
 *                 lindexer[count] = -1             # <<<<<<<<<<<<<<
 *                 rindexer[count] = j
 *                 result[count] = rval
 */
        __pyx_t_47 = __pyx_v_count;
        *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_bstruct_lindexer.buf, __pyx_t_47, __pyx_bstride_0_lindexer) = -1;

        /* "pandas/src/generated.pyx":3637
 *             else:
 *                 lindexer[count] = -1
 *                 rindexer[count] = j             # <<<<<<<<<<<<<<
 *                 result[count] = rval
 *                 count += 1
 */
        __pyx_t_48 = __pyx_v_count;
        *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_bstruct_rindexer.buf, __pyx_t_48, __pyx_bstride_0_rindexer) = __pyx_v_j;

        /* "pandas/src/generated.pyx":3638
 *                 lindexer[count] = -1
 *                 rindexer[count] = j
 *                 result[count] = rval             # <<<<<<<<<<<<<<
 *                 count += 1
 *                 j += 1
 */
        __pyx_t_49 = __pyx_v_count;
        *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_bstruct_result.buf, __pyx_t_49, __pyx_bstride_0_result) = __pyx_v_rval;

        /* "pandas/src/generated.pyx":3639
 *                 rindexer[count] = j
 *                 result[count] = rval
 *                 count += 1             # <<<<<<<<<<<<<<
 *                 j += 1
 * 
 */
        __pyx_v_count = (__pyx_v_count + 1);

        /* "pandas/src/generated.pyx":3640
 *                 result[count] = rval
 *                 count += 1
 *                 j += 1             # <<<<<<<<<<<<<<
 * 
 *     return result, lindexer, rindexer
 */
        __pyx_v_j = (__pyx_v_j + 1);
      }
      __pyx_L29:;
    }
    __pyx_L22_break:;
  }
  __pyx_L16:;

  /* "pandas/src/generated.pyx":3642
 *                 j += 1
 * 
 *     return result, lindexer, rindexer             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_10 = PyTuple_New(3); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3642; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_10));
  __Pyx_INCREF(((PyObject *)__pyx_v_result));
  PyTuple_SET_ITEM(__pyx_t_10, 0, ((PyObject *)__pyx_v_result));
  __Pyx_GIVEREF(((PyObject *)__pyx_v_result));
  __Pyx_INCREF(((PyObject *)__pyx_v_lindexer));
  PyTuple_SET_ITEM(__pyx_t_10, 1, ((PyObject *)__pyx_v_lindexer));
  __Pyx_GIVEREF(((PyObject *)__pyx_v_lindexer));
  __Pyx_INCREF(((PyObject *)__pyx_v_rindexer));
  PyTuple_SET_ITEM(__pyx_t_10, 2, ((PyObject *)__pyx_v_rindexer));
  __Pyx_GIVEREF(((PyObject *)__pyx_v_rindexer));
  __pyx_r = ((PyObject *)__pyx_t_10);
  __pyx_t_10 = 0;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_9);
  __Pyx_XDECREF(__pyx_t_10);
  __Pyx_XDECREF(__pyx_t_11);
  __Pyx_XDECREF(__pyx_t_12);
  __Pyx_XDECREF(__pyx_t_13);
  { PyObject *__pyx_type, *__pyx_value, *__pyx_tb;
    __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);
    __Pyx_SafeReleaseBuffer(&__pyx_bstruct_result);
    __Pyx_SafeReleaseBuffer(&__pyx_bstruct_right);
    __Pyx_SafeReleaseBuffer(&__pyx_bstruct_lindexer);
    __Pyx_SafeReleaseBuffer(&__pyx_bstruct_rindexer);
    __Pyx_SafeReleaseBuffer(&__pyx_bstruct_left);
  __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);}
  __Pyx_AddTraceback("pandas._algos.outer_join_indexer_int64", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  goto __pyx_L2;
  __pyx_L0:;
  __Pyx_SafeReleaseBuffer(&__pyx_bstruct_result);
  __Pyx_SafeReleaseBuffer(&__pyx_bstruct_right);
  __Pyx_SafeReleaseBuffer(&__pyx_bstruct_lindexer);
  __Pyx_SafeReleaseBuffer(&__pyx_bstruct_rindexer);
  __Pyx_SafeReleaseBuffer(&__pyx_bstruct_left);
  __pyx_L2:;
  __Pyx_XDECREF((PyObject *)__pyx_v_lindexer);
  __Pyx_XDECREF((PyObject *)__pyx_v_rindexer);
  __Pyx_XDECREF((PyObject *)__pyx_v_result);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "pandas/src/generated.pyx":3647
 * @cython.wraparound(False)
 * @cython.boundscheck(False)
 * def inner_join_indexer_float64(ndarray[float64_t] left,             # <<<<<<<<<<<<<<
 *                               ndarray[float64_t] right):
 *     '''
 */

static PyObject *__pyx_pf_6pandas_6_algos_87inner_join_indexer_float64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6pandas_6_algos_87inner_join_indexer_float64[] = "\n    Two-pass algorithm for monotonic indexes. Handles many-to-one merges\n    ";
static PyMethodDef __pyx_mdef_6pandas_6_algos_87inner_join_indexer_float64 = {__Pyx_NAMESTR("inner_join_indexer_float64"), (PyCFunction)__pyx_pf_6pandas_6_algos_87inner_join_indexer_float64, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6pandas_6_algos_87inner_join_indexer_float64)};
static PyObject *__pyx_pf_6pandas_6_algos_87inner_join_indexer_float64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyArrayObject *__pyx_v_left = 0;
  PyArrayObject *__pyx_v_right = 0;
  Py_ssize_t __pyx_v_i;
  Py_ssize_t __pyx_v_j;
  Py_ssize_t __pyx_v_nright;
  Py_ssize_t __pyx_v_nleft;
  Py_ssize_t __pyx_v_count;
  __pyx_t_5numpy_float64_t __pyx_v_lval;
  __pyx_t_5numpy_float64_t __pyx_v_rval;
  PyArrayObject *__pyx_v_lindexer = 0;
  PyArrayObject *__pyx_v_rindexer = 0;
  PyArrayObject *__pyx_v_result = 0;
  Py_buffer __pyx_bstruct_result;
  Py_ssize_t __pyx_bstride_0_result = 0;
  Py_ssize_t __pyx_bshape_0_result = 0;
  Py_buffer __pyx_bstruct_right;
  Py_ssize_t __pyx_bstride_0_right = 0;
  Py_ssize_t __pyx_bshape_0_right = 0;
  Py_buffer __pyx_bstruct_lindexer;
  Py_ssize_t __pyx_bstride_0_lindexer = 0;
  Py_ssize_t __pyx_bshape_0_lindexer = 0;
  Py_buffer __pyx_bstruct_rindexer;
  Py_ssize_t __pyx_bstride_0_rindexer = 0;
  Py_ssize_t __pyx_bshape_0_rindexer = 0;
  Py_buffer __pyx_bstruct_left;
  Py_ssize_t __pyx_bstride_0_left = 0;
  Py_ssize_t __pyx_bshape_0_left = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  Py_ssize_t __pyx_t_1;
  int __pyx_t_2;
  int __pyx_t_3;
  int __pyx_t_4;
  Py_ssize_t __pyx_t_5;
  Py_ssize_t __pyx_t_6;
  Py_ssize_t __pyx_t_7;
  Py_ssize_t __pyx_t_8;
  PyObject *__pyx_t_9 = NULL;
  PyObject *__pyx_t_10 = NULL;
  PyObject *__pyx_t_11 = NULL;
  PyObject *__pyx_t_12 = NULL;
  PyObject *__pyx_t_13 = NULL;
  PyArrayObject *__pyx_t_14 = NULL;
  int __pyx_t_15;
  PyObject *__pyx_t_16 = NULL;
  PyObject *__pyx_t_17 = NULL;
  PyObject *__pyx_t_18 = NULL;
  PyArrayObject *__pyx_t_19 = NULL;
  Py_ssize_t __pyx_t_20;
  Py_ssize_t __pyx_t_21;
  Py_ssize_t __pyx_t_22;
  Py_ssize_t __pyx_t_23;
  Py_ssize_t __pyx_t_24;
  Py_ssize_t __pyx_t_25;
  Py_ssize_t __pyx_t_26;
  Py_ssize_t __pyx_t_27;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__left,&__pyx_n_s__right,0};
  __Pyx_RefNannySetupContext("inner_join_indexer_float64");
  __pyx_self = __pyx_self;
  {
    PyObject* values[2] = {0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  0:
        values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__left);
        if (likely(values[0])) kw_args--;
        else goto __pyx_L5_argtuple_error;
        case  1:
        values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__right);
        if (likely(values[1])) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("inner_join_indexer_float64", 1, 2, 2, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3647; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "inner_join_indexer_float64") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3647; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
    }
    __pyx_v_left = ((PyArrayObject *)values[0]);
    __pyx_v_right = ((PyArrayObject *)values[1]);
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("inner_join_indexer_float64", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3647; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("pandas._algos.inner_join_indexer_float64", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_bstruct_lindexer.buf = NULL;
  __pyx_bstruct_rindexer.buf = NULL;
  __pyx_bstruct_result.buf = NULL;
  __pyx_bstruct_left.buf = NULL;
  __pyx_bstruct_right.buf = NULL;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_left), __pyx_ptype_5numpy_ndarray, 1, "left", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3647; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_right), __pyx_ptype_5numpy_ndarray, 1, "right", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3648; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_left, (PyObject*)__pyx_v_left, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3647; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  }
  __pyx_bstride_0_left = __pyx_bstruct_left.strides[0];
  __pyx_bshape_0_left = __pyx_bstruct_left.shape[0];
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_right, (PyObject*)__pyx_v_right, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3647; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  }
  __pyx_bstride_0_right = __pyx_bstruct_right.strides[0];
  __pyx_bshape_0_right = __pyx_bstruct_right.shape[0];

  /* "pandas/src/generated.pyx":3658
 *         ndarray[float64_t] result
 * 
 *     nleft = len(left)             # <<<<<<<<<<<<<<
 *     nright = len(right)
 * 
 */
  __pyx_t_1 = PyObject_Length(((PyObject *)__pyx_v_left)); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3658; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_v_nleft = __pyx_t_1;

  /* "pandas/src/generated.pyx":3659
 * 
 *     nleft = len(left)
 *     nright = len(right)             # <<<<<<<<<<<<<<
 * 
 *     i = 0
 */
  __pyx_t_1 = PyObject_Length(((PyObject *)__pyx_v_right)); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3659; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_v_nright = __pyx_t_1;

  /* "pandas/src/generated.pyx":3661
 *     nright = len(right)
 * 
 *     i = 0             # <<<<<<<<<<<<<<
 *     j = 0
 *     count = 0
 */
  __pyx_v_i = 0;

  /* "pandas/src/generated.pyx":3662
 * 
 *     i = 0
 *     j = 0             # <<<<<<<<<<<<<<
 *     count = 0
 *     if nleft > 0 and nright > 0:
 */
  __pyx_v_j = 0;

  /* "pandas/src/generated.pyx":3663
 *     i = 0
 *     j = 0
 *     count = 0             # <<<<<<<<<<<<<<
 *     if nleft > 0 and nright > 0:
 *         while True:
 */
  __pyx_v_count = 0;

  /* "pandas/src/generated.pyx":3664
 *     j = 0
 *     count = 0
 *     if nleft > 0 and nright > 0:             # <<<<<<<<<<<<<<
 *         while True:
 *             if i == nleft:
 */
  __pyx_t_2 = (__pyx_v_nleft > 0);
  if (__pyx_t_2) {
    __pyx_t_3 = (__pyx_v_nright > 0);
    __pyx_t_4 = __pyx_t_3;
  } else {
    __pyx_t_4 = __pyx_t_2;
  }
  if (__pyx_t_4) {

    /* "pandas/src/generated.pyx":3665
 *     count = 0
 *     if nleft > 0 and nright > 0:
 *         while True:             # <<<<<<<<<<<<<<
 *             if i == nleft:
 *                 break
 */
    while (1) {
      if (!1) break;

      /* "pandas/src/generated.pyx":3666
 *     if nleft > 0 and nright > 0:
 *         while True:
 *             if i == nleft:             # <<<<<<<<<<<<<<
 *                 break
 *             if j == nright:
 */
      __pyx_t_4 = (__pyx_v_i == __pyx_v_nleft);
      if (__pyx_t_4) {

        /* "pandas/src/generated.pyx":3667
 *         while True:
 *             if i == nleft:
 *                 break             # <<<<<<<<<<<<<<
 *             if j == nright:
 *                 break
 */
        goto __pyx_L8_break;
        goto __pyx_L9;
      }
      __pyx_L9:;

      /* "pandas/src/generated.pyx":3668
 *             if i == nleft:
 *                 break
 *             if j == nright:             # <<<<<<<<<<<<<<
 *                 break
 * 
 */
      __pyx_t_4 = (__pyx_v_j == __pyx_v_nright);
      if (__pyx_t_4) {

        /* "pandas/src/generated.pyx":3669
 *                 break
 *             if j == nright:
 *                 break             # <<<<<<<<<<<<<<
 * 
 *             lval = left[i]
 */
        goto __pyx_L8_break;
        goto __pyx_L10;
      }
      __pyx_L10:;

      /* "pandas/src/generated.pyx":3671
 *                 break
 * 
 *             lval = left[i]             # <<<<<<<<<<<<<<
 *             rval = right[j]
 *             if lval == rval:
 */
      __pyx_t_1 = __pyx_v_i;
      __pyx_v_lval = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_left.buf, __pyx_t_1, __pyx_bstride_0_left));

      /* "pandas/src/generated.pyx":3672
 * 
 *             lval = left[i]
 *             rval = right[j]             # <<<<<<<<<<<<<<
 *             if lval == rval:
 *                 count += 1
 */
      __pyx_t_5 = __pyx_v_j;
      __pyx_v_rval = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_right.buf, __pyx_t_5, __pyx_bstride_0_right));

      /* "pandas/src/generated.pyx":3673
 *             lval = left[i]
 *             rval = right[j]
 *             if lval == rval:             # <<<<<<<<<<<<<<
 *                 count += 1
 *                 if i < nleft - 1:
 */
      __pyx_t_4 = (__pyx_v_lval == __pyx_v_rval);
      if (__pyx_t_4) {

        /* "pandas/src/generated.pyx":3674
 *             rval = right[j]
 *             if lval == rval:
 *                 count += 1             # <<<<<<<<<<<<<<
 *                 if i < nleft - 1:
 *                     if j < nright - 1 and right[j + 1] == rval:
 */
        __pyx_v_count = (__pyx_v_count + 1);

        /* "pandas/src/generated.pyx":3675
 *             if lval == rval:
 *                 count += 1
 *                 if i < nleft - 1:             # <<<<<<<<<<<<<<
 *                     if j < nright - 1 and right[j + 1] == rval:
 *                         j += 1
 */
        __pyx_t_4 = (__pyx_v_i < (__pyx_v_nleft - 1));
        if (__pyx_t_4) {

          /* "pandas/src/generated.pyx":3676
 *                 count += 1
 *                 if i < nleft - 1:
 *                     if j < nright - 1 and right[j + 1] == rval:             # <<<<<<<<<<<<<<
 *                         j += 1
 *                     else:
 */
          __pyx_t_4 = (__pyx_v_j < (__pyx_v_nright - 1));
          if (__pyx_t_4) {
            __pyx_t_6 = (__pyx_v_j + 1);
            __pyx_t_2 = ((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_right.buf, __pyx_t_6, __pyx_bstride_0_right)) == __pyx_v_rval);
            __pyx_t_3 = __pyx_t_2;
          } else {
            __pyx_t_3 = __pyx_t_4;
          }
          if (__pyx_t_3) {

            /* "pandas/src/generated.pyx":3677
 *                 if i < nleft - 1:
 *                     if j < nright - 1 and right[j + 1] == rval:
 *                         j += 1             # <<<<<<<<<<<<<<
 *                     else:
 *                         i += 1
 */
            __pyx_v_j = (__pyx_v_j + 1);
            goto __pyx_L13;
          }
          /*else*/ {

            /* "pandas/src/generated.pyx":3679
 *                         j += 1
 *                     else:
 *                         i += 1             # <<<<<<<<<<<<<<
 *                         if left[i] != rval:
 *                             j += 1
 */
            __pyx_v_i = (__pyx_v_i + 1);

            /* "pandas/src/generated.pyx":3680
 *                     else:
 *                         i += 1
 *                         if left[i] != rval:             # <<<<<<<<<<<<<<
 *                             j += 1
 *                 elif j < nright - 1:
 */
            __pyx_t_7 = __pyx_v_i;
            __pyx_t_3 = ((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_left.buf, __pyx_t_7, __pyx_bstride_0_left)) != __pyx_v_rval);
            if (__pyx_t_3) {

              /* "pandas/src/generated.pyx":3681
 *                         i += 1
 *                         if left[i] != rval:
 *                             j += 1             # <<<<<<<<<<<<<<
 *                 elif j < nright - 1:
 *                     j += 1
 */
              __pyx_v_j = (__pyx_v_j + 1);
              goto __pyx_L14;
            }
            __pyx_L14:;
          }
          __pyx_L13:;
          goto __pyx_L12;
        }

        /* "pandas/src/generated.pyx":3682
 *                         if left[i] != rval:
 *                             j += 1
 *                 elif j < nright - 1:             # <<<<<<<<<<<<<<
 *                     j += 1
 *                     if lval != right[j]:
 */
        __pyx_t_3 = (__pyx_v_j < (__pyx_v_nright - 1));
        if (__pyx_t_3) {

          /* "pandas/src/generated.pyx":3683
 *                             j += 1
 *                 elif j < nright - 1:
 *                     j += 1             # <<<<<<<<<<<<<<
 *                     if lval != right[j]:
 *                         i += 1
 */
          __pyx_v_j = (__pyx_v_j + 1);

          /* "pandas/src/generated.pyx":3684
 *                 elif j < nright - 1:
 *                     j += 1
 *                     if lval != right[j]:             # <<<<<<<<<<<<<<
 *                         i += 1
 *                 else:
 */
          __pyx_t_8 = __pyx_v_j;
          __pyx_t_3 = (__pyx_v_lval != (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_right.buf, __pyx_t_8, __pyx_bstride_0_right)));
          if (__pyx_t_3) {

            /* "pandas/src/generated.pyx":3685
 *                     j += 1
 *                     if lval != right[j]:
 *                         i += 1             # <<<<<<<<<<<<<<
 *                 else:
 *                     # end of the road
 */
            __pyx_v_i = (__pyx_v_i + 1);
            goto __pyx_L15;
          }
          __pyx_L15:;
          goto __pyx_L12;
        }
        /*else*/ {

          /* "pandas/src/generated.pyx":3688
 *                 else:
 *                     # end of the road
 *                     break             # <<<<<<<<<<<<<<
 *             elif lval < rval:
 *                 i += 1
 */
          goto __pyx_L8_break;
        }
        __pyx_L12:;
        goto __pyx_L11;
      }

      /* "pandas/src/generated.pyx":3689
 *                     # end of the road
 *                     break
 *             elif lval < rval:             # <<<<<<<<<<<<<<
 *                 i += 1
 *             else:
 */
      __pyx_t_3 = (__pyx_v_lval < __pyx_v_rval);
      if (__pyx_t_3) {

        /* "pandas/src/generated.pyx":3690
 *                     break
 *             elif lval < rval:
 *                 i += 1             # <<<<<<<<<<<<<<
 *             else:
 *                 j += 1
 */
        __pyx_v_i = (__pyx_v_i + 1);
        goto __pyx_L11;
      }
      /*else*/ {

        /* "pandas/src/generated.pyx":3692
 *                 i += 1
 *             else:
 *                 j += 1             # <<<<<<<<<<<<<<
 * 
 *     # do it again now that result size is known
 */
        __pyx_v_j = (__pyx_v_j + 1);
      }
      __pyx_L11:;
    }
    __pyx_L8_break:;
    goto __pyx_L6;
  }
  __pyx_L6:;

  /* "pandas/src/generated.pyx":3696
 *     # do it again now that result size is known
 * 
 *     lindexer = np.empty(count, dtype=np.int64)             # <<<<<<<<<<<<<<
 *     rindexer = np.empty(count, dtype=np.int64)
 *     result = np.empty(count, dtype=np.float64)
 */
  __pyx_t_9 = __Pyx_GetName(__pyx_m, __pyx_n_s__np); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3696; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_9);
  __pyx_t_10 = PyObject_GetAttr(__pyx_t_9, __pyx_n_s__empty); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3696; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_10);
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  __pyx_t_9 = PyInt_FromSsize_t(__pyx_v_count); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3696; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_9);
  __pyx_t_11 = PyTuple_New(1); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3696; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_11));
  PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_9);
  __Pyx_GIVEREF(__pyx_t_9);
  __pyx_t_9 = 0;
  __pyx_t_9 = PyDict_New(); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3696; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_9));
  __pyx_t_12 = __Pyx_GetName(__pyx_m, __pyx_n_s__np); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3696; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_12);
  __pyx_t_13 = PyObject_GetAttr(__pyx_t_12, __pyx_n_s__int64); if (unlikely(!__pyx_t_13)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3696; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_13);
  __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
  if (PyDict_SetItem(__pyx_t_9, ((PyObject *)__pyx_n_s__dtype), __pyx_t_13) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3696; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
  __pyx_t_13 = PyEval_CallObjectWithKeywords(__pyx_t_10, ((PyObject *)__pyx_t_11), ((PyObject *)__pyx_t_9)); if (unlikely(!__pyx_t_13)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3696; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_13);
  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
  __Pyx_DECREF(((PyObject *)__pyx_t_11)); __pyx_t_11 = 0;
  __Pyx_DECREF(((PyObject *)__pyx_t_9)); __pyx_t_9 = 0;
  if (!(likely(((__pyx_t_13) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_13, __pyx_ptype_5numpy_ndarray))))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3696; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_t_14 = ((PyArrayObject *)__pyx_t_13);
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    __Pyx_SafeReleaseBuffer(&__pyx_bstruct_lindexer);
    __pyx_t_15 = __Pyx_GetBufferAndValidate(&__pyx_bstruct_lindexer, (PyObject*)__pyx_t_14, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack);
    if (unlikely(__pyx_t_15 < 0)) {
      PyErr_Fetch(&__pyx_t_16, &__pyx_t_17, &__pyx_t_18);
      if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_lindexer, (PyObject*)__pyx_v_lindexer, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) {
        Py_XDECREF(__pyx_t_16); Py_XDECREF(__pyx_t_17); Py_XDECREF(__pyx_t_18);
        __Pyx_RaiseBufferFallbackError();
      } else {
        PyErr_Restore(__pyx_t_16, __pyx_t_17, __pyx_t_18);
      }
    }
    __pyx_bstride_0_lindexer = __pyx_bstruct_lindexer.strides[0];
    __pyx_bshape_0_lindexer = __pyx_bstruct_lindexer.shape[0];
    if (unlikely(__pyx_t_15 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3696; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  }
  __pyx_t_14 = 0;
  __pyx_v_lindexer = ((PyArrayObject *)__pyx_t_13);
  __pyx_t_13 = 0;

  /* "pandas/src/generated.pyx":3697
 * 
 *     lindexer = np.empty(count, dtype=np.int64)
 *     rindexer = np.empty(count, dtype=np.int64)             # <<<<<<<<<<<<<<
 *     result = np.empty(count, dtype=np.float64)
 * 
 */
  __pyx_t_13 = __Pyx_GetName(__pyx_m, __pyx_n_s__np); if (unlikely(!__pyx_t_13)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3697; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_13);
  __pyx_t_9 = PyObject_GetAttr(__pyx_t_13, __pyx_n_s__empty); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3697; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_9);
  __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
  __pyx_t_13 = PyInt_FromSsize_t(__pyx_v_count); if (unlikely(!__pyx_t_13)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3697; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_13);
  __pyx_t_11 = PyTuple_New(1); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3697; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_11));
  PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_13);
  __Pyx_GIVEREF(__pyx_t_13);
  __pyx_t_13 = 0;
  __pyx_t_13 = PyDict_New(); if (unlikely(!__pyx_t_13)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3697; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_13));
  __pyx_t_10 = __Pyx_GetName(__pyx_m, __pyx_n_s__np); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3697; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_10);
  __pyx_t_12 = PyObject_GetAttr(__pyx_t_10, __pyx_n_s__int64); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3697; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_12);
  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
  if (PyDict_SetItem(__pyx_t_13, ((PyObject *)__pyx_n_s__dtype), __pyx_t_12) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3697; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
  __pyx_t_12 = PyEval_CallObjectWithKeywords(__pyx_t_9, ((PyObject *)__pyx_t_11), ((PyObject *)__pyx_t_13)); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3697; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_12);
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  __Pyx_DECREF(((PyObject *)__pyx_t_11)); __pyx_t_11 = 0;
  __Pyx_DECREF(((PyObject *)__pyx_t_13)); __pyx_t_13 = 0;
  if (!(likely(((__pyx_t_12) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_12, __pyx_ptype_5numpy_ndarray))))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3697; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_t_14 = ((PyArrayObject *)__pyx_t_12);
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    __Pyx_SafeReleaseBuffer(&__pyx_bstruct_rindexer);
    __pyx_t_15 = __Pyx_GetBufferAndValidate(&__pyx_bstruct_rindexer, (PyObject*)__pyx_t_14, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack);
    if (unlikely(__pyx_t_15 < 0)) {
      PyErr_Fetch(&__pyx_t_18, &__pyx_t_17, &__pyx_t_16);
      if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_rindexer, (PyObject*)__pyx_v_rindexer, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) {
        Py_XDECREF(__pyx_t_18); Py_XDECREF(__pyx_t_17); Py_XDECREF(__pyx_t_16);
        __Pyx_RaiseBufferFallbackError();
      } else {
        PyErr_Restore(__pyx_t_18, __pyx_t_17, __pyx_t_16);
      }
    }
    __pyx_bstride_0_rindexer = __pyx_bstruct_rindexer.strides[0];
    __pyx_bshape_0_rindexer = __pyx_bstruct_rindexer.shape[0];
    if (unlikely(__pyx_t_15 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3697; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  }
  __pyx_t_14 = 0;
  __pyx_v_rindexer = ((PyArrayObject *)__pyx_t_12);
  __pyx_t_12 = 0;

  /* "pandas/src/generated.pyx":3698
 *     lindexer = np.empty(count, dtype=np.int64)
 *     rindexer = np.empty(count, dtype=np.int64)
 *     result = np.empty(count, dtype=np.float64)             # <<<<<<<<<<<<<<
 * 
 *     i = 0
 */
  __pyx_t_12 = __Pyx_GetName(__pyx_m, __pyx_n_s__np); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3698; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_12);
  __pyx_t_13 = PyObject_GetAttr(__pyx_t_12, __pyx_n_s__empty); if (unlikely(!__pyx_t_13)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3698; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_13);
  __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
  __pyx_t_12 = PyInt_FromSsize_t(__pyx_v_count); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3698; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_12);
  __pyx_t_11 = PyTuple_New(1); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3698; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_11));
  PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_12);
  __Pyx_GIVEREF(__pyx_t_12);
  __pyx_t_12 = 0;
  __pyx_t_12 = PyDict_New(); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3698; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_12));
  __pyx_t_9 = __Pyx_GetName(__pyx_m, __pyx_n_s__np); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3698; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_9);
  __pyx_t_10 = PyObject_GetAttr(__pyx_t_9, __pyx_n_s__float64); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3698; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_10);
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  if (PyDict_SetItem(__pyx_t_12, ((PyObject *)__pyx_n_s__dtype), __pyx_t_10) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3698; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
  __pyx_t_10 = PyEval_CallObjectWithKeywords(__pyx_t_13, ((PyObject *)__pyx_t_11), ((PyObject *)__pyx_t_12)); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3698; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_10);
  __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
  __Pyx_DECREF(((PyObject *)__pyx_t_11)); __pyx_t_11 = 0;
  __Pyx_DECREF(((PyObject *)__pyx_t_12)); __pyx_t_12 = 0;
  if (!(likely(((__pyx_t_10) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_10, __pyx_ptype_5numpy_ndarray))))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3698; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_t_19 = ((PyArrayObject *)__pyx_t_10);
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    __Pyx_SafeReleaseBuffer(&__pyx_bstruct_result);
    __pyx_t_15 = __Pyx_GetBufferAndValidate(&__pyx_bstruct_result, (PyObject*)__pyx_t_19, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack);
    if (unlikely(__pyx_t_15 < 0)) {
      PyErr_Fetch(&__pyx_t_16, &__pyx_t_17, &__pyx_t_18);
      if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_result, (PyObject*)__pyx_v_result, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) {
        Py_XDECREF(__pyx_t_16); Py_XDECREF(__pyx_t_17); Py_XDECREF(__pyx_t_18);
        __Pyx_RaiseBufferFallbackError();
      } else {
        PyErr_Restore(__pyx_t_16, __pyx_t_17, __pyx_t_18);
      }
    }
    __pyx_bstride_0_result = __pyx_bstruct_result.strides[0];
    __pyx_bshape_0_result = __pyx_bstruct_result.shape[0];
    if (unlikely(__pyx_t_15 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3698; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  }
  __pyx_t_19 = 0;
  __pyx_v_result = ((PyArrayObject *)__pyx_t_10);
  __pyx_t_10 = 0;

  /* "pandas/src/generated.pyx":3700
 *     result = np.empty(count, dtype=np.float64)
 * 
 *     i = 0             # <<<<<<<<<<<<<<
 *     j = 0
 *     count = 0
 */
  __pyx_v_i = 0;

  /* "pandas/src/generated.pyx":3701
 * 
 *     i = 0
 *     j = 0             # <<<<<<<<<<<<<<
 *     count = 0
 *     if nleft > 0 and nright > 0:
 */
  __pyx_v_j = 0;

  /* "pandas/src/generated.pyx":3702
 *     i = 0
 *     j = 0
 *     count = 0             # <<<<<<<<<<<<<<
 *     if nleft > 0 and nright > 0:
 *         while True:
 */
  __pyx_v_count = 0;

  /* "pandas/src/generated.pyx":3703
 *     j = 0
 *     count = 0
 *     if nleft > 0 and nright > 0:             # <<<<<<<<<<<<<<
 *         while True:
 *             if i == nleft:
 */
  __pyx_t_3 = (__pyx_v_nleft > 0);
  if (__pyx_t_3) {
    __pyx_t_4 = (__pyx_v_nright > 0);
    __pyx_t_2 = __pyx_t_4;
  } else {
    __pyx_t_2 = __pyx_t_3;
  }
  if (__pyx_t_2) {

    /* "pandas/src/generated.pyx":3704
 *     count = 0
 *     if nleft > 0 and nright > 0:
 *         while True:             # <<<<<<<<<<<<<<
 *             if i == nleft:
 *                 break
 */
    while (1) {
      if (!1) break;

      /* "pandas/src/generated.pyx":3705
 *     if nleft > 0 and nright > 0:
 *         while True:
 *             if i == nleft:             # <<<<<<<<<<<<<<
 *                 break
 *             if j == nright:
 */
      __pyx_t_2 = (__pyx_v_i == __pyx_v_nleft);
      if (__pyx_t_2) {

        /* "pandas/src/generated.pyx":3706
 *         while True:
 *             if i == nleft:
 *                 break             # <<<<<<<<<<<<<<
 *             if j == nright:
 *                 break
 */
        goto __pyx_L18_break;
        goto __pyx_L19;
      }
      __pyx_L19:;

      /* "pandas/src/generated.pyx":3707
 *             if i == nleft:
 *                 break
 *             if j == nright:             # <<<<<<<<<<<<<<
 *                 break
 * 
 */
      __pyx_t_2 = (__pyx_v_j == __pyx_v_nright);
      if (__pyx_t_2) {

        /* "pandas/src/generated.pyx":3708
 *                 break
 *             if j == nright:
 *                 break             # <<<<<<<<<<<<<<
 * 
 *             lval = left[i]
 */
        goto __pyx_L18_break;
        goto __pyx_L20;
      }
      __pyx_L20:;

      /* "pandas/src/generated.pyx":3710
 *                 break
 * 
 *             lval = left[i]             # <<<<<<<<<<<<<<
 *             rval = right[j]
 *             if lval == rval:
 */
      __pyx_t_20 = __pyx_v_i;
      __pyx_v_lval = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_left.buf, __pyx_t_20, __pyx_bstride_0_left));

      /* "pandas/src/generated.pyx":3711
 * 
 *             lval = left[i]
 *             rval = right[j]             # <<<<<<<<<<<<<<
 *             if lval == rval:
 *                 lindexer[count] = i
 */
      __pyx_t_21 = __pyx_v_j;
      __pyx_v_rval = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_right.buf, __pyx_t_21, __pyx_bstride_0_right));

      /* "pandas/src/generated.pyx":3712
 *             lval = left[i]
 *             rval = right[j]
 *             if lval == rval:             # <<<<<<<<<<<<<<
 *                 lindexer[count] = i
 *                 rindexer[count] = j
 */
      __pyx_t_2 = (__pyx_v_lval == __pyx_v_rval);
      if (__pyx_t_2) {

        /* "pandas/src/generated.pyx":3713
 *             rval = right[j]
 *             if lval == rval:
 *                 lindexer[count] = i             # <<<<<<<<<<<<<<
 *                 rindexer[count] = j
 *                 result[count] = rval
 */
        __pyx_t_22 = __pyx_v_count;
        *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_bstruct_lindexer.buf, __pyx_t_22, __pyx_bstride_0_lindexer) = __pyx_v_i;

        /* "pandas/src/generated.pyx":3714
 *             if lval == rval:
 *                 lindexer[count] = i
 *                 rindexer[count] = j             # <<<<<<<<<<<<<<
 *                 result[count] = rval
 *                 count += 1
 */
        __pyx_t_23 = __pyx_v_count;
        *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_bstruct_rindexer.buf, __pyx_t_23, __pyx_bstride_0_rindexer) = __pyx_v_j;

        /* "pandas/src/generated.pyx":3715
 *                 lindexer[count] = i
 *                 rindexer[count] = j
 *                 result[count] = rval             # <<<<<<<<<<<<<<
 *                 count += 1
 *                 if i < nleft - 1:
 */
        __pyx_t_24 = __pyx_v_count;
        *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_result.buf, __pyx_t_24, __pyx_bstride_0_result) = __pyx_v_rval;

        /* "pandas/src/generated.pyx":3716
 *                 rindexer[count] = j
 *                 result[count] = rval
 *                 count += 1             # <<<<<<<<<<<<<<
 *                 if i < nleft - 1:
 *                     if j < nright - 1 and right[j + 1] == rval:
 */
        __pyx_v_count = (__pyx_v_count + 1);

        /* "pandas/src/generated.pyx":3717
 *                 result[count] = rval
 *                 count += 1
 *                 if i < nleft - 1:             # <<<<<<<<<<<<<<
 *                     if j < nright - 1 and right[j + 1] == rval:
 *                         j += 1
 */
        __pyx_t_2 = (__pyx_v_i < (__pyx_v_nleft - 1));
        if (__pyx_t_2) {

          /* "pandas/src/generated.pyx":3718
 *                 count += 1
 *                 if i < nleft - 1:
 *                     if j < nright - 1 and right[j + 1] == rval:             # <<<<<<<<<<<<<<
 *                         j += 1
 *                     else:
 */
          __pyx_t_2 = (__pyx_v_j < (__pyx_v_nright - 1));
          if (__pyx_t_2) {
            __pyx_t_25 = (__pyx_v_j + 1);
            __pyx_t_3 = ((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_right.buf, __pyx_t_25, __pyx_bstride_0_right)) == __pyx_v_rval);
            __pyx_t_4 = __pyx_t_3;
          } else {
            __pyx_t_4 = __pyx_t_2;
          }
          if (__pyx_t_4) {

            /* "pandas/src/generated.pyx":3719
 *                 if i < nleft - 1:
 *                     if j < nright - 1 and right[j + 1] == rval:
 *                         j += 1             # <<<<<<<<<<<<<<
 *                     else:
 *                         i += 1
 */
            __pyx_v_j = (__pyx_v_j + 1);
            goto __pyx_L23;
          }
          /*else*/ {

            /* "pandas/src/generated.pyx":3721
 *                         j += 1
 *                     else:
 *                         i += 1             # <<<<<<<<<<<<<<
 *                         if left[i] != rval:
 *                             j += 1
 */
            __pyx_v_i = (__pyx_v_i + 1);

            /* "pandas/src/generated.pyx":3722
 *                     else:
 *                         i += 1
 *                         if left[i] != rval:             # <<<<<<<<<<<<<<
 *                             j += 1
 *                 elif j < nright - 1:
 */
            __pyx_t_26 = __pyx_v_i;
            __pyx_t_4 = ((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_left.buf, __pyx_t_26, __pyx_bstride_0_left)) != __pyx_v_rval);
            if (__pyx_t_4) {

              /* "pandas/src/generated.pyx":3723
 *                         i += 1
 *                         if left[i] != rval:
 *                             j += 1             # <<<<<<<<<<<<<<
 *                 elif j < nright - 1:
 *                     j += 1
 */
              __pyx_v_j = (__pyx_v_j + 1);
              goto __pyx_L24;
            }
            __pyx_L24:;
          }
          __pyx_L23:;
          goto __pyx_L22;
        }

        /* "pandas/src/generated.pyx":3724
 *                         if left[i] != rval:
 *                             j += 1
 *                 elif j < nright - 1:             # <<<<<<<<<<<<<<
 *                     j += 1
 *                     if lval != right[j]:
 */
        __pyx_t_4 = (__pyx_v_j < (__pyx_v_nright - 1));
        if (__pyx_t_4) {

          /* "pandas/src/generated.pyx":3725
 *                             j += 1
 *                 elif j < nright - 1:
 *                     j += 1             # <<<<<<<<<<<<<<
 *                     if lval != right[j]:
 *                         i += 1
 */
          __pyx_v_j = (__pyx_v_j + 1);

          /* "pandas/src/generated.pyx":3726
 *                 elif j < nright - 1:
 *                     j += 1
 *                     if lval != right[j]:             # <<<<<<<<<<<<<<
 *                         i += 1
 *                 else:
 */
          __pyx_t_27 = __pyx_v_j;
          __pyx_t_4 = (__pyx_v_lval != (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_bstruct_right.buf, __pyx_t_27, __pyx_bstride_0_right)));
          if (__pyx_t_4) {

            /* "pandas/src/generated.pyx":3727
 *                     j += 1
 *                     if lval != right[j]:
 *                         i += 1             # <<<<<<<<<<<<<<
 *                 else:
 *                     # end of the road
 */
            __pyx_v_i = (__pyx_v_i + 1);
            goto __pyx_L25;
          }
          __pyx_L25:;
          goto __pyx_L22;
        }
        /*else*/ {

          /* "pandas/src/generated.pyx":3730
 *                 else:
 *                     # end of the road
 *                     break             # <<<<<<<<<<<<<<
 *             elif lval < rval:
 *                 i += 1
 */
          goto __pyx_L18_break;
        }
        __pyx_L22:;
        goto __pyx_L21;
      }

      /* "pandas/src/generated.pyx":3731
 *                     # end of the road
 *                     break
 *             elif lval < rval:             # <<<<<<<<<<<<<<
 *                 i += 1
 *             else:
 */
      __pyx_t_4 = (__pyx_v_lval < __pyx_v_rval);
      if (__pyx_t_4) {

        /* "pandas/src/generated.pyx":3732
 *                     break
 *             elif lval < rval:
 *                 i += 1             # <<<<<<<<<<<<<<
 *             else:
 *                 j += 1
 */
        __pyx_v_i = (__pyx_v_i + 1);
        goto __pyx_L21;
      }
      /*else*/ {

        /* "pandas/src/generated.pyx":3734
 *                 i += 1
 *             else:
 *                 j += 1             # <<<<<<<<<<<<<<
 * 
 *     return result, lindexer, rindexer
 */
        __pyx_v_j = (__pyx_v_j + 1);
      }
      __pyx_L21:;
    }
    __pyx_L18_break:;
    goto __pyx_L16;
  }
  __pyx_L16:;

  /* "pandas/src/generated.pyx":3736
 *                 j += 1
 * 
 *     return result, lindexer, rindexer             # <<<<<<<<<<<<<<
 * 
 * @cython.wraparound(False)
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_10 = PyTuple_New(3); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3736; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_10));
  __Pyx_INCREF(((PyObject *)__pyx_v_result));
  PyTuple_SET_ITEM(__pyx_t_10, 0, ((PyObject *)__pyx_v_result));
  __Pyx_GIVEREF(((PyObject *)__pyx_v_result));
  __Pyx_INCREF(((PyObject *)__pyx_v_lindexer));
  PyTuple_SET_ITEM(__pyx_t_10, 1, ((PyObject *)__pyx_v_lindexer));
  __Pyx_GIVEREF(((PyObject *)__pyx_v_lindexer));
  __Pyx_INCREF(((PyObject *)__pyx_v_rindexer));
  PyTuple_SET_ITEM(__pyx_t_10, 2, ((PyObject *)__pyx_v_rindexer));
  __Pyx_GIVEREF(((PyObject *)__pyx_v_rindexer));
  __pyx_r = ((PyObject *)__pyx_t_10);
  __pyx_t_10 = 0;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_9);
  __Pyx_XDECREF(__pyx_t_10);
  __Pyx_XDECREF(__pyx_t_11);
  __Pyx_XDECREF(__pyx_t_12);
  __Pyx_XDECREF(__pyx_t_13);
  { PyObject *__pyx_type, *__pyx_value, *__pyx_tb;
    __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);
    __Pyx_SafeReleaseBuffer(&__pyx_bstruct_result);
    __Pyx_SafeReleaseBuffer(&__pyx_bstruct_right);
    __Pyx_SafeReleaseBuffer(&__pyx_bstruct_lindexer);
    __Pyx_SafeReleaseBuffer(&__pyx_bstruct_rindexer);
    __Pyx_SafeReleaseBuffer(&__pyx_bstruct_left);
  __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);}
  __Pyx_AddTraceback("pandas._algos.inner_join_indexer_float64", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  goto __pyx_L2;
  __pyx_L0:;
  __Pyx_SafeReleaseBuffer(&__pyx_bstruct_result);
  __Pyx_SafeReleaseBuffer(&__pyx_bstruct_right);
  __Pyx_SafeReleaseBuffer(&__pyx_bstruct_lindexer);
  __Pyx_SafeReleaseBuffer(&__pyx_bstruct_rindexer);
  __Pyx_SafeReleaseBuffer(&__pyx_bstruct_left);
  __pyx_L2:;
  __Pyx_XDECREF((PyObject *)__pyx_v_lindexer);
  __Pyx_XDECREF((PyObject *)__pyx_v_rindexer);
  __Pyx_XDECREF((PyObject *)__pyx_v_result);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "pandas/src/generated.pyx":3740
 * @cython.wraparound(False)
 * @cython.boundscheck(False)
 * def inner_join_indexer_object(ndarray[object] left,             # <<<<<<<<<<<<<<
 *                               ndarray[object] right):
 *     '''
 */

static PyObject *__pyx_pf_6pandas_6_algos_88inner_join_indexer_object(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6pandas_6_algos_88inner_join_indexer_object[] = "\n    Two-pass algorithm for monotonic indexes. Handles many-to-one merges\n    ";
static PyMethodDef __pyx_mdef_6pandas_6_algos_88inner_join_indexer_object = {__Pyx_NAMESTR("inner_join_indexer_object"), (PyCFunction)__pyx_pf_6pandas_6_algos_88inner_join_indexer_object, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6pandas_6_algos_88inner_join_indexer_object)};
static PyObject *__pyx_pf_6pandas_6_algos_88inner_join_indexer_object(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyArrayObject *__pyx_v_left = 0;
  PyArrayObject *__pyx_v_right = 0;
  Py_ssize_t __pyx_v_i;
  Py_ssize_t __pyx_v_j;
  Py_ssize_t __pyx_v_nright;
  Py_ssize_t __pyx_v_nleft;
  Py_ssize_t __pyx_v_count;
  PyObject *__pyx_v_lval = 0;
  PyObject *__pyx_v_rval = 0;
  PyArrayObject *__pyx_v_lindexer = 0;
  PyArrayObject *__pyx_v_rindexer = 0;
  PyArrayObject *__pyx_v_result = 0;
  Py_buffer __pyx_bstruct_result;
  Py_ssize_t __pyx_bstride_0_result = 0;
  Py_ssize_t __pyx_bshape_0_result = 0;
  Py_buffer __pyx_bstruct_right;
  Py_ssize_t __pyx_bstride_0_right = 0;
  Py_ssize_t __pyx_bshape_0_right = 0;
  Py_buffer __pyx_bstruct_lindexer;
  Py_ssize_t __pyx_bstride_0_lindexer = 0;
  Py_ssize_t __pyx_bshape_0_lindexer = 0;
  Py_buffer __pyx_bstruct_rindexer;
  Py_ssize_t __pyx_bstride_0_rindexer = 0;
  Py_ssize_t __pyx_bshape_0_rindexer = 0;
  Py_buffer __pyx_bstruct_left;
  Py_ssize_t __pyx_bstride_0_left = 0;
  Py_ssize_t __pyx_bshape_0_left = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  Py_ssize_t __pyx_t_1;
  int __pyx_t_2;
  int __pyx_t_3;
  int __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  Py_ssize_t __pyx_t_6;
  Py_ssize_t __pyx_t_7;
  PyObject *__pyx_t_8 = NULL;
  Py_ssize_t __pyx_t_9;
  Py_ssize_t __pyx_t_10;
  PyObject *__pyx_t_11 = NULL;
  PyObject *__pyx_t_12 = NULL;
  PyObject *__pyx_t_13 = NULL;
  PyArrayObject *__pyx_t_14 = NULL;
  int __pyx_t_15;
  PyObject *__pyx_t_16 = NULL;
  PyObject *__pyx_t_17 = NULL;
  PyObject *__pyx_t_18 = NULL;
  PyArrayObject *__pyx_t_19 = NULL;
  Py_ssize_t __pyx_t_20;
  Py_ssize_t __pyx_t_21;
  Py_ssize_t __pyx_t_22;
  Py_ssize_t __pyx_t_23;
  Py_ssize_t __pyx_t_24;
  PyObject **__pyx_t_25;
  Py_ssize_t __pyx_t_26;
  Py_ssize_t __pyx_t_27;
  Py_ssize_t __pyx_t_28;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__left,&__pyx_n_s__right,0};
  __Pyx_RefNannySetupContext("inner_join_indexer_object");
  __pyx_self = __pyx_self;
  {
    PyObject* values[2] = {0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  0:
        values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__left);
        if (likely(values[0])) kw_args--;
        else goto __pyx_L5_argtuple_error;
        case  1:
        values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__right);
        if (likely(values[1])) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("inner_join_indexer_object", 1, 2, 2, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3740; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "inner_join_indexer_object") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3740; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
    }
    __pyx_v_left = ((PyArrayObject *)values[0]);
    __pyx_v_right = ((PyArrayObject *)values[1]);
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("inner_join_indexer_object", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3740; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("pandas._algos.inner_join_indexer_object", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_bstruct_lindexer.buf = NULL;
  __pyx_bstruct_rindexer.buf = NULL;
  __pyx_bstruct_result.buf = NULL;
  __pyx_bstruct_left.buf = NULL;
  __pyx_bstruct_right.buf = NULL;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_left), __pyx_ptype_5numpy_ndarray, 1, "left", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3740; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_right), __pyx_ptype_5numpy_ndarray, 1, "right", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3741; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_left, (PyObject*)__pyx_v_left, &__Pyx_TypeInfo_object, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3740; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  }
  __pyx_bstride_0_left = __pyx_bstruct_left.strides[0];
  __pyx_bshape_0_left = __pyx_bstruct_left.shape[0];
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_right, (PyObject*)__pyx_v_right, &__Pyx_TypeInfo_object, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3740; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  }
  __pyx_bstride_0_right = __pyx_bstruct_right.strides[0];
  __pyx_bshape_0_right = __pyx_bstruct_right.shape[0];

  /* "pandas/src/generated.pyx":3751
 *         ndarray[object] result
 * 
 *     nleft = len(left)             # <<<<<<<<<<<<<<
 *     nright = len(right)
 * 
 */
  __pyx_t_1 = PyObject_Length(((PyObject *)__pyx_v_left)); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3751; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_v_nleft = __pyx_t_1;

  /* "pandas/src/generated.pyx":3752
 * 
 *     nleft = len(left)
 *     nright = len(right)             # <<<<<<<<<<<<<<
 * 
 *     i = 0
 */
  __pyx_t_1 = PyObject_Length(((PyObject *)__pyx_v_right)); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3752; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_v_nright = __pyx_t_1;

  /* "pandas/src/generated.pyx":3754
 *     nright = len(right)
 * 
 *     i = 0             # <<<<<<<<<<<<<<
 *     j = 0
 *     count = 0
 */
  __pyx_v_i = 0;

  /* "pandas/src/generated.pyx":3755
 * 
 *     i = 0
 *     j = 0             # <<<<<<<<<<<<<<
 *     count = 0
 *     if nleft > 0 and nright > 0:
 */
  __pyx_v_j = 0;

  /* "pandas/src/generated.pyx":3756
 *     i = 0
 *     j = 0
 *     count = 0             # <<<<<<<<<<<<<<
 *     if nleft > 0 and nright > 0:
 *         while True:
 */
  __pyx_v_count = 0;

  /* "pandas/src/generated.pyx":3757
 *     j = 0
 *     count = 0
 *     if nleft > 0 and nright > 0:             # <<<<<<<<<<<<<<
 *         while True:
 *             if i == nleft:
 */
  __pyx_t_2 = (__pyx_v_nleft > 0);
  if (__pyx_t_2) {
    __pyx_t_3 = (__pyx_v_nright > 0);
    __pyx_t_4 = __pyx_t_3;
  } else {
    __pyx_t_4 = __pyx_t_2;
  }
  if (__pyx_t_4) {

    /* "pandas/src/generated.pyx":3758
 *     count = 0
 *     if nleft > 0 and nright > 0:
 *         while True:             # <<<<<<<<<<<<<<
 *             if i == nleft:
 *                 break
 */
    while (1) {
      if (!1) break;

      /* "pandas/src/generated.pyx":3759
 *     if nleft > 0 and nright > 0:
 *         while True:
 *             if i == nleft:             # <<<<<<<<<<<<<<
 *                 break
 *             if j == nright:
 */
      __pyx_t_4 = (__pyx_v_i == __pyx_v_nleft);
      if (__pyx_t_4) {

        /* "pandas/src/generated.pyx":3760
 *         while True:
 *             if i == nleft:
 *                 break             # <<<<<<<<<<<<<<
 *             if j == nright:
 *                 break
 */
        goto __pyx_L8_break;
        goto __pyx_L9;
      }
      __pyx_L9:;

      /* "pandas/src/generated.pyx":3761
 *             if i == nleft:
 *                 break
 *             if j == nright:             # <<<<<<<<<<<<<<
 *                 break
 * 
 */
      __pyx_t_4 = (__pyx_v_j == __pyx_v_nright);
      if (__pyx_t_4) {

        /* "pandas/src/generated.pyx":3762
 *                 break
 *             if j == nright:
 *                 break             # <<<<<<<<<<<<<<
 * 
 *             lval = left[i]
 */
        goto __pyx_L8_break;
        goto __pyx_L10;
      }
      __pyx_L10:;

      /* "pandas/src/generated.pyx":3764
 *                 break
 * 
 *             lval = left[i]             # <<<<<<<<<<<<<<
 *             rval = right[j]
 *             if lval == rval:
 */
      __pyx_t_1 = __pyx_v_i;
      __pyx_t_5 = *__Pyx_BufPtrStrided1d(PyObject **, __pyx_bstruct_left.buf, __pyx_t_1, __pyx_bstride_0_left);
      __Pyx_INCREF((PyObject*)__pyx_t_5);
      __Pyx_XDECREF(__pyx_v_lval);
      __pyx_v_lval = __pyx_t_5;
      __pyx_t_5 = 0;

      /* "pandas/src/generated.pyx":3765
 * 
 *             lval = left[i]
 *             rval = right[j]             # <<<<<<<<<<<<<<
 *             if lval == rval:
 *                 count += 1
 */
      __pyx_t_6 = __pyx_v_j;
      __pyx_t_5 = *__Pyx_BufPtrStrided1d(PyObject **, __pyx_bstruct_right.buf, __pyx_t_6, __pyx_bstride_0_right);
      __Pyx_INCREF((PyObject*)__pyx_t_5);
      __Pyx_XDECREF(__pyx_v_rval);
      __pyx_v_rval = __pyx_t_5;
      __pyx_t_5 = 0;

      /* "pandas/src/generated.pyx":3766
 *             lval = left[i]
 *             rval = right[j]
 *             if lval == rval:             # <<<<<<<<<<<<<<
 *                 count += 1
 *                 if i < nleft - 1:
 */
      __pyx_t_5 = PyObject_RichCompare(__pyx_v_lval, __pyx_v_rval, Py_EQ); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3766; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_5);
      __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_t_5); if (unlikely(__pyx_t_4 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3766; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      if (__pyx_t_4) {

        /* "pandas/src/generated.pyx":3767
 *             rval = right[j]
 *             if lval == rval:
 *                 count += 1             # <<<<<<<<<<<<<<
 *                 if i < nleft - 1:
 *                     if j < nright - 1 and right[j + 1] == rval:
 */
        __pyx_v_count = (__pyx_v_count + 1);

        /* "pandas/src/generated.pyx":3768
 *             if lval == rval:
 *                 count += 1
 *                 if i < nleft - 1:             # <<<<<<<<<<<<<<
 *                     if j < nright - 1 and right[j + 1] == rval:
 *                         j += 1
 */
        __pyx_t_4 = (__pyx_v_i < (__pyx_v_nleft - 1));
        if (__pyx_t_4) {

          /* "pandas/src/generated.pyx":3769
 *                 count += 1
 *                 if i < nleft - 1:
 *                     if j < nright - 1 and right[j + 1] == rval:             # <<<<<<<<<<<<<<
 *                         j += 1
 *                     else:
 */
          __pyx_t_4 = (__pyx_v_j < (__pyx_v_nright - 1));
          if (__pyx_t_4) {
            __pyx_t_7 = (__pyx_v_j + 1);
            __pyx_t_5 = *__Pyx_BufPtrStrided1d(PyObject **, __pyx_bstruct_right.buf, __pyx_t_7, __pyx_bstride_0_right);
            __Pyx_INCREF((PyObject*)__pyx_t_5);
            __pyx_t_8 = PyObject_RichCompare(__pyx_t_5, __pyx_v_rval, Py_EQ); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3769; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
            __Pyx_GOTREF(__pyx_t_8);
            __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
            __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_8); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3769; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
            __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
            __pyx_t_3 = __pyx_t_2;
          } else {
            __pyx_t_3 = __pyx_t_4;
          }
          if (__pyx_t_3) {

            /* "pandas/src/generated.pyx":3770
 *                 if i < nleft - 1:
 *                     if j < nright - 1 and right[j + 1] == rval:
 *                         j += 1             # <<<<<<<<<<<<<<
 *                     else:
 *                         i += 1
 */
            __pyx_v_j = (__pyx_v_j + 1);
            goto __pyx_L13;
          }
          /*else*/ {

            /* "pandas/src/generated.pyx":3772
 *                         j += 1
 *                     else:
 *                         i += 1             # <<<<<<<<<<<<<<
 *                         if left[i] != rval:
 *                             j += 1
 */
            __pyx_v_i = (__pyx_v_i + 1);

            /* "pandas/src/generated.pyx":3773
 *                     else:
 *                         i += 1
 *                         if left[i] != rval:             # <<<<<<<<<<<<<<
 *                             j += 1
 *                 elif j < nright - 1:
 */
            __pyx_t_9 = __pyx_v_i;
            __pyx_t_8 = *__Pyx_BufPtrStrided1d(PyObject **, __pyx_bstruct_left.buf, __pyx_t_9, __pyx_bstride_0_left);
            __Pyx_INCREF((PyObject*)__pyx_t_8);
            __pyx_t_5 = PyObject_RichCompare(__pyx_t_8, __pyx_v_rval, Py_NE); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3773; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
            __Pyx_GOTREF(__pyx_t_5);
            __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
            __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_5); if (unlikely(__pyx_t_3 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3773; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
            __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
            if (__pyx_t_3) {

              /* "pandas/src/generated.pyx":3774
 *                         i += 1
 *                         if left[i] != rval:
 *                             j += 1             # <<<<<<<<<<<<<<
 *                 elif j < nright - 1:
 *                     j += 1
 */
              __pyx_v_j = (__pyx_v_j + 1);
              goto __pyx_L14;
            }
            __pyx_L14:;
          }
          __pyx_L13:;
          goto __pyx_L12;
        }

        /* "pandas/src/generated.pyx":3775
 *                         if left[i] != rval:
 *                             j += 1
 *                 elif j < nright - 1:             # <<<<<<<<<<<<<<
 *                     j += 1
 *                     if lval != right[j]:
 */
        __pyx_t_3 = (__pyx_v_j < (__pyx_v_nright - 1));
        if (__pyx_t_3) {

          /* "pandas/src/generated.pyx":3776
 *                             j += 1
 *                 elif j < nright - 1:
 *                     j += 1             # <<<<<<<<<<<<<<
 *                     if lval != right[j]:
 *                         i += 1
 */
          __pyx_v_j = (__pyx_v_j + 1);

          /* "pandas/src/generated.pyx":3777
 *                 elif j < nright - 1:
 *                     j += 1
 *                     if lval != right[j]:             # <<<<<<<<<<<<<<
 *                         i += 1
 *                 else:
 */
          __pyx_t_10 = __pyx_v_j;
          __pyx_t_5 = *__Pyx_BufPtrStrided1d(PyObject **, __pyx_bstruct_right.buf, __pyx_t_10, __pyx_bstride_0_right);
          __Pyx_INCREF((PyObject*)__pyx_t_5);
          __pyx_t_8 = PyObject_RichCompare(__pyx_v_lval, __pyx_t_5, Py_NE); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3777; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
          __Pyx_GOTREF(__pyx_t_8);
          __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
          __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_8); if (unlikely(__pyx_t_3 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3777; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
          __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
          if (__pyx_t_3) {

            /* "pandas/src/generated.pyx":3778
 *                     j += 1
 *                     if lval != right[j]:
 *                         i += 1             # <<<<<<<<<<<<<<
 *                 else:
 *                     # end of the road
 */
            __pyx_v_i = (__pyx_v_i + 1);
            goto __pyx_L15;
          }
          __pyx_L15:;
          goto __pyx_L12;
        }
        /*else*/ {

          /* "pandas/src/generated.pyx":3781
 *                 else:
 *                     # end of the road
 *                     break             # <<<<<<<<<<<<<<
 *             elif lval < rval:
 *                 i += 1
 */
          goto __pyx_L8_break;
        }
        __pyx_L12:;
        goto __pyx_L11;
      }

      /* "pandas/src/generated.pyx":3782
 *                     # end of the road
 *                     break
 *             elif lval < rval:             # <<<<<<<<<<<<<<
 *                 i += 1
 *             else:
 */
      __pyx_t_8 = PyObject_RichCompare(__pyx_v_lval, __pyx_v_rval, Py_LT); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3782; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_8);
      __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_8); if (unlikely(__pyx_t_3 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3782; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
      if (__pyx_t_3) {

        /* "pandas/src/generated.pyx":3783
 *                     break
 *             elif lval < rval:
 *                 i += 1             # <<<<<<<<<<<<<<
 *             else:
 *                 j += 1
 */
        __pyx_v_i = (__pyx_v_i + 1);
        goto __pyx_L11;
      }
      /*else*/ {

        /* "pandas/src/generated.pyx":3785
 *                 i += 1
 *             else:
 *                 j += 1             # <<<<<<<<<<<<<<
 * 
 *     # do it again now that result size is known
 */
        __pyx_v_j = (__pyx_v_j + 1);
      }
      __pyx_L11:;
    }
    __pyx_L8_break:;
    goto __pyx_L6;
  }
  __pyx_L6:;

  /* "pandas/src/generated.pyx":3789
 *     # do it again now that result size is known
 * 
 *     lindexer = np.empty(count, dtype=np.int64)             # <<<<<<<<<<<<<<
 *     rindexer = np.empty(count, dtype=np.int64)
 *     result = np.empty(count, dtype=object)
 */
  __pyx_t_8 = __Pyx_GetName(__pyx_m, __pyx_n_s__np); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3789; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_8);
  __pyx_t_5 = PyObject_GetAttr(__pyx_t_8, __pyx_n_s__empty); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3789; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __pyx_t_8 = PyInt_FromSsize_t(__pyx_v_count); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3789; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_8);
  __pyx_t_11 = PyTuple_New(1); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3789; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_11));
  PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_8);
  __Pyx_GIVEREF(__pyx_t_8);
  __pyx_t_8 = 0;
  __pyx_t_8 = PyDict_New(); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3789; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_8));
  __pyx_t_12 = __Pyx_GetName(__pyx_m, __pyx_n_s__np); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3789; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_12);
  __pyx_t_13 = PyObject_GetAttr(__pyx_t_12, __pyx_n_s__int64); if (unlikely(!__pyx_t_13)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3789; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_13);
  __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
  if (PyDict_SetItem(__pyx_t_8, ((PyObject *)__pyx_n_s__dtype), __pyx_t_13) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3789; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
  __pyx_t_13 = PyEval_CallObjectWithKeywords(__pyx_t_5, ((PyObject *)__pyx_t_11), ((PyObject *)__pyx_t_8)); if (unlikely(!__pyx_t_13)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3789; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_13);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __Pyx_DECREF(((PyObject *)__pyx_t_11)); __pyx_t_11 = 0;
  __Pyx_DECREF(((PyObject *)__pyx_t_8)); __pyx_t_8 = 0;
  if (!(likely(((__pyx_t_13) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_13, __pyx_ptype_5numpy_ndarray))))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3789; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_t_14 = ((PyArrayObject *)__pyx_t_13);
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    __Pyx_SafeReleaseBuffer(&__pyx_bstruct_lindexer);
    __pyx_t_15 = __Pyx_GetBufferAndValidate(&__pyx_bstruct_lindexer, (PyObject*)__pyx_t_14, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack);
    if (unlikely(__pyx_t_15 < 0)) {
      PyErr_Fetch(&__pyx_t_16, &__pyx_t_17, &__pyx_t_18);
      if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_lindexer, (PyObject*)__pyx_v_lindexer, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) {
        Py_XDECREF(__pyx_t_16); Py_XDECREF(__pyx_t_17); Py_XDECREF(__pyx_t_18);
        __Pyx_RaiseBufferFallbackError();
      } else {
        PyErr_Restore(__pyx_t_16, __pyx_t_17, __pyx_t_18);
      }
    }
    __pyx_bstride_0_lindexer = __pyx_bstruct_lindexer.strides[0];
    __pyx_bshape_0_lindexer = __pyx_bstruct_lindexer.shape[0];
    if (unlikely(__pyx_t_15 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3789; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  }
  __pyx_t_14 = 0;
  __pyx_v_lindexer = ((PyArrayObject *)__pyx_t_13);
  __pyx_t_13 = 0;

  /* "pandas/src/generated.pyx":3790
 * 
 *     lindexer = np.empty(count, dtype=np.int64)
 *     rindexer = np.empty(count, dtype=np.int64)             # <<<<<<<<<<<<<<
 *     result = np.empty(count, dtype=object)
 * 
 */
  __pyx_t_13 = __Pyx_GetName(__pyx_m, __pyx_n_s__np); if (unlikely(!__pyx_t_13)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3790; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_13);
  __pyx_t_8 = PyObject_GetAttr(__pyx_t_13, __pyx_n_s__empty); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3790; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
  __pyx_t_13 = PyInt_FromSsize_t(__pyx_v_count); if (unlikely(!__pyx_t_13)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3790; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_13);
  __pyx_t_11 = PyTuple_New(1); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3790; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_11));
  PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_13);
  __Pyx_GIVEREF(__pyx_t_13);
  __pyx_t_13 = 0;
  __pyx_t_13 = PyDict_New(); if (unlikely(!__pyx_t_13)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3790; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_13));
  __pyx_t_5 = __Pyx_GetName(__pyx_m, __pyx_n_s__np); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3790; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_12 = PyObject_GetAttr(__pyx_t_5, __pyx_n_s__int64); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3790; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_12);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  if (PyDict_SetItem(__pyx_t_13, ((PyObject *)__pyx_n_s__dtype), __pyx_t_12) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3790; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
  __pyx_t_12 = PyEval_CallObjectWithKeywords(__pyx_t_8, ((PyObject *)__pyx_t_11), ((PyObject *)__pyx_t_13)); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3790; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_12);
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __Pyx_DECREF(((PyObject *)__pyx_t_11)); __pyx_t_11 = 0;
  __Pyx_DECREF(((PyObject *)__pyx_t_13)); __pyx_t_13 = 0;
  if (!(likely(((__pyx_t_12) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_12, __pyx_ptype_5numpy_ndarray))))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3790; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_t_14 = ((PyArrayObject *)__pyx_t_12);
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    __Pyx_SafeReleaseBuffer(&__pyx_bstruct_rindexer);
    __pyx_t_15 = __Pyx_GetBufferAndValidate(&__pyx_bstruct_rindexer, (PyObject*)__pyx_t_14, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack);
    if (unlikely(__pyx_t_15 < 0)) {
      PyErr_Fetch(&__pyx_t_18, &__pyx_t_17, &__pyx_t_16);
      if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_rindexer, (PyObject*)__pyx_v_rindexer, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) {
        Py_XDECREF(__pyx_t_18); Py_XDECREF(__pyx_t_17); Py_XDECREF(__pyx_t_16);
        __Pyx_RaiseBufferFallbackError();
      } else {
        PyErr_Restore(__pyx_t_18, __pyx_t_17, __pyx_t_16);
      }
    }
    __pyx_bstride_0_rindexer = __pyx_bstruct_rindexer.strides[0];
    __pyx_bshape_0_rindexer = __pyx_bstruct_rindexer.shape[0];
    if (unlikely(__pyx_t_15 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3790; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  }
  __pyx_t_14 = 0;
  __pyx_v_rindexer = ((PyArrayObject *)__pyx_t_12);
  __pyx_t_12 = 0;

  /* "pandas/src/generated.pyx":3791
 *     lindexer = np.empty(count, dtype=np.int64)
 *     rindexer = np.empty(count, dtype=np.int64)
 *     result = np.empty(count, dtype=object)             # <<<<<<<<<<<<<<
 * 
 *     i = 0
 */
  __pyx_t_12 = __Pyx_GetName(__pyx_m, __pyx_n_s__np); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3791; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_12);
  __pyx_t_13 = PyObject_GetAttr(__pyx_t_12, __pyx_n_s__empty); if (unlikely(!__pyx_t_13)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3791; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_13);
  __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
  __pyx_t_12 = PyInt_FromSsize_t(__pyx_v_count); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3791; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_12);
  __pyx_t_11 = PyTuple_New(1); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3791; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_11));
  PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_12);
  __Pyx_GIVEREF(__pyx_t_12);
  __pyx_t_12 = 0;
  __pyx_t_12 = PyDict_New(); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3791; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_12));
  if (PyDict_SetItem(__pyx_t_12, ((PyObject *)__pyx_n_s__dtype), __pyx_builtin_object) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3791; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_t_8 = PyEval_CallObjectWithKeywords(__pyx_t_13, ((PyObject *)__pyx_t_11), ((PyObject *)__pyx_t_12)); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3791; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
  __Pyx_DECREF(((PyObject *)__pyx_t_11)); __pyx_t_11 = 0;
  __Pyx_DECREF(((PyObject *)__pyx_t_12)); __pyx_t_12 = 0;
  if (!(likely(((__pyx_t_8) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_8, __pyx_ptype_5numpy_ndarray))))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3791; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_t_19 = ((PyArrayObject *)__pyx_t_8);
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    __Pyx_SafeReleaseBuffer(&__pyx_bstruct_result);
    __pyx_t_15 = __Pyx_GetBufferAndValidate(&__pyx_bstruct_result, (PyObject*)__pyx_t_19, &__Pyx_TypeInfo_object, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack);
    if (unlikely(__pyx_t_15 < 0)) {
      PyErr_Fetch(&__pyx_t_16, &__pyx_t_17, &__pyx_t_18);
      if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_result, (PyObject*)__pyx_v_result, &__Pyx_TypeInfo_object, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) {
        Py_XDECREF(__pyx_t_16); Py_XDECREF(__pyx_t_17); Py_XDECREF(__pyx_t_18);
        __Pyx_RaiseBufferFallbackError();
      } else {
        PyErr_Restore(__pyx_t_16, __pyx_t_17, __pyx_t_18);
      }
    }
    __pyx_bstride_0_result = __pyx_bstruct_result.strides[0];
    __pyx_bshape_0_result = __pyx_bstruct_result.shape[0];
    if (unlikely(__pyx_t_15 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3791; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  }
  __pyx_t_19 = 0;
  __pyx_v_result = ((PyArrayObject *)__pyx_t_8);
  __pyx_t_8 = 0;

  /* "pandas/src/generated.pyx":3793
 *     result = np.empty(count, dtype=object)
 * 
 *     i = 0             # <<<<<<<<<<<<<<
 *     j = 0
 *     count = 0
 */
  __pyx_v_i = 0;

  /* "pandas/src/generated.pyx":3794
 * 
 *     i = 0
 *     j = 0             # <<<<<<<<<<<<<<
 *     count = 0
 *     if nleft > 0 and nright > 0:
 */
  __pyx_v_j = 0;

  /* "pandas/src/generated.pyx":3795
 *     i = 0
 *     j = 0
 *     count = 0             # <<<<<<<<<<<<<<
 *     if nleft > 0 and nright > 0:
 *         while True:
 */
  __pyx_v_count = 0;

  /* "pandas/src/generated.pyx":3796
 *     j = 0
 *     count = 0
 *     if nleft > 0 and nright > 0:             # <<<<<<<<<<<<<<
 *         while True:
 *             if i == nleft:
 */
  __pyx_t_3 = (__pyx_v_nleft > 0);
  if (__pyx_t_3) {
    __pyx_t_4 = (__pyx_v_nright > 0);
    __pyx_t_2 = __pyx_t_4;
  } else {
    __pyx_t_2 = __pyx_t_3;
  }
  if (__pyx_t_2) {

    /* "pandas/src/generated.pyx":3797
 *     count = 0
 *     if nleft > 0 and nright > 0:
 *         while True:             # <<<<<<<<<<<<<<
 *             if i == nleft:
 *                 break
 */
    while (1) {
      if (!1) break;

      /* "pandas/src/generated.pyx":3798
 *     if nleft > 0 and nright > 0:
 *         while True:
 *             if i == nleft:             # <<<<<<<<<<<<<<
 *                 break
 *             if j == nright:
 */
      __pyx_t_2 = (__pyx_v_i == __pyx_v_nleft);
      if (__pyx_t_2) {

        /* "pandas/src/generated.pyx":3799
 *         while True:
 *             if i == nleft:
 *                 break             # <<<<<<<<<<<<<<
 *             if j == nright:
 *                 break
 */
        goto __pyx_L18_break;
        goto __pyx_L19;
      }
      __pyx_L19:;

      /* "pandas/src/generated.pyx":3800
 *             if i == nleft:
 *                 break
 *             if j == nright:             # <<<<<<<<<<<<<<
 *                 break
 * 
 */
      __pyx_t_2 = (__pyx_v_j == __pyx_v_nright);
      if (__pyx_t_2) {

        /* "pandas/src/generated.pyx":3801
 *                 break
 *             if j == nright:
 *                 break             # <<<<<<<<<<<<<<
 * 
 *             lval = left[i]
 */
        goto __pyx_L18_break;
        goto __pyx_L20;
      }
      __pyx_L20:;

      /* "pandas/src/generated.pyx":3803
 *                 break
 * 
 *             lval = left[i]             # <<<<<<<<<<<<<<
 *             rval = right[j]
 *             if lval == rval:
 */
      __pyx_t_20 = __pyx_v_i;
      __pyx_t_8 = *__Pyx_BufPtrStrided1d(PyObject **, __pyx_bstruct_left.buf, __pyx_t_20, __pyx_bstride_0_left);
      __Pyx_INCREF((PyObject*)__pyx_t_8);
      __Pyx_XDECREF(__pyx_v_lval);
      __pyx_v_lval = __pyx_t_8;
      __pyx_t_8 = 0;

      /* "pandas/src/generated.pyx":3804
 * 
 *             lval = left[i]
 *             rval = right[j]             # <<<<<<<<<<<<<<
 *             if lval == rval:
 *                 lindexer[count] = i
 */
      __pyx_t_21 = __pyx_v_j;
      __pyx_t_8 = *__Pyx_BufPtrStrided1d(PyObject **, __pyx_bstruct_right.buf, __pyx_t_21, __pyx_bstride_0_right);
      __Pyx_INCREF((PyObject*)__pyx_t_8);
      __Pyx_XDECREF(__pyx_v_rval);
      __pyx_v_rval = __pyx_t_8;
      __pyx_t_8 = 0;

      /* "pandas/src/generated.pyx":3805
 *             lval = left[i]
 *             rval = right[j]
 *             if lval == rval:             # <<<<<<<<<<<<<<
 *                 lindexer[count] = i
 *                 rindexer[count] = j
 */
      __pyx_t_8 = PyObject_RichCompare(__pyx_v_lval, __pyx_v_rval, Py_EQ); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3805; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_8);
      __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_8); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3805; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
      if (__pyx_t_2) {

        /* "pandas/src/generated.pyx":3806
 *             rval = right[j]
 *             if lval == rval:
 *                 lindexer[count] = i             # <<<<<<<<<<<<<<
 *                 rindexer[count] = j
 *                 result[count] = rval
 */
        __pyx_t_22 = __pyx_v_count;
        *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_bstruct_lindexer.buf, __pyx_t_22, __pyx_bstride_0_lindexer) = __pyx_v_i;

        /* "pandas/src/generated.pyx":3807
 *             if lval == rval:
 *                 lindexer[count] = i
 *                 rindexer[count] = j             # <<<<<<<<<<<<<<
 *                 result[count] = rval
 *                 count += 1
 */
        __pyx_t_23 = __pyx_v_count;
        *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_bstruct_rindexer.buf, __pyx_t_23, __pyx_bstride_0_rindexer) = __pyx_v_j;

        /* "pandas/src/generated.pyx":3808
 *                 lindexer[count] = i
 *                 rindexer[count] = j
 *                 result[count] = rval             # <<<<<<<<<<<<<<
 *                 count += 1
 *                 if i < nleft - 1:
 */
        __pyx_t_24 = __pyx_v_count;
        __pyx_t_25 = __Pyx_BufPtrStrided1d(PyObject **, __pyx_bstruct_result.buf, __pyx_t_24, __pyx_bstride_0_result);
        __Pyx_GOTREF(*__pyx_t_25);
        __Pyx_DECREF(*__pyx_t_25); __Pyx_INCREF(__pyx_v_rval);
        *__pyx_t_25 = __pyx_v_rval;
        __Pyx_GIVEREF(*__pyx_t_25);

        /* "pandas/src/generated.pyx":3809
 *                 rindexer[count] = j
 *                 result[count] = rval
 *                 count += 1             # <<<<<<<<<<<<<<
 *                 if i < nleft - 1:
 *                     if j < nright - 1 and right[j + 1] == rval:
 */
        __pyx_v_count = (__pyx_v_count + 1);

        /* "pandas/src/generated.pyx":3810
 *                 result[count] = rval
 *                 count += 1
 *                 if i < nleft - 1:             # <<<<<<<<<<<<<<
 *                     if j < nright - 1 and right[j + 1] == rval:
 *                         j += 1
 */
        __pyx_t_2 = (__pyx_v_i < (__pyx_v_nleft - 1));
        if (__pyx_t_2) {

          /* "pandas/src/generated.pyx":3811
 *                 count += 1
 *                 if i < nleft - 1:
 *                     if j < nright - 1 and right[j + 1] == rval:             # <<<<<<<<<<<<<<
 *                         j += 1
 *                     else:
 */
          __pyx_t_2 = (__pyx_v_j < (__pyx_v_nright - 1));
          if (__pyx_t_2) {
            __pyx_t_26 = (__pyx_v_j + 1);
            __pyx_t_8 = *__Pyx_BufPtrStrided1d(PyObject **, __pyx_bstruct_right.buf, __pyx_t_26, __pyx_bstride_0_right);
            __Pyx_INCREF((PyObject*)__pyx_t_8);
            __pyx_t_12 = PyObject_RichCompare(__pyx_t_8, __pyx_v_rval, Py_EQ); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3811; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
            __Pyx_GOTREF(__pyx_t_12);
            __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
            __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_12); if (unlikely(__pyx_t_3 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3811; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
            __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
            __pyx_t_4 = __pyx_t_3;
          } else {
            __pyx_t_4 = __pyx_t_2;
          }
          if (__pyx_t_4) {

            /* "pandas/src/generated.pyx":3812
 *                 if i < nleft - 1:
 *                     if j < nright - 1 and right[j + 1] == rval:
 *                         j += 1             # <<<<<<<<<<<<<<
 *                     else:
 *                         i += 1
 */
            __pyx_v_j = (__pyx_v_j + 1);
            goto __pyx_L23;
          }
          /*else*/ {

            /* "pandas/src/generated.pyx":3814
 *                         j += 1
 *                     else:
 *                         i += 1             # <<<<<<<<<<<<<<
 *                         if left[i] != rval:
 *                             j += 1
 */
            __pyx_v_i = (__pyx_v_i + 1);

            /* "pandas/src/generated.pyx":3815
 *                     else:
 *                         i += 1
 *                         if left[i] != rval:             # <<<<<<<<<<<<<<
 *                             j += 1
 *                 elif j < nright - 1:
 */
            __pyx_t_27 = __pyx_v_i;
            __pyx_t_12 = *__Pyx_BufPtrStrided1d(PyObject **, __pyx_bstruct_left.buf, __pyx_t_27, __pyx_bstride_0_left);
            __Pyx_INCREF((PyObject*)__pyx_t_12);
            __pyx_t_8 = PyObject_RichCompare(__pyx_t_12, __pyx_v_rval, Py_NE); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3815; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
            __Pyx_GOTREF(__pyx_t_8);
            __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
            __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_t_8); if (unlikely(__pyx_t_4 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3815; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
            __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
            if (__pyx_t_4) {

              /* "pandas/src/generated.pyx":3816
 *                         i += 1
 *                         if left[i] != rval:
 *                             j += 1             # <<<<<<<<<<<<<<
 *                 elif j < nright - 1:
 *                     j += 1
 */
              __pyx_v_j = (__pyx_v_j + 1);
              goto __pyx_L24;
            }
            __pyx_L24:;
          }
          __pyx_L23:;
          goto __pyx_L22;
        }

        /* "pandas/src/generated.pyx":3817
 *                         if left[i] != rval:
 *                             j += 1
 *                 elif j < nright - 1:             # <<<<<<<<<<<<<<
 *                     j += 1
 *                     if lval != right[j]:
 */
        __pyx_t_4 = (__pyx_v_j < (__pyx_v_nright - 1));
        if (__pyx_t_4) {

          /* "pandas/src/generated.pyx":3818
 *                             j += 1
 *                 elif j < nright - 1:
 *                     j += 1             # <<<<<<<<<<<<<<
 *                     if lval != right[j]:
 *                         i += 1
 */
          __pyx_v_j = (__pyx_v_j + 1);

          /* "pandas/src/generated.pyx":3819
 *                 elif j < nright - 1:
 *                     j += 1
 *                     if lval != right[j]:             # <<<<<<<<<<<<<<
 *                         i += 1
 *                 else:
 */
          __pyx_t_28 = __pyx_v_j;
          __pyx_t_8 = *__Pyx_BufPtrStrided1d(PyObject **, __pyx_bstruct_right.buf, __pyx_t_28, __pyx_bstride_0_right);
          __Pyx_INCREF((PyObject*)__pyx_t_8);
          __pyx_t_12 = PyObject_RichCompare(__pyx_v_lval, __pyx_t_8, Py_NE); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3819; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
          __Pyx_GOTREF(__pyx_t_12);
          __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
          __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_t_12); if (unlikely(__pyx_t_4 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3819; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
          __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
          if (__pyx_t_4) {

            /* "pandas/src/generated.pyx":3820
 *                     j += 1
 *                     if lval != right[j]:
 *                         i += 1             # <<<<<<<<<<<<<<
 *                 else:
 *                     # end of the road
 */
            __pyx_v_i = (__pyx_v_i + 1);
            goto __pyx_L25;
          }
          __pyx_L25:;
          goto __pyx_L22;
        }
        /*else*/ {

          /* "pandas/src/generated.pyx":3823
 *                 else:
 *                     # end of the road
 *                     break             # <<<<<<<<<<<<<<
 *             elif lval < rval:
 *                 i += 1
 */
          goto __pyx_L18_break;
        }
        __pyx_L22:;
        goto __pyx_L21;
      }

      /* "pandas/src/generated.pyx":3824
 *                     # end of the road
 *                     break
 *             elif lval < rval:             # <<<<<<<<<<<<<<
 *                 i += 1
 *             else:
 */
      __pyx_t_12 = PyObject_RichCompare(__pyx_v_lval, __pyx_v_rval, Py_LT); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3824; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_12);
      __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_t_12); if (unlikely(__pyx_t_4 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3824; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
      if (__pyx_t_4) {

        /* "pandas/src/generated.pyx":3825
 *                     break
 *             elif lval < rval:
 *                 i += 1             # <<<<<<<<<<<<<<
 *             else:
 *                 j += 1
 */
        __pyx_v_i = (__pyx_v_i + 1);
        goto __pyx_L21;
      }
      /*else*/ {

        /* "pandas/src/generated.pyx":3827
 *                 i += 1
 *             else:
 *                 j += 1             # <<<<<<<<<<<<<<
 * 
 *     return result, lindexer, rindexer
 */
        __pyx_v_j = (__pyx_v_j + 1);
      }
      __pyx_L21:;
    }
    __pyx_L18_break:;
    goto __pyx_L16;
  }
  __pyx_L16:;

  /* "pandas/src/generated.pyx":3829
 *                 j += 1
 * 
 *     return result, lindexer, rindexer             # <<<<<<<<<<<<<<
 * 
 * @cython.wraparound(False)
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_12 = PyTuple_New(3); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3829; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_12));
  __Pyx_INCREF(((PyObject *)__pyx_v_result));
  PyTuple_SET_ITEM(__pyx_t_12, 0, ((PyObject *)__pyx_v_result));
  __Pyx_GIVEREF(((PyObject *)__pyx_v_result));
  __Pyx_INCREF(((PyObject *)__pyx_v_lindexer));
  PyTuple_SET_ITEM(__pyx_t_12, 1, ((PyObject *)__pyx_v_lindexer));
  __Pyx_GIVEREF(((PyObject *)__pyx_v_lindexer));
  __Pyx_INCREF(((PyObject *)__pyx_v_rindexer));
  PyTuple_SET_ITEM(__pyx_t_12, 2, ((PyObject *)__pyx_v_rindexer));
  __Pyx_GIVEREF(((PyObject *)__pyx_v_rindexer));
  __pyx_r = ((PyObject *)__pyx_t_12);
  __pyx_t_12 = 0;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_XDECREF(__pyx_t_11);
  __Pyx_XDECREF(__pyx_t_12);
  __Pyx_XDECREF(__pyx_t_13);
  { PyObject *__pyx_type, *__pyx_value, *__pyx_tb;
    __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);
    __Pyx_SafeReleaseBuffer(&__pyx_bstruct_result);
    __Pyx_SafeReleaseBuffer(&__pyx_bstruct_right);
    __Pyx_SafeReleaseBuffer(&__pyx_bstruct_lindexer);
    __Pyx_SafeReleaseBuffer(&__pyx_bstruct_rindexer);
    __Pyx_SafeReleaseBuffer(&__pyx_bstruct_left);
  __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);}
  __Pyx_AddTraceback("pandas._algos.inner_join_indexer_object", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  goto __pyx_L2;
  __pyx_L0:;
  __Pyx_SafeReleaseBuffer(&__pyx_bstruct_result);
  __Pyx_SafeReleaseBuffer(&__pyx_bstruct_right);
  __Pyx_SafeReleaseBuffer(&__pyx_bstruct_lindexer);
  __Pyx_SafeReleaseBuffer(&__pyx_bstruct_rindexer);
  __Pyx_SafeReleaseBuffer(&__pyx_bstruct_left);
  __pyx_L2:;
  __Pyx_XDECREF(__pyx_v_lval);
  __Pyx_XDECREF(__pyx_v_rval);
  __Pyx_XDECREF((PyObject *)__pyx_v_lindexer);
  __Pyx_XDECREF((PyObject *)__pyx_v_rindexer);
  __Pyx_XDECREF((PyObject *)__pyx_v_result);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "pandas/src/generated.pyx":3833
 * @cython.wraparound(False)
 * @cython.boundscheck(False)
 * def inner_join_indexer_int32(ndarray[int32_t] left,             # <<<<<<<<<<<<<<
 *                               ndarray[int32_t] right):
 *     '''
 */

static PyObject *__pyx_pf_6pandas_6_algos_89inner_join_indexer_int32(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6pandas_6_algos_89inner_join_indexer_int32[] = "\n    Two-pass algorithm for monotonic indexes. Handles many-to-one merges\n    ";
static PyMethodDef __pyx_mdef_6pandas_6_algos_89inner_join_indexer_int32 = {__Pyx_NAMESTR("inner_join_indexer_int32"), (PyCFunction)__pyx_pf_6pandas_6_algos_89inner_join_indexer_int32, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6pandas_6_algos_89inner_join_indexer_int32)};
static PyObject *__pyx_pf_6pandas_6_algos_89inner_join_indexer_int32(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyArrayObject *__pyx_v_left = 0;
  PyArrayObject *__pyx_v_right = 0;
  Py_ssize_t __pyx_v_i;
  Py_ssize_t __pyx_v_j;
  Py_ssize_t __pyx_v_nright;
  Py_ssize_t __pyx_v_nleft;
  Py_ssize_t __pyx_v_count;
  __pyx_t_5numpy_int32_t __pyx_v_lval;
  __pyx_t_5numpy_int32_t __pyx_v_rval;
  PyArrayObject *__pyx_v_lindexer = 0;
  PyArrayObject *__pyx_v_rindexer = 0;
  PyArrayObject *__pyx_v_result = 0;
  Py_buffer __pyx_bstruct_result;
  Py_ssize_t __pyx_bstride_0_result = 0;
  Py_ssize_t __pyx_bshape_0_result = 0;
  Py_buffer __pyx_bstruct_right;
  Py_ssize_t __pyx_bstride_0_right = 0;
  Py_ssize_t __pyx_bshape_0_right = 0;
  Py_buffer __pyx_bstruct_lindexer;
  Py_ssize_t __pyx_bstride_0_lindexer = 0;
  Py_ssize_t __pyx_bshape_0_lindexer = 0;
  Py_buffer __pyx_bstruct_rindexer;
  Py_ssize_t __pyx_bstride_0_rindexer = 0;
  Py_ssize_t __pyx_bshape_0_rindexer = 0;
  Py_buffer __pyx_bstruct_left;
  Py_ssize_t __pyx_bstride_0_left = 0;
  Py_ssize_t __pyx_bshape_0_left = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  Py_ssize_t __pyx_t_1;
  int __pyx_t_2;
  int __pyx_t_3;
  int __pyx_t_4;
  Py_ssize_t __pyx_t_5;
  Py_ssize_t __pyx_t_6;
  Py_ssize_t __pyx_t_7;
  Py_ssize_t __pyx_t_8;
  PyObject *__pyx_t_9 = NULL;
  PyObject *__pyx_t_10 = NULL;
  PyObject *__pyx_t_11 = NULL;
  PyObject *__pyx_t_12 = NULL;
  PyObject *__pyx_t_13 = NULL;
  PyArrayObject *__pyx_t_14 = NULL;
  int __pyx_t_15;
  PyObject *__pyx_t_16 = NULL;
  PyObject *__pyx_t_17 = NULL;
  PyObject *__pyx_t_18 = NULL;
  PyArrayObject *__pyx_t_19 = NULL;
  Py_ssize_t __pyx_t_20;
  Py_ssize_t __pyx_t_21;
  Py_ssize_t __pyx_t_22;
  Py_ssize_t __pyx_t_23;
  Py_ssize_t __pyx_t_24;
  Py_ssize_t __pyx_t_25;
  Py_ssize_t __pyx_t_26;
  Py_ssize_t __pyx_t_27;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__left,&__pyx_n_s__right,0};
  __Pyx_RefNannySetupContext("inner_join_indexer_int32");
  __pyx_self = __pyx_self;
  {
    PyObject* values[2] = {0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  0:
        values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__left);
        if (likely(values[0])) kw_args--;
        else goto __pyx_L5_argtuple_error;
        case  1:
        values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__right);
        if (likely(values[1])) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("inner_join_indexer_int32", 1, 2, 2, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3833; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "inner_join_indexer_int32") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3833; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
    }
    __pyx_v_left = ((PyArrayObject *)values[0]);
    __pyx_v_right = ((PyArrayObject *)values[1]);
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("inner_join_indexer_int32", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3833; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("pandas._algos.inner_join_indexer_int32", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_bstruct_lindexer.buf = NULL;
  __pyx_bstruct_rindexer.buf = NULL;
  __pyx_bstruct_result.buf = NULL;
  __pyx_bstruct_left.buf = NULL;
  __pyx_bstruct_right.buf = NULL;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_left), __pyx_ptype_5numpy_ndarray, 1, "left", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3833; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_right), __pyx_ptype_5numpy_ndarray, 1, "right", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3834; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_left, (PyObject*)__pyx_v_left, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int32_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3833; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  }
  __pyx_bstride_0_left = __pyx_bstruct_left.strides[0];
  __pyx_bshape_0_left = __pyx_bstruct_left.shape[0];
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_right, (PyObject*)__pyx_v_right, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int32_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3833; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  }
  __pyx_bstride_0_right = __pyx_bstruct_right.strides[0];
  __pyx_bshape_0_right = __pyx_bstruct_right.shape[0];

  /* "pandas/src/generated.pyx":3844
 *         ndarray[int32_t] result
 * 
 *     nleft = len(left)             # <<<<<<<<<<<<<<
 *     nright = len(right)
 * 
 */
  __pyx_t_1 = PyObject_Length(((PyObject *)__pyx_v_left)); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3844; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_v_nleft = __pyx_t_1;

  /* "pandas/src/generated.pyx":3845
 * 
 *     nleft = len(left)
 *     nright = len(right)             # <<<<<<<<<<<<<<
 * 
 *     i = 0
 */
  __pyx_t_1 = PyObject_Length(((PyObject *)__pyx_v_right)); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3845; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_v_nright = __pyx_t_1;

  /* "pandas/src/generated.pyx":3847
 *     nright = len(right)
 * 
 *     i = 0             # <<<<<<<<<<<<<<
 *     j = 0
 *     count = 0
 */
  __pyx_v_i = 0;

  /* "pandas/src/generated.pyx":3848
 * 
 *     i = 0
 *     j = 0             # <<<<<<<<<<<<<<
 *     count = 0
 *     if nleft > 0 and nright > 0:
 */
  __pyx_v_j = 0;

  /* "pandas/src/generated.pyx":3849
 *     i = 0
 *     j = 0
 *     count = 0             # <<<<<<<<<<<<<<
 *     if nleft > 0 and nright > 0:
 *         while True:
 */
  __pyx_v_count = 0;

  /* "pandas/src/generated.pyx":3850
 *     j = 0
 *     count = 0
 *     if nleft > 0 and nright > 0:             # <<<<<<<<<<<<<<
 *         while True:
 *             if i == nleft:
 */
  __pyx_t_2 = (__pyx_v_nleft > 0);
  if (__pyx_t_2) {
    __pyx_t_3 = (__pyx_v_nright > 0);
    __pyx_t_4 = __pyx_t_3;
  } else {
    __pyx_t_4 = __pyx_t_2;
  }
  if (__pyx_t_4) {

    /* "pandas/src/generated.pyx":3851
 *     count = 0
 *     if nleft > 0 and nright > 0:
 *         while True:             # <<<<<<<<<<<<<<
 *             if i == nleft:
 *                 break
 */
    while (1) {
      if (!1) break;

      /* "pandas/src/generated.pyx":3852
 *     if nleft > 0 and nright > 0:
 *         while True:
 *             if i == nleft:             # <<<<<<<<<<<<<<
 *                 break
 *             if j == nright:
 */
      __pyx_t_4 = (__pyx_v_i == __pyx_v_nleft);
      if (__pyx_t_4) {

        /* "pandas/src/generated.pyx":3853
 *         while True:
 *             if i == nleft:
 *                 break             # <<<<<<<<<<<<<<
 *             if j == nright:
 *                 break
 */
        goto __pyx_L8_break;
        goto __pyx_L9;
      }
      __pyx_L9:;

      /* "pandas/src/generated.pyx":3854
 *             if i == nleft:
 *                 break
 *             if j == nright:             # <<<<<<<<<<<<<<
 *                 break
 * 
 */
      __pyx_t_4 = (__pyx_v_j == __pyx_v_nright);
      if (__pyx_t_4) {

        /* "pandas/src/generated.pyx":3855
 *                 break
 *             if j == nright:
 *                 break             # <<<<<<<<<<<<<<
 * 
 *             lval = left[i]
 */
        goto __pyx_L8_break;
        goto __pyx_L10;
      }
      __pyx_L10:;

      /* "pandas/src/generated.pyx":3857
 *                 break
 * 
 *             lval = left[i]             # <<<<<<<<<<<<<<
 *             rval = right[j]
 *             if lval == rval:
 */
      __pyx_t_1 = __pyx_v_i;
      __pyx_v_lval = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int32_t *, __pyx_bstruct_left.buf, __pyx_t_1, __pyx_bstride_0_left));

      /* "pandas/src/generated.pyx":3858
 * 
 *             lval = left[i]
 *             rval = right[j]             # <<<<<<<<<<<<<<
 *             if lval == rval:
 *                 count += 1
 */
      __pyx_t_5 = __pyx_v_j;
      __pyx_v_rval = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int32_t *, __pyx_bstruct_right.buf, __pyx_t_5, __pyx_bstride_0_right));

      /* "pandas/src/generated.pyx":3859
 *             lval = left[i]
 *             rval = right[j]
 *             if lval == rval:             # <<<<<<<<<<<<<<
 *                 count += 1
 *                 if i < nleft - 1:
 */
      __pyx_t_4 = (__pyx_v_lval == __pyx_v_rval);
      if (__pyx_t_4) {

        /* "pandas/src/generated.pyx":3860
 *             rval = right[j]
 *             if lval == rval:
 *                 count += 1             # <<<<<<<<<<<<<<
 *                 if i < nleft - 1:
 *                     if j < nright - 1 and right[j + 1] == rval:
 */
        __pyx_v_count = (__pyx_v_count + 1);

        /* "pandas/src/generated.pyx":3861
 *             if lval == rval:
 *                 count += 1
 *                 if i < nleft - 1:             # <<<<<<<<<<<<<<
 *                     if j < nright - 1 and right[j + 1] == rval:
 *                         j += 1
 */
        __pyx_t_4 = (__pyx_v_i < (__pyx_v_nleft - 1));
        if (__pyx_t_4) {

          /* "pandas/src/generated.pyx":3862
 *                 count += 1
 *                 if i < nleft - 1:
 *                     if j < nright - 1 and right[j + 1] == rval:             # <<<<<<<<<<<<<<
 *                         j += 1
 *                     else:
 */
          __pyx_t_4 = (__pyx_v_j < (__pyx_v_nright - 1));
          if (__pyx_t_4) {
            __pyx_t_6 = (__pyx_v_j + 1);
            __pyx_t_2 = ((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int32_t *, __pyx_bstruct_right.buf, __pyx_t_6, __pyx_bstride_0_right)) == __pyx_v_rval);
            __pyx_t_3 = __pyx_t_2;
          } else {
            __pyx_t_3 = __pyx_t_4;
          }
          if (__pyx_t_3) {

            /* "pandas/src/generated.pyx":3863
 *                 if i < nleft - 1:
 *                     if j < nright - 1 and right[j + 1] == rval:
 *                         j += 1             # <<<<<<<<<<<<<<
 *                     else:
 *                         i += 1
 */
            __pyx_v_j = (__pyx_v_j + 1);
            goto __pyx_L13;
          }
          /*else*/ {

            /* "pandas/src/generated.pyx":3865
 *                         j += 1
 *                     else:
 *                         i += 1             # <<<<<<<<<<<<<<
 *                         if left[i] != rval:
 *                             j += 1
 */
            __pyx_v_i = (__pyx_v_i + 1);

            /* "pandas/src/generated.pyx":3866
 *                     else:
 *                         i += 1
 *                         if left[i] != rval:             # <<<<<<<<<<<<<<
 *                             j += 1
 *                 elif j < nright - 1:
 */
            __pyx_t_7 = __pyx_v_i;
            __pyx_t_3 = ((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int32_t *, __pyx_bstruct_left.buf, __pyx_t_7, __pyx_bstride_0_left)) != __pyx_v_rval);
            if (__pyx_t_3) {

              /* "pandas/src/generated.pyx":3867
 *                         i += 1
 *                         if left[i] != rval:
 *                             j += 1             # <<<<<<<<<<<<<<
 *                 elif j < nright - 1:
 *                     j += 1
 */
              __pyx_v_j = (__pyx_v_j + 1);
              goto __pyx_L14;
            }
            __pyx_L14:;
          }
          __pyx_L13:;
          goto __pyx_L12;
        }

        /* "pandas/src/generated.pyx":3868
 *                         if left[i] != rval:
 *                             j += 1
 *                 elif j < nright - 1:             # <<<<<<<<<<<<<<
 *                     j += 1
 *                     if lval != right[j]:
 */
        __pyx_t_3 = (__pyx_v_j < (__pyx_v_nright - 1));
        if (__pyx_t_3) {

          /* "pandas/src/generated.pyx":3869
 *                             j += 1
 *                 elif j < nright - 1:
 *                     j += 1             # <<<<<<<<<<<<<<
 *                     if lval != right[j]:
 *                         i += 1
 */
          __pyx_v_j = (__pyx_v_j + 1);

          /* "pandas/src/generated.pyx":3870
 *                 elif j < nright - 1:
 *                     j += 1
 *                     if lval != right[j]:             # <<<<<<<<<<<<<<
 *                         i += 1
 *                 else:
 */
          __pyx_t_8 = __pyx_v_j;
          __pyx_t_3 = (__pyx_v_lval != (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int32_t *, __pyx_bstruct_right.buf, __pyx_t_8, __pyx_bstride_0_right)));
          if (__pyx_t_3) {

            /* "pandas/src/generated.pyx":3871
 *                     j += 1
 *                     if lval != right[j]:
 *                         i += 1             # <<<<<<<<<<<<<<
 *                 else:
 *                     # end of the road
 */
            __pyx_v_i = (__pyx_v_i + 1);
            goto __pyx_L15;
          }
          __pyx_L15:;
          goto __pyx_L12;
        }
        /*else*/ {

          /* "pandas/src/generated.pyx":3874
 *                 else:
 *                     # end of the road
 *                     break             # <<<<<<<<<<<<<<
 *             elif lval < rval:
 *                 i += 1
 */
          goto __pyx_L8_break;
        }
        __pyx_L12:;
        goto __pyx_L11;
      }

      /* "pandas/src/generated.pyx":3875
 *                     # end of the road
 *                     break
 *             elif lval < rval:             # <<<<<<<<<<<<<<
 *                 i += 1
 *             else:
 */
      __pyx_t_3 = (__pyx_v_lval < __pyx_v_rval);
      if (__pyx_t_3) {

        /* "pandas/src/generated.pyx":3876
 *                     break
 *             elif lval < rval:
 *                 i += 1             # <<<<<<<<<<<<<<
 *             else:
 *                 j += 1
 */
        __pyx_v_i = (__pyx_v_i + 1);
        goto __pyx_L11;
      }
      /*else*/ {

        /* "pandas/src/generated.pyx":3878
 *                 i += 1
 *             else:
 *                 j += 1             # <<<<<<<<<<<<<<
 * 
 *     # do it again now that result size is known
 */
        __pyx_v_j = (__pyx_v_j + 1);
      }
      __pyx_L11:;
    }
    __pyx_L8_break:;
    goto __pyx_L6;
  }
  __pyx_L6:;

  /* "pandas/src/generated.pyx":3882
 *     # do it again now that result size is known
 * 
 *     lindexer = np.empty(count, dtype=np.int64)             # <<<<<<<<<<<<<<
 *     rindexer = np.empty(count, dtype=np.int64)
 *     result = np.empty(count, dtype=np.int32)
 */
  __pyx_t_9 = __Pyx_GetName(__pyx_m, __pyx_n_s__np); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3882; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_9);
  __pyx_t_10 = PyObject_GetAttr(__pyx_t_9, __pyx_n_s__empty); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3882; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_10);
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  __pyx_t_9 = PyInt_FromSsize_t(__pyx_v_count); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3882; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_9);
  __pyx_t_11 = PyTuple_New(1); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3882; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_11));
  PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_9);
  __Pyx_GIVEREF(__pyx_t_9);
  __pyx_t_9 = 0;
  __pyx_t_9 = PyDict_New(); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3882; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_9));
  __pyx_t_12 = __Pyx_GetName(__pyx_m, __pyx_n_s__np); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3882; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_12);
  __pyx_t_13 = PyObject_GetAttr(__pyx_t_12, __pyx_n_s__int64); if (unlikely(!__pyx_t_13)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3882; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_13);
  __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
  if (PyDict_SetItem(__pyx_t_9, ((PyObject *)__pyx_n_s__dtype), __pyx_t_13) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3882; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
  __pyx_t_13 = PyEval_CallObjectWithKeywords(__pyx_t_10, ((PyObject *)__pyx_t_11), ((PyObject *)__pyx_t_9)); if (unlikely(!__pyx_t_13)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3882; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_13);
  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
  __Pyx_DECREF(((PyObject *)__pyx_t_11)); __pyx_t_11 = 0;
  __Pyx_DECREF(((PyObject *)__pyx_t_9)); __pyx_t_9 = 0;
  if (!(likely(((__pyx_t_13) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_13, __pyx_ptype_5numpy_ndarray))))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3882; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_t_14 = ((PyArrayObject *)__pyx_t_13);
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    __Pyx_SafeReleaseBuffer(&__pyx_bstruct_lindexer);
    __pyx_t_15 = __Pyx_GetBufferAndValidate(&__pyx_bstruct_lindexer, (PyObject*)__pyx_t_14, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack);
    if (unlikely(__pyx_t_15 < 0)) {
      PyErr_Fetch(&__pyx_t_16, &__pyx_t_17, &__pyx_t_18);
      if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_lindexer, (PyObject*)__pyx_v_lindexer, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) {
        Py_XDECREF(__pyx_t_16); Py_XDECREF(__pyx_t_17); Py_XDECREF(__pyx_t_18);
        __Pyx_RaiseBufferFallbackError();
      } else {
        PyErr_Restore(__pyx_t_16, __pyx_t_17, __pyx_t_18);
      }
    }
    __pyx_bstride_0_lindexer = __pyx_bstruct_lindexer.strides[0];
    __pyx_bshape_0_lindexer = __pyx_bstruct_lindexer.shape[0];
    if (unlikely(__pyx_t_15 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3882; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  }
  __pyx_t_14 = 0;
  __pyx_v_lindexer = ((PyArrayObject *)__pyx_t_13);
  __pyx_t_13 = 0;

  /* "pandas/src/generated.pyx":3883
 * 
 *     lindexer = np.empty(count, dtype=np.int64)
 *     rindexer = np.empty(count, dtype=np.int64)             # <<<<<<<<<<<<<<
 *     result = np.empty(count, dtype=np.int32)
 * 
 */
  __pyx_t_13 = __Pyx_GetName(__pyx_m, __pyx_n_s__np); if (unlikely(!__pyx_t_13)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3883; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_13);
  __pyx_t_9 = PyObject_GetAttr(__pyx_t_13, __pyx_n_s__empty); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3883; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_9);
  __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
  __pyx_t_13 = PyInt_FromSsize_t(__pyx_v_count); if (unlikely(!__pyx_t_13)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3883; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_13);
  __pyx_t_11 = PyTuple_New(1); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3883; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_11));
  PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_13);
  __Pyx_GIVEREF(__pyx_t_13);
  __pyx_t_13 = 0;
  __pyx_t_13 = PyDict_New(); if (unlikely(!__pyx_t_13)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3883; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_13));
  __pyx_t_10 = __Pyx_GetName(__pyx_m, __pyx_n_s__np); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3883; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_10);
  __pyx_t_12 = PyObject_GetAttr(__pyx_t_10, __pyx_n_s__int64); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3883; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_12);
  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
  if (PyDict_SetItem(__pyx_t_13, ((PyObject *)__pyx_n_s__dtype), __pyx_t_12) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3883; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
  __pyx_t_12 = PyEval_CallObjectWithKeywords(__pyx_t_9, ((PyObject *)__pyx_t_11), ((PyObject *)__pyx_t_13)); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3883; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_12);
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  __Pyx_DECREF(((PyObject *)__pyx_t_11)); __pyx_t_11 = 0;
  __Pyx_DECREF(((PyObject *)__pyx_t_13)); __pyx_t_13 = 0;
  if (!(likely(((__pyx_t_12) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_12, __pyx_ptype_5numpy_ndarray))))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3883; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_t_14 = ((PyArrayObject *)__pyx_t_12);
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    __Pyx_SafeReleaseBuffer(&__pyx_bstruct_rindexer);
    __pyx_t_15 = __Pyx_GetBufferAndValidate(&__pyx_bstruct_rindexer, (PyObject*)__pyx_t_14, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack);
    if (unlikely(__pyx_t_15 < 0)) {
      PyErr_Fetch(&__pyx_t_18, &__pyx_t_17, &__pyx_t_16);
      if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_rindexer, (PyObject*)__pyx_v_rindexer, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) {
        Py_XDECREF(__pyx_t_18); Py_XDECREF(__pyx_t_17); Py_XDECREF(__pyx_t_16);
        __Pyx_RaiseBufferFallbackError();
      } else {
        PyErr_Restore(__pyx_t_18, __pyx_t_17, __pyx_t_16);
      }
    }
    __pyx_bstride_0_rindexer = __pyx_bstruct_rindexer.strides[0];
    __pyx_bshape_0_rindexer = __pyx_bstruct_rindexer.shape[0];
    if (unlikely(__pyx_t_15 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3883; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  }
  __pyx_t_14 = 0;
  __pyx_v_rindexer = ((PyArrayObject *)__pyx_t_12);
  __pyx_t_12 = 0;

  /* "pandas/src/generated.pyx":3884
 *     lindexer = np.empty(count, dtype=np.int64)
 *     rindexer = np.empty(count, dtype=np.int64)
 *     result = np.empty(count, dtype=np.int32)             # <<<<<<<<<<<<<<
 * 
 *     i = 0
 */
  __pyx_t_12 = __Pyx_GetName(__pyx_m, __pyx_n_s__np); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3884; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_12);
  __pyx_t_13 = PyObject_GetAttr(__pyx_t_12, __pyx_n_s__empty); if (unlikely(!__pyx_t_13)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3884; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_13);
  __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
  __pyx_t_12 = PyInt_FromSsize_t(__pyx_v_count); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3884; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_12);
  __pyx_t_11 = PyTuple_New(1); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3884; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_11));
  PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_12);
  __Pyx_GIVEREF(__pyx_t_12);
  __pyx_t_12 = 0;
  __pyx_t_12 = PyDict_New(); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3884; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_12));
  __pyx_t_9 = __Pyx_GetName(__pyx_m, __pyx_n_s__np); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3884; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_9);
  __pyx_t_10 = PyObject_GetAttr(__pyx_t_9, __pyx_n_s__int32); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3884; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_10);
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  if (PyDict_SetItem(__pyx_t_12, ((PyObject *)__pyx_n_s__dtype), __pyx_t_10) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3884; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
  __pyx_t_10 = PyEval_CallObjectWithKeywords(__pyx_t_13, ((PyObject *)__pyx_t_11), ((PyObject *)__pyx_t_12)); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3884; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_10);
  __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
  __Pyx_DECREF(((PyObject *)__pyx_t_11)); __pyx_t_11 = 0;
  __Pyx_DECREF(((PyObject *)__pyx_t_12)); __pyx_t_12 = 0;
  if (!(likely(((__pyx_t_10) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_10, __pyx_ptype_5numpy_ndarray))))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3884; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_t_19 = ((PyArrayObject *)__pyx_t_10);
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    __Pyx_SafeReleaseBuffer(&__pyx_bstruct_result);
    __pyx_t_15 = __Pyx_GetBufferAndValidate(&__pyx_bstruct_result, (PyObject*)__pyx_t_19, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int32_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack);
    if (unlikely(__pyx_t_15 < 0)) {
      PyErr_Fetch(&__pyx_t_16, &__pyx_t_17, &__pyx_t_18);
      if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_result, (PyObject*)__pyx_v_result, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int32_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) {
        Py_XDECREF(__pyx_t_16); Py_XDECREF(__pyx_t_17); Py_XDECREF(__pyx_t_18);
        __Pyx_RaiseBufferFallbackError();
      } else {
        PyErr_Restore(__pyx_t_16, __pyx_t_17, __pyx_t_18);
      }
    }
    __pyx_bstride_0_result = __pyx_bstruct_result.strides[0];
    __pyx_bshape_0_result = __pyx_bstruct_result.shape[0];
    if (unlikely(__pyx_t_15 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3884; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  }
  __pyx_t_19 = 0;
  __pyx_v_result = ((PyArrayObject *)__pyx_t_10);
  __pyx_t_10 = 0;

  /* "pandas/src/generated.pyx":3886
 *     result = np.empty(count, dtype=np.int32)
 * 
 *     i = 0             # <<<<<<<<<<<<<<
 *     j = 0
 *     count = 0
 */
  __pyx_v_i = 0;

  /* "pandas/src/generated.pyx":3887
 * 
 *     i = 0
 *     j = 0             # <<<<<<<<<<<<<<
 *     count = 0
 *     if nleft > 0 and nright > 0:
 */
  __pyx_v_j = 0;

  /* "pandas/src/generated.pyx":3888
 *     i = 0
 *     j = 0
 *     count = 0             # <<<<<<<<<<<<<<
 *     if nleft > 0 and nright > 0:
 *         while True:
 */
  __pyx_v_count = 0;

  /* "pandas/src/generated.pyx":3889
 *     j = 0
 *     count = 0
 *     if nleft > 0 and nright > 0:             # <<<<<<<<<<<<<<
 *         while True:
 *             if i == nleft:
 */
  __pyx_t_3 = (__pyx_v_nleft > 0);
  if (__pyx_t_3) {
    __pyx_t_4 = (__pyx_v_nright > 0);
    __pyx_t_2 = __pyx_t_4;
  } else {
    __pyx_t_2 = __pyx_t_3;
  }
  if (__pyx_t_2) {

    /* "pandas/src/generated.pyx":3890
 *     count = 0
 *     if nleft > 0 and nright > 0:
 *         while True:             # <<<<<<<<<<<<<<
 *             if i == nleft:
 *                 break
 */
    while (1) {
      if (!1) break;

      /* "pandas/src/generated.pyx":3891
 *     if nleft > 0 and nright > 0:
 *         while True:
 *             if i == nleft:             # <<<<<<<<<<<<<<
 *                 break
 *             if j == nright:
 */
      __pyx_t_2 = (__pyx_v_i == __pyx_v_nleft);
      if (__pyx_t_2) {

        /* "pandas/src/generated.pyx":3892
 *         while True:
 *             if i == nleft:
 *                 break             # <<<<<<<<<<<<<<
 *             if j == nright:
 *                 break
 */
        goto __pyx_L18_break;
        goto __pyx_L19;
      }
      __pyx_L19:;

      /* "pandas/src/generated.pyx":3893
 *             if i == nleft:
 *                 break
 *             if j == nright:             # <<<<<<<<<<<<<<
 *                 break
 * 
 */
      __pyx_t_2 = (__pyx_v_j == __pyx_v_nright);
      if (__pyx_t_2) {

        /* "pandas/src/generated.pyx":3894
 *                 break
 *             if j == nright:
 *                 break             # <<<<<<<<<<<<<<
 * 
 *             lval = left[i]
 */
        goto __pyx_L18_break;
        goto __pyx_L20;
      }
      __pyx_L20:;

      /* "pandas/src/generated.pyx":3896
 *                 break
 * 
 *             lval = left[i]             # <<<<<<<<<<<<<<
 *             rval = right[j]
 *             if lval == rval:
 */
      __pyx_t_20 = __pyx_v_i;
      __pyx_v_lval = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int32_t *, __pyx_bstruct_left.buf, __pyx_t_20, __pyx_bstride_0_left));

      /* "pandas/src/generated.pyx":3897
 * 
 *             lval = left[i]
 *             rval = right[j]             # <<<<<<<<<<<<<<
 *             if lval == rval:
 *                 lindexer[count] = i
 */
      __pyx_t_21 = __pyx_v_j;
      __pyx_v_rval = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int32_t *, __pyx_bstruct_right.buf, __pyx_t_21, __pyx_bstride_0_right));

      /* "pandas/src/generated.pyx":3898
 *             lval = left[i]
 *             rval = right[j]
 *             if lval == rval:             # <<<<<<<<<<<<<<
 *                 lindexer[count] = i
 *                 rindexer[count] = j
 */
      __pyx_t_2 = (__pyx_v_lval == __pyx_v_rval);
      if (__pyx_t_2) {

        /* "pandas/src/generated.pyx":3899
 *             rval = right[j]
 *             if lval == rval:
 *                 lindexer[count] = i             # <<<<<<<<<<<<<<
 *                 rindexer[count] = j
 *                 result[count] = rval
 */
        __pyx_t_22 = __pyx_v_count;
        *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_bstruct_lindexer.buf, __pyx_t_22, __pyx_bstride_0_lindexer) = __pyx_v_i;

        /* "pandas/src/generated.pyx":3900
 *             if lval == rval:
 *                 lindexer[count] = i
 *                 rindexer[count] = j             # <<<<<<<<<<<<<<
 *                 result[count] = rval
 *                 count += 1
 */
        __pyx_t_23 = __pyx_v_count;
        *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_bstruct_rindexer.buf, __pyx_t_23, __pyx_bstride_0_rindexer) = __pyx_v_j;

        /* "pandas/src/generated.pyx":3901
 *                 lindexer[count] = i
 *                 rindexer[count] = j
 *                 result[count] = rval             # <<<<<<<<<<<<<<
 *                 count += 1
 *                 if i < nleft - 1:
 */
        __pyx_t_24 = __pyx_v_count;
        *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int32_t *, __pyx_bstruct_result.buf, __pyx_t_24, __pyx_bstride_0_result) = __pyx_v_rval;

        /* "pandas/src/generated.pyx":3902
 *                 rindexer[count] = j
 *                 result[count] = rval
 *                 count += 1             # <<<<<<<<<<<<<<
 *                 if i < nleft - 1:
 *                     if j < nright - 1 and right[j + 1] == rval:
 */
        __pyx_v_count = (__pyx_v_count + 1);

        /* "pandas/src/generated.pyx":3903
 *                 result[count] = rval
 *                 count += 1
 *                 if i < nleft - 1:             # <<<<<<<<<<<<<<
 *                     if j < nright - 1 and right[j + 1] == rval:
 *                         j += 1
 */
        __pyx_t_2 = (__pyx_v_i < (__pyx_v_nleft - 1));
        if (__pyx_t_2) {

          /* "pandas/src/generated.pyx":3904
 *                 count += 1
 *                 if i < nleft - 1:
 *                     if j < nright - 1 and right[j + 1] == rval:             # <<<<<<<<<<<<<<
 *                         j += 1
 *                     else:
 */
          __pyx_t_2 = (__pyx_v_j < (__pyx_v_nright - 1));
          if (__pyx_t_2) {
            __pyx_t_25 = (__pyx_v_j + 1);
            __pyx_t_3 = ((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int32_t *, __pyx_bstruct_right.buf, __pyx_t_25, __pyx_bstride_0_right)) == __pyx_v_rval);
            __pyx_t_4 = __pyx_t_3;
          } else {
            __pyx_t_4 = __pyx_t_2;
          }
          if (__pyx_t_4) {

            /* "pandas/src/generated.pyx":3905
 *                 if i < nleft - 1:
 *                     if j < nright - 1 and right[j + 1] == rval:
 *                         j += 1             # <<<<<<<<<<<<<<
 *                     else:
 *                         i += 1
 */
            __pyx_v_j = (__pyx_v_j + 1);
            goto __pyx_L23;
          }
          /*else*/ {

            /* "pandas/src/generated.pyx":3907
 *                         j += 1
 *                     else:
 *                         i += 1             # <<<<<<<<<<<<<<
 *                         if left[i] != rval:
 *                             j += 1
 */
            __pyx_v_i = (__pyx_v_i + 1);

            /* "pandas/src/generated.pyx":3908
 *                     else:
 *                         i += 1
 *                         if left[i] != rval:             # <<<<<<<<<<<<<<
 *                             j += 1
 *                 elif j < nright - 1:
 */
            __pyx_t_26 = __pyx_v_i;
            __pyx_t_4 = ((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int32_t *, __pyx_bstruct_left.buf, __pyx_t_26, __pyx_bstride_0_left)) != __pyx_v_rval);
            if (__pyx_t_4) {

              /* "pandas/src/generated.pyx":3909
 *                         i += 1
 *                         if left[i] != rval:
 *                             j += 1             # <<<<<<<<<<<<<<
 *                 elif j < nright - 1:
 *                     j += 1
 */
              __pyx_v_j = (__pyx_v_j + 1);
              goto __pyx_L24;
            }
            __pyx_L24:;
          }
          __pyx_L23:;
          goto __pyx_L22;
        }

        /* "pandas/src/generated.pyx":3910
 *                         if left[i] != rval:
 *                             j += 1
 *                 elif j < nright - 1:             # <<<<<<<<<<<<<<
 *                     j += 1
 *                     if lval != right[j]:
 */
        __pyx_t_4 = (__pyx_v_j < (__pyx_v_nright - 1));
        if (__pyx_t_4) {

          /* "pandas/src/generated.pyx":3911
 *                             j += 1
 *                 elif j < nright - 1:
 *                     j += 1             # <<<<<<<<<<<<<<
 *                     if lval != right[j]:
 *                         i += 1
 */
          __pyx_v_j = (__pyx_v_j + 1);

          /* "pandas/src/generated.pyx":3912
 *                 elif j < nright - 1:
 *                     j += 1
 *                     if lval != right[j]:             # <<<<<<<<<<<<<<
 *                         i += 1
 *                 else:
 */
          __pyx_t_27 = __pyx_v_j;
          __pyx_t_4 = (__pyx_v_lval != (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int32_t *, __pyx_bstruct_right.buf, __pyx_t_27, __pyx_bstride_0_right)));
          if (__pyx_t_4) {

            /* "pandas/src/generated.pyx":3913
 *                     j += 1
 *                     if lval != right[j]:
 *                         i += 1             # <<<<<<<<<<<<<<
 *                 else:
 *                     # end of the road
 */
            __pyx_v_i = (__pyx_v_i + 1);
            goto __pyx_L25;
          }
          __pyx_L25:;
          goto __pyx_L22;
        }
        /*else*/ {

          /* "pandas/src/generated.pyx":3916
 *                 else:
 *                     # end of the road
 *                     break             # <<<<<<<<<<<<<<
 *             elif lval < rval:
 *                 i += 1
 */
          goto __pyx_L18_break;
        }
        __pyx_L22:;
        goto __pyx_L21;
      }

      /* "pandas/src/generated.pyx":3917
 *                     # end of the road
 *                     break
 *             elif lval < rval:             # <<<<<<<<<<<<<<
 *                 i += 1
 *             else:
 */
      __pyx_t_4 = (__pyx_v_lval < __pyx_v_rval);
      if (__pyx_t_4) {

        /* "pandas/src/generated.pyx":3918
 *                     break
 *             elif lval < rval:
 *                 i += 1             # <<<<<<<<<<<<<<
 *             else:
 *                 j += 1
 */
        __pyx_v_i = (__pyx_v_i + 1);
        goto __pyx_L21;
      }
      /*else*/ {

        /* "pandas/src/generated.pyx":3920
 *                 i += 1
 *             else:
 *                 j += 1             # <<<<<<<<<<<<<<
 * 
 *     return result, lindexer, rindexer
 */
        __pyx_v_j = (__pyx_v_j + 1);
      }
      __pyx_L21:;
    }
    __pyx_L18_break:;
    goto __pyx_L16;
  }
  __pyx_L16:;

  /* "pandas/src/generated.pyx":3922
 *                 j += 1
 * 
 *     return result, lindexer, rindexer             # <<<<<<<<<<<<<<
 * 
 * @cython.wraparound(False)
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_10 = PyTuple_New(3); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3922; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_10));
  __Pyx_INCREF(((PyObject *)__pyx_v_result));
  PyTuple_SET_ITEM(__pyx_t_10, 0, ((PyObject *)__pyx_v_result));
  __Pyx_GIVEREF(((PyObject *)__pyx_v_result));
  __Pyx_INCREF(((PyObject *)__pyx_v_lindexer));
  PyTuple_SET_ITEM(__pyx_t_10, 1, ((PyObject *)__pyx_v_lindexer));
  __Pyx_GIVEREF(((PyObject *)__pyx_v_lindexer));
  __Pyx_INCREF(((PyObject *)__pyx_v_rindexer));
  PyTuple_SET_ITEM(__pyx_t_10, 2, ((PyObject *)__pyx_v_rindexer));
  __Pyx_GIVEREF(((PyObject *)__pyx_v_rindexer));
  __pyx_r = ((PyObject *)__pyx_t_10);
  __pyx_t_10 = 0;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_9);
  __Pyx_XDECREF(__pyx_t_10);
  __Pyx_XDECREF(__pyx_t_11);
  __Pyx_XDECREF(__pyx_t_12);
  __Pyx_XDECREF(__pyx_t_13);
  { PyObject *__pyx_type, *__pyx_value, *__pyx_tb;
    __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);
    __Pyx_SafeReleaseBuffer(&__pyx_bstruct_result);
    __Pyx_SafeReleaseBuffer(&__pyx_bstruct_right);
    __Pyx_SafeReleaseBuffer(&__pyx_bstruct_lindexer);
    __Pyx_SafeReleaseBuffer(&__pyx_bstruct_rindexer);
    __Pyx_SafeReleaseBuffer(&__pyx_bstruct_left);
  __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);}
  __Pyx_AddTraceback("pandas._algos.inner_join_indexer_int32", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  goto __pyx_L2;
  __pyx_L0:;
  __Pyx_SafeReleaseBuffer(&__pyx_bstruct_result);
  __Pyx_SafeReleaseBuffer(&__pyx_bstruct_right);
  __Pyx_SafeReleaseBuffer(&__pyx_bstruct_lindexer);
  __Pyx_SafeReleaseBuffer(&__pyx_bstruct_rindexer);
  __Pyx_SafeReleaseBuffer(&__pyx_bstruct_left);
  __pyx_L2:;
  __Pyx_XDECREF((PyObject *)__pyx_v_lindexer);
  __Pyx_XDECREF((PyObject *)__pyx_v_rindexer);
  __Pyx_XDECREF((PyObject *)__pyx_v_result);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "pandas/src/generated.pyx":3926
 * @cython.wraparound(False)
 * @cython.boundscheck(False)
 * def inner_join_indexer_int64(ndarray[int64_t] left,             # <<<<<<<<<<<<<<
 *                               ndarray[int64_t] right):
 *     '''
 */

static PyObject *__pyx_pf_6pandas_6_algos_90inner_join_indexer_int64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6pandas_6_algos_90inner_join_indexer_int64[] = "\n    Two-pass algorithm for monotonic indexes. Handles many-to-one merges\n    ";
static PyMethodDef __pyx_mdef_6pandas_6_algos_90inner_join_indexer_int64 = {__Pyx_NAMESTR("inner_join_indexer_int64"), (PyCFunction)__pyx_pf_6pandas_6_algos_90inner_join_indexer_int64, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_6pandas_6_algos_90inner_join_indexer_int64)};
static PyObject *__pyx_pf_6pandas_6_algos_90inner_join_indexer_int64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyArrayObject *__pyx_v_left = 0;
  PyArrayObject *__pyx_v_right = 0;
  Py_ssize_t __pyx_v_i;
  Py_ssize_t __pyx_v_j;
  Py_ssize_t __pyx_v_nright;
  Py_ssize_t __pyx_v_nleft;
  Py_ssize_t __pyx_v_count;
  __pyx_t_5numpy_int64_t __pyx_v_lval;
  __pyx_t_5numpy_int64_t __pyx_v_rval;
  PyArrayObject *__pyx_v_lindexer = 0;
  PyArrayObject *__pyx_v_rindexer = 0;
  PyArrayObject *__pyx_v_result = 0;
  Py_buffer __pyx_bstruct_result;
  Py_ssize_t __pyx_bstride_0_result = 0;
  Py_ssize_t __pyx_bshape_0_result = 0;
  Py_buffer __pyx_bstruct_right;
  Py_ssize_t __pyx_bstride_0_right = 0;
  Py_ssize_t __pyx_bshape_0_right = 0;
  Py_buffer __pyx_bstruct_lindexer;
  Py_ssize_t __pyx_bstride_0_lindexer = 0;
  Py_ssize_t __pyx_bshape_0_lindexer = 0;
  Py_buffer __pyx_bstruct_rindexer;
  Py_ssize_t __pyx_bstride_0_rindexer = 0;
  Py_ssize_t __pyx_bshape_0_rindexer = 0;
  Py_buffer __pyx_bstruct_left;
  Py_ssize_t __pyx_bstride_0_left = 0;
  Py_ssize_t __pyx_bshape_0_left = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  Py_ssize_t __pyx_t_1;
  int __pyx_t_2;
  int __pyx_t_3;
  int __pyx_t_4;
  Py_ssize_t __pyx_t_5;
  Py_ssize_t __pyx_t_6;
  Py_ssize_t __pyx_t_7;
  Py_ssize_t __pyx_t_8;
  PyObject *__pyx_t_9 = NULL;
  PyObject *__pyx_t_10 = NULL;
  PyObject *__pyx_t_11 = NULL;
  PyObject *__pyx_t_12 = NULL;
  PyObject *__pyx_t_13 = NULL;
  PyArrayObject *__pyx_t_14 = NULL;
  int __pyx_t_15;
  PyObject *__pyx_t_16 = NULL;
  PyObject *__pyx_t_17 = NULL;
  PyObject *__pyx_t_18 = NULL;
  PyArrayObject *__pyx_t_19 = NULL;
  Py_ssize_t __pyx_t_20;
  Py_ssize_t __pyx_t_21;
  Py_ssize_t __pyx_t_22;
  Py_ssize_t __pyx_t_23;
  Py_ssize_t __pyx_t_24;
  Py_ssize_t __pyx_t_25;
  Py_ssize_t __pyx_t_26;
  Py_ssize_t __pyx_t_27;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__left,&__pyx_n_s__right,0};
  __Pyx_RefNannySetupContext("inner_join_indexer_int64");
  __pyx_self = __pyx_self;
  {
    PyObject* values[2] = {0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  0:
        values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__left);
        if (likely(values[0])) kw_args--;
        else goto __pyx_L5_argtuple_error;
        case  1:
        values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__right);
        if (likely(values[1])) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("inner_join_indexer_int64", 1, 2, 2, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3926; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, PyTuple_GET_SIZE(__pyx_args), "inner_join_indexer_int64") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3926; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
    }
    __pyx_v_left = ((PyArrayObject *)values[0]);
    __pyx_v_right = ((PyArrayObject *)values[1]);
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("inner_join_indexer_int64", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3926; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("pandas._algos.inner_join_indexer_int64", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_bstruct_lindexer.buf = NULL;
  __pyx_bstruct_rindexer.buf = NULL;
  __pyx_bstruct_result.buf = NULL;
  __pyx_bstruct_left.buf = NULL;
  __pyx_bstruct_right.buf = NULL;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_left), __pyx_ptype_5numpy_ndarray, 1, "left", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3926; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_right), __pyx_ptype_5numpy_ndarray, 1, "right", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3927; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_left, (PyObject*)__pyx_v_left, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3926; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  }
  __pyx_bstride_0_left = __pyx_bstruct_left.strides[0];
  __pyx_bshape_0_left = __pyx_bstruct_left.shape[0];
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_right, (PyObject*)__pyx_v_right, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3926; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  }
  __pyx_bstride_0_right = __pyx_bstruct_right.strides[0];
  __pyx_bshape_0_right = __pyx_bstruct_right.shape[0];

  /* "pandas/src/generated.pyx":3937
 *         ndarray[int64_t] result
 * 
 *     nleft = len(left)             # <<<<<<<<<<<<<<
 *     nright = len(right)
 * 
 */
  __pyx_t_1 = PyObject_Length(((PyObject *)__pyx_v_left)); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3937; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_v_nleft = __pyx_t_1;

  /* "pandas/src/generated.pyx":3938
 * 
 *     nleft = len(left)
 *     nright = len(right)             # <<<<<<<<<<<<<<
 * 
 *     i = 0
 */
  __pyx_t_1 = PyObject_Length(((PyObject *)__pyx_v_right)); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3938; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_v_nright = __pyx_t_1;

  /* "pandas/src/generated.pyx":3940
 *     nright = len(right)
 * 
 *     i = 0             # <<<<<<<<<<<<<<
 *     j = 0
 *     count = 0
 */
  __pyx_v_i = 0;

  /* "pandas/src/generated.pyx":3941
 * 
 *     i = 0
 *     j = 0             # <<<<<<<<<<<<<<
 *     count = 0
 *     if nleft > 0 and nright > 0:
 */
  __pyx_v_j = 0;

  /* "pandas/src/generated.pyx":3942
 *     i = 0
 *     j = 0
 *     count = 0             # <<<<<<<<<<<<<<
 *     if nleft > 0 and nright > 0:
 *         while True:
 */
  __pyx_v_count = 0;

  /* "pandas/src/generated.pyx":3943
 *     j = 0
 *     count = 0
 *     if nleft > 0 and nright > 0:             # <<<<<<<<<<<<<<
 *         while True:
 *             if i == nleft:
 */
  __pyx_t_2 = (__pyx_v_nleft > 0);
  if (__pyx_t_2) {
    __pyx_t_3 = (__pyx_v_nright > 0);
    __pyx_t_4 = __pyx_t_3;
  } else {
    __pyx_t_4 = __pyx_t_2;
  }
  if (__pyx_t_4) {

    /* "pandas/src/generated.pyx":3944
 *     count = 0
 *     if nleft > 0 and nright > 0:
 *         while True:             # <<<<<<<<<<<<<<
 *             if i == nleft:
 *                 break
 */
    while (1) {
      if (!1) break;

      /* "pandas/src/generated.pyx":3945
 *     if nleft > 0 and nright > 0:
 *         while True:
 *             if i == nleft:             # <<<<<<<<<<<<<<
 *                 break
 *             if j == nright:
 */
      __pyx_t_4 = (__pyx_v_i == __pyx_v_nleft);
      if (__pyx_t_4) {

        /* "pandas/src/generated.pyx":3946
 *         while True:
 *             if i == nleft:
 *                 break             # <<<<<<<<<<<<<<
 *             if j == nright:
 *                 break
 */
        goto __pyx_L8_break;
        goto __pyx_L9;
      }
      __pyx_L9:;

      /* "pandas/src/generated.pyx":3947
 *             if i == nleft:
 *                 break
 *             if j == nright:             # <<<<<<<<<<<<<<
 *                 break
 * 
 */
      __pyx_t_4 = (__pyx_v_j == __pyx_v_nright);
      if (__pyx_t_4) {

        /* "pandas/src/generated.pyx":3948
 *                 break
 *             if j == nright:
 *                 break             # <<<<<<<<<<<<<<
 * 
 *             lval = left[i]
 */
        goto __pyx_L8_break;
        goto __pyx_L10;
      }
      __pyx_L10:;

      /* "pandas/src/generated.pyx":3950
 *                 break
 * 
 *             lval = left[i]             # <<<<<<<<<<<<<<
 *             rval = right[j]
 *             if lval == rval:
 */
      __pyx_t_1 = __pyx_v_i;
      __pyx_v_lval = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_bstruct_left.buf, __pyx_t_1, __pyx_bstride_0_left));

      /* "pandas/src/generated.pyx":3951
 * 
 *             lval = left[i]
 *             rval = right[j]             # <<<<<<<<<<<<<<
 *             if lval == rval:
 *                 count += 1
 */
      __pyx_t_5 = __pyx_v_j;
      __pyx_v_rval = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_bstruct_right.buf, __pyx_t_5, __pyx_bstride_0_right));

      /* "pandas/src/generated.pyx":3952
 *             lval = left[i]
 *             rval = right[j]
 *             if lval == rval:             # <<<<<<<<<<<<<<
 *                 count += 1
 *                 if i < nleft - 1:
 */
      __pyx_t_4 = (__pyx_v_lval == __pyx_v_rval);
      if (__pyx_t_4) {

        /* "pandas/src/generated.pyx":3953
 *             rval = right[j]
 *             if lval == rval:
 *                 count += 1             # <<<<<<<<<<<<<<
 *                 if i < nleft - 1:
 *                     if j < nright - 1 and right[j + 1] == rval:
 */
        __pyx_v_count = (__pyx_v_count + 1);

        /* "pandas/src/generated.pyx":3954
 *             if lval == rval:
 *                 count += 1
 *                 if i < nleft - 1:             # <<<<<<<<<<<<<<
 *                     if j < nright - 1 and right[j + 1] == rval:
 *                         j += 1
 */
        __pyx_t_4 = (__pyx_v_i < (__pyx_v_nleft - 1));
        if (__pyx_t_4) {

          /* "pandas/src/generated.pyx":3955
 *                 count += 1
 *                 if i < nleft - 1:
 *                     if j < nright - 1 and right[j + 1] == rval:             # <<<<<<<<<<<<<<
 *                         j += 1
 *                     else:
 */
          __pyx_t_4 = (__pyx_v_j < (__pyx_v_nright - 1));
          if (__pyx_t_4) {
            __pyx_t_6 = (__pyx_v_j + 1);
            __pyx_t_2 = ((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_bstruct_right.buf, __pyx_t_6, __pyx_bstride_0_right)) == __pyx_v_rval);
            __pyx_t_3 = __pyx_t_2;
          } else {
            __pyx_t_3 = __pyx_t_4;
          }
          if (__pyx_t_3) {

            /* "pandas/src/generated.pyx":3956
 *                 if i < nleft - 1:
 *                     if j < nright - 1 and right[j + 1] == rval:
 *                         j += 1             # <<<<<<<<<<<<<<
 *                     else:
 *                         i += 1
 */
            __pyx_v_j = (__pyx_v_j + 1);
            goto __pyx_L13;
          }
          /*else*/ {

            /* "pandas/src/generated.pyx":3958
 *                         j += 1
 *                     else:
 *                         i += 1             # <<<<<<<<<<<<<<
 *                         if left[i] != rval:
 *                             j += 1
 */
            __pyx_v_i = (__pyx_v_i + 1);

            /* "pandas/src/generated.pyx":3959
 *                     else:
 *                         i += 1
 *                         if left[i] != rval:             # <<<<<<<<<<<<<<
 *                             j += 1
 *                 elif j < nright - 1:
 */
            __pyx_t_7 = __pyx_v_i;
            __pyx_t_3 = ((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_bstruct_left.buf, __pyx_t_7, __pyx_bstride_0_left)) != __pyx_v_rval);
            if (__pyx_t_3) {

              /* "pandas/src/generated.pyx":3960
 *                         i += 1
 *                         if left[i] != rval:
 *                             j += 1             # <<<<<<<<<<<<<<
 *                 elif j < nright - 1:
 *                     j += 1
 */
              __pyx_v_j = (__pyx_v_j + 1);
              goto __pyx_L14;
            }
            __pyx_L14:;
          }
          __pyx_L13:;
          goto __pyx_L12;
        }

        /* "pandas/src/generated.pyx":3961
 *                         if left[i] != rval:
 *                             j += 1
 *                 elif j < nright - 1:             # <<<<<<<<<<<<<<
 *                     j += 1
 *                     if lval != right[j]:
 */
        __pyx_t_3 = (__pyx_v_j < (__pyx_v_nright - 1));
        if (__pyx_t_3) {

          /* "pandas/src/generated.pyx":3962
 *                             j += 1
 *                 elif j < nright - 1:
 *                     j += 1             # <<<<<<<<<<<<<<
 *                     if lval != right[j]:
 *                         i += 1
 */
          __pyx_v_j = (__pyx_v_j + 1);

          /* "pandas/src/generated.pyx":3963
 *                 elif j < nright - 1:
 *                     j += 1
 *                     if lval != right[j]:             # <<<<<<<<<<<<<<
 *                         i += 1
 *                 else:
 */
          __pyx_t_8 = __pyx_v_j;
          __pyx_t_3 = (__pyx_v_lval != (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_bstruct_right.buf, __pyx_t_8, __pyx_bstride_0_right)));
          if (__pyx_t_3) {

            /* "pandas/src/generated.pyx":3964
 *                     j += 1
 *                     if lval != right[j]:
 *                         i += 1             # <<<<<<<<<<<<<<
 *                 else:
 *                     # end of the road
 */
            __pyx_v_i = (__pyx_v_i + 1);
            goto __pyx_L15;
          }
          __pyx_L15:;
          goto __pyx_L12;
        }
        /*else*/ {

          /* "pandas/src/generated.pyx":3967
 *                 else:
 *                     # end of the road
 *                     break             # <<<<<<<<<<<<<<
 *             elif lval < rval:
 *                 i += 1
 */
          goto __pyx_L8_break;
        }
        __pyx_L12:;
        goto __pyx_L11;
      }

      /* "pandas/src/generated.pyx":3968
 *                     # end of the road
 *                     break
 *             elif lval < rval:             # <<<<<<<<<<<<<<
 *                 i += 1
 *             else:
 */
      __pyx_t_3 = (__pyx_v_lval < __pyx_v_rval);
      if (__pyx_t_3) {

        /* "pandas/src/generated.pyx":3969
 *                     break
 *             elif lval < rval:
 *                 i += 1             # <<<<<<<<<<<<<<
 *             else:
 *                 j += 1
 */
        __pyx_v_i = (__pyx_v_i + 1);
        goto __pyx_L11;
      }
      /*else*/ {

        /* "pandas/src/generated.pyx":3971
 *                 i += 1
 *             else:
 *                 j += 1             # <<<<<<<<<<<<<<
 * 
 *     # do it again now that result size is known
 */
        __pyx_v_j = (__pyx_v_j + 1);
      }
      __pyx_L11:;
    }
    __pyx_L8_break:;
    goto __pyx_L6;
  }
  __pyx_L6:;

  /* "pandas/src/generated.pyx":3975
 *     # do it again now that result size is known
 * 
 *     lindexer = np.empty(count, dtype=np.int64)             # <<<<<<<<<<<<<<
 *     rindexer = np.empty(count, dtype=np.int64)
 *     result = np.empty(count, dtype=np.int64)
 */
  __pyx_t_9 = __Pyx_GetName(__pyx_m, __pyx_n_s__np); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3975; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_9);
  __pyx_t_10 = PyObject_GetAttr(__pyx_t_9, __pyx_n_s__empty); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3975; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_10);
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  __pyx_t_9 = PyInt_FromSsize_t(__pyx_v_count); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3975; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_9);
  __pyx_t_11 = PyTuple_New(1); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3975; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_11));
  PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_9);
  __Pyx_GIVEREF(__pyx_t_9);
  __pyx_t_9 = 0;
  __pyx_t_9 = PyDict_New(); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3975; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_9));
  __pyx_t_12 = __Pyx_GetName(__pyx_m, __pyx_n_s__np); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3975; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_12);
  __pyx_t_13 = PyObject_GetAttr(__pyx_t_12, __pyx_n_s__int64); if (unlikely(!__pyx_t_13)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3975; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_13);
  __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
  if (PyDict_SetItem(__pyx_t_9, ((PyObject *)__pyx_n_s__dtype), __pyx_t_13) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3975; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
  __pyx_t_13 = PyEval_CallObjectWithKeywords(__pyx_t_10, ((PyObject *)__pyx_t_11), ((PyObject *)__pyx_t_9)); if (unlikely(!__pyx_t_13)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3975; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_13);
  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
  __Pyx_DECREF(((PyObject *)__pyx_t_11)); __pyx_t_11 = 0;
  __Pyx_DECREF(((PyObject *)__pyx_t_9)); __pyx_t_9 = 0;
  if (!(likely(((__pyx_t_13) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_13, __pyx_ptype_5numpy_ndarray))))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3975; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_t_14 = ((PyArrayObject *)__pyx_t_13);
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    __Pyx_SafeReleaseBuffer(&__pyx_bstruct_lindexer);
    __pyx_t_15 = __Pyx_GetBufferAndValidate(&__pyx_bstruct_lindexer, (PyObject*)__pyx_t_14, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack);
    if (unlikely(__pyx_t_15 < 0)) {
      PyErr_Fetch(&__pyx_t_16, &__pyx_t_17, &__pyx_t_18);
      if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_lindexer, (PyObject*)__pyx_v_lindexer, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) {
        Py_XDECREF(__pyx_t_16); Py_XDECREF(__pyx_t_17); Py_XDECREF(__pyx_t_18);
        __Pyx_RaiseBufferFallbackError();
      } else {
        PyErr_Restore(__pyx_t_16, __pyx_t_17, __pyx_t_18);
      }
    }
    __pyx_bstride_0_lindexer = __pyx_bstruct_lindexer.strides[0];
    __pyx_bshape_0_lindexer = __pyx_bstruct_lindexer.shape[0];
    if (unlikely(__pyx_t_15 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3975; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  }
  __pyx_t_14 = 0;
  __pyx_v_lindexer = ((PyArrayObject *)__pyx_t_13);
  __pyx_t_13 = 0;

  /* "pandas/src/generated.pyx":3976
 * 
 *     lindexer = np.empty(count, dtype=np.int64)
 *     rindexer = np.empty(count, dtype=np.int64)             # <<<<<<<<<<<<<<
 *     result = np.empty(count, dtype=np.int64)
 * 
 */
  __pyx_t_13 = __Pyx_GetName(__pyx_m, __pyx_n_s__np); if (unlikely(!__pyx_t_13)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3976; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_13);
  __pyx_t_9 = PyObject_GetAttr(__pyx_t_13, __pyx_n_s__empty); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3976; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_9);
  __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
  __pyx_t_13 = PyInt_FromSsize_t(__pyx_v_count); if (unlikely(!__pyx_t_13)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3976; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_13);
  __pyx_t_11 = PyTuple_New(1); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3976; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_11));
  PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_13);
  __Pyx_GIVEREF(__pyx_t_13);
  __pyx_t_13 = 0;
  __pyx_t_13 = PyDict_New(); if (unlikely(!__pyx_t_13)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3976; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_13));
  __pyx_t_10 = __Pyx_GetName(__pyx_m, __pyx_n_s__np); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3976; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_10);
  __pyx_t_12 = PyObject_GetAttr(__pyx_t_10, __pyx_n_s__int64); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3976; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_12);
  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
  if (PyDict_SetItem(__pyx_t_13, ((PyObject *)__pyx_n_s__dtype), __pyx_t_12) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3976; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
  __pyx_t_12 = PyEval_CallObjectWithKeywords(__pyx_t_9, ((PyObject *)__pyx_t_11), ((PyObject *)__pyx_t_13)); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3976; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_12);
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  __Pyx_DECREF(((PyObject *)__pyx_t_11)); __pyx_t_11 = 0;
  __Pyx_DECREF(((PyObject *)__pyx_t_13)); __pyx_t_13 = 0;
  if (!(likely(((__pyx_t_12) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_12, __pyx_ptype_5numpy_ndarray))))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3976; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_t_14 = ((PyArrayObject *)__pyx_t_12);
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    __Pyx_SafeReleaseBuffer(&__pyx_bstruct_rindexer);
    __pyx_t_15 = __Pyx_GetBufferAndValidate(&__pyx_bstruct_rindexer, (PyObject*)__pyx_t_14, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack);
    if (unlikely(__pyx_t_15 < 0)) {
      PyErr_Fetch(&__pyx_t_18, &__pyx_t_17, &__pyx_t_16);
      if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_rindexer, (PyObject*)__pyx_v_rindexer, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) {
        Py_XDECREF(__pyx_t_18); Py_XDECREF(__pyx_t_17); Py_XDECREF(__pyx_t_16);
        __Pyx_RaiseBufferFallbackError();
      } else {
        PyErr_Restore(__pyx_t_18, __pyx_t_17, __pyx_t_16);
      }
    }
    __pyx_bstride_0_rindexer = __pyx_bstruct_rindexer.strides[0];
    __pyx_bshape_0_rindexer = __pyx_bstruct_rindexer.shape[0];
    if (unlikely(__pyx_t_15 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3976; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  }
  __pyx_t_14 = 0;
  __pyx_v_rindexer = ((PyArrayObject *)__pyx_t_12);
  __pyx_t_12 = 0;

  /* "pandas/src/generated.pyx":3977
 *     lindexer = np.empty(count, dtype=np.int64)
 *     rindexer = np.empty(count, dtype=np.int64)
 *     result = np.empty(count, dtype=np.int64)             # <<<<<<<<<<<<<<
 * 
 *     i = 0
 */
  __pyx_t_12 = __Pyx_GetName(__pyx_m, __pyx_n_s__np); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3977; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_12);
  __pyx_t_13 = PyObject_GetAttr(__pyx_t_12, __pyx_n_s__empty); if (unlikely(!__pyx_t_13)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3977; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_13);
  __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
  __pyx_t_12 = PyInt_FromSsize_t(__pyx_v_count); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3977; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_12);
  __pyx_t_11 = PyTuple_New(1); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3977; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_11));
  PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_12);
  __Pyx_GIVEREF(__pyx_t_12);
  __pyx_t_12 = 0;
  __pyx_t_12 = PyDict_New(); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3977; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_12));
  __pyx_t_9 = __Pyx_GetName(__pyx_m, __pyx_n_s__np); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3977; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_9);
  __pyx_t_10 = PyObject_GetAttr(__pyx_t_9, __pyx_n_s__int64); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3977; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_10);
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  if (PyDict_SetItem(__pyx_t_12, ((PyObject *)__pyx_n_s__dtype), __pyx_t_10) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3977; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
  __pyx_t_10 = PyEval_CallObjectWithKeywords(__pyx_t_13, ((PyObject *)__pyx_t_11), ((PyObject *)__pyx_t_12)); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3977; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_10);
  __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
  __Pyx_DECREF(((PyObject *)__pyx_t_11)); __pyx_t_11 = 0;
  __Pyx_DECREF(((PyObject *)__pyx_t_12)); __pyx_t_12 = 0;
  if (!(likely(((__pyx_t_10) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_10, __pyx_ptype_5numpy_ndarray))))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3977; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_t_19 = ((PyArrayObject *)__pyx_t_10);
  {
    __Pyx_BufFmt_StackElem __pyx_stack[1];
    __Pyx_SafeReleaseBuffer(&__pyx_bstruct_result);
    __pyx_t_15 = __Pyx_GetBufferAndValidate(&__pyx_bstruct_result, (PyObject*)__pyx_t_19, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack);
    if (unlikely(__pyx_t_15 < 0)) {
      PyErr_Fetch(&__pyx_t_16, &__pyx_t_17, &__pyx_t_18);
      if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_bstruct_result, (PyObject*)__pyx_v_result, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) {
        Py_XDECREF(__pyx_t_16); Py_XDECREF(__pyx_t_17); Py_XDECREF(__pyx_t_18);
        __Pyx_RaiseBufferFallbackError();
      } else {
        PyErr_Restore(__pyx_t_16, __pyx_t_17, __pyx_t_18);
      }
    }
    __pyx_bstride_0_result = __pyx_bstruct_result.strides[0];
    __pyx_bshape_0_result = __pyx_bstruct_result.shape[0];
    if (unlikely(__pyx_t_15 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3977; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  }
  __pyx_t_19 = 0;
  __pyx_v_result = ((PyArrayObject *)__pyx_t_10);
  __pyx_t_10 = 0;

  /* "pandas/src/generated.pyx":3979
 *     result = np.empty(count, dtype=np.int64)
 * 
 *     i = 0             # <<<<<<<<<<<<<<
 *     j = 0
 *     count = 0
 */
  __pyx_v_i = 0;

  /* "pandas/src/generated.pyx":3980
 * 
 *     i = 0
 *     j = 0             # <<<<<<<<<<<<<<
 *     count = 0
 *     if nleft > 0 and nright > 0:
 */
  __pyx_v_j = 0;

  /* "pandas/src/generated.pyx":3981
 *     i = 0
 *     j = 0
 *     count = 0             # <<<<<<<<<<<<<<
 *     if nleft > 0 and nright > 0:
 *         while True:
 */
  __pyx_v_count = 0;

  /* "pandas/src/generated.pyx":3982
 *     j = 0
 *     count = 0
 *     if nleft > 0 and nright > 0:             # <<<<<<<<<<<<<<
 *         while True:
 *             if i == nleft:
 */
  __pyx_t_3 = (__pyx_v_nleft > 0);
  if (__pyx_t_3) {
    __pyx_t_4 = (__pyx_v_nright > 0);
    __pyx_t_2 = __pyx_t_4;
  } else {
    __pyx_t_2 = __pyx_t_3;
  }
  if (__pyx_t_2) {

    /* "pandas/src/generated.pyx":3983
 *     count = 0
 *     if nleft > 0 and nright > 0:
 *         while True:             # <<<<<<<<<<<<<<
 *             if i == nleft:
 *                 break
 */
    while (1) {
      if (!1) break;

      /* "pandas/src/generated.pyx":3984
 *     if nleft > 0 and nright > 0:
 *         while True:
 *             if i == nleft:             # <<<<<<<<<<<<<<
 *                 break
 *             if j == nright:
 */
      __pyx_t_2 = (__pyx_v_i == __pyx_v_nleft);
      if (__pyx_t_2) {

        /* "pandas/src/generated.pyx":3985
 *         while True:
 *             if i == nleft:
 *                 break             # <<<<<<<<<<<<<<
 *             if j == nright:
 *                 break
 */
        goto __pyx_L18_break;
        goto __pyx_L19;
      }
      __pyx_L19:;

      /* "pandas/src/generated.pyx":3986
 *             if i == nleft:
 *                 break
 *             if j == nright:             # <<<<<<<<<<<<<<
 *                 break
 * 
 */
      __pyx_t_2 = (__pyx_v_j == __pyx_v_nright);
      if (__pyx_t_2) {

        /* "pandas/src/generated.pyx":3987
 *                 break
 *             if j == nright:
 *                 break             # <<<<<<<<<<<<<<
 * 
 *             lval = left[i]
 */
        goto __pyx_L18_break;
        goto __pyx_L20;
      }
      __pyx_L20:;

      /* "pandas/src/generated.pyx":3989
 *                 break
 * 
 *             lval = left[i]             # <<<<<<<<<<<<<<
 *             rval = right[j]
 *             if lval == rval:
 */
      __pyx_t_20 = __pyx_v_i;
      __pyx_v_lval = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_bstruct_left.buf, __pyx_t_20, __pyx_bstride_0_left));

      /* "pandas/src/generated.pyx":3990
 * 
 *             lval = left[i]
 *             rval = right[j]             # <<<<<<<<<<<<<<
 *             if lval == rval:
 *                 lindexer[count] = i
 */
      __pyx_t_21 = __pyx_v_j;
      __pyx_v_rval = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_bstruct_right.buf, __pyx_t_21, __pyx_bstride_0_right));

      /* "pandas/src/generated.pyx":3991
 *             lval = left[i]
 *             rval = right[j]
 *             if lval == rval:             # <<<<<<<<<<<<<<
 *                 lindexer[count] = i
 *                 rindexer[count] = j
 */
      __pyx_t_2 = (__pyx_v_lval == __pyx_v_rval);
      if (__pyx_t_2) {

        /* "pandas/src/generated.pyx":3992
 *             rval = right[j]
 *             if lval == rval:
 *                 lindexer[count] = i             # <<<<<<<<<<<<<<
 *                 rindexer[count] = j
 *                 result[count] = rval
 */
        __pyx_t_22 = __pyx_v_count;
        *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_bstruct_lindexer.buf, __pyx_t_22, __pyx_bstride_0_lindexer) = __pyx_v_i;

        /* "pandas/src/generated.pyx":3993
 *             if lval == rval:
 *                 lindexer[count] = i
 *                 rindexer[count] = j             # <<<<<<<<<<<<<<
 *                 result[count] = rval
 *                 count += 1
 */
        __pyx_t_23 = __pyx_v_count;
        *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_bstruct_rindexer.buf, __pyx_t_23, __pyx_bstride_0_rindexer) = __pyx_v_j;

        /* "pandas/src/generated.pyx":3994
 *                 lindexer[count] = i
 *                 rindexer[count] = j
 *                 result[count] = rval             # <<<<<<<<<<<<<<
 *                 count += 1
 *                 if i < nleft - 1:
 */
        __pyx_t_24 = __pyx_v_count;
        *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_bstruct_result.buf, __pyx_t_24, __pyx_bstride_0_result) = __pyx_v_rval;

        /* "pandas/src/generated.pyx":3995
 *                 rindexer[count] = j
 *                 result[count] = rval
 *                 count += 1             # <<<<<<<<<<<<<<
 *                 if i < nleft - 1:
 *                     if j < nright - 1 and right[j + 1] == rval:
 */
        __pyx_v_count = (__pyx_v_count + 1);

        /* "pandas/src/generated.pyx":3996
 *                 result[count] = rval
 *                 count += 1
 *                 if i < nleft - 1:             # <<<<<<<<<<<<<<
 *                     if j < nright - 1 and right[j + 1] == rval:
 *                         j += 1
 */
        __pyx_t_2 = (__pyx_v_i < (__pyx_v_nleft - 1));
        if (__pyx_t_2) {

          /* "pandas/src/generated.pyx":3997
 *                 count += 1
 *                 if i < nleft - 1:
 *                     if j < nright - 1 and right[j + 1] == rval:             # <<<<<<<<<<<<<<
 *                         j += 1
 *                     else:
 */
          __pyx_t_2 = (__pyx_v_j < (__pyx_v_nright - 1));
          if (__pyx_t_2) {
            __pyx_t_25 = (__pyx_v_j + 1);
            __pyx_t_3 = ((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_bstruct_right.buf, __pyx_t_25, __pyx_bstride_0_right)) == __pyx_v_rval);
            __pyx_t_4 = __pyx_t_3;
          } else {
            __pyx_t_4 = __pyx_t_2;
          }
          if (__pyx_t_4) {

            /* "pandas/src/generated.pyx":3998
 *                 if i < nleft - 1:
 *                     if j < nright - 1 and right[j + 1] == rval:
 *                         j += 1             # <<<<<<<<<<<<<<
 *                     else:
 *                         i += 1
 */
            __pyx_v_j = (__pyx_v_j + 1);
            goto __pyx_L23;
          }
          /*else*/ {

            /* "pandas/src/generated.pyx":4000
 *                         j += 1
 *                     else:
 *                         i += 1             # <<<<<<<<<<<<<<
 *                         if left[i] != rval:
 *                             j += 1
 */
            __pyx_v_i = (__pyx_v_i + 1);

            /* "pandas/src/generated.pyx":4001
 *                     else:
 *                         i += 1
 *                         if left[i] != rval:             # <<<<<<<<<<<<<<
 *                             j += 1
 *                 elif j < nright - 1:
 */
            __pyx_t_26 = __pyx_v_i;
            __pyx_t_4 = ((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_bstruct_left.buf, __pyx_t_26, __pyx_bstride_0_left)) != __pyx_v_rval);
            if (__pyx_t_4) {

              /* "pandas/src/generated.pyx":4002
 *                         i += 1
 *                         if left[i] != rval:
 *                             j += 1             # <<<<<<<<<<<<<<
 *                 elif j < nright - 1:
 *                     j += 1
 */
              __pyx_v_j = (__pyx_v_j + 1);
              goto __pyx_L24;
            }
            __pyx_L24:;
          }
          __pyx_L23:;
          goto __pyx_L22;
        }

        /* "pandas/src/generated.pyx":4003
 *                         if left[i] != rval:
 *                             j += 1
 *                 elif j < nright - 1:             # <<<<<<<<<<<<<<
 *                     j += 1
 *                     if lval != right[j]:
 */
        __pyx_t_4 = (__pyx_v_j < (__pyx_v_nright - 1));
        if (__pyx_t_4) {

          /* "pandas/src/generated.pyx":4004
 *                             j += 1
 *                 elif j < nright - 1:
 *                     j += 1             # <<<<<<<<<<<<<<
 *                     if lval != right[j]:
 *                         i += 1
 */
          __pyx_v_j = (__pyx_v_j + 1);

          /* "pandas/src/generated.pyx":4005
 *                 elif j < nright - 1:
 *                     j += 1
 *                     if lval != right[j]:             # <<<<<<<<<<<<<<
 *                         i += 1
 *                 else:
 */
          __pyx_t_27 = __pyx_v_j;
          __pyx_t_4 = (__pyx_v_lval != (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_bstruct_right.buf, __pyx_t_27, __pyx_bstride_0_right)));
          if (__pyx_t_4) {

            /* "pandas/src/generated.pyx":4006
 *                     j += 1
 *                     if lval != right[j]:
 *                         i += 1             # <<<<<<<<<<<<<<
 *                 else:
 *                     # end of the road
 */
            __pyx_v_i = (__pyx_v_i + 1);
            goto __pyx_L25;
          }
          __pyx_L25:;
          goto __pyx_L22;
        }
        /*else*/ {

          /* "pandas/src/generated.pyx":4009
 *                 else:
 *                     # end of the road
 *                     break             # <<<<<<<<<<<<<<
 *             elif lval < rval:
 *                 i += 1
 */
          goto __pyx_L18_break;
        }
        __pyx_L22:;
        goto __pyx_L21;
      }

      /* "pandas/src/generated.pyx":4010
 *                     # end of the road
 *                     break
 *             elif lval < rval:             # <<<<<<<<<<<<<<
 *                 i += 1
 *             else:
 */
      __pyx_t_4 = (__pyx_v_lval < __pyx_v_rval);
      if (__pyx_t_4) {

        /* "pandas/src/generated.pyx":4011
 *                     break
 *             elif lval < rval:
 *                 i += 1             # <<<<<<<<<<<<<<
 *             else:
 *                 j += 1
 */
        __pyx_v_i = (__pyx_v_i + 1);
        goto __pyx_L21;
      }
      /*else*/ {

        /* "pandas/src/generated.pyx":4013
 *                 i += 1
 *             else:
 *                 j += 1             # <<<<<<<<<<<<<<
 * 
 *     return result, lindexer, rindexer
 */
        __pyx_v_j = (__pyx_v_j + 1);
      }
      __pyx_L21:;
    }
    __pyx_L18_break:;
    goto __pyx_L16;
  }
  __pyx_L16:;

  /* "pandas/src/generated.pyx":4015
 *                 j += 1
 * 
 *     return result, lindexer, rindexer             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_10 = PyTuple_New(3); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 4015; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_10));
  __Pyx_INCREF(((PyObject *)__pyx_v_result));
  PyTuple_SET_ITEM(__pyx_t_10, 0, ((PyObject *)__pyx_v_result));
  __Pyx_GIVEREF(((PyObject *)__pyx_v_result));
  __Pyx_INCREF(((PyObject *)__pyx_v_lindexer));
  PyTuple_SET_ITEM(__pyx_t_10, 1, ((PyObject *)__pyx_v_lindexer));
  __Pyx_GIVEREF(((PyObject *)__pyx_v_lindexer));
  __Pyx_INCREF(((PyObject *)__pyx_v_rindexer));
  PyTuple_SET_ITEM(__pyx_t_10, 2, ((PyObject *)__pyx_v_rindexer));
  __Pyx_GIVEREF(((PyObject *)__pyx_v_rindexer));
  __pyx_r = ((PyObject *)__pyx_t_10);
  __pyx_t_10 = 0;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_9);
  __Pyx_XDECREF(__pyx_t_10);
  __Pyx_XDECREF(__pyx_t_11);
  __Pyx_XDECREF(__pyx_t_12);
  __Pyx_XDECREF(__pyx_t_13);
  { PyObject *__pyx_type, *__pyx_value, *__pyx_tb;
    __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);
    __Pyx_SafeReleaseBuffer(&__pyx_bstruct_result);
    __Pyx_SafeReleaseBuffer(&__pyx_bstruct_right);
    __Pyx_SafeReleaseBuffer(&__pyx_bstruct_lindexer);
    __Pyx_SafeReleaseBuffer(&__pyx_bstruct_rindexer);
    __Pyx_SafeReleaseBuffer(&__pyx_bstruct_left);
  __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);}
  __Pyx_AddTraceback("pandas._algos.inner_join_indexer_int64", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  goto __pyx_L2;
  __pyx_L0:;
  __Pyx_SafeReleaseBuffer(&__pyx_bstruct_result);
  __Pyx_SafeReleaseBuffer(&__pyx_bstruct_right);
  __Pyx_SafeReleaseBuffer(&__pyx_bstruct_lindexer);
  __Pyx_SafeReleaseBuffer(&__pyx_bstruct_rindexer);
  __Pyx_SafeReleaseBuffer(&__pyx_bstruct_left);
  __pyx_L2:;
  __Pyx_XDECREF((PyObject *)__pyx_v_lindexer);
  __Pyx_XDECREF((PyObject *)__pyx_v_rindexer);
  __Pyx_XDECREF((PyObject *)__pyx_v_result);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "numpy.pxd":195
 *         # experimental exception made for __getbuffer__ and __releasebuffer__
 *         # -- the details of this may change.
 *         def __getbuffer__(ndarray self, Py_buffer* info, int flags):             # <<<<<<<<<<<<<<
 *             # This implementation of getbuffer is geared towards Cython
 *             # requirements, and does not yet fullfill the PEP.
 */

static CYTHON_UNUSED int __pyx_pf_5numpy_7ndarray___getbuffer__(PyObject *__pyx_v_self, Py_buffer *__pyx_v_info, int __pyx_v_flags); /*proto*/
static CYTHON_UNUSED int __pyx_pf_5numpy_7ndarray___getbuffer__(PyObject *__pyx_v_self, Py_buffer *__pyx_v_info, int __pyx_v_flags) {
  int __pyx_v_copy_shape;
  int __pyx_v_i;
  int __pyx_v_ndim;
  int __pyx_v_endian_detector;
  int __pyx_v_little_endian;
  int __pyx_v_t;
  char *__pyx_v_f;
  PyArray_Descr *__pyx_v_descr = 0;
  int __pyx_v_offset;
  int __pyx_v_hasfields;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_t_2;
  int __pyx_t_3;
  PyObject *__pyx_t_4 = NULL;
  int __pyx_t_5;
  int __pyx_t_6;
  int __pyx_t_7;
  PyObject *__pyx_t_8 = NULL;
  char *__pyx_t_9;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__getbuffer__");
  if (__pyx_v_info != NULL) {
    __pyx_v_info->obj = Py_None; __Pyx_INCREF(Py_None);
    __Pyx_GIVEREF(__pyx_v_info->obj);
  }

  /* "numpy.pxd":201
 *             # of flags
 * 
 *             if info == NULL: return             # <<<<<<<<<<<<<<
 * 
 *             cdef int copy_shape, i, ndim
 */
  __pyx_t_1 = (__pyx_v_info == NULL);
  if (__pyx_t_1) {
    __pyx_r = 0;
    goto __pyx_L0;
    goto __pyx_L5;
  }
  __pyx_L5:;

  /* "numpy.pxd":204
 * 
 *             cdef int copy_shape, i, ndim
 *             cdef int endian_detector = 1             # <<<<<<<<<<<<<<
 *             cdef bint little_endian = ((<char*>&endian_detector)[0] != 0)
 * 
 */
  __pyx_v_endian_detector = 1;

  /* "numpy.pxd":205
 *             cdef int copy_shape, i, ndim
 *             cdef int endian_detector = 1
 *             cdef bint little_endian = ((<char*>&endian_detector)[0] != 0)             # <<<<<<<<<<<<<<
 * 
 *             ndim = PyArray_NDIM(self)
 */
  __pyx_v_little_endian = ((((char *)(&__pyx_v_endian_detector))[0]) != 0);

  /* "numpy.pxd":207
 *             cdef bint little_endian = ((<char*>&endian_detector)[0] != 0)
 * 
 *             ndim = PyArray_NDIM(self)             # <<<<<<<<<<<<<<
 * 
 *             if sizeof(npy_intp) != sizeof(Py_ssize_t):
 */
  __pyx_v_ndim = PyArray_NDIM(((PyArrayObject *)__pyx_v_self));

  /* "numpy.pxd":209
 *             ndim = PyArray_NDIM(self)
 * 
 *             if sizeof(npy_intp) != sizeof(Py_ssize_t):             # <<<<<<<<<<<<<<
 *                 copy_shape = 1
 *             else:
 */
  __pyx_t_1 = ((sizeof(npy_intp)) != (sizeof(Py_ssize_t)));
  if (__pyx_t_1) {

    /* "numpy.pxd":210
 * 
 *             if sizeof(npy_intp) != sizeof(Py_ssize_t):
 *                 copy_shape = 1             # <<<<<<<<<<<<<<
 *             else:
 *                 copy_shape = 0
 */
    __pyx_v_copy_shape = 1;
    goto __pyx_L6;
  }
  /*else*/ {

    /* "numpy.pxd":212
 *                 copy_shape = 1
 *             else:
 *                 copy_shape = 0             # <<<<<<<<<<<<<<
 * 
 *             if ((flags & pybuf.PyBUF_C_CONTIGUOUS == pybuf.PyBUF_C_CONTIGUOUS)
 */
    __pyx_v_copy_shape = 0;
  }
  __pyx_L6:;

  /* "numpy.pxd":214
 *                 copy_shape = 0
 * 
 *             if ((flags & pybuf.PyBUF_C_CONTIGUOUS == pybuf.PyBUF_C_CONTIGUOUS)             # <<<<<<<<<<<<<<
 *                 and not PyArray_CHKFLAGS(self, NPY_C_CONTIGUOUS)):
 *                 raise ValueError(u"ndarray is not C contiguous")
 */
  __pyx_t_1 = ((__pyx_v_flags & PyBUF_C_CONTIGUOUS) == PyBUF_C_CONTIGUOUS);
  if (__pyx_t_1) {

    /* "numpy.pxd":215
 * 
 *             if ((flags & pybuf.PyBUF_C_CONTIGUOUS == pybuf.PyBUF_C_CONTIGUOUS)
 *                 and not PyArray_CHKFLAGS(self, NPY_C_CONTIGUOUS)):             # <<<<<<<<<<<<<<
 *                 raise ValueError(u"ndarray is not C contiguous")
 * 
 */
    __pyx_t_2 = (!PyArray_CHKFLAGS(((PyArrayObject *)__pyx_v_self), NPY_C_CONTIGUOUS));
    __pyx_t_3 = __pyx_t_2;
  } else {
    __pyx_t_3 = __pyx_t_1;
  }
  if (__pyx_t_3) {

    /* "numpy.pxd":216
 *             if ((flags & pybuf.PyBUF_C_CONTIGUOUS == pybuf.PyBUF_C_CONTIGUOUS)
 *                 and not PyArray_CHKFLAGS(self, NPY_C_CONTIGUOUS)):
 *                 raise ValueError(u"ndarray is not C contiguous")             # <<<<<<<<<<<<<<
 * 
 *             if ((flags & pybuf.PyBUF_F_CONTIGUOUS == pybuf.PyBUF_F_CONTIGUOUS)
 */
    __pyx_t_4 = PyObject_Call(__pyx_builtin_ValueError, ((PyObject *)__pyx_k_tuple_91), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 216; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_Raise(__pyx_t_4, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    {__pyx_filename = __pyx_f[1]; __pyx_lineno = 216; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    goto __pyx_L7;
  }
  __pyx_L7:;

  /* "numpy.pxd":218
 *                 raise ValueError(u"ndarray is not C contiguous")
 * 
 *             if ((flags & pybuf.PyBUF_F_CONTIGUOUS == pybuf.PyBUF_F_CONTIGUOUS)             # <<<<<<<<<<<<<<
 *                 and not PyArray_CHKFLAGS(self, NPY_F_CONTIGUOUS)):
 *                 raise ValueError(u"ndarray is not Fortran contiguous")
 */
  __pyx_t_3 = ((__pyx_v_flags & PyBUF_F_CONTIGUOUS) == PyBUF_F_CONTIGUOUS);
  if (__pyx_t_3) {

    /* "numpy.pxd":219
 * 
 *             if ((flags & pybuf.PyBUF_F_CONTIGUOUS == pybuf.PyBUF_F_CONTIGUOUS)
 *                 and not PyArray_CHKFLAGS(self, NPY_F_CONTIGUOUS)):             # <<<<<<<<<<<<<<
 *                 raise ValueError(u"ndarray is not Fortran contiguous")
 * 
 */
    __pyx_t_1 = (!PyArray_CHKFLAGS(((PyArrayObject *)__pyx_v_self), NPY_F_CONTIGUOUS));
    __pyx_t_2 = __pyx_t_1;
  } else {
    __pyx_t_2 = __pyx_t_3;
  }
  if (__pyx_t_2) {

    /* "numpy.pxd":220
 *             if ((flags & pybuf.PyBUF_F_CONTIGUOUS == pybuf.PyBUF_F_CONTIGUOUS)
 *                 and not PyArray_CHKFLAGS(self, NPY_F_CONTIGUOUS)):
 *                 raise ValueError(u"ndarray is not Fortran contiguous")             # <<<<<<<<<<<<<<
 * 
 *             info.buf = PyArray_DATA(self)
 */
    __pyx_t_4 = PyObject_Call(__pyx_builtin_ValueError, ((PyObject *)__pyx_k_tuple_93), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 220; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_Raise(__pyx_t_4, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    {__pyx_filename = __pyx_f[1]; __pyx_lineno = 220; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    goto __pyx_L8;
  }
  __pyx_L8:;

  /* "numpy.pxd":222
 *                 raise ValueError(u"ndarray is not Fortran contiguous")
 * 
 *             info.buf = PyArray_DATA(self)             # <<<<<<<<<<<<<<
 *             info.ndim = ndim
 *             if copy_shape:
 */
  __pyx_v_info->buf = PyArray_DATA(((PyArrayObject *)__pyx_v_self));

  /* "numpy.pxd":223
 * 
 *             info.buf = PyArray_DATA(self)
 *             info.ndim = ndim             # <<<<<<<<<<<<<<
 *             if copy_shape:
 *                 # Allocate new buffer for strides and shape info.
 */
  __pyx_v_info->ndim = __pyx_v_ndim;

  /* "numpy.pxd":224
 *             info.buf = PyArray_DATA(self)
 *             info.ndim = ndim
 *             if copy_shape:             # <<<<<<<<<<<<<<
 *                 # Allocate new buffer for strides and shape info.
 *                 # This is allocated as one block, strides first.
 */
  if (__pyx_v_copy_shape) {

    /* "numpy.pxd":227
 *                 # Allocate new buffer for strides and shape info.
 *                 # This is allocated as one block, strides first.
 *                 info.strides = <Py_ssize_t*>stdlib.malloc(sizeof(Py_ssize_t) * <size_t>ndim * 2)             # <<<<<<<<<<<<<<
 *                 info.shape = info.strides + ndim
 *                 for i in range(ndim):
 */
    __pyx_v_info->strides = ((Py_ssize_t *)malloc((((sizeof(Py_ssize_t)) * ((size_t)__pyx_v_ndim)) * 2)));

    /* "numpy.pxd":228
 *                 # This is allocated as one block, strides first.
 *                 info.strides = <Py_ssize_t*>stdlib.malloc(sizeof(Py_ssize_t) * <size_t>ndim * 2)
 *                 info.shape = info.strides + ndim             # <<<<<<<<<<<<<<
 *                 for i in range(ndim):
 *                     info.strides[i] = PyArray_STRIDES(self)[i]
 */
    __pyx_v_info->shape = (__pyx_v_info->strides + __pyx_v_ndim);

    /* "numpy.pxd":229
 *                 info.strides = <Py_ssize_t*>stdlib.malloc(sizeof(Py_ssize_t) * <size_t>ndim * 2)
 *                 info.shape = info.strides + ndim
 *                 for i in range(ndim):             # <<<<<<<<<<<<<<
 *                     info.strides[i] = PyArray_STRIDES(self)[i]
 *                     info.shape[i] = PyArray_DIMS(self)[i]
 */
    __pyx_t_5 = __pyx_v_ndim;
    for (__pyx_t_6 = 0; __pyx_t_6 < __pyx_t_5; __pyx_t_6+=1) {
      __pyx_v_i = __pyx_t_6;

      /* "numpy.pxd":230
 *                 info.shape = info.strides + ndim
 *                 for i in range(ndim):
 *                     info.strides[i] = PyArray_STRIDES(self)[i]             # <<<<<<<<<<<<<<
 *                     info.shape[i] = PyArray_DIMS(self)[i]
 *             else:
 */
      (__pyx_v_info->strides[__pyx_v_i]) = (PyArray_STRIDES(((PyArrayObject *)__pyx_v_self))[__pyx_v_i]);

      /* "numpy.pxd":231
 *                 for i in range(ndim):
 *                     info.strides[i] = PyArray_STRIDES(self)[i]
 *                     info.shape[i] = PyArray_DIMS(self)[i]             # <<<<<<<<<<<<<<
 *             else:
 *                 info.strides = <Py_ssize_t*>PyArray_STRIDES(self)
 */
      (__pyx_v_info->shape[__pyx_v_i]) = (PyArray_DIMS(((PyArrayObject *)__pyx_v_self))[__pyx_v_i]);
    }
    goto __pyx_L9;
  }
  /*else*/ {

    /* "numpy.pxd":233
 *                     info.shape[i] = PyArray_DIMS(self)[i]
 *             else:
 *                 info.strides = <Py_ssize_t*>PyArray_STRIDES(self)             # <<<<<<<<<<<<<<
 *                 info.shape = <Py_ssize_t*>PyArray_DIMS(self)
 *             info.suboffsets = NULL
 */
    __pyx_v_info->strides = ((Py_ssize_t *)PyArray_STRIDES(((PyArrayObject *)__pyx_v_self)));

    /* "numpy.pxd":234
 *             else:
 *                 info.strides = <Py_ssize_t*>PyArray_STRIDES(self)
 *                 info.shape = <Py_ssize_t*>PyArray_DIMS(self)             # <<<<<<<<<<<<<<
 *             info.suboffsets = NULL
 *             info.itemsize = PyArray_ITEMSIZE(self)
 */
    __pyx_v_info->shape = ((Py_ssize_t *)PyArray_DIMS(((PyArrayObject *)__pyx_v_self)));
  }
  __pyx_L9:;

  /* "numpy.pxd":235
 *                 info.strides = <Py_ssize_t*>PyArray_STRIDES(self)
 *                 info.shape = <Py_ssize_t*>PyArray_DIMS(self)
 *             info.suboffsets = NULL             # <<<<<<<<<<<<<<
 *             info.itemsize = PyArray_ITEMSIZE(self)
 *             info.readonly = not PyArray_ISWRITEABLE(self)
 */
  __pyx_v_info->suboffsets = NULL;

  /* "numpy.pxd":236
 *                 info.shape = <Py_ssize_t*>PyArray_DIMS(self)
 *             info.suboffsets = NULL
 *             info.itemsize = PyArray_ITEMSIZE(self)             # <<<<<<<<<<<<<<
 *             info.readonly = not PyArray_ISWRITEABLE(self)
 * 
 */
  __pyx_v_info->itemsize = PyArray_ITEMSIZE(((PyArrayObject *)__pyx_v_self));

  /* "numpy.pxd":237
 *             info.suboffsets = NULL
 *             info.itemsize = PyArray_ITEMSIZE(self)
 *             info.readonly = not PyArray_ISWRITEABLE(self)             # <<<<<<<<<<<<<<
 * 
 *             cdef int t
 */
  __pyx_v_info->readonly = (!PyArray_ISWRITEABLE(((PyArrayObject *)__pyx_v_self)));

  /* "numpy.pxd":240
 * 
 *             cdef int t
 *             cdef char* f = NULL             # <<<<<<<<<<<<<<
 *             cdef dtype descr = self.descr
 *             cdef list stack
 */
  __pyx_v_f = NULL;

  /* "numpy.pxd":241
 *             cdef int t
 *             cdef char* f = NULL
 *             cdef dtype descr = self.descr             # <<<<<<<<<<<<<<
 *             cdef list stack
 *             cdef int offset
 */
  __Pyx_INCREF(((PyObject *)((PyArrayObject *)__pyx_v_self)->descr));
  __pyx_v_descr = ((PyArrayObject *)__pyx_v_self)->descr;

  /* "numpy.pxd":245
 *             cdef int offset
 * 
 *             cdef bint hasfields = PyDataType_HASFIELDS(descr)             # <<<<<<<<<<<<<<
 * 
 *             if not hasfields and not copy_shape:
 */
  __pyx_v_hasfields = PyDataType_HASFIELDS(__pyx_v_descr);

  /* "numpy.pxd":247
 *             cdef bint hasfields = PyDataType_HASFIELDS(descr)
 * 
 *             if not hasfields and not copy_shape:             # <<<<<<<<<<<<<<
 *                 # do not call releasebuffer
 *                 info.obj = None
 */
  __pyx_t_2 = (!__pyx_v_hasfields);
  if (__pyx_t_2) {
    __pyx_t_3 = (!__pyx_v_copy_shape);
    __pyx_t_1 = __pyx_t_3;
  } else {
    __pyx_t_1 = __pyx_t_2;
  }
  if (__pyx_t_1) {

    /* "numpy.pxd":249
 *             if not hasfields and not copy_shape:
 *                 # do not call releasebuffer
 *                 info.obj = None             # <<<<<<<<<<<<<<
 *             else:
 *                 # need to call releasebuffer
 */
    __Pyx_INCREF(Py_None);
    __Pyx_GIVEREF(Py_None);
    __Pyx_GOTREF(__pyx_v_info->obj);
    __Pyx_DECREF(__pyx_v_info->obj);
    __pyx_v_info->obj = Py_None;
    goto __pyx_L12;
  }
  /*else*/ {

    /* "numpy.pxd":252
 *             else:
 *                 # need to call releasebuffer
 *                 info.obj = self             # <<<<<<<<<<<<<<
 * 
 *             if not hasfields:
 */
    __Pyx_INCREF(__pyx_v_self);
    __Pyx_GIVEREF(__pyx_v_self);
    __Pyx_GOTREF(__pyx_v_info->obj);
    __Pyx_DECREF(__pyx_v_info->obj);
    __pyx_v_info->obj = __pyx_v_self;
  }
  __pyx_L12:;

  /* "numpy.pxd":254
 *                 info.obj = self
 * 
 *             if not hasfields:             # <<<<<<<<<<<<<<
 *                 t = descr.type_num
 *                 if ((descr.byteorder == '>' and little_endian) or
 */
  __pyx_t_1 = (!__pyx_v_hasfields);
  if (__pyx_t_1) {

    /* "numpy.pxd":255
 * 
 *             if not hasfields:
 *                 t = descr.type_num             # <<<<<<<<<<<<<<
 *                 if ((descr.byteorder == '>' and little_endian) or
 *                     (descr.byteorder == '<' and not little_endian)):
 */
    __pyx_v_t = __pyx_v_descr->type_num;

    /* "numpy.pxd":256
 *             if not hasfields:
 *                 t = descr.type_num
 *                 if ((descr.byteorder == '>' and little_endian) or             # <<<<<<<<<<<<<<
 *                     (descr.byteorder == '<' and not little_endian)):
 *                     raise ValueError(u"Non-native byte order not supported")
 */
    __pyx_t_1 = (__pyx_v_descr->byteorder == '>');
    if (__pyx_t_1) {
      __pyx_t_2 = __pyx_v_little_endian;
    } else {
      __pyx_t_2 = __pyx_t_1;
    }
    if (!__pyx_t_2) {

      /* "numpy.pxd":257
 *                 t = descr.type_num
 *                 if ((descr.byteorder == '>' and little_endian) or
 *                     (descr.byteorder == '<' and not little_endian)):             # <<<<<<<<<<<<<<
 *                     raise ValueError(u"Non-native byte order not supported")
 *                 if   t == NPY_BYTE:        f = "b"
 */
      __pyx_t_1 = (__pyx_v_descr->byteorder == '<');
      if (__pyx_t_1) {
        __pyx_t_3 = (!__pyx_v_little_endian);
        __pyx_t_7 = __pyx_t_3;
      } else {
        __pyx_t_7 = __pyx_t_1;
      }
      __pyx_t_1 = __pyx_t_7;
    } else {
      __pyx_t_1 = __pyx_t_2;
    }
    if (__pyx_t_1) {

      /* "numpy.pxd":258
 *                 if ((descr.byteorder == '>' and little_endian) or
 *                     (descr.byteorder == '<' and not little_endian)):
 *                     raise ValueError(u"Non-native byte order not supported")             # <<<<<<<<<<<<<<
 *                 if   t == NPY_BYTE:        f = "b"
 *                 elif t == NPY_UBYTE:       f = "B"
 */
      __pyx_t_4 = PyObject_Call(__pyx_builtin_ValueError, ((PyObject *)__pyx_k_tuple_95), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 258; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_Raise(__pyx_t_4, 0, 0, 0);
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      {__pyx_filename = __pyx_f[1]; __pyx_lineno = 258; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      goto __pyx_L14;
    }
    __pyx_L14:;

    /* "numpy.pxd":259
 *                     (descr.byteorder == '<' and not little_endian)):
 *                     raise ValueError(u"Non-native byte order not supported")
 *                 if   t == NPY_BYTE:        f = "b"             # <<<<<<<<<<<<<<
 *                 elif t == NPY_UBYTE:       f = "B"
 *                 elif t == NPY_SHORT:       f = "h"
 */
    __pyx_t_1 = (__pyx_v_t == NPY_BYTE);
    if (__pyx_t_1) {
      __pyx_v_f = __pyx_k__b;
      goto __pyx_L15;
    }

    /* "numpy.pxd":260
 *                     raise ValueError(u"Non-native byte order not supported")
 *                 if   t == NPY_BYTE:        f = "b"
 *                 elif t == NPY_UBYTE:       f = "B"             # <<<<<<<<<<<<<<
 *                 elif t == NPY_SHORT:       f = "h"
 *                 elif t == NPY_USHORT:      f = "H"
 */
    __pyx_t_1 = (__pyx_v_t == NPY_UBYTE);
    if (__pyx_t_1) {
      __pyx_v_f = __pyx_k__B;
      goto __pyx_L15;
    }

    /* "numpy.pxd":261
 *                 if   t == NPY_BYTE:        f = "b"
 *                 elif t == NPY_UBYTE:       f = "B"
 *                 elif t == NPY_SHORT:       f = "h"             # <<<<<<<<<<<<<<
 *                 elif t == NPY_USHORT:      f = "H"
 *                 elif t == NPY_INT:         f = "i"
 */
    __pyx_t_1 = (__pyx_v_t == NPY_SHORT);
    if (__pyx_t_1) {
      __pyx_v_f = __pyx_k__h;
      goto __pyx_L15;
    }

    /* "numpy.pxd":262
 *                 elif t == NPY_UBYTE:       f = "B"
 *                 elif t == NPY_SHORT:       f = "h"
 *                 elif t == NPY_USHORT:      f = "H"             # <<<<<<<<<<<<<<
 *                 elif t == NPY_INT:         f = "i"
 *                 elif t == NPY_UINT:        f = "I"
 */
    __pyx_t_1 = (__pyx_v_t == NPY_USHORT);
    if (__pyx_t_1) {
      __pyx_v_f = __pyx_k__H;
      goto __pyx_L15;
    }

    /* "numpy.pxd":263
 *                 elif t == NPY_SHORT:       f = "h"
 *                 elif t == NPY_USHORT:      f = "H"
 *                 elif t == NPY_INT:         f = "i"             # <<<<<<<<<<<<<<
 *                 elif t == NPY_UINT:        f = "I"
 *                 elif t == NPY_LONG:        f = "l"
 */
    __pyx_t_1 = (__pyx_v_t == NPY_INT);
    if (__pyx_t_1) {
      __pyx_v_f = __pyx_k__i;
      goto __pyx_L15;
    }

    /* "numpy.pxd":264
 *                 elif t == NPY_USHORT:      f = "H"
 *                 elif t == NPY_INT:         f = "i"
 *                 elif t == NPY_UINT:        f = "I"             # <<<<<<<<<<<<<<
 *                 elif t == NPY_LONG:        f = "l"
 *                 elif t == NPY_ULONG:       f = "L"
 */
    __pyx_t_1 = (__pyx_v_t == NPY_UINT);
    if (__pyx_t_1) {
      __pyx_v_f = __pyx_k__I;
      goto __pyx_L15;
    }

    /* "numpy.pxd":265
 *                 elif t == NPY_INT:         f = "i"
 *                 elif t == NPY_UINT:        f = "I"
 *                 elif t == NPY_LONG:        f = "l"             # <<<<<<<<<<<<<<
 *                 elif t == NPY_ULONG:       f = "L"
 *                 elif t == NPY_LONGLONG:    f = "q"
 */
    __pyx_t_1 = (__pyx_v_t == NPY_LONG);
    if (__pyx_t_1) {
      __pyx_v_f = __pyx_k__l;
      goto __pyx_L15;
    }

    /* "numpy.pxd":266
 *                 elif t == NPY_UINT:        f = "I"
 *                 elif t == NPY_LONG:        f = "l"
 *                 elif t == NPY_ULONG:       f = "L"             # <<<<<<<<<<<<<<
 *                 elif t == NPY_LONGLONG:    f = "q"
 *                 elif t == NPY_ULONGLONG:   f = "Q"
 */
    __pyx_t_1 = (__pyx_v_t == NPY_ULONG);
    if (__pyx_t_1) {
      __pyx_v_f = __pyx_k__L;
      goto __pyx_L15;
    }

    /* "numpy.pxd":267
 *                 elif t == NPY_LONG:        f = "l"
 *                 elif t == NPY_ULONG:       f = "L"
 *                 elif t == NPY_LONGLONG:    f = "q"             # <<<<<<<<<<<<<<
 *                 elif t == NPY_ULONGLONG:   f = "Q"
 *                 elif t == NPY_FLOAT:       f = "f"
 */
    __pyx_t_1 = (__pyx_v_t == NPY_LONGLONG);
    if (__pyx_t_1) {
      __pyx_v_f = __pyx_k__q;
      goto __pyx_L15;
    }

    /* "numpy.pxd":268
 *                 elif t == NPY_ULONG:       f = "L"
 *                 elif t == NPY_LONGLONG:    f = "q"
 *                 elif t == NPY_ULONGLONG:   f = "Q"             # <<<<<<<<<<<<<<
 *                 elif t == NPY_FLOAT:       f = "f"
 *                 elif t == NPY_DOUBLE:      f = "d"
 */
    __pyx_t_1 = (__pyx_v_t == NPY_ULONGLONG);
    if (__pyx_t_1) {
      __pyx_v_f = __pyx_k__Q;
      goto __pyx_L15;
    }

    /* "numpy.pxd":269
 *                 elif t == NPY_LONGLONG:    f = "q"
 *                 elif t == NPY_ULONGLONG:   f = "Q"
 *                 elif t == NPY_FLOAT:       f = "f"             # <<<<<<<<<<<<<<
 *                 elif t == NPY_DOUBLE:      f = "d"
 *                 elif t == NPY_LONGDOUBLE:  f = "g"
 */
    __pyx_t_1 = (__pyx_v_t == NPY_FLOAT);
    if (__pyx_t_1) {
      __pyx_v_f = __pyx_k__f;
      goto __pyx_L15;
    }

    /* "numpy.pxd":270
 *                 elif t == NPY_ULONGLONG:   f = "Q"
 *                 elif t == NPY_FLOAT:       f = "f"
 *                 elif t == NPY_DOUBLE:      f = "d"             # <<<<<<<<<<<<<<
 *                 elif t == NPY_LONGDOUBLE:  f = "g"
 *                 elif t == NPY_CFLOAT:      f = "Zf"
 */
    __pyx_t_1 = (__pyx_v_t == NPY_DOUBLE);
    if (__pyx_t_1) {
      __pyx_v_f = __pyx_k__d;
      goto __pyx_L15;
    }

    /* "numpy.pxd":271
 *                 elif t == NPY_FLOAT:       f = "f"
 *                 elif t == NPY_DOUBLE:      f = "d"
 *                 elif t == NPY_LONGDOUBLE:  f = "g"             # <<<<<<<<<<<<<<
 *                 elif t == NPY_CFLOAT:      f = "Zf"
 *                 elif t == NPY_CDOUBLE:     f = "Zd"
 */
    __pyx_t_1 = (__pyx_v_t == NPY_LONGDOUBLE);
    if (__pyx_t_1) {
      __pyx_v_f = __pyx_k__g;
      goto __pyx_L15;
    }

    /* "numpy.pxd":272
 *                 elif t == NPY_DOUBLE:      f = "d"
 *                 elif t == NPY_LONGDOUBLE:  f = "g"
 *                 elif t == NPY_CFLOAT:      f = "Zf"             # <<<<<<<<<<<<<<
 *                 elif t == NPY_CDOUBLE:     f = "Zd"
 *                 elif t == NPY_CLONGDOUBLE: f = "Zg"
 */
    __pyx_t_1 = (__pyx_v_t == NPY_CFLOAT);
    if (__pyx_t_1) {
      __pyx_v_f = __pyx_k__Zf;
      goto __pyx_L15;
    }

    /* "numpy.pxd":273
 *                 elif t == NPY_LONGDOUBLE:  f = "g"
 *                 elif t == NPY_CFLOAT:      f = "Zf"
 *                 elif t == NPY_CDOUBLE:     f = "Zd"             # <<<<<<<<<<<<<<
 *                 elif t == NPY_CLONGDOUBLE: f = "Zg"
 *                 elif t == NPY_OBJECT:      f = "O"
 */
    __pyx_t_1 = (__pyx_v_t == NPY_CDOUBLE);
    if (__pyx_t_1) {
      __pyx_v_f = __pyx_k__Zd;
      goto __pyx_L15;
    }

    /* "numpy.pxd":274
 *                 elif t == NPY_CFLOAT:      f = "Zf"
 *                 elif t == NPY_CDOUBLE:     f = "Zd"
 *                 elif t == NPY_CLONGDOUBLE: f = "Zg"             # <<<<<<<<<<<<<<
 *                 elif t == NPY_OBJECT:      f = "O"
 *                 else:
 */
    __pyx_t_1 = (__pyx_v_t == NPY_CLONGDOUBLE);
    if (__pyx_t_1) {
      __pyx_v_f = __pyx_k__Zg;
      goto __pyx_L15;
    }

    /* "numpy.pxd":275
 *                 elif t == NPY_CDOUBLE:     f = "Zd"
 *                 elif t == NPY_CLONGDOUBLE: f = "Zg"
 *                 elif t == NPY_OBJECT:      f = "O"             # <<<<<<<<<<<<<<
 *                 else:
 *                     raise ValueError(u"unknown dtype code in numpy.pxd (%d)" % t)
 */
    __pyx_t_1 = (__pyx_v_t == NPY_OBJECT);
    if (__pyx_t_1) {
      __pyx_v_f = __pyx_k__O;
      goto __pyx_L15;
    }
    /*else*/ {

      /* "numpy.pxd":277
 *                 elif t == NPY_OBJECT:      f = "O"
 *                 else:
 *                     raise ValueError(u"unknown dtype code in numpy.pxd (%d)" % t)             # <<<<<<<<<<<<<<
 *                 info.format = f
 *                 return
 */
      __pyx_t_4 = PyInt_FromLong(__pyx_v_t); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 277; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_4);
      __pyx_t_8 = PyNumber_Remainder(((PyObject *)__pyx_kp_u_96), __pyx_t_4); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 277; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(((PyObject *)__pyx_t_8));
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 277; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(((PyObject *)__pyx_t_4));
      PyTuple_SET_ITEM(__pyx_t_4, 0, ((PyObject *)__pyx_t_8));
      __Pyx_GIVEREF(((PyObject *)__pyx_t_8));
      __pyx_t_8 = 0;
      __pyx_t_8 = PyObject_Call(__pyx_builtin_ValueError, ((PyObject *)__pyx_t_4), NULL); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 277; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_8);
      __Pyx_DECREF(((PyObject *)__pyx_t_4)); __pyx_t_4 = 0;
      __Pyx_Raise(__pyx_t_8, 0, 0, 0);
      __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
      {__pyx_filename = __pyx_f[1]; __pyx_lineno = 277; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    }
    __pyx_L15:;

    /* "numpy.pxd":278
 *                 else:
 *                     raise ValueError(u"unknown dtype code in numpy.pxd (%d)" % t)
 *                 info.format = f             # <<<<<<<<<<<<<<
 *                 return
 *             else:
 */
    __pyx_v_info->format = __pyx_v_f;

    /* "numpy.pxd":279
 *                     raise ValueError(u"unknown dtype code in numpy.pxd (%d)" % t)
 *                 info.format = f
 *                 return             # <<<<<<<<<<<<<<
 *             else:
 *                 info.format = <char*>stdlib.malloc(_buffer_format_string_len)
 */
    __pyx_r = 0;
    goto __pyx_L0;
    goto __pyx_L13;
  }
  /*else*/ {

    /* "numpy.pxd":281
 *                 return
 *             else:
 *                 info.format = <char*>stdlib.malloc(_buffer_format_string_len)             # <<<<<<<<<<<<<<
 *                 info.format[0] = '^' # Native data types, manual alignment
 *                 offset = 0
 */
    __pyx_v_info->format = ((char *)malloc(255));

    /* "numpy.pxd":282
 *             else:
 *                 info.format = <char*>stdlib.malloc(_buffer_format_string_len)
 *                 info.format[0] = '^' # Native data types, manual alignment             # <<<<<<<<<<<<<<
 *                 offset = 0
 *                 f = _util_dtypestring(descr, info.format + 1,
 */
    (__pyx_v_info->format[0]) = '^';

    /* "numpy.pxd":283
 *                 info.format = <char*>stdlib.malloc(_buffer_format_string_len)
 *                 info.format[0] = '^' # Native data types, manual alignment
 *                 offset = 0             # <<<<<<<<<<<<<<
 *                 f = _util_dtypestring(descr, info.format + 1,
 *                                       info.format + _buffer_format_string_len,
 */
    __pyx_v_offset = 0;

    /* "numpy.pxd":286
 *                 f = _util_dtypestring(descr, info.format + 1,
 *                                       info.format + _buffer_format_string_len,
 *                                       &offset)             # <<<<<<<<<<<<<<
 *                 f[0] = 0 # Terminate format string
 * 
 */
    __pyx_t_9 = __pyx_f_5numpy__util_dtypestring(__pyx_v_descr, (__pyx_v_info->format + 1), (__pyx_v_info->format + 255), (&__pyx_v_offset)); if (unlikely(__pyx_t_9 == NULL)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 284; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __pyx_v_f = __pyx_t_9;

    /* "numpy.pxd":287
 *                                       info.format + _buffer_format_string_len,
 *                                       &offset)
 *                 f[0] = 0 # Terminate format string             # <<<<<<<<<<<<<<
 * 
 *         def __releasebuffer__(ndarray self, Py_buffer* info):
 */
    (__pyx_v_f[0]) = 0;
  }
  __pyx_L13:;

  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_AddTraceback("numpy.ndarray.__getbuffer__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  if (__pyx_v_info != NULL && __pyx_v_info->obj != NULL) {
    __Pyx_GOTREF(__pyx_v_info->obj);
    __Pyx_DECREF(__pyx_v_info->obj); __pyx_v_info->obj = NULL;
  }
  goto __pyx_L2;
  __pyx_L0:;
  if (__pyx_v_info != NULL && __pyx_v_info->obj == Py_None) {
    __Pyx_GOTREF(Py_None);
    __Pyx_DECREF(Py_None); __pyx_v_info->obj = NULL;
  }
  __pyx_L2:;
  __Pyx_XDECREF((PyObject *)__pyx_v_descr);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "numpy.pxd":289
 *                 f[0] = 0 # Terminate format string
 * 
 *         def __releasebuffer__(ndarray self, Py_buffer* info):             # <<<<<<<<<<<<<<
 *             if PyArray_HASFIELDS(self):
 *                 stdlib.free(info.format)
 */

static CYTHON_UNUSED void __pyx_pf_5numpy_7ndarray_1__releasebuffer__(PyObject *__pyx_v_self, Py_buffer *__pyx_v_info); /*proto*/
static CYTHON_UNUSED void __pyx_pf_5numpy_7ndarray_1__releasebuffer__(PyObject *__pyx_v_self, Py_buffer *__pyx_v_info) {
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  __Pyx_RefNannySetupContext("__releasebuffer__");

  /* "numpy.pxd":290
 * 
 *         def __releasebuffer__(ndarray self, Py_buffer* info):
 *             if PyArray_HASFIELDS(self):             # <<<<<<<<<<<<<<
 *                 stdlib.free(info.format)
 *             if sizeof(npy_intp) != sizeof(Py_ssize_t):
 */
  __pyx_t_1 = PyArray_HASFIELDS(((PyArrayObject *)__pyx_v_self));
  if (__pyx_t_1) {

    /* "numpy.pxd":291
 *         def __releasebuffer__(ndarray self, Py_buffer* info):
 *             if PyArray_HASFIELDS(self):
 *                 stdlib.free(info.format)             # <<<<<<<<<<<<<<
 *             if sizeof(npy_intp) != sizeof(Py_ssize_t):
 *                 stdlib.free(info.strides)
 */
    free(__pyx_v_info->format);
    goto __pyx_L5;
  }
  __pyx_L5:;

  /* "numpy.pxd":292
 *             if PyArray_HASFIELDS(self):
 *                 stdlib.free(info.format)
 *             if sizeof(npy_intp) != sizeof(Py_ssize_t):             # <<<<<<<<<<<<<<
 *                 stdlib.free(info.strides)
 *                 # info.shape was stored after info.strides in the same block
 */
  __pyx_t_1 = ((sizeof(npy_intp)) != (sizeof(Py_ssize_t)));
  if (__pyx_t_1) {

    /* "numpy.pxd":293
 *                 stdlib.free(info.format)
 *             if sizeof(npy_intp) != sizeof(Py_ssize_t):
 *                 stdlib.free(info.strides)             # <<<<<<<<<<<<<<
 *                 # info.shape was stored after info.strides in the same block
 * 
 */
    free(__pyx_v_info->strides);
    goto __pyx_L6;
  }
  __pyx_L6:;

  __Pyx_RefNannyFinishContext();
}

/* "numpy.pxd":769
 * ctypedef npy_cdouble     complex_t
 * 
 * cdef inline object PyArray_MultiIterNew1(a):             # <<<<<<<<<<<<<<
 *     return PyArray_MultiIterNew(1, <void*>a)
 * 
 */

static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew1(PyObject *__pyx_v_a) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("PyArray_MultiIterNew1");

  /* "numpy.pxd":770
 * 
 * cdef inline object PyArray_MultiIterNew1(a):
 *     return PyArray_MultiIterNew(1, <void*>a)             # <<<<<<<<<<<<<<
 * 
 * cdef inline object PyArray_MultiIterNew2(a, b):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = PyArray_MultiIterNew(1, ((void *)__pyx_v_a)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 770; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("numpy.PyArray_MultiIterNew1", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "numpy.pxd":772
 *     return PyArray_MultiIterNew(1, <void*>a)
 * 
 * cdef inline object PyArray_MultiIterNew2(a, b):             # <<<<<<<<<<<<<<
 *     return PyArray_MultiIterNew(2, <void*>a, <void*>b)
 * 
 */

static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew2(PyObject *__pyx_v_a, PyObject *__pyx_v_b) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("PyArray_MultiIterNew2");

  /* "numpy.pxd":773
 * 
 * cdef inline object PyArray_MultiIterNew2(a, b):
 *     return PyArray_MultiIterNew(2, <void*>a, <void*>b)             # <<<<<<<<<<<<<<
 * 
 * cdef inline object PyArray_MultiIterNew3(a, b, c):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = PyArray_MultiIterNew(2, ((void *)__pyx_v_a), ((void *)__pyx_v_b)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 773; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("numpy.PyArray_MultiIterNew2", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "numpy.pxd":775
 *     return PyArray_MultiIterNew(2, <void*>a, <void*>b)
 * 
 * cdef inline object PyArray_MultiIterNew3(a, b, c):             # <<<<<<<<<<<<<<
 *     return PyArray_MultiIterNew(3, <void*>a, <void*>b, <void*> c)
 * 
 */

static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew3(PyObject *__pyx_v_a, PyObject *__pyx_v_b, PyObject *__pyx_v_c) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("PyArray_MultiIterNew3");

  /* "numpy.pxd":776
 * 
 * cdef inline object PyArray_MultiIterNew3(a, b, c):
 *     return PyArray_MultiIterNew(3, <void*>a, <void*>b, <void*> c)             # <<<<<<<<<<<<<<
 * 
 * cdef inline object PyArray_MultiIterNew4(a, b, c, d):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = PyArray_MultiIterNew(3, ((void *)__pyx_v_a), ((void *)__pyx_v_b), ((void *)__pyx_v_c)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 776; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("numpy.PyArray_MultiIterNew3", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "numpy.pxd":778
 *     return PyArray_MultiIterNew(3, <void*>a, <void*>b, <void*> c)
 * 
 * cdef inline object PyArray_MultiIterNew4(a, b, c, d):             # <<<<<<<<<<<<<<
 *     return PyArray_MultiIterNew(4, <void*>a, <void*>b, <void*>c, <void*> d)
 * 
 */

static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew4(PyObject *__pyx_v_a, PyObject *__pyx_v_b, PyObject *__pyx_v_c, PyObject *__pyx_v_d) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("PyArray_MultiIterNew4");

  /* "numpy.pxd":779
 * 
 * cdef inline object PyArray_MultiIterNew4(a, b, c, d):
 *     return PyArray_MultiIterNew(4, <void*>a, <void*>b, <void*>c, <void*> d)             # <<<<<<<<<<<<<<
 * 
 * cdef inline object PyArray_MultiIterNew5(a, b, c, d, e):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = PyArray_MultiIterNew(4, ((void *)__pyx_v_a), ((void *)__pyx_v_b), ((void *)__pyx_v_c), ((void *)__pyx_v_d)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 779; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("numpy.PyArray_MultiIterNew4", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "numpy.pxd":781
 *     return PyArray_MultiIterNew(4, <void*>a, <void*>b, <void*>c, <void*> d)
 * 
 * cdef inline object PyArray_MultiIterNew5(a, b, c, d, e):             # <<<<<<<<<<<<<<
 *     return PyArray_MultiIterNew(5, <void*>a, <void*>b, <void*>c, <void*> d, <void*> e)
 * 
 */

static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew5(PyObject *__pyx_v_a, PyObject *__pyx_v_b, PyObject *__pyx_v_c, PyObject *__pyx_v_d, PyObject *__pyx_v_e) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("PyArray_MultiIterNew5");

  /* "numpy.pxd":782
 * 
 * cdef inline object PyArray_MultiIterNew5(a, b, c, d, e):
 *     return PyArray_MultiIterNew(5, <void*>a, <void*>b, <void*>c, <void*> d, <void*> e)             # <<<<<<<<<<<<<<
 * 
 * cdef inline char* _util_dtypestring(dtype descr, char* f, char* end, int* offset) except NULL:
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = PyArray_MultiIterNew(5, ((void *)__pyx_v_a), ((void *)__pyx_v_b), ((void *)__pyx_v_c), ((void *)__pyx_v_d), ((void *)__pyx_v_e)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 782; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("numpy.PyArray_MultiIterNew5", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "numpy.pxd":784
 *     return PyArray_MultiIterNew(5, <void*>a, <void*>b, <void*>c, <void*> d, <void*> e)
 * 
 * cdef inline char* _util_dtypestring(dtype descr, char* f, char* end, int* offset) except NULL:             # <<<<<<<<<<<<<<
 *     # Recursive utility function used in __getbuffer__ to get format
 *     # string. The new location in the format string is returned.
 */

static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx_v_descr, char *__pyx_v_f, char *__pyx_v_end, int *__pyx_v_offset) {
  PyArray_Descr *__pyx_v_child = 0;
  int __pyx_v_endian_detector;
  int __pyx_v_little_endian;
  PyObject *__pyx_v_fields = 0;
  PyObject *__pyx_v_childname = NULL;
  PyObject *__pyx_v_new_offset = NULL;
  PyObject *__pyx_v_t = NULL;
  char *__pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  Py_ssize_t __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  int __pyx_t_6;
  int __pyx_t_7;
  int __pyx_t_8;
  int __pyx_t_9;
  long __pyx_t_10;
  char *__pyx_t_11;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("_util_dtypestring");

  /* "numpy.pxd":791
 *     cdef int delta_offset
 *     cdef tuple i
 *     cdef int endian_detector = 1             # <<<<<<<<<<<<<<
 *     cdef bint little_endian = ((<char*>&endian_detector)[0] != 0)
 *     cdef tuple fields
 */
  __pyx_v_endian_detector = 1;

  /* "numpy.pxd":792
 *     cdef tuple i
 *     cdef int endian_detector = 1
 *     cdef bint little_endian = ((<char*>&endian_detector)[0] != 0)             # <<<<<<<<<<<<<<
 *     cdef tuple fields
 * 
 */
  __pyx_v_little_endian = ((((char *)(&__pyx_v_endian_detector))[0]) != 0);

  /* "numpy.pxd":795
 *     cdef tuple fields
 * 
 *     for childname in descr.names:             # <<<<<<<<<<<<<<
 *         fields = descr.fields[childname]
 *         child, new_offset = fields
 */
  if (unlikely(((PyObject *)__pyx_v_descr->names) == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable"); {__pyx_filename = __pyx_f[1]; __pyx_lineno = 795; __pyx_clineno = __LINE__; goto __pyx_L1_error;} 
  }
  __pyx_t_1 = ((PyObject *)__pyx_v_descr->names); __Pyx_INCREF(__pyx_t_1); __pyx_t_2 = 0;
  for (;;) {
    if (__pyx_t_2 >= PyTuple_GET_SIZE(__pyx_t_1)) break;
    __pyx_t_3 = PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_2); __Pyx_INCREF(__pyx_t_3); __pyx_t_2++;
    __Pyx_XDECREF(__pyx_v_childname);
    __pyx_v_childname = __pyx_t_3;
    __pyx_t_3 = 0;

    /* "numpy.pxd":796
 * 
 *     for childname in descr.names:
 *         fields = descr.fields[childname]             # <<<<<<<<<<<<<<
 *         child, new_offset = fields
 * 
 */
    __pyx_t_3 = PyObject_GetItem(__pyx_v_descr->fields, __pyx_v_childname); if (!__pyx_t_3) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 796; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    if (!(likely(PyTuple_CheckExact(__pyx_t_3))||((__pyx_t_3) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected tuple, got %.200s", Py_TYPE(__pyx_t_3)->tp_name), 0))) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 796; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_XDECREF(((PyObject *)__pyx_v_fields));
    __pyx_v_fields = ((PyObject*)__pyx_t_3);
    __pyx_t_3 = 0;

    /* "numpy.pxd":797
 *     for childname in descr.names:
 *         fields = descr.fields[childname]
 *         child, new_offset = fields             # <<<<<<<<<<<<<<
 * 
 *         if (end - f) - (new_offset - offset[0]) < 15:
 */
    if (likely(PyTuple_CheckExact(((PyObject *)__pyx_v_fields)))) {
      PyObject* sequence = ((PyObject *)__pyx_v_fields);
      if (unlikely(PyTuple_GET_SIZE(sequence) != 2)) {
        if (PyTuple_GET_SIZE(sequence) > 2) __Pyx_RaiseTooManyValuesError(2);
        else __Pyx_RaiseNeedMoreValuesError(PyTuple_GET_SIZE(sequence));
        {__pyx_filename = __pyx_f[1]; __pyx_lineno = 797; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      }
      __pyx_t_3 = PyTuple_GET_ITEM(sequence, 0); 
      __pyx_t_4 = PyTuple_GET_ITEM(sequence, 1); 
      __Pyx_INCREF(__pyx_t_3);
      __Pyx_INCREF(__pyx_t_4);
    } else {
      __Pyx_UnpackTupleError(((PyObject *)__pyx_v_fields), 2);
      {__pyx_filename = __pyx_f[1]; __pyx_lineno = 797; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    }
    if (!(likely(((__pyx_t_3) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_3, __pyx_ptype_5numpy_dtype))))) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 797; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_XDECREF(((PyObject *)__pyx_v_child));
    __pyx_v_child = ((PyArray_Descr *)__pyx_t_3);
    __pyx_t_3 = 0;
    __Pyx_XDECREF(__pyx_v_new_offset);
    __pyx_v_new_offset = __pyx_t_4;
    __pyx_t_4 = 0;

    /* "numpy.pxd":799
 *         child, new_offset = fields
 * 
 *         if (end - f) - (new_offset - offset[0]) < 15:             # <<<<<<<<<<<<<<
 *             raise RuntimeError(u"Format string allocated too short, see comment in numpy.pxd")
 * 
 */
    __pyx_t_4 = PyInt_FromLong((__pyx_v_end - __pyx_v_f)); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 799; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_3 = PyInt_FromLong((__pyx_v_offset[0])); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 799; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_5 = PyNumber_Subtract(__pyx_v_new_offset, __pyx_t_3); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 799; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __pyx_t_3 = PyNumber_Subtract(__pyx_t_4, __pyx_t_5); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 799; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __pyx_t_5 = PyObject_RichCompare(__pyx_t_3, __pyx_int_15, Py_LT); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 799; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_5); if (unlikely(__pyx_t_6 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 799; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    if (__pyx_t_6) {

      /* "numpy.pxd":800
 * 
 *         if (end - f) - (new_offset - offset[0]) < 15:
 *             raise RuntimeError(u"Format string allocated too short, see comment in numpy.pxd")             # <<<<<<<<<<<<<<
 * 
 *         if ((child.byteorder == '>' and little_endian) or
 */
      __pyx_t_5 = PyObject_Call(__pyx_builtin_RuntimeError, ((PyObject *)__pyx_k_tuple_98), NULL); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 800; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_5);
      __Pyx_Raise(__pyx_t_5, 0, 0, 0);
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      {__pyx_filename = __pyx_f[1]; __pyx_lineno = 800; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      goto __pyx_L5;
    }
    __pyx_L5:;

    /* "numpy.pxd":802
 *             raise RuntimeError(u"Format string allocated too short, see comment in numpy.pxd")
 * 
 *         if ((child.byteorder == '>' and little_endian) or             # <<<<<<<<<<<<<<
 *             (child.byteorder == '<' and not little_endian)):
 *             raise ValueError(u"Non-native byte order not supported")
 */
    __pyx_t_6 = (__pyx_v_child->byteorder == '>');
    if (__pyx_t_6) {
      __pyx_t_7 = __pyx_v_little_endian;
    } else {
      __pyx_t_7 = __pyx_t_6;
    }
    if (!__pyx_t_7) {

      /* "numpy.pxd":803
 * 
 *         if ((child.byteorder == '>' and little_endian) or
 *             (child.byteorder == '<' and not little_endian)):             # <<<<<<<<<<<<<<
 *             raise ValueError(u"Non-native byte order not supported")
 *             # One could encode it in the format string and have Cython
 */
      __pyx_t_6 = (__pyx_v_child->byteorder == '<');
      if (__pyx_t_6) {
        __pyx_t_8 = (!__pyx_v_little_endian);
        __pyx_t_9 = __pyx_t_8;
      } else {
        __pyx_t_9 = __pyx_t_6;
      }
      __pyx_t_6 = __pyx_t_9;
    } else {
      __pyx_t_6 = __pyx_t_7;
    }
    if (__pyx_t_6) {

      /* "numpy.pxd":804
 *         if ((child.byteorder == '>' and little_endian) or
 *             (child.byteorder == '<' and not little_endian)):
 *             raise ValueError(u"Non-native byte order not supported")             # <<<<<<<<<<<<<<
 *             # One could encode it in the format string and have Cython
 *             # complain instead, BUT: < and > in format strings also imply
 */
      __pyx_t_5 = PyObject_Call(__pyx_builtin_ValueError, ((PyObject *)__pyx_k_tuple_99), NULL); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 804; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_5);
      __Pyx_Raise(__pyx_t_5, 0, 0, 0);
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      {__pyx_filename = __pyx_f[1]; __pyx_lineno = 804; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      goto __pyx_L6;
    }
    __pyx_L6:;

    /* "numpy.pxd":814
 * 
 *         # Output padding bytes
 *         while offset[0] < new_offset:             # <<<<<<<<<<<<<<
 *             f[0] = 120 # "x"; pad byte
 *             f += 1
 */
    while (1) {
      __pyx_t_5 = PyInt_FromLong((__pyx_v_offset[0])); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 814; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_5);
      __pyx_t_3 = PyObject_RichCompare(__pyx_t_5, __pyx_v_new_offset, Py_LT); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 814; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_6 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 814; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      if (!__pyx_t_6) break;

      /* "numpy.pxd":815
 *         # Output padding bytes
 *         while offset[0] < new_offset:
 *             f[0] = 120 # "x"; pad byte             # <<<<<<<<<<<<<<
 *             f += 1
 *             offset[0] += 1
 */
      (__pyx_v_f[0]) = 120;

      /* "numpy.pxd":816
 *         while offset[0] < new_offset:
 *             f[0] = 120 # "x"; pad byte
 *             f += 1             # <<<<<<<<<<<<<<
 *             offset[0] += 1
 * 
 */
      __pyx_v_f = (__pyx_v_f + 1);

      /* "numpy.pxd":817
 *             f[0] = 120 # "x"; pad byte
 *             f += 1
 *             offset[0] += 1             # <<<<<<<<<<<<<<
 * 
 *         offset[0] += child.itemsize
 */
      __pyx_t_10 = 0;
      (__pyx_v_offset[__pyx_t_10]) = ((__pyx_v_offset[__pyx_t_10]) + 1);
    }

    /* "numpy.pxd":819
 *             offset[0] += 1
 * 
 *         offset[0] += child.itemsize             # <<<<<<<<<<<<<<
 * 
 *         if not PyDataType_HASFIELDS(child):
 */
    __pyx_t_10 = 0;
    (__pyx_v_offset[__pyx_t_10]) = ((__pyx_v_offset[__pyx_t_10]) + __pyx_v_child->elsize);

    /* "numpy.pxd":821
 *         offset[0] += child.itemsize
 * 
 *         if not PyDataType_HASFIELDS(child):             # <<<<<<<<<<<<<<
 *             t = child.type_num
 *             if end - f < 5:
 */
    __pyx_t_6 = (!PyDataType_HASFIELDS(__pyx_v_child));
    if (__pyx_t_6) {

      /* "numpy.pxd":822
 * 
 *         if not PyDataType_HASFIELDS(child):
 *             t = child.type_num             # <<<<<<<<<<<<<<
 *             if end - f < 5:
 *                 raise RuntimeError(u"Format string allocated too short.")
 */
      __pyx_t_3 = PyInt_FromLong(__pyx_v_child->type_num); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 822; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_XDECREF(__pyx_v_t);
      __pyx_v_t = __pyx_t_3;
      __pyx_t_3 = 0;

      /* "numpy.pxd":823
 *         if not PyDataType_HASFIELDS(child):
 *             t = child.type_num
 *             if end - f < 5:             # <<<<<<<<<<<<<<
 *                 raise RuntimeError(u"Format string allocated too short.")
 * 
 */
      __pyx_t_6 = ((__pyx_v_end - __pyx_v_f) < 5);
      if (__pyx_t_6) {

        /* "numpy.pxd":824
 *             t = child.type_num
 *             if end - f < 5:
 *                 raise RuntimeError(u"Format string allocated too short.")             # <<<<<<<<<<<<<<
 * 
 *             # Until ticket #99 is fixed, use integers to avoid warnings
 */
        __pyx_t_3 = PyObject_Call(__pyx_builtin_RuntimeError, ((PyObject *)__pyx_k_tuple_101), NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 824; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_GOTREF(__pyx_t_3);
        __Pyx_Raise(__pyx_t_3, 0, 0, 0);
        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
        {__pyx_filename = __pyx_f[1]; __pyx_lineno = 824; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        goto __pyx_L10;
      }
      __pyx_L10:;

      /* "numpy.pxd":827
 * 
 *             # Until ticket #99 is fixed, use integers to avoid warnings
 *             if   t == NPY_BYTE:        f[0] =  98 #"b"             # <<<<<<<<<<<<<<
 *             elif t == NPY_UBYTE:       f[0] =  66 #"B"
 *             elif t == NPY_SHORT:       f[0] = 104 #"h"
 */
      __pyx_t_3 = PyInt_FromLong(NPY_BYTE); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 827; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_3);
      __pyx_t_5 = PyObject_RichCompare(__pyx_v_t, __pyx_t_3, Py_EQ); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 827; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_5);
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_5); if (unlikely(__pyx_t_6 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 827; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      if (__pyx_t_6) {
        (__pyx_v_f[0]) = 98;
        goto __pyx_L11;
      }

      /* "numpy.pxd":828
 *             # Until ticket #99 is fixed, use integers to avoid warnings
 *             if   t == NPY_BYTE:        f[0] =  98 #"b"
 *             elif t == NPY_UBYTE:       f[0] =  66 #"B"             # <<<<<<<<<<<<<<
 *             elif t == NPY_SHORT:       f[0] = 104 #"h"
 *             elif t == NPY_USHORT:      f[0] =  72 #"H"
 */
      __pyx_t_5 = PyInt_FromLong(NPY_UBYTE); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 828; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_5);
      __pyx_t_3 = PyObject_RichCompare(__pyx_v_t, __pyx_t_5, Py_EQ); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 828; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_6 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 828; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      if (__pyx_t_6) {
        (__pyx_v_f[0]) = 66;
        goto __pyx_L11;
      }

      /* "numpy.pxd":829
 *             if   t == NPY_BYTE:        f[0] =  98 #"b"
 *             elif t == NPY_UBYTE:       f[0] =  66 #"B"
 *             elif t == NPY_SHORT:       f[0] = 104 #"h"             # <<<<<<<<<<<<<<
 *             elif t == NPY_USHORT:      f[0] =  72 #"H"
 *             elif t == NPY_INT:         f[0] = 105 #"i"
 */
      __pyx_t_3 = PyInt_FromLong(NPY_SHORT); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 829; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_3);
      __pyx_t_5 = PyObject_RichCompare(__pyx_v_t, __pyx_t_3, Py_EQ); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 829; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_5);
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_5); if (unlikely(__pyx_t_6 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 829; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      if (__pyx_t_6) {
        (__pyx_v_f[0]) = 104;
        goto __pyx_L11;
      }

      /* "numpy.pxd":830
 *             elif t == NPY_UBYTE:       f[0] =  66 #"B"
 *             elif t == NPY_SHORT:       f[0] = 104 #"h"
 *             elif t == NPY_USHORT:      f[0] =  72 #"H"             # <<<<<<<<<<<<<<
 *             elif t == NPY_INT:         f[0] = 105 #"i"
 *             elif t == NPY_UINT:        f[0] =  73 #"I"
 */
      __pyx_t_5 = PyInt_FromLong(NPY_USHORT); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 830; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_5);
      __pyx_t_3 = PyObject_RichCompare(__pyx_v_t, __pyx_t_5, Py_EQ); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 830; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_6 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 830; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      if (__pyx_t_6) {
        (__pyx_v_f[0]) = 72;
        goto __pyx_L11;
      }

      /* "numpy.pxd":831
 *             elif t == NPY_SHORT:       f[0] = 104 #"h"
 *             elif t == NPY_USHORT:      f[0] =  72 #"H"
 *             elif t == NPY_INT:         f[0] = 105 #"i"             # <<<<<<<<<<<<<<
 *             elif t == NPY_UINT:        f[0] =  73 #"I"
 *             elif t == NPY_LONG:        f[0] = 108 #"l"
 */
      __pyx_t_3 = PyInt_FromLong(NPY_INT); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 831; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_3);
      __pyx_t_5 = PyObject_RichCompare(__pyx_v_t, __pyx_t_3, Py_EQ); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 831; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_5);
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_5); if (unlikely(__pyx_t_6 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 831; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      if (__pyx_t_6) {
        (__pyx_v_f[0]) = 105;
        goto __pyx_L11;
      }

      /* "numpy.pxd":832
 *             elif t == NPY_USHORT:      f[0] =  72 #"H"
 *             elif t == NPY_INT:         f[0] = 105 #"i"
 *             elif t == NPY_UINT:        f[0] =  73 #"I"             # <<<<<<<<<<<<<<
 *             elif t == NPY_LONG:        f[0] = 108 #"l"
 *             elif t == NPY_ULONG:       f[0] = 76  #"L"
 */
      __pyx_t_5 = PyInt_FromLong(NPY_UINT); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 832; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_5);
      __pyx_t_3 = PyObject_RichCompare(__pyx_v_t, __pyx_t_5, Py_EQ); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 832; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_6 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 832; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      if (__pyx_t_6) {
        (__pyx_v_f[0]) = 73;
        goto __pyx_L11;
      }

      /* "numpy.pxd":833
 *             elif t == NPY_INT:         f[0] = 105 #"i"
 *             elif t == NPY_UINT:        f[0] =  73 #"I"
 *             elif t == NPY_LONG:        f[0] = 108 #"l"             # <<<<<<<<<<<<<<
 *             elif t == NPY_ULONG:       f[0] = 76  #"L"
 *             elif t == NPY_LONGLONG:    f[0] = 113 #"q"
 */
      __pyx_t_3 = PyInt_FromLong(NPY_LONG); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 833; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_3);
      __pyx_t_5 = PyObject_RichCompare(__pyx_v_t, __pyx_t_3, Py_EQ); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 833; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_5);
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_5); if (unlikely(__pyx_t_6 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 833; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      if (__pyx_t_6) {
        (__pyx_v_f[0]) = 108;
        goto __pyx_L11;
      }

      /* "numpy.pxd":834
 *             elif t == NPY_UINT:        f[0] =  73 #"I"
 *             elif t == NPY_LONG:        f[0] = 108 #"l"
 *             elif t == NPY_ULONG:       f[0] = 76  #"L"             # <<<<<<<<<<<<<<
 *             elif t == NPY_LONGLONG:    f[0] = 113 #"q"
 *             elif t == NPY_ULONGLONG:   f[0] = 81  #"Q"
 */
      __pyx_t_5 = PyInt_FromLong(NPY_ULONG); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 834; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_5);
      __pyx_t_3 = PyObject_RichCompare(__pyx_v_t, __pyx_t_5, Py_EQ); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 834; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_6 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 834; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      if (__pyx_t_6) {
        (__pyx_v_f[0]) = 76;
        goto __pyx_L11;
      }

      /* "numpy.pxd":835
 *             elif t == NPY_LONG:        f[0] = 108 #"l"
 *             elif t == NPY_ULONG:       f[0] = 76  #"L"
 *             elif t == NPY_LONGLONG:    f[0] = 113 #"q"             # <<<<<<<<<<<<<<
 *             elif t == NPY_ULONGLONG:   f[0] = 81  #"Q"
 *             elif t == NPY_FLOAT:       f[0] = 102 #"f"
 */
      __pyx_t_3 = PyInt_FromLong(NPY_LONGLONG); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 835; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_3);
      __pyx_t_5 = PyObject_RichCompare(__pyx_v_t, __pyx_t_3, Py_EQ); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 835; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_5);
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_5); if (unlikely(__pyx_t_6 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 835; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      if (__pyx_t_6) {
        (__pyx_v_f[0]) = 113;
        goto __pyx_L11;
      }

      /* "numpy.pxd":836
 *             elif t == NPY_ULONG:       f[0] = 76  #"L"
 *             elif t == NPY_LONGLONG:    f[0] = 113 #"q"
 *             elif t == NPY_ULONGLONG:   f[0] = 81  #"Q"             # <<<<<<<<<<<<<<
 *             elif t == NPY_FLOAT:       f[0] = 102 #"f"
 *             elif t == NPY_DOUBLE:      f[0] = 100 #"d"
 */
      __pyx_t_5 = PyInt_FromLong(NPY_ULONGLONG); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 836; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_5);
      __pyx_t_3 = PyObject_RichCompare(__pyx_v_t, __pyx_t_5, Py_EQ); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 836; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_6 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 836; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      if (__pyx_t_6) {
        (__pyx_v_f[0]) = 81;
        goto __pyx_L11;
      }

      /* "numpy.pxd":837
 *             elif t == NPY_LONGLONG:    f[0] = 113 #"q"
 *             elif t == NPY_ULONGLONG:   f[0] = 81  #"Q"
 *             elif t == NPY_FLOAT:       f[0] = 102 #"f"             # <<<<<<<<<<<<<<
 *             elif t == NPY_DOUBLE:      f[0] = 100 #"d"
 *             elif t == NPY_LONGDOUBLE:  f[0] = 103 #"g"
 */
      __pyx_t_3 = PyInt_FromLong(NPY_FLOAT); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 837; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_3);
      __pyx_t_5 = PyObject_RichCompare(__pyx_v_t, __pyx_t_3, Py_EQ); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 837; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_5);
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_5); if (unlikely(__pyx_t_6 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 837; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      if (__pyx_t_6) {
        (__pyx_v_f[0]) = 102;
        goto __pyx_L11;
      }

      /* "numpy.pxd":838
 *             elif t == NPY_ULONGLONG:   f[0] = 81  #"Q"
 *             elif t == NPY_FLOAT:       f[0] = 102 #"f"
 *             elif t == NPY_DOUBLE:      f[0] = 100 #"d"             # <<<<<<<<<<<<<<
 *             elif t == NPY_LONGDOUBLE:  f[0] = 103 #"g"
 *             elif t == NPY_CFLOAT:      f[0] = 90; f[1] = 102; f += 1 # Zf
 */
      __pyx_t_5 = PyInt_FromLong(NPY_DOUBLE); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 838; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_5);
      __pyx_t_3 = PyObject_RichCompare(__pyx_v_t, __pyx_t_5, Py_EQ); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 838; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_6 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 838; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      if (__pyx_t_6) {
        (__pyx_v_f[0]) = 100;
        goto __pyx_L11;
      }

      /* "numpy.pxd":839
 *             elif t == NPY_FLOAT:       f[0] = 102 #"f"
 *             elif t == NPY_DOUBLE:      f[0] = 100 #"d"
 *             elif t == NPY_LONGDOUBLE:  f[0] = 103 #"g"             # <<<<<<<<<<<<<<
 *             elif t == NPY_CFLOAT:      f[0] = 90; f[1] = 102; f += 1 # Zf
 *             elif t == NPY_CDOUBLE:     f[0] = 90; f[1] = 100; f += 1 # Zd
 */
      __pyx_t_3 = PyInt_FromLong(NPY_LONGDOUBLE); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 839; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_3);
      __pyx_t_5 = PyObject_RichCompare(__pyx_v_t, __pyx_t_3, Py_EQ); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 839; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_5);
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_5); if (unlikely(__pyx_t_6 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 839; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      if (__pyx_t_6) {
        (__pyx_v_f[0]) = 103;
        goto __pyx_L11;
      }

      /* "numpy.pxd":840
 *             elif t == NPY_DOUBLE:      f[0] = 100 #"d"
 *             elif t == NPY_LONGDOUBLE:  f[0] = 103 #"g"
 *             elif t == NPY_CFLOAT:      f[0] = 90; f[1] = 102; f += 1 # Zf             # <<<<<<<<<<<<<<
 *             elif t == NPY_CDOUBLE:     f[0] = 90; f[1] = 100; f += 1 # Zd
 *             elif t == NPY_CLONGDOUBLE: f[0] = 90; f[1] = 103; f += 1 # Zg
 */
      __pyx_t_5 = PyInt_FromLong(NPY_CFLOAT); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 840; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_5);
      __pyx_t_3 = PyObject_RichCompare(__pyx_v_t, __pyx_t_5, Py_EQ); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 840; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_6 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 840; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      if (__pyx_t_6) {
        (__pyx_v_f[0]) = 90;
        (__pyx_v_f[1]) = 102;
        __pyx_v_f = (__pyx_v_f + 1);
        goto __pyx_L11;
      }

      /* "numpy.pxd":841
 *             elif t == NPY_LONGDOUBLE:  f[0] = 103 #"g"
 *             elif t == NPY_CFLOAT:      f[0] = 90; f[1] = 102; f += 1 # Zf
 *             elif t == NPY_CDOUBLE:     f[0] = 90; f[1] = 100; f += 1 # Zd             # <<<<<<<<<<<<<<
 *             elif t == NPY_CLONGDOUBLE: f[0] = 90; f[1] = 103; f += 1 # Zg
 *             elif t == NPY_OBJECT:      f[0] = 79 #"O"
 */
      __pyx_t_3 = PyInt_FromLong(NPY_CDOUBLE); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 841; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_3);
      __pyx_t_5 = PyObject_RichCompare(__pyx_v_t, __pyx_t_3, Py_EQ); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 841; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_5);
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_5); if (unlikely(__pyx_t_6 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 841; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      if (__pyx_t_6) {
        (__pyx_v_f[0]) = 90;
        (__pyx_v_f[1]) = 100;
        __pyx_v_f = (__pyx_v_f + 1);
        goto __pyx_L11;
      }

      /* "numpy.pxd":842
 *             elif t == NPY_CFLOAT:      f[0] = 90; f[1] = 102; f += 1 # Zf
 *             elif t == NPY_CDOUBLE:     f[0] = 90; f[1] = 100; f += 1 # Zd
 *             elif t == NPY_CLONGDOUBLE: f[0] = 90; f[1] = 103; f += 1 # Zg             # <<<<<<<<<<<<<<
 *             elif t == NPY_OBJECT:      f[0] = 79 #"O"
 *             else:
 */
      __pyx_t_5 = PyInt_FromLong(NPY_CLONGDOUBLE); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 842; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_5);
      __pyx_t_3 = PyObject_RichCompare(__pyx_v_t, __pyx_t_5, Py_EQ); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 842; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_6 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 842; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      if (__pyx_t_6) {
        (__pyx_v_f[0]) = 90;
        (__pyx_v_f[1]) = 103;
        __pyx_v_f = (__pyx_v_f + 1);
        goto __pyx_L11;
      }

      /* "numpy.pxd":843
 *             elif t == NPY_CDOUBLE:     f[0] = 90; f[1] = 100; f += 1 # Zd
 *             elif t == NPY_CLONGDOUBLE: f[0] = 90; f[1] = 103; f += 1 # Zg
 *             elif t == NPY_OBJECT:      f[0] = 79 #"O"             # <<<<<<<<<<<<<<
 *             else:
 *                 raise ValueError(u"unknown dtype code in numpy.pxd (%d)" % t)
 */
      __pyx_t_3 = PyInt_FromLong(NPY_OBJECT); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 843; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_3);
      __pyx_t_5 = PyObject_RichCompare(__pyx_v_t, __pyx_t_3, Py_EQ); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 843; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_5);
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_5); if (unlikely(__pyx_t_6 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 843; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      if (__pyx_t_6) {
        (__pyx_v_f[0]) = 79;
        goto __pyx_L11;
      }
      /*else*/ {

        /* "numpy.pxd":845
 *             elif t == NPY_OBJECT:      f[0] = 79 #"O"
 *             else:
 *                 raise ValueError(u"unknown dtype code in numpy.pxd (%d)" % t)             # <<<<<<<<<<<<<<
 *             f += 1
 *         else:
 */
        __pyx_t_5 = PyNumber_Remainder(((PyObject *)__pyx_kp_u_96), __pyx_v_t); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 845; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_GOTREF(((PyObject *)__pyx_t_5));
        __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 845; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_GOTREF(((PyObject *)__pyx_t_3));
        PyTuple_SET_ITEM(__pyx_t_3, 0, ((PyObject *)__pyx_t_5));
        __Pyx_GIVEREF(((PyObject *)__pyx_t_5));
        __pyx_t_5 = 0;
        __pyx_t_5 = PyObject_Call(__pyx_builtin_ValueError, ((PyObject *)__pyx_t_3), NULL); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 845; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        __Pyx_GOTREF(__pyx_t_5);
        __Pyx_DECREF(((PyObject *)__pyx_t_3)); __pyx_t_3 = 0;
        __Pyx_Raise(__pyx_t_5, 0, 0, 0);
        __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
        {__pyx_filename = __pyx_f[1]; __pyx_lineno = 845; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      }
      __pyx_L11:;

      /* "numpy.pxd":846
 *             else:
 *                 raise ValueError(u"unknown dtype code in numpy.pxd (%d)" % t)
 *             f += 1             # <<<<<<<<<<<<<<
 *         else:
 *             # Cython ignores struct boundary information ("T{...}"),
 */
      __pyx_v_f = (__pyx_v_f + 1);
      goto __pyx_L9;
    }
    /*else*/ {

      /* "numpy.pxd":850
 *             # Cython ignores struct boundary information ("T{...}"),
 *             # so don't output it
 *             f = _util_dtypestring(child, f, end, offset)             # <<<<<<<<<<<<<<
 *     return f
 * 
 */
      __pyx_t_11 = __pyx_f_5numpy__util_dtypestring(__pyx_v_child, __pyx_v_f, __pyx_v_end, __pyx_v_offset); if (unlikely(__pyx_t_11 == NULL)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 850; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __pyx_v_f = __pyx_t_11;
    }
    __pyx_L9:;
  }
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "numpy.pxd":851
 *             # so don't output it
 *             f = _util_dtypestring(child, f, end, offset)
 *     return f             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_r = __pyx_v_f;
  goto __pyx_L0;

  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("numpy._util_dtypestring", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_child);
  __Pyx_XDECREF(__pyx_v_fields);
  __Pyx_XDECREF(__pyx_v_childname);
  __Pyx_XDECREF(__pyx_v_new_offset);
  __Pyx_XDECREF(__pyx_v_t);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "numpy.pxd":966
 * 
 * 
 * cdef inline void set_array_base(ndarray arr, object base):             # <<<<<<<<<<<<<<
 *      cdef PyObject* baseptr
 *      if base is None:
 */

static CYTHON_INLINE void __pyx_f_5numpy_set_array_base(PyArrayObject *__pyx_v_arr, PyObject *__pyx_v_base) {
  PyObject *__pyx_v_baseptr;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  __Pyx_RefNannySetupContext("set_array_base");

  /* "numpy.pxd":968
 * cdef inline void set_array_base(ndarray arr, object base):
 *      cdef PyObject* baseptr
 *      if base is None:             # <<<<<<<<<<<<<<
 *          baseptr = NULL
 *      else:
 */
  __pyx_t_1 = (__pyx_v_base == Py_None);
  if (__pyx_t_1) {

    /* "numpy.pxd":969
 *      cdef PyObject* baseptr
 *      if base is None:
 *          baseptr = NULL             # <<<<<<<<<<<<<<
 *      else:
 *          Py_INCREF(base) # important to do this before decref below!
 */
    __pyx_v_baseptr = NULL;
    goto __pyx_L3;
  }
  /*else*/ {

    /* "numpy.pxd":971
 *          baseptr = NULL
 *      else:
 *          Py_INCREF(base) # important to do this before decref below!             # <<<<<<<<<<<<<<
 *          baseptr = <PyObject*>base
 *      Py_XDECREF(arr.base)
 */
    Py_INCREF(__pyx_v_base);

    /* "numpy.pxd":972
 *      else:
 *          Py_INCREF(base) # important to do this before decref below!
 *          baseptr = <PyObject*>base             # <<<<<<<<<<<<<<
 *      Py_XDECREF(arr.base)
 *      arr.base = baseptr
 */
    __pyx_v_baseptr = ((PyObject *)__pyx_v_base);
  }
  __pyx_L3:;

  /* "numpy.pxd":973
 *          Py_INCREF(base) # important to do this before decref below!
 *          baseptr = <PyObject*>base
 *      Py_XDECREF(arr.base)             # <<<<<<<<<<<<<<
 *      arr.base = baseptr
 * 
 */
  Py_XDECREF(__pyx_v_arr->base);

  /* "numpy.pxd":974
 *          baseptr = <PyObject*>base
 *      Py_XDECREF(arr.base)
 *      arr.base = baseptr             # <<<<<<<<<<<<<<
 * 
 * cdef inline object get_array_base(ndarray arr):
 */
  __pyx_v_arr->base = __pyx_v_baseptr;

  __Pyx_RefNannyFinishContext();
}

/* "numpy.pxd":976
 *      arr.base = baseptr
 * 
 * cdef inline object get_array_base(ndarray arr):             # <<<<<<<<<<<<<<
 *     if arr.base is NULL:
 *         return None
 */

static CYTHON_INLINE PyObject *__pyx_f_5numpy_get_array_base(PyArrayObject *__pyx_v_arr) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  __Pyx_RefNannySetupContext("get_array_base");

  /* "numpy.pxd":977
 * 
 * cdef inline object get_array_base(ndarray arr):
 *     if arr.base is NULL:             # <<<<<<<<<<<<<<
 *         return None
 *     else:
 */
  __pyx_t_1 = (__pyx_v_arr->base == NULL);
  if (__pyx_t_1) {

    /* "numpy.pxd":978
 * cdef inline object get_array_base(ndarray arr):
 *     if arr.base is NULL:
 *         return None             # <<<<<<<<<<<<<<
 *     else:
 *         return <object>arr.base
 */
    __Pyx_XDECREF(__pyx_r);
    __Pyx_INCREF(Py_None);
    __pyx_r = Py_None;
    goto __pyx_L0;
    goto __pyx_L3;
  }
  /*else*/ {

    /* "numpy.pxd":980
 *         return None
 *     else:
 *         return <object>arr.base             # <<<<<<<<<<<<<<
 */
    __Pyx_XDECREF(__pyx_r);
    __Pyx_INCREF(((PyObject *)__pyx_v_arr->base));
    __pyx_r = ((PyObject *)__pyx_v_arr->base);
    goto __pyx_L0;
  }
  __pyx_L3:;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "util.pxd":18
 *     inline object char_to_string(char*)
 * 
 * cdef inline object get_value_at(ndarray arr, object loc):             # <<<<<<<<<<<<<<
 *     cdef:
 *         Py_ssize_t i, sz
 */

static CYTHON_INLINE PyObject *__pyx_f_4util_get_value_at(PyArrayObject *__pyx_v_arr, PyObject *__pyx_v_loc) {
  Py_ssize_t __pyx_v_i;
  Py_ssize_t __pyx_v_sz;
  PyObject *__pyx_v_casted = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_t_4;
  Py_ssize_t __pyx_t_5;
  int __pyx_t_6;
  int __pyx_t_7;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("get_value_at");
  __Pyx_INCREF(__pyx_v_loc);

  /* "util.pxd":22
 *         Py_ssize_t i, sz
 *         void* data_ptr
 *     if is_float_object(loc):             # <<<<<<<<<<<<<<
 *         casted = int(loc)
 *         if casted == loc:
 */
  __pyx_t_1 = is_float_object(__pyx_v_loc);
  if (__pyx_t_1) {

    /* "util.pxd":23
 *         void* data_ptr
 *     if is_float_object(loc):
 *         casted = int(loc)             # <<<<<<<<<<<<<<
 *         if casted == loc:
 *             loc = casted
 */
    __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 23; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(((PyObject *)__pyx_t_2));
    __Pyx_INCREF(__pyx_v_loc);
    PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_loc);
    __Pyx_GIVEREF(__pyx_v_loc);
    __pyx_t_3 = PyObject_Call(((PyObject *)((PyObject*)(&PyInt_Type))), ((PyObject *)__pyx_t_2), NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 23; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0;
    __pyx_v_casted = __pyx_t_3;
    __pyx_t_3 = 0;

    /* "util.pxd":24
 *     if is_float_object(loc):
 *         casted = int(loc)
 *         if casted == loc:             # <<<<<<<<<<<<<<
 *             loc = casted
 *     i = <Py_ssize_t> loc
 */
    __pyx_t_3 = PyObject_RichCompare(__pyx_v_casted, __pyx_v_loc, Py_EQ); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 24; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_4 < 0)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 24; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (__pyx_t_4) {

      /* "util.pxd":25
 *         casted = int(loc)
 *         if casted == loc:
 *             loc = casted             # <<<<<<<<<<<<<<
 *     i = <Py_ssize_t> loc
 *     sz = cnp.PyArray_SIZE(arr)
 */
      __Pyx_INCREF(__pyx_v_casted);
      __Pyx_DECREF(__pyx_v_loc);
      __pyx_v_loc = __pyx_v_casted;
      goto __pyx_L4;
    }
    __pyx_L4:;
    goto __pyx_L3;
  }
  __pyx_L3:;

  /* "util.pxd":26
 *         if casted == loc:
 *             loc = casted
 *     i = <Py_ssize_t> loc             # <<<<<<<<<<<<<<
 *     sz = cnp.PyArray_SIZE(arr)
 * 
 */
  __pyx_t_5 = __Pyx_PyIndex_AsSsize_t(__pyx_v_loc); if (unlikely((__pyx_t_5 == (Py_ssize_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 26; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_v_i = ((Py_ssize_t)__pyx_t_5);

  /* "util.pxd":27
 *             loc = casted
 *     i = <Py_ssize_t> loc
 *     sz = cnp.PyArray_SIZE(arr)             # <<<<<<<<<<<<<<
 * 
 *     if i < 0 and sz > 0:
 */
  __pyx_v_sz = PyArray_SIZE(__pyx_v_arr);

  /* "util.pxd":29
 *     sz = cnp.PyArray_SIZE(arr)
 * 
 *     if i < 0 and sz > 0:             # <<<<<<<<<<<<<<
 *         i += sz
 *     elif i >= sz or sz == 0:
 */
  __pyx_t_4 = (__pyx_v_i < 0);
  if (__pyx_t_4) {
    __pyx_t_6 = (__pyx_v_sz > 0);
    __pyx_t_7 = __pyx_t_6;
  } else {
    __pyx_t_7 = __pyx_t_4;
  }
  if (__pyx_t_7) {

    /* "util.pxd":30
 * 
 *     if i < 0 and sz > 0:
 *         i += sz             # <<<<<<<<<<<<<<
 *     elif i >= sz or sz == 0:
 *         raise IndexError('index out of bounds')
 */
    __pyx_v_i = (__pyx_v_i + __pyx_v_sz);
    goto __pyx_L5;
  }

  /* "util.pxd":31
 *     if i < 0 and sz > 0:
 *         i += sz
 *     elif i >= sz or sz == 0:             # <<<<<<<<<<<<<<
 *         raise IndexError('index out of bounds')
 * 
 */
  __pyx_t_7 = (__pyx_v_i >= __pyx_v_sz);
  if (!__pyx_t_7) {
    __pyx_t_4 = (__pyx_v_sz == 0);
    __pyx_t_6 = __pyx_t_4;
  } else {
    __pyx_t_6 = __pyx_t_7;
  }
  if (__pyx_t_6) {

    /* "util.pxd":32
 *         i += sz
 *     elif i >= sz or sz == 0:
 *         raise IndexError('index out of bounds')             # <<<<<<<<<<<<<<
 * 
 *     return get_value_1d(arr, i)
 */
    __pyx_t_3 = PyObject_Call(__pyx_builtin_IndexError, ((PyObject *)__pyx_k_tuple_103), NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 32; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_Raise(__pyx_t_3, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    {__pyx_filename = __pyx_f[2]; __pyx_lineno = 32; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    goto __pyx_L5;
  }
  __pyx_L5:;

  /* "util.pxd":34
 *         raise IndexError('index out of bounds')
 * 
 *     return get_value_1d(arr, i)             # <<<<<<<<<<<<<<
 * 
 * cdef inline set_value_at(ndarray arr, object loc, object value):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_3 = get_value_1d(__pyx_v_arr, __pyx_v_i); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 34; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("util.get_value_at", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_casted);
  __Pyx_XDECREF(__pyx_v_loc);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "util.pxd":36
 *     return get_value_1d(arr, i)
 * 
 * cdef inline set_value_at(ndarray arr, object loc, object value):             # <<<<<<<<<<<<<<
 *     cdef:
 *         Py_ssize_t i, sz
 */

static CYTHON_INLINE PyObject *__pyx_f_4util_set_value_at(PyArrayObject *__pyx_v_arr, PyObject *__pyx_v_loc, PyObject *__pyx_v_value) {
  Py_ssize_t __pyx_v_i;
  Py_ssize_t __pyx_v_sz;
  PyObject *__pyx_v_casted = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_t_4;
  Py_ssize_t __pyx_t_5;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("set_value_at");
  __Pyx_INCREF(__pyx_v_loc);

  /* "util.pxd":39
 *     cdef:
 *         Py_ssize_t i, sz
 *     if is_float_object(loc):             # <<<<<<<<<<<<<<
 *         casted = int(loc)
 *         if casted == loc:
 */
  __pyx_t_1 = is_float_object(__pyx_v_loc);
  if (__pyx_t_1) {

    /* "util.pxd":40
 *         Py_ssize_t i, sz
 *     if is_float_object(loc):
 *         casted = int(loc)             # <<<<<<<<<<<<<<
 *         if casted == loc:
 *             loc = casted
 */
    __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 40; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(((PyObject *)__pyx_t_2));
    __Pyx_INCREF(__pyx_v_loc);
    PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_loc);
    __Pyx_GIVEREF(__pyx_v_loc);
    __pyx_t_3 = PyObject_Call(((PyObject *)((PyObject*)(&PyInt_Type))), ((PyObject *)__pyx_t_2), NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 40; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0;
    __pyx_v_casted = __pyx_t_3;
    __pyx_t_3 = 0;

    /* "util.pxd":41
 *     if is_float_object(loc):
 *         casted = int(loc)
 *         if casted == loc:             # <<<<<<<<<<<<<<
 *             loc = casted
 *     i = <Py_ssize_t> loc
 */
    __pyx_t_3 = PyObject_RichCompare(__pyx_v_casted, __pyx_v_loc, Py_EQ); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 41; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_4 < 0)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 41; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (__pyx_t_4) {

      /* "util.pxd":42
 *         casted = int(loc)
 *         if casted == loc:
 *             loc = casted             # <<<<<<<<<<<<<<
 *     i = <Py_ssize_t> loc
 *     sz = cnp.PyArray_SIZE(arr)
 */
      __Pyx_INCREF(__pyx_v_casted);
      __Pyx_DECREF(__pyx_v_loc);
      __pyx_v_loc = __pyx_v_casted;
      goto __pyx_L4;
    }
    __pyx_L4:;
    goto __pyx_L3;
  }
  __pyx_L3:;

  /* "util.pxd":43
 *         if casted == loc:
 *             loc = casted
 *     i = <Py_ssize_t> loc             # <<<<<<<<<<<<<<
 *     sz = cnp.PyArray_SIZE(arr)
 * 
 */
  __pyx_t_5 = __Pyx_PyIndex_AsSsize_t(__pyx_v_loc); if (unlikely((__pyx_t_5 == (Py_ssize_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 43; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_v_i = ((Py_ssize_t)__pyx_t_5);

  /* "util.pxd":44
 *             loc = casted
 *     i = <Py_ssize_t> loc
 *     sz = cnp.PyArray_SIZE(arr)             # <<<<<<<<<<<<<<
 * 
 *     if i < 0:
 */
  __pyx_v_sz = PyArray_SIZE(__pyx_v_arr);

  /* "util.pxd":46
 *     sz = cnp.PyArray_SIZE(arr)
 * 
 *     if i < 0:             # <<<<<<<<<<<<<<
 *         i += sz
 *     elif i >= sz:
 */
  __pyx_t_4 = (__pyx_v_i < 0);
  if (__pyx_t_4) {

    /* "util.pxd":47
 * 
 *     if i < 0:
 *         i += sz             # <<<<<<<<<<<<<<
 *     elif i >= sz:
 *         raise IndexError('index out of bounds')
 */
    __pyx_v_i = (__pyx_v_i + __pyx_v_sz);
    goto __pyx_L5;
  }

  /* "util.pxd":48
 *     if i < 0:
 *         i += sz
 *     elif i >= sz:             # <<<<<<<<<<<<<<
 *         raise IndexError('index out of bounds')
 * 
 */
  __pyx_t_4 = (__pyx_v_i >= __pyx_v_sz);
  if (__pyx_t_4) {

    /* "util.pxd":49
 *         i += sz
 *     elif i >= sz:
 *         raise IndexError('index out of bounds')             # <<<<<<<<<<<<<<
 * 
 *     assign_value_1d(arr, i, value)
 */
    __pyx_t_3 = PyObject_Call(__pyx_builtin_IndexError, ((PyObject *)__pyx_k_tuple_104), NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 49; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_Raise(__pyx_t_3, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    {__pyx_filename = __pyx_f[2]; __pyx_lineno = 49; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    goto __pyx_L5;
  }
  __pyx_L5:;

  /* "util.pxd":51
 *         raise IndexError('index out of bounds')
 * 
 *     assign_value_1d(arr, i, value)             # <<<<<<<<<<<<<<
 * 
 * cdef inline int is_contiguous(ndarray arr):
 */
  __pyx_t_1 = assign_value_1d(__pyx_v_arr, __pyx_v_i, __pyx_v_value); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 51; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("util.set_value_at", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_casted);
  __Pyx_XDECREF(__pyx_v_loc);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "util.pxd":53
 *     assign_value_1d(arr, i, value)
 * 
 * cdef inline int is_contiguous(ndarray arr):             # <<<<<<<<<<<<<<
 *     return cnp.PyArray_CHKFLAGS(arr, cnp.NPY_C_CONTIGUOUS)
 * 
 */

static CYTHON_INLINE int __pyx_f_4util_is_contiguous(PyArrayObject *__pyx_v_arr) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("is_contiguous");

  /* "util.pxd":54
 * 
 * cdef inline int is_contiguous(ndarray arr):
 *     return cnp.PyArray_CHKFLAGS(arr, cnp.NPY_C_CONTIGUOUS)             # <<<<<<<<<<<<<<
 * 
 * cdef inline is_array(object o):
 */
  __pyx_r = PyArray_CHKFLAGS(__pyx_v_arr, NPY_C_CONTIGUOUS);
  goto __pyx_L0;

  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "util.pxd":56
 *     return cnp.PyArray_CHKFLAGS(arr, cnp.NPY_C_CONTIGUOUS)
 * 
 * cdef inline is_array(object o):             # <<<<<<<<<<<<<<
 *     return cnp.PyArray_Check(o)
 * 
 */

static CYTHON_INLINE PyObject *__pyx_f_4util_is_array(PyObject *__pyx_v_o) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("is_array");

  /* "util.pxd":57
 * 
 * cdef inline is_array(object o):
 *     return cnp.PyArray_Check(o)             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyBool_FromLong(PyArray_Check(__pyx_v_o)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 57; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("util.is_array", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "util.pxd":60
 * 
 * 
 * cdef inline bint _checknull(object val):             # <<<<<<<<<<<<<<
 *     return not cnp.PyArray_Check(val) and (val is None or val != val)
 * 
 */

static CYTHON_INLINE int __pyx_f_4util__checknull(PyObject *__pyx_v_val) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("_checknull");

  /* "util.pxd":61
 * 
 * cdef inline bint _checknull(object val):
 *     return not cnp.PyArray_Check(val) and (val is None or val != val)             # <<<<<<<<<<<<<<
 * 
 * cdef inline bint _checknan(object val):
 */
  __pyx_t_1 = __Pyx_PyBool_FromLong((!PyArray_Check(__pyx_v_val))); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 61; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 61; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (__pyx_t_2) {
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __pyx_t_2 = (__pyx_v_val == Py_None);
    __pyx_t_3 = __Pyx_PyBool_FromLong(__pyx_t_2); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 61; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 61; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    if (!__pyx_t_2) {
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      __pyx_t_4 = PyObject_RichCompare(__pyx_v_val, __pyx_v_val, Py_NE); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 61; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_4);
      __pyx_t_5 = __pyx_t_4;
      __pyx_t_4 = 0;
    } else {
      __pyx_t_5 = __pyx_t_3;
      __pyx_t_3 = 0;
    }
    __pyx_t_3 = __pyx_t_5;
    __pyx_t_5 = 0;
  } else {
    __pyx_t_3 = __pyx_t_1;
    __pyx_t_1 = 0;
  }
  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely((__pyx_t_2 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 61; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_r = __pyx_t_2;
  goto __pyx_L0;

  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_WriteUnraisable("util._checknull", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "util.pxd":63
 *     return not cnp.PyArray_Check(val) and (val is None or val != val)
 * 
 * cdef inline bint _checknan(object val):             # <<<<<<<<<<<<<<
 *     return not cnp.PyArray_Check(val) and val != val
 */

static CYTHON_INLINE int __pyx_f_4util__checknan(PyObject *__pyx_v_val) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("_checknan");

  /* "util.pxd":64
 * 
 * cdef inline bint _checknan(object val):
 *     return not cnp.PyArray_Check(val) and val != val             # <<<<<<<<<<<<<<
 */
  __pyx_t_1 = __Pyx_PyBool_FromLong((!PyArray_Check(__pyx_v_val))); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 64; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 64; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (__pyx_t_2) {
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __pyx_t_3 = PyObject_RichCompare(__pyx_v_val, __pyx_v_val, Py_NE); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 64; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_4 = __pyx_t_3;
    __pyx_t_3 = 0;
  } else {
    __pyx_t_4 = __pyx_t_1;
    __pyx_t_1 = 0;
  }
  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely((__pyx_t_2 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 64; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_r = __pyx_t_2;
  goto __pyx_L0;

  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_WriteUnraisable("util._checknan", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyMethodDef __pyx_methods[] = {
  {__Pyx_NAMESTR("ensure_platform_int"), (PyCFunction)__pyx_pf_6pandas_6_algos_ensure_platform_int, METH_O, __Pyx_DOCSTR(0)},
  {__Pyx_NAMESTR("ensure_float64"), (PyCFunction)__pyx_pf_6pandas_6_algos_1ensure_float64, METH_O, __Pyx_DOCSTR(0)},
  {__Pyx_NAMESTR("ensure_int32"), (PyCFunction)__pyx_pf_6pandas_6_algos_2ensure_int32, METH_O, __Pyx_DOCSTR(0)},
  {__Pyx_NAMESTR("ensure_int64"), (PyCFunction)__pyx_pf_6pandas_6_algos_3ensure_int64, METH_O, __Pyx_DOCSTR(0)},
  {__Pyx_NAMESTR("ensure_object"), (PyCFunction)__pyx_pf_6pandas_6_algos_4ensure_object, METH_O, __Pyx_DOCSTR(0)},
  {__Pyx_NAMESTR("map_indices_float64"), (PyCFunction)__pyx_pf_6pandas_6_algos_5map_indices_float64, METH_O, __Pyx_DOCSTR(__pyx_doc_6pandas_6_algos_5map_indices_float64)},
  {__Pyx_NAMESTR("map_indices_object"), (PyCFunction)__pyx_pf_6pandas_6_algos_6map_indices_object, METH_O, __Pyx_DOCSTR(__pyx_doc_6pandas_6_algos_6map_indices_object)},
  {__Pyx_NAMESTR("map_indices_int32"), (PyCFunction)__pyx_pf_6pandas_6_algos_7map_indices_int32, METH_O, __Pyx_DOCSTR(__pyx_doc_6pandas_6_algos_7map_indices_int32)},
  {__Pyx_NAMESTR("map_indices_int64"), (PyCFunction)__pyx_pf_6pandas_6_algos_8map_indices_int64, METH_O, __Pyx_DOCSTR(__pyx_doc_6pandas_6_algos_8map_indices_int64)},
  {__Pyx_NAMESTR("map_indices_bool"), (PyCFunction)__pyx_pf_6pandas_6_algos_9map_indices_bool, METH_O, __Pyx_DOCSTR(__pyx_doc_6pandas_6_algos_9map_indices_bool)},
  {0, 0, 0, 0}
};

#if PY_MAJOR_VERSION >= 3
static struct PyModuleDef __pyx_moduledef = {
    PyModuleDef_HEAD_INIT,
    __Pyx_NAMESTR("_algos"),
    0, /* m_doc */
    -1, /* m_size */
    __pyx_methods /* m_methods */,
    NULL, /* m_reload */
    NULL, /* m_traverse */
    NULL, /* m_clear */
    NULL /* m_free */
};
#endif

static __Pyx_StringTabEntry __pyx_string_tab[] = {
  {&__pyx_kp_u_100, __pyx_k_100, sizeof(__pyx_k_100), 0, 1, 0, 0},
  {&__pyx_kp_s_102, __pyx_k_102, sizeof(__pyx_k_102), 0, 0, 1, 0},
  {&__pyx_n_s_106, __pyx_k_106, sizeof(__pyx_k_106), 0, 0, 1, 1},
  {&__pyx_n_s_107, __pyx_k_107, sizeof(__pyx_k_107), 0, 0, 1, 1},
  {&__pyx_n_s_108, __pyx_k_108, sizeof(__pyx_k_108), 0, 0, 1, 1},
  {&__pyx_n_s_109, __pyx_k_109, sizeof(__pyx_k_109), 0, 0, 1, 1},
  {&__pyx_n_s_110, __pyx_k_110, sizeof(__pyx_k_110), 0, 0, 1, 1},
  {&__pyx_n_s_111, __pyx_k_111, sizeof(__pyx_k_111), 0, 0, 1, 1},
  {&__pyx_n_s_112, __pyx_k_112, sizeof(__pyx_k_112), 0, 0, 1, 1},
  {&__pyx_n_s_113, __pyx_k_113, sizeof(__pyx_k_113), 0, 0, 1, 1},
  {&__pyx_n_s_114, __pyx_k_114, sizeof(__pyx_k_114), 0, 0, 1, 1},
  {&__pyx_n_s_115, __pyx_k_115, sizeof(__pyx_k_115), 0, 0, 1, 1},
  {&__pyx_n_s_116, __pyx_k_116, sizeof(__pyx_k_116), 0, 0, 1, 1},
  {&__pyx_n_s_117, __pyx_k_117, sizeof(__pyx_k_117), 0, 0, 1, 1},
  {&__pyx_n_s_118, __pyx_k_118, sizeof(__pyx_k_118), 0, 0, 1, 1},
  {&__pyx_n_s_119, __pyx_k_119, sizeof(__pyx_k_119), 0, 0, 1, 1},
  {&__pyx_n_s_120, __pyx_k_120, sizeof(__pyx_k_120), 0, 0, 1, 1},
  {&__pyx_n_s_121, __pyx_k_121, sizeof(__pyx_k_121), 0, 0, 1, 1},
  {&__pyx_n_s_122, __pyx_k_122, sizeof(__pyx_k_122), 0, 0, 1, 1},
  {&__pyx_n_s_123, __pyx_k_123, sizeof(__pyx_k_123), 0, 0, 1, 1},
  {&__pyx_n_s_124, __pyx_k_124, sizeof(__pyx_k_124), 0, 0, 1, 1},
  {&__pyx_n_s_125, __pyx_k_125, sizeof(__pyx_k_125), 0, 0, 1, 1},
  {&__pyx_n_s_126, __pyx_k_126, sizeof(__pyx_k_126), 0, 0, 1, 1},
  {&__pyx_n_s_127, __pyx_k_127, sizeof(__pyx_k_127), 0, 0, 1, 1},
  {&__pyx_n_s_128, __pyx_k_128, sizeof(__pyx_k_128), 0, 0, 1, 1},
  {&__pyx_n_s_129, __pyx_k_129, sizeof(__pyx_k_129), 0, 0, 1, 1},
  {&__pyx_n_s_130, __pyx_k_130, sizeof(__pyx_k_130), 0, 0, 1, 1},
  {&__pyx_n_s_131, __pyx_k_131, sizeof(__pyx_k_131), 0, 0, 1, 1},
  {&__pyx_n_s_132, __pyx_k_132, sizeof(__pyx_k_132), 0, 0, 1, 1},
  {&__pyx_n_s_133, __pyx_k_133, sizeof(__pyx_k_133), 0, 0, 1, 1},
  {&__pyx_n_s_134, __pyx_k_134, sizeof(__pyx_k_134), 0, 0, 1, 1},
  {&__pyx_n_s_135, __pyx_k_135, sizeof(__pyx_k_135), 0, 0, 1, 1},
  {&__pyx_n_s_136, __pyx_k_136, sizeof(__pyx_k_136), 0, 0, 1, 1},
  {&__pyx_n_s_137, __pyx_k_137, sizeof(__pyx_k_137), 0, 0, 1, 1},
  {&__pyx_n_s_138, __pyx_k_138, sizeof(__pyx_k_138), 0, 0, 1, 1},
  {&__pyx_n_s_139, __pyx_k_139, sizeof(__pyx_k_139), 0, 0, 1, 1},
  {&__pyx_n_s_140, __pyx_k_140, sizeof(__pyx_k_140), 0, 0, 1, 1},
  {&__pyx_n_s_141, __pyx_k_141, sizeof(__pyx_k_141), 0, 0, 1, 1},
  {&__pyx_n_s_142, __pyx_k_142, sizeof(__pyx_k_142), 0, 0, 1, 1},
  {&__pyx_n_s_143, __pyx_k_143, sizeof(__pyx_k_143), 0, 0, 1, 1},
  {&__pyx_kp_s_2, __pyx_k_2, sizeof(__pyx_k_2), 0, 0, 1, 0},
  {&__pyx_kp_s_43, __pyx_k_43, sizeof(__pyx_k_43), 0, 0, 1, 0},
  {&__pyx_n_s_53, __pyx_k_53, sizeof(__pyx_k_53), 0, 0, 1, 1},
  {&__pyx_n_s_54, __pyx_k_54, sizeof(__pyx_k_54), 0, 0, 1, 1},
  {&__pyx_kp_u_90, __pyx_k_90, sizeof(__pyx_k_90), 0, 1, 0, 0},
  {&__pyx_kp_u_92, __pyx_k_92, sizeof(__pyx_k_92), 0, 1, 0, 0},
  {&__pyx_kp_u_94, __pyx_k_94, sizeof(__pyx_k_94), 0, 1, 0, 0},
  {&__pyx_kp_u_96, __pyx_k_96, sizeof(__pyx_k_96), 0, 1, 0, 0},
  {&__pyx_kp_u_97, __pyx_k_97, sizeof(__pyx_k_97), 0, 1, 0, 0},
  {&__pyx_n_s__IndexError, __pyx_k__IndexError, sizeof(__pyx_k__IndexError), 0, 0, 1, 1},
  {&__pyx_n_s__NaN, __pyx_k__NaN, sizeof(__pyx_k__NaN), 0, 0, 1, 1},
  {&__pyx_n_s__RuntimeError, __pyx_k__RuntimeError, sizeof(__pyx_k__RuntimeError), 0, 0, 1, 1},
  {&__pyx_n_s__ValueError, __pyx_k__ValueError, sizeof(__pyx_k__ValueError), 0, 0, 1, 1},
  {&__pyx_n_s____main__, __pyx_k____main__, sizeof(__pyx_k____main__), 0, 0, 1, 1},
  {&__pyx_n_s____test__, __pyx_k____test__, sizeof(__pyx_k____test__), 0, 0, 1, 1},
  {&__pyx_n_s__arange, __pyx_k__arange, sizeof(__pyx_k__arange), 0, 0, 1, 1},
  {&__pyx_n_s__array, __pyx_k__array, sizeof(__pyx_k__array), 0, 0, 1, 1},
  {&__pyx_n_s__arrmap_bool, __pyx_k__arrmap_bool, sizeof(__pyx_k__arrmap_bool), 0, 0, 1, 1},
  {&__pyx_n_s__arrmap_float64, __pyx_k__arrmap_float64, sizeof(__pyx_k__arrmap_float64), 0, 0, 1, 1},
  {&__pyx_n_s__arrmap_int32, __pyx_k__arrmap_int32, sizeof(__pyx_k__arrmap_int32), 0, 0, 1, 1},
  {&__pyx_n_s__arrmap_int64, __pyx_k__arrmap_int64, sizeof(__pyx_k__arrmap_int64), 0, 0, 1, 1},
  {&__pyx_n_s__arrmap_object, __pyx_k__arrmap_object, sizeof(__pyx_k__arrmap_object), 0, 0, 1, 1},
  {&__pyx_n_s__astype, __pyx_k__astype, sizeof(__pyx_k__astype), 0, 0, 1, 1},
  {&__pyx_n_s__backfill_bool, __pyx_k__backfill_bool, sizeof(__pyx_k__backfill_bool), 0, 0, 1, 1},
  {&__pyx_n_s__backfill_float64, __pyx_k__backfill_float64, sizeof(__pyx_k__backfill_float64), 0, 0, 1, 1},
  {&__pyx_n_s__backfill_int32, __pyx_k__backfill_int32, sizeof(__pyx_k__backfill_int32), 0, 0, 1, 1},
  {&__pyx_n_s__backfill_int64, __pyx_k__backfill_int64, sizeof(__pyx_k__backfill_int64), 0, 0, 1, 1},
  {&__pyx_n_s__backfill_object, __pyx_k__backfill_object, sizeof(__pyx_k__backfill_object), 0, 0, 1, 1},
  {&__pyx_n_s__datetime, __pyx_k__datetime, sizeof(__pyx_k__datetime), 0, 0, 1, 1},
  {&__pyx_n_s__dtype, __pyx_k__dtype, sizeof(__pyx_k__dtype), 0, 0, 1, 1},
  {&__pyx_n_s__empty, __pyx_k__empty, sizeof(__pyx_k__empty), 0, 0, 1, 1},
  {&__pyx_n_s__fill, __pyx_k__fill, sizeof(__pyx_k__fill), 0, 0, 1, 1},
  {&__pyx_n_s__fill_value, __pyx_k__fill_value, sizeof(__pyx_k__fill_value), 0, 0, 1, 1},
  {&__pyx_n_s__float64, __pyx_k__float64, sizeof(__pyx_k__float64), 0, 0, 1, 1},
  {&__pyx_n_s__func, __pyx_k__func, sizeof(__pyx_k__func), 0, 0, 1, 1},
  {&__pyx_n_s__groupby_bool, __pyx_k__groupby_bool, sizeof(__pyx_k__groupby_bool), 0, 0, 1, 1},
  {&__pyx_n_s__groupby_float64, __pyx_k__groupby_float64, sizeof(__pyx_k__groupby_float64), 0, 0, 1, 1},
  {&__pyx_n_s__groupby_int32, __pyx_k__groupby_int32, sizeof(__pyx_k__groupby_int32), 0, 0, 1, 1},
  {&__pyx_n_s__groupby_int64, __pyx_k__groupby_int64, sizeof(__pyx_k__groupby_int64), 0, 0, 1, 1},
  {&__pyx_n_s__groupby_object, __pyx_k__groupby_object, sizeof(__pyx_k__groupby_object), 0, 0, 1, 1},
  {&__pyx_n_s__idx0, __pyx_k__idx0, sizeof(__pyx_k__idx0), 0, 0, 1, 1},
  {&__pyx_n_s__idx1, __pyx_k__idx1, sizeof(__pyx_k__idx1), 0, 0, 1, 1},
  {&__pyx_n_s__index, __pyx_k__index, sizeof(__pyx_k__index), 0, 0, 1, 1},
  {&__pyx_n_s__indexer, __pyx_k__indexer, sizeof(__pyx_k__indexer), 0, 0, 1, 1},
  {&__pyx_n_s__int32, __pyx_k__int32, sizeof(__pyx_k__int32), 0, 0, 1, 1},
  {&__pyx_n_s__int64, __pyx_k__int64, sizeof(__pyx_k__int64), 0, 0, 1, 1},
  {&__pyx_n_s__int_, __pyx_k__int_, sizeof(__pyx_k__int_), 0, 0, 1, 1},
  {&__pyx_n_s__is_monotonic_bool, __pyx_k__is_monotonic_bool, sizeof(__pyx_k__is_monotonic_bool), 0, 0, 1, 1},
  {&__pyx_n_s__is_monotonic_int32, __pyx_k__is_monotonic_int32, sizeof(__pyx_k__is_monotonic_int32), 0, 0, 1, 1},
  {&__pyx_n_s__is_monotonic_int64, __pyx_k__is_monotonic_int64, sizeof(__pyx_k__is_monotonic_int64), 0, 0, 1, 1},
  {&__pyx_n_s__is_monotonic_object, __pyx_k__is_monotonic_object, sizeof(__pyx_k__is_monotonic_object), 0, 0, 1, 1},
  {&__pyx_n_s__isnan, __pyx_k__isnan, sizeof(__pyx_k__isnan), 0, 0, 1, 1},
  {&__pyx_n_s__labels, __pyx_k__labels, sizeof(__pyx_k__labels), 0, 0, 1, 1},
  {&__pyx_n_s__left, __pyx_k__left, sizeof(__pyx_k__left), 0, 0, 1, 1},
  {&__pyx_n_s__limit, __pyx_k__limit, sizeof(__pyx_k__limit), 0, 0, 1, 1},
  {&__pyx_n_s__mask, __pyx_k__mask, sizeof(__pyx_k__mask), 0, 0, 1, 1},
  {&__pyx_n_s__nan, __pyx_k__nan, sizeof(__pyx_k__nan), 0, 0, 1, 1},
  {&__pyx_n_s__new, __pyx_k__new, sizeof(__pyx_k__new), 0, 0, 1, 1},
  {&__pyx_n_s__np, __pyx_k__np, sizeof(__pyx_k__np), 0, 0, 1, 1},
  {&__pyx_n_s__numpy, __pyx_k__numpy, sizeof(__pyx_k__numpy), 0, 0, 1, 1},
  {&__pyx_n_s__object, __pyx_k__object, sizeof(__pyx_k__object), 0, 0, 1, 1},
  {&__pyx_n_s__object_, __pyx_k__object_, sizeof(__pyx_k__object_), 0, 0, 1, 1},
  {&__pyx_n_s__old, __pyx_k__old, sizeof(__pyx_k__old), 0, 0, 1, 1},
  {&__pyx_n_s__out, __pyx_k__out, sizeof(__pyx_k__out), 0, 0, 1, 1},
  {&__pyx_n_s__pad_2d_inplace_bool, __pyx_k__pad_2d_inplace_bool, sizeof(__pyx_k__pad_2d_inplace_bool), 0, 0, 1, 1},
  {&__pyx_n_s__pad_bool, __pyx_k__pad_bool, sizeof(__pyx_k__pad_bool), 0, 0, 1, 1},
  {&__pyx_n_s__pad_float64, __pyx_k__pad_float64, sizeof(__pyx_k__pad_float64), 0, 0, 1, 1},
  {&__pyx_n_s__pad_inplace_bool, __pyx_k__pad_inplace_bool, sizeof(__pyx_k__pad_inplace_bool), 0, 0, 1, 1},
  {&__pyx_n_s__pad_inplace_float64, __pyx_k__pad_inplace_float64, sizeof(__pyx_k__pad_inplace_float64), 0, 0, 1, 1},
  {&__pyx_n_s__pad_inplace_int32, __pyx_k__pad_inplace_int32, sizeof(__pyx_k__pad_inplace_int32), 0, 0, 1, 1},
  {&__pyx_n_s__pad_inplace_int64, __pyx_k__pad_inplace_int64, sizeof(__pyx_k__pad_inplace_int64), 0, 0, 1, 1},
  {&__pyx_n_s__pad_inplace_object, __pyx_k__pad_inplace_object, sizeof(__pyx_k__pad_inplace_object), 0, 0, 1, 1},
  {&__pyx_n_s__pad_int32, __pyx_k__pad_int32, sizeof(__pyx_k__pad_int32), 0, 0, 1, 1},
  {&__pyx_n_s__pad_int64, __pyx_k__pad_int64, sizeof(__pyx_k__pad_int64), 0, 0, 1, 1},
  {&__pyx_n_s__pad_object, __pyx_k__pad_object, sizeof(__pyx_k__pad_object), 0, 0, 1, 1},
  {&__pyx_n_s__pydatetime, __pyx_k__pydatetime, sizeof(__pyx_k__pydatetime), 0, 0, 1, 1},
  {&__pyx_n_s__range, __pyx_k__range, sizeof(__pyx_k__range), 0, 0, 1, 1},
  {&__pyx_n_s__right, __pyx_k__right, sizeof(__pyx_k__right), 0, 0, 1, 1},
  {&__pyx_n_s__shape, __pyx_k__shape, sizeof(__pyx_k__shape), 0, 0, 1, 1},
  {&__pyx_n_s__take_1d_bool, __pyx_k__take_1d_bool, sizeof(__pyx_k__take_1d_bool), 0, 0, 1, 1},
  {&__pyx_n_s__take_1d_float64, __pyx_k__take_1d_float64, sizeof(__pyx_k__take_1d_float64), 0, 0, 1, 1},
  {&__pyx_n_s__take_1d_int32, __pyx_k__take_1d_int32, sizeof(__pyx_k__take_1d_int32), 0, 0, 1, 1},
  {&__pyx_n_s__take_1d_int64, __pyx_k__take_1d_int64, sizeof(__pyx_k__take_1d_int64), 0, 0, 1, 1},
  {&__pyx_n_s__take_1d_object, __pyx_k__take_1d_object, sizeof(__pyx_k__take_1d_object), 0, 0, 1, 1},
  {&__pyx_n_s__take_2d_axis0_bool, __pyx_k__take_2d_axis0_bool, sizeof(__pyx_k__take_2d_axis0_bool), 0, 0, 1, 1},
  {&__pyx_n_s__take_2d_axis0_int32, __pyx_k__take_2d_axis0_int32, sizeof(__pyx_k__take_2d_axis0_int32), 0, 0, 1, 1},
  {&__pyx_n_s__take_2d_axis0_int64, __pyx_k__take_2d_axis0_int64, sizeof(__pyx_k__take_2d_axis0_int64), 0, 0, 1, 1},
  {&__pyx_n_s__take_2d_axis1_bool, __pyx_k__take_2d_axis1_bool, sizeof(__pyx_k__take_2d_axis1_bool), 0, 0, 1, 1},
  {&__pyx_n_s__take_2d_axis1_int32, __pyx_k__take_2d_axis1_int32, sizeof(__pyx_k__take_2d_axis1_int32), 0, 0, 1, 1},
  {&__pyx_n_s__take_2d_axis1_int64, __pyx_k__take_2d_axis1_int64, sizeof(__pyx_k__take_2d_axis1_int64), 0, 0, 1, 1},
  {&__pyx_n_s__take_2d_multi_bool, __pyx_k__take_2d_multi_bool, sizeof(__pyx_k__take_2d_multi_bool), 0, 0, 1, 1},
  {&__pyx_n_s__take_2d_multi_int32, __pyx_k__take_2d_multi_int32, sizeof(__pyx_k__take_2d_multi_int32), 0, 0, 1, 1},
  {&__pyx_n_s__take_2d_multi_int64, __pyx_k__take_2d_multi_int64, sizeof(__pyx_k__take_2d_multi_int64), 0, 0, 1, 1},
  {&__pyx_n_s__values, __pyx_k__values, sizeof(__pyx_k__values), 0, 0, 1, 1},
  {0, 0, 0, 0, 0, 0, 0}
};
static int __Pyx_InitCachedBuiltins(void) {
  __pyx_builtin_range = __Pyx_GetName(__pyx_b, __pyx_n_s__range); if (!__pyx_builtin_range) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 116; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_builtin_ValueError = __Pyx_GetName(__pyx_b, __pyx_n_s__ValueError); if (!__pyx_builtin_ValueError) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 228; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_builtin_object = __Pyx_GetName(__pyx_b, __pyx_n_s__object); if (!__pyx_builtin_object) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2874; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_builtin_RuntimeError = __Pyx_GetName(__pyx_b, __pyx_n_s__RuntimeError); if (!__pyx_builtin_RuntimeError) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 800; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_builtin_IndexError = __Pyx_GetName(__pyx_b, __pyx_n_s__IndexError); if (!__pyx_builtin_IndexError) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 32; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  return 0;
  __pyx_L1_error:;
  return -1;
}

static int __Pyx_InitCachedConstants(void) {
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__Pyx_InitCachedConstants");

  /* "pandas/src/generated.pyx":222
 *     nright = len(new)
 *     indexer = np.empty(nright, dtype=np.int64)
 *     indexer.fill(-1)             # <<<<<<<<<<<<<<
 * 
 *     if limit is None:
 */
  __pyx_k_tuple_1 = PyTuple_New(1); if (unlikely(!__pyx_k_tuple_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 222; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_k_tuple_1));
  __Pyx_INCREF(__pyx_int_neg_1);
  PyTuple_SET_ITEM(__pyx_k_tuple_1, 0, __pyx_int_neg_1);
  __Pyx_GIVEREF(__pyx_int_neg_1);
  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_1));

  /* "pandas/src/generated.pyx":228
 *     else:
 *         if limit < 0:
 *             raise ValueError('Limit must be non-negative')             # <<<<<<<<<<<<<<
 *         lim = limit
 * 
 */
  __pyx_k_tuple_3 = PyTuple_New(1); if (unlikely(!__pyx_k_tuple_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 228; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_k_tuple_3));
  __Pyx_INCREF(((PyObject *)__pyx_kp_s_2));
  PyTuple_SET_ITEM(__pyx_k_tuple_3, 0, ((PyObject *)__pyx_kp_s_2));
  __Pyx_GIVEREF(((PyObject *)__pyx_kp_s_2));
  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_3));

  /* "pandas/src/generated.pyx":283
 *     nright = len(new)
 *     indexer = np.empty(nright, dtype=np.int64)
 *     indexer.fill(-1)             # <<<<<<<<<<<<<<
 * 
 *     if limit is None:
 */
  __pyx_k_tuple_4 = PyTuple_New(1); if (unlikely(!__pyx_k_tuple_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 283; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_k_tuple_4));
  __Pyx_INCREF(__pyx_int_neg_1);
  PyTuple_SET_ITEM(__pyx_k_tuple_4, 0, __pyx_int_neg_1);
  __Pyx_GIVEREF(__pyx_int_neg_1);
  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_4));

  /* "pandas/src/generated.pyx":289
 *     else:
 *         if limit < 0:
 *             raise ValueError('Limit must be non-negative')             # <<<<<<<<<<<<<<
 *         lim = limit
 * 
 */
  __pyx_k_tuple_5 = PyTuple_New(1); if (unlikely(!__pyx_k_tuple_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 289; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_k_tuple_5));
  __Pyx_INCREF(((PyObject *)__pyx_kp_s_2));
  PyTuple_SET_ITEM(__pyx_k_tuple_5, 0, ((PyObject *)__pyx_kp_s_2));
  __Pyx_GIVEREF(((PyObject *)__pyx_kp_s_2));
  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_5));

  /* "pandas/src/generated.pyx":344
 *     nright = len(new)
 *     indexer = np.empty(nright, dtype=np.int64)
 *     indexer.fill(-1)             # <<<<<<<<<<<<<<
 * 
 *     if limit is None:
 */
  __pyx_k_tuple_6 = PyTuple_New(1); if (unlikely(!__pyx_k_tuple_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 344; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_k_tuple_6));
  __Pyx_INCREF(__pyx_int_neg_1);
  PyTuple_SET_ITEM(__pyx_k_tuple_6, 0, __pyx_int_neg_1);
  __Pyx_GIVEREF(__pyx_int_neg_1);
  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_6));

  /* "pandas/src/generated.pyx":350
 *     else:
 *         if limit < 0:
 *             raise ValueError('Limit must be non-negative')             # <<<<<<<<<<<<<<
 *         lim = limit
 * 
 */
  __pyx_k_tuple_7 = PyTuple_New(1); if (unlikely(!__pyx_k_tuple_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 350; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_k_tuple_7));
  __Pyx_INCREF(((PyObject *)__pyx_kp_s_2));
  PyTuple_SET_ITEM(__pyx_k_tuple_7, 0, ((PyObject *)__pyx_kp_s_2));
  __Pyx_GIVEREF(((PyObject *)__pyx_kp_s_2));
  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_7));

  /* "pandas/src/generated.pyx":405
 *     nright = len(new)
 *     indexer = np.empty(nright, dtype=np.int64)
 *     indexer.fill(-1)             # <<<<<<<<<<<<<<
 * 
 *     if limit is None:
 */
  __pyx_k_tuple_8 = PyTuple_New(1); if (unlikely(!__pyx_k_tuple_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 405; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_k_tuple_8));
  __Pyx_INCREF(__pyx_int_neg_1);
  PyTuple_SET_ITEM(__pyx_k_tuple_8, 0, __pyx_int_neg_1);
  __Pyx_GIVEREF(__pyx_int_neg_1);
  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_8));

  /* "pandas/src/generated.pyx":411
 *     else:
 *         if limit < 0:
 *             raise ValueError('Limit must be non-negative')             # <<<<<<<<<<<<<<
 *         lim = limit
 * 
 */
  __pyx_k_tuple_9 = PyTuple_New(1); if (unlikely(!__pyx_k_tuple_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 411; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_k_tuple_9));
  __Pyx_INCREF(((PyObject *)__pyx_kp_s_2));
  PyTuple_SET_ITEM(__pyx_k_tuple_9, 0, ((PyObject *)__pyx_kp_s_2));
  __Pyx_GIVEREF(((PyObject *)__pyx_kp_s_2));
  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_9));

  /* "pandas/src/generated.pyx":466
 *     nright = len(new)
 *     indexer = np.empty(nright, dtype=np.int64)
 *     indexer.fill(-1)             # <<<<<<<<<<<<<<
 * 
 *     if limit is None:
 */
  __pyx_k_tuple_10 = PyTuple_New(1); if (unlikely(!__pyx_k_tuple_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 466; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_k_tuple_10));
  __Pyx_INCREF(__pyx_int_neg_1);
  PyTuple_SET_ITEM(__pyx_k_tuple_10, 0, __pyx_int_neg_1);
  __Pyx_GIVEREF(__pyx_int_neg_1);
  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_10));

  /* "pandas/src/generated.pyx":472
 *     else:
 *         if limit < 0:
 *             raise ValueError('Limit must be non-negative')             # <<<<<<<<<<<<<<
 *         lim = limit
 * 
 */
  __pyx_k_tuple_11 = PyTuple_New(1); if (unlikely(!__pyx_k_tuple_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 472; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_k_tuple_11));
  __Pyx_INCREF(((PyObject *)__pyx_kp_s_2));
  PyTuple_SET_ITEM(__pyx_k_tuple_11, 0, ((PyObject *)__pyx_kp_s_2));
  __Pyx_GIVEREF(((PyObject *)__pyx_kp_s_2));
  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_11));

  /* "pandas/src/generated.pyx":528
 *     nright = len(new)
 *     indexer = np.empty(nright, dtype=np.int64)
 *     indexer.fill(-1)             # <<<<<<<<<<<<<<
 * 
 *     if limit is None:
 */
  __pyx_k_tuple_12 = PyTuple_New(1); if (unlikely(!__pyx_k_tuple_12)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 528; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_k_tuple_12));
  __Pyx_INCREF(__pyx_int_neg_1);
  PyTuple_SET_ITEM(__pyx_k_tuple_12, 0, __pyx_int_neg_1);
  __Pyx_GIVEREF(__pyx_int_neg_1);
  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_12));

  /* "pandas/src/generated.pyx":534
 *     else:
 *         if limit < 0:
 *             raise ValueError('Limit must be non-negative')             # <<<<<<<<<<<<<<
 *         lim = limit
 * 
 */
  __pyx_k_tuple_13 = PyTuple_New(1); if (unlikely(!__pyx_k_tuple_13)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 534; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_k_tuple_13));
  __Pyx_INCREF(((PyObject *)__pyx_kp_s_2));
  PyTuple_SET_ITEM(__pyx_k_tuple_13, 0, ((PyObject *)__pyx_kp_s_2));
  __Pyx_GIVEREF(((PyObject *)__pyx_kp_s_2));
  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_13));

  /* "pandas/src/generated.pyx":590
 *     nright = len(new)
 *     indexer = np.empty(nright, dtype=np.int64)
 *     indexer.fill(-1)             # <<<<<<<<<<<<<<
 * 
 *     if limit is None:
 */
  __pyx_k_tuple_14 = PyTuple_New(1); if (unlikely(!__pyx_k_tuple_14)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 590; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_k_tuple_14));
  __Pyx_INCREF(__pyx_int_neg_1);
  PyTuple_SET_ITEM(__pyx_k_tuple_14, 0, __pyx_int_neg_1);
  __Pyx_GIVEREF(__pyx_int_neg_1);
  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_14));

  /* "pandas/src/generated.pyx":596
 *     else:
 *         if limit < 0:
 *             raise ValueError('Limit must be non-negative')             # <<<<<<<<<<<<<<
 *         lim = limit
 * 
 */
  __pyx_k_tuple_15 = PyTuple_New(1); if (unlikely(!__pyx_k_tuple_15)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 596; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_k_tuple_15));
  __Pyx_INCREF(((PyObject *)__pyx_kp_s_2));
  PyTuple_SET_ITEM(__pyx_k_tuple_15, 0, ((PyObject *)__pyx_kp_s_2));
  __Pyx_GIVEREF(((PyObject *)__pyx_kp_s_2));
  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_15));

  /* "pandas/src/generated.pyx":652
 *     nright = len(new)
 *     indexer = np.empty(nright, dtype=np.int64)
 *     indexer.fill(-1)             # <<<<<<<<<<<<<<
 * 
 *     if limit is None:
 */
  __pyx_k_tuple_16 = PyTuple_New(1); if (unlikely(!__pyx_k_tuple_16)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 652; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_k_tuple_16));
  __Pyx_INCREF(__pyx_int_neg_1);
  PyTuple_SET_ITEM(__pyx_k_tuple_16, 0, __pyx_int_neg_1);
  __Pyx_GIVEREF(__pyx_int_neg_1);
  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_16));

  /* "pandas/src/generated.pyx":658
 *     else:
 *         if limit < 0:
 *             raise ValueError('Limit must be non-negative')             # <<<<<<<<<<<<<<
 *         lim = limit
 * 
 */
  __pyx_k_tuple_17 = PyTuple_New(1); if (unlikely(!__pyx_k_tuple_17)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 658; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_k_tuple_17));
  __Pyx_INCREF(((PyObject *)__pyx_kp_s_2));
  PyTuple_SET_ITEM(__pyx_k_tuple_17, 0, ((PyObject *)__pyx_kp_s_2));
  __Pyx_GIVEREF(((PyObject *)__pyx_kp_s_2));
  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_17));

  /* "pandas/src/generated.pyx":714
 *     nright = len(new)
 *     indexer = np.empty(nright, dtype=np.int64)
 *     indexer.fill(-1)             # <<<<<<<<<<<<<<
 * 
 *     if limit is None:
 */
  __pyx_k_tuple_18 = PyTuple_New(1); if (unlikely(!__pyx_k_tuple_18)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 714; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_k_tuple_18));
  __Pyx_INCREF(__pyx_int_neg_1);
  PyTuple_SET_ITEM(__pyx_k_tuple_18, 0, __pyx_int_neg_1);
  __Pyx_GIVEREF(__pyx_int_neg_1);
  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_18));

  /* "pandas/src/generated.pyx":720
 *     else:
 *         if limit < 0:
 *             raise ValueError('Limit must be non-negative')             # <<<<<<<<<<<<<<
 *         lim = limit
 * 
 */
  __pyx_k_tuple_19 = PyTuple_New(1); if (unlikely(!__pyx_k_tuple_19)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 720; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_k_tuple_19));
  __Pyx_INCREF(((PyObject *)__pyx_kp_s_2));
  PyTuple_SET_ITEM(__pyx_k_tuple_19, 0, ((PyObject *)__pyx_kp_s_2));
  __Pyx_GIVEREF(((PyObject *)__pyx_kp_s_2));
  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_19));

  /* "pandas/src/generated.pyx":776
 *     nright = len(new)
 *     indexer = np.empty(nright, dtype=np.int64)
 *     indexer.fill(-1)             # <<<<<<<<<<<<<<
 * 
 *     if limit is None:
 */
  __pyx_k_tuple_20 = PyTuple_New(1); if (unlikely(!__pyx_k_tuple_20)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 776; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_k_tuple_20));
  __Pyx_INCREF(__pyx_int_neg_1);
  PyTuple_SET_ITEM(__pyx_k_tuple_20, 0, __pyx_int_neg_1);
  __Pyx_GIVEREF(__pyx_int_neg_1);
  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_20));

  /* "pandas/src/generated.pyx":782
 *     else:
 *         if limit < 0:
 *             raise ValueError('Limit must be non-negative')             # <<<<<<<<<<<<<<
 *         lim = limit
 * 
 */
  __pyx_k_tuple_21 = PyTuple_New(1); if (unlikely(!__pyx_k_tuple_21)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 782; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_k_tuple_21));
  __Pyx_INCREF(((PyObject *)__pyx_kp_s_2));
  PyTuple_SET_ITEM(__pyx_k_tuple_21, 0, ((PyObject *)__pyx_kp_s_2));
  __Pyx_GIVEREF(((PyObject *)__pyx_kp_s_2));
  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_21));

  /* "pandas/src/generated.pyx":842
 *     else:
 *         if limit < 0:
 *             raise ValueError('Limit must be non-negative')             # <<<<<<<<<<<<<<
 *         lim = limit
 * 
 */
  __pyx_k_tuple_22 = PyTuple_New(1); if (unlikely(!__pyx_k_tuple_22)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 842; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_k_tuple_22));
  __Pyx_INCREF(((PyObject *)__pyx_kp_s_2));
  PyTuple_SET_ITEM(__pyx_k_tuple_22, 0, ((PyObject *)__pyx_kp_s_2));
  __Pyx_GIVEREF(((PyObject *)__pyx_kp_s_2));
  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_22));

  /* "pandas/src/generated.pyx":871
 *     else:
 *         if limit < 0:
 *             raise ValueError('Limit must be non-negative')             # <<<<<<<<<<<<<<
 *         lim = limit
 * 
 */
  __pyx_k_tuple_23 = PyTuple_New(1); if (unlikely(!__pyx_k_tuple_23)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 871; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_k_tuple_23));
  __Pyx_INCREF(((PyObject *)__pyx_kp_s_2));
  PyTuple_SET_ITEM(__pyx_k_tuple_23, 0, ((PyObject *)__pyx_kp_s_2));
  __Pyx_GIVEREF(((PyObject *)__pyx_kp_s_2));
  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_23));

  /* "pandas/src/generated.pyx":900
 *     else:
 *         if limit < 0:
 *             raise ValueError('Limit must be non-negative')             # <<<<<<<<<<<<<<
 *         lim = limit
 * 
 */
  __pyx_k_tuple_24 = PyTuple_New(1); if (unlikely(!__pyx_k_tuple_24)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 900; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_k_tuple_24));
  __Pyx_INCREF(((PyObject *)__pyx_kp_s_2));
  PyTuple_SET_ITEM(__pyx_k_tuple_24, 0, ((PyObject *)__pyx_kp_s_2));
  __Pyx_GIVEREF(((PyObject *)__pyx_kp_s_2));
  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_24));

  /* "pandas/src/generated.pyx":929
 *     else:
 *         if limit < 0:
 *             raise ValueError('Limit must be non-negative')             # <<<<<<<<<<<<<<
 *         lim = limit
 * 
 */
  __pyx_k_tuple_25 = PyTuple_New(1); if (unlikely(!__pyx_k_tuple_25)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 929; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_k_tuple_25));
  __Pyx_INCREF(((PyObject *)__pyx_kp_s_2));
  PyTuple_SET_ITEM(__pyx_k_tuple_25, 0, ((PyObject *)__pyx_kp_s_2));
  __Pyx_GIVEREF(((PyObject *)__pyx_kp_s_2));
  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_25));

  /* "pandas/src/generated.pyx":958
 *     else:
 *         if limit < 0:
 *             raise ValueError('Limit must be non-negative')             # <<<<<<<<<<<<<<
 *         lim = limit
 * 
 */
  __pyx_k_tuple_26 = PyTuple_New(1); if (unlikely(!__pyx_k_tuple_26)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 958; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_k_tuple_26));
  __Pyx_INCREF(((PyObject *)__pyx_kp_s_2));
  PyTuple_SET_ITEM(__pyx_k_tuple_26, 0, ((PyObject *)__pyx_kp_s_2));
  __Pyx_GIVEREF(((PyObject *)__pyx_kp_s_2));
  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_26));

  /* "pandas/src/generated.pyx":988
 *     else:
 *         if limit < 0:
 *             raise ValueError('Limit must be non-negative')             # <<<<<<<<<<<<<<
 *         lim = limit
 * 
 */
  __pyx_k_tuple_27 = PyTuple_New(1); if (unlikely(!__pyx_k_tuple_27)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 988; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_k_tuple_27));
  __Pyx_INCREF(((PyObject *)__pyx_kp_s_2));
  PyTuple_SET_ITEM(__pyx_k_tuple_27, 0, ((PyObject *)__pyx_kp_s_2));
  __Pyx_GIVEREF(((PyObject *)__pyx_kp_s_2));
  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_27));

  /* "pandas/src/generated.pyx":1016
 *     else:
 *         if limit < 0:
 *             raise ValueError('Limit must be non-negative')             # <<<<<<<<<<<<<<
 *         lim = limit
 * 
 */
  __pyx_k_tuple_28 = PyTuple_New(1); if (unlikely(!__pyx_k_tuple_28)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1016; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_k_tuple_28));
  __Pyx_INCREF(((PyObject *)__pyx_kp_s_2));
  PyTuple_SET_ITEM(__pyx_k_tuple_28, 0, ((PyObject *)__pyx_kp_s_2));
  __Pyx_GIVEREF(((PyObject *)__pyx_kp_s_2));
  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_28));

  /* "pandas/src/generated.pyx":1044
 *     else:
 *         if limit < 0:
 *             raise ValueError('Limit must be non-negative')             # <<<<<<<<<<<<<<
 *         lim = limit
 * 
 */
  __pyx_k_tuple_29 = PyTuple_New(1); if (unlikely(!__pyx_k_tuple_29)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1044; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_k_tuple_29));
  __Pyx_INCREF(((PyObject *)__pyx_kp_s_2));
  PyTuple_SET_ITEM(__pyx_k_tuple_29, 0, ((PyObject *)__pyx_kp_s_2));
  __Pyx_GIVEREF(((PyObject *)__pyx_kp_s_2));
  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_29));

  /* "pandas/src/generated.pyx":1072
 *     else:
 *         if limit < 0:
 *             raise ValueError('Limit must be non-negative')             # <<<<<<<<<<<<<<
 *         lim = limit
 * 
 */
  __pyx_k_tuple_30 = PyTuple_New(1); if (unlikely(!__pyx_k_tuple_30)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1072; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_k_tuple_30));
  __Pyx_INCREF(((PyObject *)__pyx_kp_s_2));
  PyTuple_SET_ITEM(__pyx_k_tuple_30, 0, ((PyObject *)__pyx_kp_s_2));
  __Pyx_GIVEREF(((PyObject *)__pyx_kp_s_2));
  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_30));

  /* "pandas/src/generated.pyx":1100
 *     else:
 *         if limit < 0:
 *             raise ValueError('Limit must be non-negative')             # <<<<<<<<<<<<<<
 *         lim = limit
 * 
 */
  __pyx_k_tuple_31 = PyTuple_New(1); if (unlikely(!__pyx_k_tuple_31)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1100; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_k_tuple_31));
  __Pyx_INCREF(((PyObject *)__pyx_kp_s_2));
  PyTuple_SET_ITEM(__pyx_k_tuple_31, 0, ((PyObject *)__pyx_kp_s_2));
  __Pyx_GIVEREF(((PyObject *)__pyx_kp_s_2));
  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_31));

  /* "pandas/src/generated.pyx":1129
 *     else:
 *         if limit < 0:
 *             raise ValueError('Limit must be non-negative')             # <<<<<<<<<<<<<<
 *         lim = limit
 * 
 */
  __pyx_k_tuple_32 = PyTuple_New(1); if (unlikely(!__pyx_k_tuple_32)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1129; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_k_tuple_32));
  __Pyx_INCREF(((PyObject *)__pyx_kp_s_2));
  PyTuple_SET_ITEM(__pyx_k_tuple_32, 0, ((PyObject *)__pyx_kp_s_2));
  __Pyx_GIVEREF(((PyObject *)__pyx_kp_s_2));
  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_32));

  /* "pandas/src/generated.pyx":1159
 *     else:
 *         if limit < 0:
 *             raise ValueError('Limit must be non-negative')             # <<<<<<<<<<<<<<
 *         lim = limit
 * 
 */
  __pyx_k_tuple_33 = PyTuple_New(1); if (unlikely(!__pyx_k_tuple_33)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1159; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_k_tuple_33));
  __Pyx_INCREF(((PyObject *)__pyx_kp_s_2));
  PyTuple_SET_ITEM(__pyx_k_tuple_33, 0, ((PyObject *)__pyx_kp_s_2));
  __Pyx_GIVEREF(((PyObject *)__pyx_kp_s_2));
  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_33));

  /* "pandas/src/generated.pyx":1189
 *     else:
 *         if limit < 0:
 *             raise ValueError('Limit must be non-negative')             # <<<<<<<<<<<<<<
 *         lim = limit
 * 
 */
  __pyx_k_tuple_34 = PyTuple_New(1); if (unlikely(!__pyx_k_tuple_34)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1189; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_k_tuple_34));
  __Pyx_INCREF(((PyObject *)__pyx_kp_s_2));
  PyTuple_SET_ITEM(__pyx_k_tuple_34, 0, ((PyObject *)__pyx_kp_s_2));
  __Pyx_GIVEREF(((PyObject *)__pyx_kp_s_2));
  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_34));

  /* "pandas/src/generated.pyx":1219
 *     else:
 *         if limit < 0:
 *             raise ValueError('Limit must be non-negative')             # <<<<<<<<<<<<<<
 *         lim = limit
 * 
 */
  __pyx_k_tuple_35 = PyTuple_New(1); if (unlikely(!__pyx_k_tuple_35)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1219; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_k_tuple_35));
  __Pyx_INCREF(((PyObject *)__pyx_kp_s_2));
  PyTuple_SET_ITEM(__pyx_k_tuple_35, 0, ((PyObject *)__pyx_kp_s_2));
  __Pyx_GIVEREF(((PyObject *)__pyx_kp_s_2));
  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_35));

  /* "pandas/src/generated.pyx":1249
 *     else:
 *         if limit < 0:
 *             raise ValueError('Limit must be non-negative')             # <<<<<<<<<<<<<<
 *         lim = limit
 * 
 */
  __pyx_k_tuple_36 = PyTuple_New(1); if (unlikely(!__pyx_k_tuple_36)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1249; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_k_tuple_36));
  __Pyx_INCREF(((PyObject *)__pyx_kp_s_2));
  PyTuple_SET_ITEM(__pyx_k_tuple_36, 0, ((PyObject *)__pyx_kp_s_2));
  __Pyx_GIVEREF(((PyObject *)__pyx_kp_s_2));
  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_36));

  /* "pandas/src/generated.pyx":1280
 *     else:
 *         if limit < 0:
 *             raise ValueError('Limit must be non-negative')             # <<<<<<<<<<<<<<
 *         lim = limit
 * 
 */
  __pyx_k_tuple_37 = PyTuple_New(1); if (unlikely(!__pyx_k_tuple_37)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1280; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_k_tuple_37));
  __Pyx_INCREF(((PyObject *)__pyx_kp_s_2));
  PyTuple_SET_ITEM(__pyx_k_tuple_37, 0, ((PyObject *)__pyx_kp_s_2));
  __Pyx_GIVEREF(((PyObject *)__pyx_kp_s_2));
  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_37));

  /* "pandas/src/generated.pyx":1310
 *     else:
 *         if limit < 0:
 *             raise ValueError('Limit must be non-negative')             # <<<<<<<<<<<<<<
 *         lim = limit
 * 
 */
  __pyx_k_tuple_38 = PyTuple_New(1); if (unlikely(!__pyx_k_tuple_38)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1310; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_k_tuple_38));
  __Pyx_INCREF(((PyObject *)__pyx_kp_s_2));
  PyTuple_SET_ITEM(__pyx_k_tuple_38, 0, ((PyObject *)__pyx_kp_s_2));
  __Pyx_GIVEREF(((PyObject *)__pyx_kp_s_2));
  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_38));

  /* "pandas/src/generated.pyx":1340
 *     else:
 *         if limit < 0:
 *             raise ValueError('Limit must be non-negative')             # <<<<<<<<<<<<<<
 *         lim = limit
 * 
 */
  __pyx_k_tuple_39 = PyTuple_New(1); if (unlikely(!__pyx_k_tuple_39)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1340; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_k_tuple_39));
  __Pyx_INCREF(((PyObject *)__pyx_kp_s_2));
  PyTuple_SET_ITEM(__pyx_k_tuple_39, 0, ((PyObject *)__pyx_kp_s_2));
  __Pyx_GIVEREF(((PyObject *)__pyx_kp_s_2));
  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_39));

  /* "pandas/src/generated.pyx":1370
 *     else:
 *         if limit < 0:
 *             raise ValueError('Limit must be non-negative')             # <<<<<<<<<<<<<<
 *         lim = limit
 * 
 */
  __pyx_k_tuple_40 = PyTuple_New(1); if (unlikely(!__pyx_k_tuple_40)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1370; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_k_tuple_40));
  __Pyx_INCREF(((PyObject *)__pyx_kp_s_2));
  PyTuple_SET_ITEM(__pyx_k_tuple_40, 0, ((PyObject *)__pyx_kp_s_2));
  __Pyx_GIVEREF(((PyObject *)__pyx_kp_s_2));
  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_40));

  /* "pandas/src/generated.pyx":1400
 *     else:
 *         if limit < 0:
 *             raise ValueError('Limit must be non-negative')             # <<<<<<<<<<<<<<
 *         lim = limit
 * 
 */
  __pyx_k_tuple_41 = PyTuple_New(1); if (unlikely(!__pyx_k_tuple_41)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1400; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_k_tuple_41));
  __Pyx_INCREF(((PyObject *)__pyx_kp_s_2));
  PyTuple_SET_ITEM(__pyx_k_tuple_41, 0, ((PyObject *)__pyx_kp_s_2));
  __Pyx_GIVEREF(((PyObject *)__pyx_kp_s_2));
  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_41));

  /* "pandas/src/generated.pyx":1436
 *             idx = indexer[i]
 *             if idx == -1:
 *                 raise ValueError('No NA values allowed')             # <<<<<<<<<<<<<<
 *             else:
 *                 outbuf[i] = values[idx]
 */
  __pyx_k_tuple_44 = PyTuple_New(1); if (unlikely(!__pyx_k_tuple_44)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1436; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_k_tuple_44));
  __Pyx_INCREF(((PyObject *)__pyx_kp_s_43));
  PyTuple_SET_ITEM(__pyx_k_tuple_44, 0, ((PyObject *)__pyx_kp_s_43));
  __Pyx_GIVEREF(((PyObject *)__pyx_kp_s_43));
  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_44));

  /* "pandas/src/generated.pyx":1468
 *             idx = indexer[i]
 *             if idx == -1:
 *                 raise ValueError('No NA values allowed')             # <<<<<<<<<<<<<<
 *             else:
 *                 outbuf[i] = values[idx]
 */
  __pyx_k_tuple_46 = PyTuple_New(1); if (unlikely(!__pyx_k_tuple_46)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1468; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_k_tuple_46));
  __Pyx_INCREF(((PyObject *)__pyx_kp_s_43));
  PyTuple_SET_ITEM(__pyx_k_tuple_46, 0, ((PyObject *)__pyx_kp_s_43));
  __Pyx_GIVEREF(((PyObject *)__pyx_kp_s_43));
  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_46));

  /* "pandas/src/generated.pyx":1500
 *             idx = indexer[i]
 *             if idx == -1:
 *                 raise ValueError('No NA values allowed')             # <<<<<<<<<<<<<<
 *             else:
 *                 outbuf[i] = values[idx]
 */
  __pyx_k_tuple_48 = PyTuple_New(1); if (unlikely(!__pyx_k_tuple_48)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1500; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_k_tuple_48));
  __Pyx_INCREF(((PyObject *)__pyx_kp_s_43));
  PyTuple_SET_ITEM(__pyx_k_tuple_48, 0, ((PyObject *)__pyx_kp_s_43));
  __Pyx_GIVEREF(((PyObject *)__pyx_kp_s_43));
  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_48));

  /* "pandas/src/generated.pyx":1532
 *             idx = indexer[i]
 *             if idx == -1:
 *                 raise ValueError('No NA values allowed')             # <<<<<<<<<<<<<<
 *             else:
 *                 outbuf[i] = values[idx]
 */
  __pyx_k_tuple_50 = PyTuple_New(1); if (unlikely(!__pyx_k_tuple_50)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1532; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_k_tuple_50));
  __Pyx_INCREF(((PyObject *)__pyx_kp_s_43));
  PyTuple_SET_ITEM(__pyx_k_tuple_50, 0, ((PyObject *)__pyx_kp_s_43));
  __Pyx_GIVEREF(((PyObject *)__pyx_kp_s_43));
  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_50));

  /* "pandas/src/generated.pyx":1564
 *             idx = indexer[i]
 *             if idx == -1:
 *                 raise ValueError('No NA values allowed')             # <<<<<<<<<<<<<<
 *             else:
 *                 outbuf[i] = values[idx]
 */
  __pyx_k_tuple_52 = PyTuple_New(1); if (unlikely(!__pyx_k_tuple_52)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1564; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_k_tuple_52));
  __Pyx_INCREF(((PyObject *)__pyx_kp_s_43));
  PyTuple_SET_ITEM(__pyx_k_tuple_52, 0, ((PyObject *)__pyx_kp_s_43));
  __Pyx_GIVEREF(((PyObject *)__pyx_kp_s_43));
  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_52));

  /* "pandas/src/generated.pyx":1938
 *             if idx == -1:
 *                 for j from 0 <= j < k:
 *                     raise ValueError('No NA values allowed')             # <<<<<<<<<<<<<<
 *             else:
 *                 for j from 0 <= j < k:
 */
  __pyx_k_tuple_56 = PyTuple_New(1); if (unlikely(!__pyx_k_tuple_56)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1938; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_k_tuple_56));
  __Pyx_INCREF(((PyObject *)__pyx_kp_s_43));
  PyTuple_SET_ITEM(__pyx_k_tuple_56, 0, ((PyObject *)__pyx_kp_s_43));
  __Pyx_GIVEREF(((PyObject *)__pyx_kp_s_43));
  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_56));

  /* "pandas/src/generated.pyx":1976
 *             if idx == -1:
 *                 for j from 0 <= j < k:
 *                     raise ValueError('No NA values allowed')             # <<<<<<<<<<<<<<
 *             else:
 *                 for j from 0 <= j < k:
 */
  __pyx_k_tuple_58 = PyTuple_New(1); if (unlikely(!__pyx_k_tuple_58)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1976; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_k_tuple_58));
  __Pyx_INCREF(((PyObject *)__pyx_kp_s_43));
  PyTuple_SET_ITEM(__pyx_k_tuple_58, 0, ((PyObject *)__pyx_kp_s_43));
  __Pyx_GIVEREF(((PyObject *)__pyx_kp_s_43));
  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_58));

  /* "pandas/src/generated.pyx":2014
 *             if idx == -1:
 *                 for j from 0 <= j < k:
 *                     raise ValueError('No NA values allowed')             # <<<<<<<<<<<<<<
 *             else:
 *                 for j from 0 <= j < k:
 */
  __pyx_k_tuple_60 = PyTuple_New(1); if (unlikely(!__pyx_k_tuple_60)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2014; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_k_tuple_60));
  __Pyx_INCREF(((PyObject *)__pyx_kp_s_43));
  PyTuple_SET_ITEM(__pyx_k_tuple_60, 0, ((PyObject *)__pyx_kp_s_43));
  __Pyx_GIVEREF(((PyObject *)__pyx_kp_s_43));
  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_60));

  /* "pandas/src/generated.pyx":2052
 *             if idx == -1:
 *                 for j from 0 <= j < k:
 *                     raise ValueError('No NA values allowed')             # <<<<<<<<<<<<<<
 *             else:
 *                 for j from 0 <= j < k:
 */
  __pyx_k_tuple_62 = PyTuple_New(1); if (unlikely(!__pyx_k_tuple_62)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2052; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_k_tuple_62));
  __Pyx_INCREF(((PyObject *)__pyx_kp_s_43));
  PyTuple_SET_ITEM(__pyx_k_tuple_62, 0, ((PyObject *)__pyx_kp_s_43));
  __Pyx_GIVEREF(((PyObject *)__pyx_kp_s_43));
  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_62));

  /* "pandas/src/generated.pyx":2090
 *             if idx == -1:
 *                 for j from 0 <= j < k:
 *                     raise ValueError('No NA values allowed')             # <<<<<<<<<<<<<<
 *             else:
 *                 for j from 0 <= j < k:
 */
  __pyx_k_tuple_64 = PyTuple_New(1); if (unlikely(!__pyx_k_tuple_64)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2090; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_k_tuple_64));
  __Pyx_INCREF(((PyObject *)__pyx_kp_s_43));
  PyTuple_SET_ITEM(__pyx_k_tuple_64, 0, ((PyObject *)__pyx_kp_s_43));
  __Pyx_GIVEREF(((PyObject *)__pyx_kp_s_43));
  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_64));

  /* "pandas/src/generated.pyx":2130
 *             if idx == -1:
 *                 for i in range(n):
 *                     raise ValueError('No NA values allowed')             # <<<<<<<<<<<<<<
 *             else:
 *                 for i in range(n):
 */
  __pyx_k_tuple_66 = PyTuple_New(1); if (unlikely(!__pyx_k_tuple_66)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2130; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_k_tuple_66));
  __Pyx_INCREF(((PyObject *)__pyx_kp_s_43));
  PyTuple_SET_ITEM(__pyx_k_tuple_66, 0, ((PyObject *)__pyx_kp_s_43));
  __Pyx_GIVEREF(((PyObject *)__pyx_kp_s_43));
  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_66));

  /* "pandas/src/generated.pyx":2170
 *             if idx == -1:
 *                 for i in range(n):
 *                     raise ValueError('No NA values allowed')             # <<<<<<<<<<<<<<
 *             else:
 *                 for i in range(n):
 */
  __pyx_k_tuple_68 = PyTuple_New(1); if (unlikely(!__pyx_k_tuple_68)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2170; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_k_tuple_68));
  __Pyx_INCREF(((PyObject *)__pyx_kp_s_43));
  PyTuple_SET_ITEM(__pyx_k_tuple_68, 0, ((PyObject *)__pyx_kp_s_43));
  __Pyx_GIVEREF(((PyObject *)__pyx_kp_s_43));
  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_68));

  /* "pandas/src/generated.pyx":2210
 *             if idx == -1:
 *                 for i in range(n):
 *                     raise ValueError('No NA values allowed')             # <<<<<<<<<<<<<<
 *             else:
 *                 for i in range(n):
 */
  __pyx_k_tuple_70 = PyTuple_New(1); if (unlikely(!__pyx_k_tuple_70)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2210; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_k_tuple_70));
  __Pyx_INCREF(((PyObject *)__pyx_kp_s_43));
  PyTuple_SET_ITEM(__pyx_k_tuple_70, 0, ((PyObject *)__pyx_kp_s_43));
  __Pyx_GIVEREF(((PyObject *)__pyx_kp_s_43));
  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_70));

  /* "pandas/src/generated.pyx":2250
 *             if idx == -1:
 *                 for i in range(n):
 *                     raise ValueError('No NA values allowed')             # <<<<<<<<<<<<<<
 *             else:
 *                 for i in range(n):
 */
  __pyx_k_tuple_72 = PyTuple_New(1); if (unlikely(!__pyx_k_tuple_72)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2250; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_k_tuple_72));
  __Pyx_INCREF(((PyObject *)__pyx_kp_s_43));
  PyTuple_SET_ITEM(__pyx_k_tuple_72, 0, ((PyObject *)__pyx_kp_s_43));
  __Pyx_GIVEREF(((PyObject *)__pyx_kp_s_43));
  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_72));

  /* "pandas/src/generated.pyx":2290
 *             if idx == -1:
 *                 for i in range(n):
 *                     raise ValueError('No NA values allowed')             # <<<<<<<<<<<<<<
 *             else:
 *                 for i in range(n):
 */
  __pyx_k_tuple_74 = PyTuple_New(1); if (unlikely(!__pyx_k_tuple_74)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2290; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_k_tuple_74));
  __Pyx_INCREF(((PyObject *)__pyx_kp_s_43));
  PyTuple_SET_ITEM(__pyx_k_tuple_74, 0, ((PyObject *)__pyx_kp_s_43));
  __Pyx_GIVEREF(((PyObject *)__pyx_kp_s_43));
  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_74));

  /* "pandas/src/generated.pyx":2332
 *             if idx == -1:
 *                 for j in range(k):
 *                     raise ValueError('No NA values allowed')             # <<<<<<<<<<<<<<
 *             else:
 *                 for j in range(k):
 */
  __pyx_k_tuple_76 = PyTuple_New(1); if (unlikely(!__pyx_k_tuple_76)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2332; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_k_tuple_76));
  __Pyx_INCREF(((PyObject *)__pyx_kp_s_43));
  PyTuple_SET_ITEM(__pyx_k_tuple_76, 0, ((PyObject *)__pyx_kp_s_43));
  __Pyx_GIVEREF(((PyObject *)__pyx_kp_s_43));
  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_76));

  /* "pandas/src/generated.pyx":2336
 *                 for j in range(k):
 *                     if idx1[j] == -1:
 *                         raise ValueError('No NA values allowed')             # <<<<<<<<<<<<<<
 *                     else:
 *                         outbuf[i, j] = values[idx, idx1[j]]
 */
  __pyx_k_tuple_77 = PyTuple_New(1); if (unlikely(!__pyx_k_tuple_77)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2336; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_k_tuple_77));
  __Pyx_INCREF(((PyObject *)__pyx_kp_s_43));
  PyTuple_SET_ITEM(__pyx_k_tuple_77, 0, ((PyObject *)__pyx_kp_s_43));
  __Pyx_GIVEREF(((PyObject *)__pyx_kp_s_43));
  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_77));

  /* "pandas/src/generated.pyx":2378
 *             if idx == -1:
 *                 for j in range(k):
 *                     raise ValueError('No NA values allowed')             # <<<<<<<<<<<<<<
 *             else:
 *                 for j in range(k):
 */
  __pyx_k_tuple_79 = PyTuple_New(1); if (unlikely(!__pyx_k_tuple_79)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2378; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_k_tuple_79));
  __Pyx_INCREF(((PyObject *)__pyx_kp_s_43));
  PyTuple_SET_ITEM(__pyx_k_tuple_79, 0, ((PyObject *)__pyx_kp_s_43));
  __Pyx_GIVEREF(((PyObject *)__pyx_kp_s_43));
  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_79));

  /* "pandas/src/generated.pyx":2382
 *                 for j in range(k):
 *                     if idx1[j] == -1:
 *                         raise ValueError('No NA values allowed')             # <<<<<<<<<<<<<<
 *                     else:
 *                         outbuf[i, j] = values[idx, idx1[j]]
 */
  __pyx_k_tuple_80 = PyTuple_New(1); if (unlikely(!__pyx_k_tuple_80)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2382; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_k_tuple_80));
  __Pyx_INCREF(((PyObject *)__pyx_kp_s_43));
  PyTuple_SET_ITEM(__pyx_k_tuple_80, 0, ((PyObject *)__pyx_kp_s_43));
  __Pyx_GIVEREF(((PyObject *)__pyx_kp_s_43));
  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_80));

  /* "pandas/src/generated.pyx":2424
 *             if idx == -1:
 *                 for j in range(k):
 *                     raise ValueError('No NA values allowed')             # <<<<<<<<<<<<<<
 *             else:
 *                 for j in range(k):
 */
  __pyx_k_tuple_82 = PyTuple_New(1); if (unlikely(!__pyx_k_tuple_82)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2424; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_k_tuple_82));
  __Pyx_INCREF(((PyObject *)__pyx_kp_s_43));
  PyTuple_SET_ITEM(__pyx_k_tuple_82, 0, ((PyObject *)__pyx_kp_s_43));
  __Pyx_GIVEREF(((PyObject *)__pyx_kp_s_43));
  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_82));

  /* "pandas/src/generated.pyx":2428
 *                 for j in range(k):
 *                     if idx1[j] == -1:
 *                         raise ValueError('No NA values allowed')             # <<<<<<<<<<<<<<
 *                     else:
 *                         outbuf[i, j] = values[idx, idx1[j]]
 */
  __pyx_k_tuple_83 = PyTuple_New(1); if (unlikely(!__pyx_k_tuple_83)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2428; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_k_tuple_83));
  __Pyx_INCREF(((PyObject *)__pyx_kp_s_43));
  PyTuple_SET_ITEM(__pyx_k_tuple_83, 0, ((PyObject *)__pyx_kp_s_43));
  __Pyx_GIVEREF(((PyObject *)__pyx_kp_s_43));
  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_83));

  /* "pandas/src/generated.pyx":2470
 *             if idx == -1:
 *                 for j in range(k):
 *                     raise ValueError('No NA values allowed')             # <<<<<<<<<<<<<<
 *             else:
 *                 for j in range(k):
 */
  __pyx_k_tuple_85 = PyTuple_New(1); if (unlikely(!__pyx_k_tuple_85)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2470; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_k_tuple_85));
  __Pyx_INCREF(((PyObject *)__pyx_kp_s_43));
  PyTuple_SET_ITEM(__pyx_k_tuple_85, 0, ((PyObject *)__pyx_kp_s_43));
  __Pyx_GIVEREF(((PyObject *)__pyx_kp_s_43));
  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_85));

  /* "pandas/src/generated.pyx":2474
 *                 for j in range(k):
 *                     if idx1[j] == -1:
 *                         raise ValueError('No NA values allowed')             # <<<<<<<<<<<<<<
 *                     else:
 *                         outbuf[i, j] = values[idx, idx1[j]]
 */
  __pyx_k_tuple_86 = PyTuple_New(1); if (unlikely(!__pyx_k_tuple_86)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2474; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_k_tuple_86));
  __Pyx_INCREF(((PyObject *)__pyx_kp_s_43));
  PyTuple_SET_ITEM(__pyx_k_tuple_86, 0, ((PyObject *)__pyx_kp_s_43));
  __Pyx_GIVEREF(((PyObject *)__pyx_kp_s_43));
  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_86));

  /* "pandas/src/generated.pyx":2516
 *             if idx == -1:
 *                 for j in range(k):
 *                     raise ValueError('No NA values allowed')             # <<<<<<<<<<<<<<
 *             else:
 *                 for j in range(k):
 */
  __pyx_k_tuple_88 = PyTuple_New(1); if (unlikely(!__pyx_k_tuple_88)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2516; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_k_tuple_88));
  __Pyx_INCREF(((PyObject *)__pyx_kp_s_43));
  PyTuple_SET_ITEM(__pyx_k_tuple_88, 0, ((PyObject *)__pyx_kp_s_43));
  __Pyx_GIVEREF(((PyObject *)__pyx_kp_s_43));
  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_88));

  /* "pandas/src/generated.pyx":2520
 *                 for j in range(k):
 *                     if idx1[j] == -1:
 *                         raise ValueError('No NA values allowed')             # <<<<<<<<<<<<<<
 *                     else:
 *                         outbuf[i, j] = values[idx, idx1[j]]
 */
  __pyx_k_tuple_89 = PyTuple_New(1); if (unlikely(!__pyx_k_tuple_89)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2520; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_k_tuple_89));
  __Pyx_INCREF(((PyObject *)__pyx_kp_s_43));
  PyTuple_SET_ITEM(__pyx_k_tuple_89, 0, ((PyObject *)__pyx_kp_s_43));
  __Pyx_GIVEREF(((PyObject *)__pyx_kp_s_43));
  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_89));

  /* "numpy.pxd":216
 *             if ((flags & pybuf.PyBUF_C_CONTIGUOUS == pybuf.PyBUF_C_CONTIGUOUS)
 *                 and not PyArray_CHKFLAGS(self, NPY_C_CONTIGUOUS)):
 *                 raise ValueError(u"ndarray is not C contiguous")             # <<<<<<<<<<<<<<
 * 
 *             if ((flags & pybuf.PyBUF_F_CONTIGUOUS == pybuf.PyBUF_F_CONTIGUOUS)
 */
  __pyx_k_tuple_91 = PyTuple_New(1); if (unlikely(!__pyx_k_tuple_91)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 216; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_k_tuple_91));
  __Pyx_INCREF(((PyObject *)__pyx_kp_u_90));
  PyTuple_SET_ITEM(__pyx_k_tuple_91, 0, ((PyObject *)__pyx_kp_u_90));
  __Pyx_GIVEREF(((PyObject *)__pyx_kp_u_90));
  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_91));

  /* "numpy.pxd":220
 *             if ((flags & pybuf.PyBUF_F_CONTIGUOUS == pybuf.PyBUF_F_CONTIGUOUS)
 *                 and not PyArray_CHKFLAGS(self, NPY_F_CONTIGUOUS)):
 *                 raise ValueError(u"ndarray is not Fortran contiguous")             # <<<<<<<<<<<<<<
 * 
 *             info.buf = PyArray_DATA(self)
 */
  __pyx_k_tuple_93 = PyTuple_New(1); if (unlikely(!__pyx_k_tuple_93)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 220; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_k_tuple_93));
  __Pyx_INCREF(((PyObject *)__pyx_kp_u_92));
  PyTuple_SET_ITEM(__pyx_k_tuple_93, 0, ((PyObject *)__pyx_kp_u_92));
  __Pyx_GIVEREF(((PyObject *)__pyx_kp_u_92));
  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_93));

  /* "numpy.pxd":258
 *                 if ((descr.byteorder == '>' and little_endian) or
 *                     (descr.byteorder == '<' and not little_endian)):
 *                     raise ValueError(u"Non-native byte order not supported")             # <<<<<<<<<<<<<<
 *                 if   t == NPY_BYTE:        f = "b"
 *                 elif t == NPY_UBYTE:       f = "B"
 */
  __pyx_k_tuple_95 = PyTuple_New(1); if (unlikely(!__pyx_k_tuple_95)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 258; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_k_tuple_95));
  __Pyx_INCREF(((PyObject *)__pyx_kp_u_94));
  PyTuple_SET_ITEM(__pyx_k_tuple_95, 0, ((PyObject *)__pyx_kp_u_94));
  __Pyx_GIVEREF(((PyObject *)__pyx_kp_u_94));
  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_95));

  /* "numpy.pxd":800
 * 
 *         if (end - f) - (new_offset - offset[0]) < 15:
 *             raise RuntimeError(u"Format string allocated too short, see comment in numpy.pxd")             # <<<<<<<<<<<<<<
 * 
 *         if ((child.byteorder == '>' and little_endian) or
 */
  __pyx_k_tuple_98 = PyTuple_New(1); if (unlikely(!__pyx_k_tuple_98)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 800; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_k_tuple_98));
  __Pyx_INCREF(((PyObject *)__pyx_kp_u_97));
  PyTuple_SET_ITEM(__pyx_k_tuple_98, 0, ((PyObject *)__pyx_kp_u_97));
  __Pyx_GIVEREF(((PyObject *)__pyx_kp_u_97));
  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_98));

  /* "numpy.pxd":804
 *         if ((child.byteorder == '>' and little_endian) or
 *             (child.byteorder == '<' and not little_endian)):
 *             raise ValueError(u"Non-native byte order not supported")             # <<<<<<<<<<<<<<
 *             # One could encode it in the format string and have Cython
 *             # complain instead, BUT: < and > in format strings also imply
 */
  __pyx_k_tuple_99 = PyTuple_New(1); if (unlikely(!__pyx_k_tuple_99)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 804; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_k_tuple_99));
  __Pyx_INCREF(((PyObject *)__pyx_kp_u_94));
  PyTuple_SET_ITEM(__pyx_k_tuple_99, 0, ((PyObject *)__pyx_kp_u_94));
  __Pyx_GIVEREF(((PyObject *)__pyx_kp_u_94));
  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_99));

  /* "numpy.pxd":824
 *             t = child.type_num
 *             if end - f < 5:
 *                 raise RuntimeError(u"Format string allocated too short.")             # <<<<<<<<<<<<<<
 * 
 *             # Until ticket #99 is fixed, use integers to avoid warnings
 */
  __pyx_k_tuple_101 = PyTuple_New(1); if (unlikely(!__pyx_k_tuple_101)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 824; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_k_tuple_101));
  __Pyx_INCREF(((PyObject *)__pyx_kp_u_100));
  PyTuple_SET_ITEM(__pyx_k_tuple_101, 0, ((PyObject *)__pyx_kp_u_100));
  __Pyx_GIVEREF(((PyObject *)__pyx_kp_u_100));
  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_101));

  /* "util.pxd":32
 *         i += sz
 *     elif i >= sz or sz == 0:
 *         raise IndexError('index out of bounds')             # <<<<<<<<<<<<<<
 * 
 *     return get_value_1d(arr, i)
 */
  __pyx_k_tuple_103 = PyTuple_New(1); if (unlikely(!__pyx_k_tuple_103)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 32; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_k_tuple_103));
  __Pyx_INCREF(((PyObject *)__pyx_kp_s_102));
  PyTuple_SET_ITEM(__pyx_k_tuple_103, 0, ((PyObject *)__pyx_kp_s_102));
  __Pyx_GIVEREF(((PyObject *)__pyx_kp_s_102));
  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_103));

  /* "util.pxd":49
 *         i += sz
 *     elif i >= sz:
 *         raise IndexError('index out of bounds')             # <<<<<<<<<<<<<<
 * 
 *     assign_value_1d(arr, i, value)
 */
  __pyx_k_tuple_104 = PyTuple_New(1); if (unlikely(!__pyx_k_tuple_104)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 49; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_k_tuple_104));
  __Pyx_INCREF(((PyObject *)__pyx_kp_s_102));
  PyTuple_SET_ITEM(__pyx_k_tuple_104, 0, ((PyObject *)__pyx_kp_s_102));
  __Pyx_GIVEREF(((PyObject *)__pyx_kp_s_102));
  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_104));

  /* "pandas/src/generated.pyx":46
 * import_ufunc()
 * 
 * cdef int PLATFORM_INT = (<ndarray> np.arange(0, dtype=np.int_)).descr.type_num             # <<<<<<<<<<<<<<
 * 
 * cpdef ensure_platform_int(object arr):
 */
  __pyx_k_tuple_105 = PyTuple_New(1); if (unlikely(!__pyx_k_tuple_105)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 46; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_k_tuple_105));
  __Pyx_INCREF(__pyx_int_0);
  PyTuple_SET_ITEM(__pyx_k_tuple_105, 0, __pyx_int_0);
  __Pyx_GIVEREF(__pyx_int_0);
  __Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_105));
  __Pyx_RefNannyFinishContext();
  return 0;
  __pyx_L1_error:;
  __Pyx_RefNannyFinishContext();
  return -1;
}

static int __Pyx_InitGlobals(void) {
  if (__Pyx_InitStrings(__pyx_string_tab) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
  __pyx_int_0 = PyInt_FromLong(0); if (unlikely(!__pyx_int_0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
  __pyx_int_neg_1 = PyInt_FromLong(-1); if (unlikely(!__pyx_int_neg_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
  __pyx_int_15 = PyInt_FromLong(15); if (unlikely(!__pyx_int_15)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
  return 0;
  __pyx_L1_error:;
  return -1;
}

#if PY_MAJOR_VERSION < 3
PyMODINIT_FUNC init_algos(void); /*proto*/
PyMODINIT_FUNC init_algos(void)
#else
PyMODINIT_FUNC PyInit__algos(void); /*proto*/
PyMODINIT_FUNC PyInit__algos(void)
#endif
{
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  double __pyx_t_3;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  __Pyx_RefNannyDeclarations
  #if CYTHON_REFNANNY
  __Pyx_RefNanny = __Pyx_RefNannyImportAPI("refnanny");
  if (!__Pyx_RefNanny) {
      PyErr_Clear();
      __Pyx_RefNanny = __Pyx_RefNannyImportAPI("Cython.Runtime.refnanny");
      if (!__Pyx_RefNanny)
          Py_FatalError("failed to import 'refnanny' module");
  }
  #endif
  __Pyx_RefNannySetupContext("PyMODINIT_FUNC PyInit__algos(void)");
  if ( __Pyx_check_binary_version() < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_empty_tuple = PyTuple_New(0); if (unlikely(!__pyx_empty_tuple)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_empty_bytes = PyBytes_FromStringAndSize("", 0); if (unlikely(!__pyx_empty_bytes)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  #ifdef __pyx_binding_PyCFunctionType_USED
  if (__pyx_binding_PyCFunctionType_init() < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  #endif
  /*--- Library function declarations ---*/
  /*--- Threads initialization code ---*/
  #if defined(__PYX_FORCE_INIT_THREADS) && __PYX_FORCE_INIT_THREADS
  #ifdef WITH_THREAD /* Python build with threading support? */
  PyEval_InitThreads();
  #endif
  #endif
  /*--- Module creation code ---*/
  #if PY_MAJOR_VERSION < 3
  __pyx_m = Py_InitModule4(__Pyx_NAMESTR("_algos"), __pyx_methods, 0, 0, PYTHON_API_VERSION);
  #else
  __pyx_m = PyModule_Create(&__pyx_moduledef);
  #endif
  if (!__pyx_m) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
  #if PY_MAJOR_VERSION < 3
  Py_INCREF(__pyx_m);
  #endif
  __pyx_b = PyImport_AddModule(__Pyx_NAMESTR(__Pyx_BUILTIN_MODULE_NAME));
  if (!__pyx_b) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
  if (__Pyx_SetAttrString(__pyx_m, "__builtins__", __pyx_b) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
  /*--- Initialize various global constants etc. ---*/
  if (unlikely(__Pyx_InitGlobals() < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (__pyx_module_is_main_pandas___algos) {
    if (__Pyx_SetAttrString(__pyx_m, "__name__", __pyx_n_s____main__) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
  }
  /*--- Builtin init code ---*/
  if (unlikely(__Pyx_InitCachedBuiltins() < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  /*--- Constants init code ---*/
  if (unlikely(__Pyx_InitCachedConstants() < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  /*--- Global init code ---*/
  /*--- Variable export code ---*/
  /*--- Function export code ---*/
  /*--- Type init code ---*/
  /*--- Type import code ---*/
  __pyx_ptype_5numpy_dtype = __Pyx_ImportType("numpy", "dtype", sizeof(PyArray_Descr), 0); if (unlikely(!__pyx_ptype_5numpy_dtype)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 156; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_ptype_5numpy_flatiter = __Pyx_ImportType("numpy", "flatiter", sizeof(PyArrayIterObject), 0); if (unlikely(!__pyx_ptype_5numpy_flatiter)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 166; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_ptype_5numpy_broadcast = __Pyx_ImportType("numpy", "broadcast", sizeof(PyArrayMultiIterObject), 0); if (unlikely(!__pyx_ptype_5numpy_broadcast)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 170; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_ptype_5numpy_ndarray = __Pyx_ImportType("numpy", "ndarray", sizeof(PyArrayObject), 0); if (unlikely(!__pyx_ptype_5numpy_ndarray)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 179; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_ptype_5numpy_ufunc = __Pyx_ImportType("numpy", "ufunc", sizeof(PyUFuncObject), 0); if (unlikely(!__pyx_ptype_5numpy_ufunc)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 862; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_ptype_7cpython_4bool_bool = __Pyx_ImportType(__Pyx_BUILTIN_MODULE_NAME, "bool", sizeof(PyBoolObject), 0); if (unlikely(!__pyx_ptype_7cpython_4bool_bool)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 8; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_ptype_7cpython_7complex_complex = __Pyx_ImportType(__Pyx_BUILTIN_MODULE_NAME, "complex", sizeof(PyComplexObject), 0); if (unlikely(!__pyx_ptype_7cpython_7complex_complex)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 15; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_ptype_8datetime_date = __Pyx_ImportType("datetime", "date", sizeof(PyDateTime_Date), 0); if (unlikely(!__pyx_ptype_8datetime_date)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 13; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_ptype_8datetime_datetime = __Pyx_ImportType("datetime", "datetime", sizeof(PyDateTime_DateTime), 0); if (unlikely(!__pyx_ptype_8datetime_datetime)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 16; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_ptype_8datetime_timedelta = __Pyx_ImportType("datetime", "timedelta", sizeof(PyDateTime_Delta), 0); if (unlikely(!__pyx_ptype_8datetime_timedelta)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 19; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  /*--- Variable import code ---*/
  /*--- Function import code ---*/
  /*--- Execution code ---*/

  /* "pandas/src/generated.pyx":15
 * cimport cpython
 * 
 * import numpy as np             # <<<<<<<<<<<<<<
 * isnan = np.isnan
 * cdef double NaN = <double> np.NaN
 */
  __pyx_t_1 = __Pyx_Import(((PyObject *)__pyx_n_s__numpy), 0, -1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 15; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__np, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 15; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "pandas/src/generated.pyx":16
 * 
 * import numpy as np
 * isnan = np.isnan             # <<<<<<<<<<<<<<
 * cdef double NaN = <double> np.NaN
 * cdef double nan = NaN
 */
  __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__np); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 16; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s__isnan); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 16; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__isnan, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 16; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "pandas/src/generated.pyx":17
 * import numpy as np
 * isnan = np.isnan
 * cdef double NaN = <double> np.NaN             # <<<<<<<<<<<<<<
 * cdef double nan = NaN
 * 
 */
  __pyx_t_2 = __Pyx_GetName(__pyx_m, __pyx_n_s__np); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 17; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_1 = PyObject_GetAttr(__pyx_t_2, __pyx_n_s__NaN); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 17; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_3 = __pyx_PyFloat_AsDouble(__pyx_t_1); if (unlikely((__pyx_t_3 == (double)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 17; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_6pandas_6_algos_NaN = ((double)__pyx_t_3);

  /* "pandas/src/generated.pyx":18
 * isnan = np.isnan
 * cdef double NaN = <double> np.NaN
 * cdef double nan = NaN             # <<<<<<<<<<<<<<
 * 
 * from datetime import datetime as pydatetime
 */
  __pyx_v_6pandas_6_algos_nan = __pyx_v_6pandas_6_algos_NaN;

  /* "pandas/src/generated.pyx":20
 * cdef double nan = NaN
 * 
 * from datetime import datetime as pydatetime             # <<<<<<<<<<<<<<
 * 
 * # this is our datetime.pxd
 */
  __pyx_t_1 = PyList_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 20; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_1));
  __Pyx_INCREF(((PyObject *)__pyx_n_s__datetime));
  PyList_SET_ITEM(__pyx_t_1, 0, ((PyObject *)__pyx_n_s__datetime));
  __Pyx_GIVEREF(((PyObject *)__pyx_n_s__datetime));
  __pyx_t_2 = __Pyx_Import(((PyObject *)__pyx_n_s__datetime), ((PyObject *)__pyx_t_1), -1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 20; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(((PyObject *)__pyx_t_1)); __pyx_t_1 = 0;
  __pyx_t_1 = PyObject_GetAttr(__pyx_t_2, __pyx_n_s__datetime); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 20; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__pydatetime, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 20; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "pandas/src/generated.pyx":40
 * 
 * # import datetime C API
 * PyDateTime_IMPORT             # <<<<<<<<<<<<<<
 * 
 * # initialize numpy
 */
  PyDateTime_IMPORT;

  /* "pandas/src/generated.pyx":43
 * 
 * # initialize numpy
 * import_array()             # <<<<<<<<<<<<<<
 * import_ufunc()
 * 
 */
  import_array();

  /* "pandas/src/generated.pyx":44
 * # initialize numpy
 * import_array()
 * import_ufunc()             # <<<<<<<<<<<<<<
 * 
 * cdef int PLATFORM_INT = (<ndarray> np.arange(0, dtype=np.int_)).descr.type_num
 */
  import_ufunc();

  /* "pandas/src/generated.pyx":46
 * import_ufunc()
 * 
 * cdef int PLATFORM_INT = (<ndarray> np.arange(0, dtype=np.int_)).descr.type_num             # <<<<<<<<<<<<<<
 * 
 * cpdef ensure_platform_int(object arr):
 */
  __pyx_t_2 = __Pyx_GetName(__pyx_m, __pyx_n_s__np); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 46; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_1 = PyObject_GetAttr(__pyx_t_2, __pyx_n_s__arange); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 46; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = PyDict_New(); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 46; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_2));
  __pyx_t_4 = __Pyx_GetName(__pyx_m, __pyx_n_s__np); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 46; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_5 = PyObject_GetAttr(__pyx_t_4, __pyx_n_s__int_); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 46; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  if (PyDict_SetItem(__pyx_t_2, ((PyObject *)__pyx_n_s__dtype), __pyx_t_5) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 46; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = PyEval_CallObjectWithKeywords(__pyx_t_1, ((PyObject *)__pyx_k_tuple_105), ((PyObject *)__pyx_t_2)); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 46; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0;
  __pyx_v_6pandas_6_algos_PLATFORM_INT = ((PyArrayObject *)__pyx_t_5)->descr->type_num;
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

  /* "pandas/src/generated.pyx":212
 * @cython.boundscheck(False)
 * @cython.wraparound(False)
 * def pad_float64(ndarray[float64_t] old, ndarray[float64_t] new,             # <<<<<<<<<<<<<<
 *                    limit=None):
 *     cdef Py_ssize_t i, j, nleft, nright
 */
  __pyx_t_5 = PyCFunction_NewEx(&__pyx_mdef_6pandas_6_algos_10pad_float64, NULL, __pyx_n_s_106); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 212; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__pad_float64, __pyx_t_5) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 212; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

  /* "pandas/src/generated.pyx":273
 * @cython.boundscheck(False)
 * @cython.wraparound(False)
 * def pad_object(ndarray[object] old, ndarray[object] new,             # <<<<<<<<<<<<<<
 *                    limit=None):
 *     cdef Py_ssize_t i, j, nleft, nright
 */
  __pyx_t_5 = PyCFunction_NewEx(&__pyx_mdef_6pandas_6_algos_11pad_object, NULL, __pyx_n_s_106); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 273; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__pad_object, __pyx_t_5) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 273; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

  /* "pandas/src/generated.pyx":334
 * @cython.boundscheck(False)
 * @cython.wraparound(False)
 * def pad_int32(ndarray[int32_t] old, ndarray[int32_t] new,             # <<<<<<<<<<<<<<
 *                    limit=None):
 *     cdef Py_ssize_t i, j, nleft, nright
 */
  __pyx_t_5 = PyCFunction_NewEx(&__pyx_mdef_6pandas_6_algos_12pad_int32, NULL, __pyx_n_s_106); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 334; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__pad_int32, __pyx_t_5) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 334; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

  /* "pandas/src/generated.pyx":395
 * @cython.boundscheck(False)
 * @cython.wraparound(False)
 * def pad_int64(ndarray[int64_t] old, ndarray[int64_t] new,             # <<<<<<<<<<<<<<
 *                    limit=None):
 *     cdef Py_ssize_t i, j, nleft, nright
 */
  __pyx_t_5 = PyCFunction_NewEx(&__pyx_mdef_6pandas_6_algos_13pad_int64, NULL, __pyx_n_s_106); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 395; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__pad_int64, __pyx_t_5) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 395; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

  /* "pandas/src/generated.pyx":456
 * @cython.boundscheck(False)
 * @cython.wraparound(False)
 * def pad_bool(ndarray[uint8_t] old, ndarray[uint8_t] new,             # <<<<<<<<<<<<<<
 *                    limit=None):
 *     cdef Py_ssize_t i, j, nleft, nright
 */
  __pyx_t_5 = PyCFunction_NewEx(&__pyx_mdef_6pandas_6_algos_14pad_bool, NULL, __pyx_n_s_106); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 456; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__pad_bool, __pyx_t_5) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 456; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

  /* "pandas/src/generated.pyx":518
 * @cython.boundscheck(False)
 * @cython.wraparound(False)
 * def backfill_float64(ndarray[float64_t] old, ndarray[float64_t] new,             # <<<<<<<<<<<<<<
 *                       limit=None):
 *     cdef Py_ssize_t i, j, nleft, nright
 */
  __pyx_t_5 = PyCFunction_NewEx(&__pyx_mdef_6pandas_6_algos_15backfill_float64, NULL, __pyx_n_s_106); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 518; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__backfill_float64, __pyx_t_5) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 518; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

  /* "pandas/src/generated.pyx":580
 * @cython.boundscheck(False)
 * @cython.wraparound(False)
 * def backfill_object(ndarray[object] old, ndarray[object] new,             # <<<<<<<<<<<<<<
 *                       limit=None):
 *     cdef Py_ssize_t i, j, nleft, nright
 */
  __pyx_t_5 = PyCFunction_NewEx(&__pyx_mdef_6pandas_6_algos_16backfill_object, NULL, __pyx_n_s_106); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 580; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__backfill_object, __pyx_t_5) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 580; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

  /* "pandas/src/generated.pyx":642
 * @cython.boundscheck(False)
 * @cython.wraparound(False)
 * def backfill_int32(ndarray[int32_t] old, ndarray[int32_t] new,             # <<<<<<<<<<<<<<
 *                       limit=None):
 *     cdef Py_ssize_t i, j, nleft, nright
 */
  __pyx_t_5 = PyCFunction_NewEx(&__pyx_mdef_6pandas_6_algos_17backfill_int32, NULL, __pyx_n_s_106); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 642; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__backfill_int32, __pyx_t_5) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 642; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

  /* "pandas/src/generated.pyx":704
 * @cython.boundscheck(False)
 * @cython.wraparound(False)
 * def backfill_int64(ndarray[int64_t] old, ndarray[int64_t] new,             # <<<<<<<<<<<<<<
 *                       limit=None):
 *     cdef Py_ssize_t i, j, nleft, nright
 */
  __pyx_t_5 = PyCFunction_NewEx(&__pyx_mdef_6pandas_6_algos_18backfill_int64, NULL, __pyx_n_s_106); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 704; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__backfill_int64, __pyx_t_5) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 704; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

  /* "pandas/src/generated.pyx":766
 * @cython.boundscheck(False)
 * @cython.wraparound(False)
 * def backfill_bool(ndarray[uint8_t] old, ndarray[uint8_t] new,             # <<<<<<<<<<<<<<
 *                       limit=None):
 *     cdef Py_ssize_t i, j, nleft, nright
 */
  __pyx_t_5 = PyCFunction_NewEx(&__pyx_mdef_6pandas_6_algos_19backfill_bool, NULL, __pyx_n_s_106); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 766; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__backfill_bool, __pyx_t_5) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 766; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

  /* "pandas/src/generated.pyx":829
 * @cython.boundscheck(False)
 * @cython.wraparound(False)
 * def pad_inplace_float64(ndarray[float64_t] values,             # <<<<<<<<<<<<<<
 *                          ndarray[uint8_t, cast=True] mask,
 *                          limit=None):
 */
  __pyx_t_5 = PyCFunction_NewEx(&__pyx_mdef_6pandas_6_algos_20pad_inplace_float64, NULL, __pyx_n_s_106); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 829; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__pad_inplace_float64, __pyx_t_5) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 829; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

  /* "pandas/src/generated.pyx":858
 * @cython.boundscheck(False)
 * @cython.wraparound(False)
 * def pad_inplace_object(ndarray[object] values,             # <<<<<<<<<<<<<<
 *                          ndarray[uint8_t, cast=True] mask,
 *                          limit=None):
 */
  __pyx_t_5 = PyCFunction_NewEx(&__pyx_mdef_6pandas_6_algos_21pad_inplace_object, NULL, __pyx_n_s_106); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 858; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__pad_inplace_object, __pyx_t_5) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 858; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

  /* "pandas/src/generated.pyx":887
 * @cython.boundscheck(False)
 * @cython.wraparound(False)
 * def pad_inplace_int32(ndarray[int32_t] values,             # <<<<<<<<<<<<<<
 *                          ndarray[uint8_t, cast=True] mask,
 *                          limit=None):
 */
  __pyx_t_5 = PyCFunction_NewEx(&__pyx_mdef_6pandas_6_algos_22pad_inplace_int32, NULL, __pyx_n_s_106); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 887; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__pad_inplace_int32, __pyx_t_5) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 887; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

  /* "pandas/src/generated.pyx":916
 * @cython.boundscheck(False)
 * @cython.wraparound(False)
 * def pad_inplace_int64(ndarray[int64_t] values,             # <<<<<<<<<<<<<<
 *                          ndarray[uint8_t, cast=True] mask,
 *                          limit=None):
 */
  __pyx_t_5 = PyCFunction_NewEx(&__pyx_mdef_6pandas_6_algos_23pad_inplace_int64, NULL, __pyx_n_s_106); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 916; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__pad_inplace_int64, __pyx_t_5) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 916; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

  /* "pandas/src/generated.pyx":945
 * @cython.boundscheck(False)
 * @cython.wraparound(False)
 * def pad_inplace_bool(ndarray[uint8_t] values,             # <<<<<<<<<<<<<<
 *                          ndarray[uint8_t, cast=True] mask,
 *                          limit=None):
 */
  __pyx_t_5 = PyCFunction_NewEx(&__pyx_mdef_6pandas_6_algos_24pad_inplace_bool, NULL, __pyx_n_s_106); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 945; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__pad_inplace_bool, __pyx_t_5) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 945; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

  /* "pandas/src/generated.pyx":975
 * @cython.boundscheck(False)
 * @cython.wraparound(False)
 * def backfill_inplace_float64(ndarray[float64_t] values,             # <<<<<<<<<<<<<<
 *                               ndarray[uint8_t, cast=True] mask,
 *                               limit=None):
 */
  __pyx_t_5 = PyCFunction_NewEx(&__pyx_mdef_6pandas_6_algos_25backfill_inplace_float64, NULL, __pyx_n_s_106); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 975; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s_107, __pyx_t_5) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 975; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

  /* "pandas/src/generated.pyx":1003
 * @cython.boundscheck(False)
 * @cython.wraparound(False)
 * def backfill_inplace_object(ndarray[object] values,             # <<<<<<<<<<<<<<
 *                               ndarray[uint8_t, cast=True] mask,
 *                               limit=None):
 */
  __pyx_t_5 = PyCFunction_NewEx(&__pyx_mdef_6pandas_6_algos_26backfill_inplace_object, NULL, __pyx_n_s_106); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1003; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s_108, __pyx_t_5) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1003; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

  /* "pandas/src/generated.pyx":1031
 * @cython.boundscheck(False)
 * @cython.wraparound(False)
 * def backfill_inplace_int32(ndarray[int32_t] values,             # <<<<<<<<<<<<<<
 *                               ndarray[uint8_t, cast=True] mask,
 *                               limit=None):
 */
  __pyx_t_5 = PyCFunction_NewEx(&__pyx_mdef_6pandas_6_algos_27backfill_inplace_int32, NULL, __pyx_n_s_106); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1031; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s_109, __pyx_t_5) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1031; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

  /* "pandas/src/generated.pyx":1059
 * @cython.boundscheck(False)
 * @cython.wraparound(False)
 * def backfill_inplace_int64(ndarray[int64_t] values,             # <<<<<<<<<<<<<<
 *                               ndarray[uint8_t, cast=True] mask,
 *                               limit=None):
 */
  __pyx_t_5 = PyCFunction_NewEx(&__pyx_mdef_6pandas_6_algos_28backfill_inplace_int64, NULL, __pyx_n_s_106); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1059; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s_110, __pyx_t_5) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1059; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

  /* "pandas/src/generated.pyx":1087
 * @cython.boundscheck(False)
 * @cython.wraparound(False)
 * def backfill_inplace_bool(ndarray[uint8_t] values,             # <<<<<<<<<<<<<<
 *                               ndarray[uint8_t, cast=True] mask,
 *                               limit=None):
 */
  __pyx_t_5 = PyCFunction_NewEx(&__pyx_mdef_6pandas_6_algos_29backfill_inplace_bool, NULL, __pyx_n_s_106); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1087; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s_111, __pyx_t_5) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1087; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

  /* "pandas/src/generated.pyx":1116
 * @cython.boundscheck(False)
 * @cython.wraparound(False)
 * def pad_2d_inplace_float64(ndarray[float64_t, ndim=2] values,             # <<<<<<<<<<<<<<
 *                             ndarray[uint8_t, ndim=2] mask,
 *                             limit=None):
 */
  __pyx_t_5 = PyCFunction_NewEx(&__pyx_mdef_6pandas_6_algos_30pad_2d_inplace_float64, NULL, __pyx_n_s_106); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1116; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s_112, __pyx_t_5) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1116; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

  /* "pandas/src/generated.pyx":1146
 * @cython.boundscheck(False)
 * @cython.wraparound(False)
 * def pad_2d_inplace_object(ndarray[object, ndim=2] values,             # <<<<<<<<<<<<<<
 *                             ndarray[uint8_t, ndim=2] mask,
 *                             limit=None):
 */
  __pyx_t_5 = PyCFunction_NewEx(&__pyx_mdef_6pandas_6_algos_31pad_2d_inplace_object, NULL, __pyx_n_s_106); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1146; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s_113, __pyx_t_5) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1146; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

  /* "pandas/src/generated.pyx":1176
 * @cython.boundscheck(False)
 * @cython.wraparound(False)
 * def pad_2d_inplace_int32(ndarray[int32_t, ndim=2] values,             # <<<<<<<<<<<<<<
 *                             ndarray[uint8_t, ndim=2] mask,
 *                             limit=None):
 */
  __pyx_t_5 = PyCFunction_NewEx(&__pyx_mdef_6pandas_6_algos_32pad_2d_inplace_int32, NULL, __pyx_n_s_106); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1176; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s_114, __pyx_t_5) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1176; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

  /* "pandas/src/generated.pyx":1206
 * @cython.boundscheck(False)
 * @cython.wraparound(False)
 * def pad_2d_inplace_int64(ndarray[int64_t, ndim=2] values,             # <<<<<<<<<<<<<<
 *                             ndarray[uint8_t, ndim=2] mask,
 *                             limit=None):
 */
  __pyx_t_5 = PyCFunction_NewEx(&__pyx_mdef_6pandas_6_algos_33pad_2d_inplace_int64, NULL, __pyx_n_s_106); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1206; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s_115, __pyx_t_5) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1206; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

  /* "pandas/src/generated.pyx":1236
 * @cython.boundscheck(False)
 * @cython.wraparound(False)
 * def pad_2d_inplace_bool(ndarray[uint8_t, ndim=2] values,             # <<<<<<<<<<<<<<
 *                             ndarray[uint8_t, ndim=2] mask,
 *                             limit=None):
 */
  __pyx_t_5 = PyCFunction_NewEx(&__pyx_mdef_6pandas_6_algos_34pad_2d_inplace_bool, NULL, __pyx_n_s_106); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1236; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__pad_2d_inplace_bool, __pyx_t_5) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1236; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

  /* "pandas/src/generated.pyx":1267
 * @cython.boundscheck(False)
 * @cython.wraparound(False)
 * def backfill_2d_inplace_float64(ndarray[float64_t, ndim=2] values,             # <<<<<<<<<<<<<<
 *                                  ndarray[uint8_t, ndim=2] mask,
 *                                  limit=None):
 */
  __pyx_t_5 = PyCFunction_NewEx(&__pyx_mdef_6pandas_6_algos_35backfill_2d_inplace_float64, NULL, __pyx_n_s_106); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1267; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s_116, __pyx_t_5) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1267; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

  /* "pandas/src/generated.pyx":1297
 * @cython.boundscheck(False)
 * @cython.wraparound(False)
 * def backfill_2d_inplace_object(ndarray[object, ndim=2] values,             # <<<<<<<<<<<<<<
 *                                  ndarray[uint8_t, ndim=2] mask,
 *                                  limit=None):
 */
  __pyx_t_5 = PyCFunction_NewEx(&__pyx_mdef_6pandas_6_algos_36backfill_2d_inplace_object, NULL, __pyx_n_s_106); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1297; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s_117, __pyx_t_5) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1297; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

  /* "pandas/src/generated.pyx":1327
 * @cython.boundscheck(False)
 * @cython.wraparound(False)
 * def backfill_2d_inplace_int32(ndarray[int32_t, ndim=2] values,             # <<<<<<<<<<<<<<
 *                                  ndarray[uint8_t, ndim=2] mask,
 *                                  limit=None):
 */
  __pyx_t_5 = PyCFunction_NewEx(&__pyx_mdef_6pandas_6_algos_37backfill_2d_inplace_int32, NULL, __pyx_n_s_106); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1327; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s_118, __pyx_t_5) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1327; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

  /* "pandas/src/generated.pyx":1357
 * @cython.boundscheck(False)
 * @cython.wraparound(False)
 * def backfill_2d_inplace_int64(ndarray[int64_t, ndim=2] values,             # <<<<<<<<<<<<<<
 *                                  ndarray[uint8_t, ndim=2] mask,
 *                                  limit=None):
 */
  __pyx_t_5 = PyCFunction_NewEx(&__pyx_mdef_6pandas_6_algos_38backfill_2d_inplace_int64, NULL, __pyx_n_s_106); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1357; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s_119, __pyx_t_5) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1357; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

  /* "pandas/src/generated.pyx":1387
 * @cython.boundscheck(False)
 * @cython.wraparound(False)
 * def backfill_2d_inplace_bool(ndarray[uint8_t, ndim=2] values,             # <<<<<<<<<<<<<<
 *                                  ndarray[uint8_t, ndim=2] mask,
 *                                  limit=None):
 */
  __pyx_t_5 = PyCFunction_NewEx(&__pyx_mdef_6pandas_6_algos_39backfill_2d_inplace_bool, NULL, __pyx_n_s_106); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1387; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s_120, __pyx_t_5) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1387; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

  /* "pandas/src/generated.pyx":1419
 * def take_1d_float64(ndarray[float64_t] values,
 *                      ndarray[int64_t] indexer,
 *                      out=None, fill_value=np.nan):             # <<<<<<<<<<<<<<
 *     cdef:
 *         Py_ssize_t i, n, idx
 */
  __pyx_t_5 = __Pyx_GetName(__pyx_m, __pyx_n_s__np); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1419; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_2 = PyObject_GetAttr(__pyx_t_5, __pyx_n_s__nan); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1419; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_k_42 = __pyx_t_2;
  __Pyx_GIVEREF(__pyx_t_2);
  __pyx_t_2 = 0;

  /* "pandas/src/generated.pyx":1417
 * 
 * @cython.wraparound(False)
 * def take_1d_float64(ndarray[float64_t] values,             # <<<<<<<<<<<<<<
 *                      ndarray[int64_t] indexer,
 *                      out=None, fill_value=np.nan):
 */
  __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_6pandas_6_algos_40take_1d_float64, NULL, __pyx_n_s_106); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1417; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__take_1d_float64, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1417; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "pandas/src/generated.pyx":1451
 * def take_1d_object(ndarray[object] values,
 *                      ndarray[int64_t] indexer,
 *                      out=None, fill_value=np.nan):             # <<<<<<<<<<<<<<
 *     cdef:
 *         Py_ssize_t i, n, idx
 */
  __pyx_t_2 = __Pyx_GetName(__pyx_m, __pyx_n_s__np); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1451; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_5 = PyObject_GetAttr(__pyx_t_2, __pyx_n_s__nan); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1451; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_k_45 = __pyx_t_5;
  __Pyx_GIVEREF(__pyx_t_5);
  __pyx_t_5 = 0;

  /* "pandas/src/generated.pyx":1449
 * 
 * @cython.wraparound(False)
 * def take_1d_object(ndarray[object] values,             # <<<<<<<<<<<<<<
 *                      ndarray[int64_t] indexer,
 *                      out=None, fill_value=np.nan):
 */
  __pyx_t_5 = PyCFunction_NewEx(&__pyx_mdef_6pandas_6_algos_41take_1d_object, NULL, __pyx_n_s_106); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1449; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__take_1d_object, __pyx_t_5) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1449; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

  /* "pandas/src/generated.pyx":1483
 * def take_1d_int32(ndarray[int32_t] values,
 *                      ndarray[int64_t] indexer,
 *                      out=None, fill_value=np.nan):             # <<<<<<<<<<<<<<
 *     cdef:
 *         Py_ssize_t i, n, idx
 */
  __pyx_t_5 = __Pyx_GetName(__pyx_m, __pyx_n_s__np); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1483; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_2 = PyObject_GetAttr(__pyx_t_5, __pyx_n_s__nan); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1483; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_k_47 = __pyx_t_2;
  __Pyx_GIVEREF(__pyx_t_2);
  __pyx_t_2 = 0;

  /* "pandas/src/generated.pyx":1481
 * 
 * @cython.wraparound(False)
 * def take_1d_int32(ndarray[int32_t] values,             # <<<<<<<<<<<<<<
 *                      ndarray[int64_t] indexer,
 *                      out=None, fill_value=np.nan):
 */
  __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_6pandas_6_algos_42take_1d_int32, NULL, __pyx_n_s_106); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1481; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__take_1d_int32, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1481; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "pandas/src/generated.pyx":1515
 * def take_1d_int64(ndarray[int64_t] values,
 *                      ndarray[int64_t] indexer,
 *                      out=None, fill_value=np.nan):             # <<<<<<<<<<<<<<
 *     cdef:
 *         Py_ssize_t i, n, idx
 */
  __pyx_t_2 = __Pyx_GetName(__pyx_m, __pyx_n_s__np); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1515; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_5 = PyObject_GetAttr(__pyx_t_2, __pyx_n_s__nan); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1515; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_k_49 = __pyx_t_5;
  __Pyx_GIVEREF(__pyx_t_5);
  __pyx_t_5 = 0;

  /* "pandas/src/generated.pyx":1513
 * 
 * @cython.wraparound(False)
 * def take_1d_int64(ndarray[int64_t] values,             # <<<<<<<<<<<<<<
 *                      ndarray[int64_t] indexer,
 *                      out=None, fill_value=np.nan):
 */
  __pyx_t_5 = PyCFunction_NewEx(&__pyx_mdef_6pandas_6_algos_43take_1d_int64, NULL, __pyx_n_s_106); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1513; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__take_1d_int64, __pyx_t_5) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1513; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

  /* "pandas/src/generated.pyx":1547
 * def take_1d_bool(ndarray[uint8_t] values,
 *                      ndarray[int64_t] indexer,
 *                      out=None, fill_value=np.nan):             # <<<<<<<<<<<<<<
 *     cdef:
 *         Py_ssize_t i, n, idx
 */
  __pyx_t_5 = __Pyx_GetName(__pyx_m, __pyx_n_s__np); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1547; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_2 = PyObject_GetAttr(__pyx_t_5, __pyx_n_s__nan); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1547; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_k_51 = __pyx_t_2;
  __Pyx_GIVEREF(__pyx_t_2);
  __pyx_t_2 = 0;

  /* "pandas/src/generated.pyx":1545
 * 
 * @cython.wraparound(False)
 * def take_1d_bool(ndarray[uint8_t] values,             # <<<<<<<<<<<<<<
 *                      ndarray[int64_t] indexer,
 *                      out=None, fill_value=np.nan):
 */
  __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_6pandas_6_algos_44take_1d_bool, NULL, __pyx_n_s_106); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1545; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__take_1d_bool, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1545; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "pandas/src/generated.pyx":1579
 * @cython.boundscheck(False)
 * @cython.wraparound(False)
 * def is_monotonic_float64(ndarray[float64_t] arr):             # <<<<<<<<<<<<<<
 *     '''
 *     Returns
 */
  __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_6pandas_6_algos_45is_monotonic_float64, NULL, __pyx_n_s_106); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1579; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s_121, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1579; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "pandas/src/generated.pyx":1606
 * @cython.boundscheck(False)
 * @cython.wraparound(False)
 * def is_monotonic_object(ndarray[object] arr):             # <<<<<<<<<<<<<<
 *     '''
 *     Returns
 */
  __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_6pandas_6_algos_46is_monotonic_object, NULL, __pyx_n_s_106); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1606; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__is_monotonic_object, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1606; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "pandas/src/generated.pyx":1633
 * @cython.boundscheck(False)
 * @cython.wraparound(False)
 * def is_monotonic_int32(ndarray[int32_t] arr):             # <<<<<<<<<<<<<<
 *     '''
 *     Returns
 */
  __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_6pandas_6_algos_47is_monotonic_int32, NULL, __pyx_n_s_106); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1633; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__is_monotonic_int32, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1633; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "pandas/src/generated.pyx":1660
 * @cython.boundscheck(False)
 * @cython.wraparound(False)
 * def is_monotonic_int64(ndarray[int64_t] arr):             # <<<<<<<<<<<<<<
 *     '''
 *     Returns
 */
  __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_6pandas_6_algos_48is_monotonic_int64, NULL, __pyx_n_s_106); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1660; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__is_monotonic_int64, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1660; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "pandas/src/generated.pyx":1687
 * @cython.boundscheck(False)
 * @cython.wraparound(False)
 * def is_monotonic_bool(ndarray[uint8_t] arr):             # <<<<<<<<<<<<<<
 *     '''
 *     Returns
 */
  __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_6pandas_6_algos_49is_monotonic_bool, NULL, __pyx_n_s_106); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1687; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__is_monotonic_bool, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1687; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "pandas/src/generated.pyx":1715
 * @cython.wraparound(False)
 * @cython.boundscheck(False)
 * def groupby_float64(ndarray[float64_t] index, ndarray labels):             # <<<<<<<<<<<<<<
 *     cdef dict result = {}
 *     cdef Py_ssize_t i, length
 */
  __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_6pandas_6_algos_50groupby_float64, NULL, __pyx_n_s_106); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1715; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__groupby_float64, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1715; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "pandas/src/generated.pyx":1740
 * @cython.wraparound(False)
 * @cython.boundscheck(False)
 * def groupby_object(ndarray[object] index, ndarray labels):             # <<<<<<<<<<<<<<
 *     cdef dict result = {}
 *     cdef Py_ssize_t i, length
 */
  __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_6pandas_6_algos_51groupby_object, NULL, __pyx_n_s_106); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1740; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__groupby_object, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1740; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "pandas/src/generated.pyx":1765
 * @cython.wraparound(False)
 * @cython.boundscheck(False)
 * def groupby_int32(ndarray[int32_t] index, ndarray labels):             # <<<<<<<<<<<<<<
 *     cdef dict result = {}
 *     cdef Py_ssize_t i, length
 */
  __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_6pandas_6_algos_52groupby_int32, NULL, __pyx_n_s_106); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1765; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__groupby_int32, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1765; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "pandas/src/generated.pyx":1790
 * @cython.wraparound(False)
 * @cython.boundscheck(False)
 * def groupby_int64(ndarray[int64_t] index, ndarray labels):             # <<<<<<<<<<<<<<
 *     cdef dict result = {}
 *     cdef Py_ssize_t i, length
 */
  __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_6pandas_6_algos_53groupby_int64, NULL, __pyx_n_s_106); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1790; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__groupby_int64, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1790; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "pandas/src/generated.pyx":1815
 * @cython.wraparound(False)
 * @cython.boundscheck(False)
 * def groupby_bool(ndarray[uint8_t] index, ndarray labels):             # <<<<<<<<<<<<<<
 *     cdef dict result = {}
 *     cdef Py_ssize_t i, length
 */
  __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_6pandas_6_algos_54groupby_bool, NULL, __pyx_n_s_106); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1815; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__groupby_bool, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1815; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "pandas/src/generated.pyx":1841
 * @cython.wraparound(False)
 * @cython.boundscheck(False)
 * def arrmap_float64(ndarray[float64_t] index, object func):             # <<<<<<<<<<<<<<
 *     cdef Py_ssize_t length = index.shape[0]
 *     cdef Py_ssize_t i = 0
 */
  __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_6pandas_6_algos_55arrmap_float64, NULL, __pyx_n_s_106); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1841; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__arrmap_float64, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1841; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "pandas/src/generated.pyx":1856
 * @cython.wraparound(False)
 * @cython.boundscheck(False)
 * def arrmap_object(ndarray[object] index, object func):             # <<<<<<<<<<<<<<
 *     cdef Py_ssize_t length = index.shape[0]
 *     cdef Py_ssize_t i = 0
 */
  __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_6pandas_6_algos_56arrmap_object, NULL, __pyx_n_s_106); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1856; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__arrmap_object, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1856; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "pandas/src/generated.pyx":1871
 * @cython.wraparound(False)
 * @cython.boundscheck(False)
 * def arrmap_int32(ndarray[int32_t] index, object func):             # <<<<<<<<<<<<<<
 *     cdef Py_ssize_t length = index.shape[0]
 *     cdef Py_ssize_t i = 0
 */
  __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_6pandas_6_algos_57arrmap_int32, NULL, __pyx_n_s_106); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1871; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__arrmap_int32, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1871; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "pandas/src/generated.pyx":1886
 * @cython.wraparound(False)
 * @cython.boundscheck(False)
 * def arrmap_int64(ndarray[int64_t] index, object func):             # <<<<<<<<<<<<<<
 *     cdef Py_ssize_t length = index.shape[0]
 *     cdef Py_ssize_t i = 0
 */
  __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_6pandas_6_algos_58arrmap_int64, NULL, __pyx_n_s_106); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1886; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__arrmap_int64, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1886; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "pandas/src/generated.pyx":1901
 * @cython.wraparound(False)
 * @cython.boundscheck(False)
 * def arrmap_bool(ndarray[uint8_t] index, object func):             # <<<<<<<<<<<<<<
 *     cdef Py_ssize_t length = index.shape[0]
 *     cdef Py_ssize_t i = 0
 */
  __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_6pandas_6_algos_59arrmap_bool, NULL, __pyx_n_s_106); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1901; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__arrmap_bool, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1901; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "pandas/src/generated.pyx":1919
 * def take_2d_axis0_float64(ndarray[float64_t, ndim=2] values,
 *                            ndarray[int64_t] indexer,
 *                            out=None, fill_value=np.nan):             # <<<<<<<<<<<<<<
 *     cdef:
 *         Py_ssize_t i, j, k, n, idx
 */
  __pyx_t_2 = __Pyx_GetName(__pyx_m, __pyx_n_s__np); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1919; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_5 = PyObject_GetAttr(__pyx_t_2, __pyx_n_s__nan); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1919; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_k_55 = __pyx_t_5;
  __Pyx_GIVEREF(__pyx_t_5);
  __pyx_t_5 = 0;

  /* "pandas/src/generated.pyx":1917
 * @cython.wraparound(False)
 * @cython.boundscheck(False)
 * def take_2d_axis0_float64(ndarray[float64_t, ndim=2] values,             # <<<<<<<<<<<<<<
 *                            ndarray[int64_t] indexer,
 *                            out=None, fill_value=np.nan):
 */
  __pyx_t_5 = PyCFunction_NewEx(&__pyx_mdef_6pandas_6_algos_60take_2d_axis0_float64, NULL, __pyx_n_s_106); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1917; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s_122, __pyx_t_5) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1917; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

  /* "pandas/src/generated.pyx":1957
 * def take_2d_axis0_object(ndarray[object, ndim=2] values,
 *                            ndarray[int64_t] indexer,
 *                            out=None, fill_value=np.nan):             # <<<<<<<<<<<<<<
 *     cdef:
 *         Py_ssize_t i, j, k, n, idx
 */
  __pyx_t_5 = __Pyx_GetName(__pyx_m, __pyx_n_s__np); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1957; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_2 = PyObject_GetAttr(__pyx_t_5, __pyx_n_s__nan); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1957; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_k_57 = __pyx_t_2;
  __Pyx_GIVEREF(__pyx_t_2);
  __pyx_t_2 = 0;

  /* "pandas/src/generated.pyx":1955
 * @cython.wraparound(False)
 * @cython.boundscheck(False)
 * def take_2d_axis0_object(ndarray[object, ndim=2] values,             # <<<<<<<<<<<<<<
 *                            ndarray[int64_t] indexer,
 *                            out=None, fill_value=np.nan):
 */
  __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_6pandas_6_algos_61take_2d_axis0_object, NULL, __pyx_n_s_106); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1955; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s_123, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1955; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "pandas/src/generated.pyx":1995
 * def take_2d_axis0_int32(ndarray[int32_t, ndim=2] values,
 *                            ndarray[int64_t] indexer,
 *                            out=None, fill_value=np.nan):             # <<<<<<<<<<<<<<
 *     cdef:
 *         Py_ssize_t i, j, k, n, idx
 */
  __pyx_t_2 = __Pyx_GetName(__pyx_m, __pyx_n_s__np); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1995; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_5 = PyObject_GetAttr(__pyx_t_2, __pyx_n_s__nan); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1995; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_k_59 = __pyx_t_5;
  __Pyx_GIVEREF(__pyx_t_5);
  __pyx_t_5 = 0;

  /* "pandas/src/generated.pyx":1993
 * @cython.wraparound(False)
 * @cython.boundscheck(False)
 * def take_2d_axis0_int32(ndarray[int32_t, ndim=2] values,             # <<<<<<<<<<<<<<
 *                            ndarray[int64_t] indexer,
 *                            out=None, fill_value=np.nan):
 */
  __pyx_t_5 = PyCFunction_NewEx(&__pyx_mdef_6pandas_6_algos_62take_2d_axis0_int32, NULL, __pyx_n_s_106); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1993; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__take_2d_axis0_int32, __pyx_t_5) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1993; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

  /* "pandas/src/generated.pyx":2033
 * def take_2d_axis0_int64(ndarray[int64_t, ndim=2] values,
 *                            ndarray[int64_t] indexer,
 *                            out=None, fill_value=np.nan):             # <<<<<<<<<<<<<<
 *     cdef:
 *         Py_ssize_t i, j, k, n, idx
 */
  __pyx_t_5 = __Pyx_GetName(__pyx_m, __pyx_n_s__np); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2033; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_2 = PyObject_GetAttr(__pyx_t_5, __pyx_n_s__nan); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2033; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_k_61 = __pyx_t_2;
  __Pyx_GIVEREF(__pyx_t_2);
  __pyx_t_2 = 0;

  /* "pandas/src/generated.pyx":2031
 * @cython.wraparound(False)
 * @cython.boundscheck(False)
 * def take_2d_axis0_int64(ndarray[int64_t, ndim=2] values,             # <<<<<<<<<<<<<<
 *                            ndarray[int64_t] indexer,
 *                            out=None, fill_value=np.nan):
 */
  __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_6pandas_6_algos_63take_2d_axis0_int64, NULL, __pyx_n_s_106); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2031; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__take_2d_axis0_int64, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2031; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "pandas/src/generated.pyx":2071
 * def take_2d_axis0_bool(ndarray[uint8_t, ndim=2] values,
 *                            ndarray[int64_t] indexer,
 *                            out=None, fill_value=np.nan):             # <<<<<<<<<<<<<<
 *     cdef:
 *         Py_ssize_t i, j, k, n, idx
 */
  __pyx_t_2 = __Pyx_GetName(__pyx_m, __pyx_n_s__np); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2071; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_5 = PyObject_GetAttr(__pyx_t_2, __pyx_n_s__nan); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2071; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_k_63 = __pyx_t_5;
  __Pyx_GIVEREF(__pyx_t_5);
  __pyx_t_5 = 0;

  /* "pandas/src/generated.pyx":2069
 * @cython.wraparound(False)
 * @cython.boundscheck(False)
 * def take_2d_axis0_bool(ndarray[uint8_t, ndim=2] values,             # <<<<<<<<<<<<<<
 *                            ndarray[int64_t] indexer,
 *                            out=None, fill_value=np.nan):
 */
  __pyx_t_5 = PyCFunction_NewEx(&__pyx_mdef_6pandas_6_algos_64take_2d_axis0_bool, NULL, __pyx_n_s_106); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2069; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__take_2d_axis0_bool, __pyx_t_5) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2069; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

  /* "pandas/src/generated.pyx":2110
 * def take_2d_axis1_float64(ndarray[float64_t, ndim=2] values,
 *                            ndarray[int64_t] indexer,
 *                            out=None, fill_value=np.nan):             # <<<<<<<<<<<<<<
 *     cdef:
 *         Py_ssize_t i, j, k, n, idx
 */
  __pyx_t_5 = __Pyx_GetName(__pyx_m, __pyx_n_s__np); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2110; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_2 = PyObject_GetAttr(__pyx_t_5, __pyx_n_s__nan); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2110; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_k_65 = __pyx_t_2;
  __Pyx_GIVEREF(__pyx_t_2);
  __pyx_t_2 = 0;

  /* "pandas/src/generated.pyx":2108
 * @cython.wraparound(False)
 * @cython.boundscheck(False)
 * def take_2d_axis1_float64(ndarray[float64_t, ndim=2] values,             # <<<<<<<<<<<<<<
 *                            ndarray[int64_t] indexer,
 *                            out=None, fill_value=np.nan):
 */
  __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_6pandas_6_algos_65take_2d_axis1_float64, NULL, __pyx_n_s_106); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2108; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s_124, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2108; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "pandas/src/generated.pyx":2150
 * def take_2d_axis1_object(ndarray[object, ndim=2] values,
 *                            ndarray[int64_t] indexer,
 *                            out=None, fill_value=np.nan):             # <<<<<<<<<<<<<<
 *     cdef:
 *         Py_ssize_t i, j, k, n, idx
 */
  __pyx_t_2 = __Pyx_GetName(__pyx_m, __pyx_n_s__np); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2150; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_5 = PyObject_GetAttr(__pyx_t_2, __pyx_n_s__nan); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2150; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_k_67 = __pyx_t_5;
  __Pyx_GIVEREF(__pyx_t_5);
  __pyx_t_5 = 0;

  /* "pandas/src/generated.pyx":2148
 * @cython.wraparound(False)
 * @cython.boundscheck(False)
 * def take_2d_axis1_object(ndarray[object, ndim=2] values,             # <<<<<<<<<<<<<<
 *                            ndarray[int64_t] indexer,
 *                            out=None, fill_value=np.nan):
 */
  __pyx_t_5 = PyCFunction_NewEx(&__pyx_mdef_6pandas_6_algos_66take_2d_axis1_object, NULL, __pyx_n_s_106); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2148; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s_125, __pyx_t_5) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2148; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

  /* "pandas/src/generated.pyx":2190
 * def take_2d_axis1_int32(ndarray[int32_t, ndim=2] values,
 *                            ndarray[int64_t] indexer,
 *                            out=None, fill_value=np.nan):             # <<<<<<<<<<<<<<
 *     cdef:
 *         Py_ssize_t i, j, k, n, idx
 */
  __pyx_t_5 = __Pyx_GetName(__pyx_m, __pyx_n_s__np); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2190; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_2 = PyObject_GetAttr(__pyx_t_5, __pyx_n_s__nan); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2190; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_k_69 = __pyx_t_2;
  __Pyx_GIVEREF(__pyx_t_2);
  __pyx_t_2 = 0;

  /* "pandas/src/generated.pyx":2188
 * @cython.wraparound(False)
 * @cython.boundscheck(False)
 * def take_2d_axis1_int32(ndarray[int32_t, ndim=2] values,             # <<<<<<<<<<<<<<
 *                            ndarray[int64_t] indexer,
 *                            out=None, fill_value=np.nan):
 */
  __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_6pandas_6_algos_67take_2d_axis1_int32, NULL, __pyx_n_s_106); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2188; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__take_2d_axis1_int32, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2188; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "pandas/src/generated.pyx":2230
 * def take_2d_axis1_int64(ndarray[int64_t, ndim=2] values,
 *                            ndarray[int64_t] indexer,
 *                            out=None, fill_value=np.nan):             # <<<<<<<<<<<<<<
 *     cdef:
 *         Py_ssize_t i, j, k, n, idx
 */
  __pyx_t_2 = __Pyx_GetName(__pyx_m, __pyx_n_s__np); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2230; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_5 = PyObject_GetAttr(__pyx_t_2, __pyx_n_s__nan); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2230; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_k_71 = __pyx_t_5;
  __Pyx_GIVEREF(__pyx_t_5);
  __pyx_t_5 = 0;

  /* "pandas/src/generated.pyx":2228
 * @cython.wraparound(False)
 * @cython.boundscheck(False)
 * def take_2d_axis1_int64(ndarray[int64_t, ndim=2] values,             # <<<<<<<<<<<<<<
 *                            ndarray[int64_t] indexer,
 *                            out=None, fill_value=np.nan):
 */
  __pyx_t_5 = PyCFunction_NewEx(&__pyx_mdef_6pandas_6_algos_68take_2d_axis1_int64, NULL, __pyx_n_s_106); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2228; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__take_2d_axis1_int64, __pyx_t_5) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2228; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

  /* "pandas/src/generated.pyx":2270
 * def take_2d_axis1_bool(ndarray[uint8_t, ndim=2] values,
 *                            ndarray[int64_t] indexer,
 *                            out=None, fill_value=np.nan):             # <<<<<<<<<<<<<<
 *     cdef:
 *         Py_ssize_t i, j, k, n, idx
 */
  __pyx_t_5 = __Pyx_GetName(__pyx_m, __pyx_n_s__np); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2270; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_2 = PyObject_GetAttr(__pyx_t_5, __pyx_n_s__nan); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2270; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_k_73 = __pyx_t_2;
  __Pyx_GIVEREF(__pyx_t_2);
  __pyx_t_2 = 0;

  /* "pandas/src/generated.pyx":2268
 * @cython.wraparound(False)
 * @cython.boundscheck(False)
 * def take_2d_axis1_bool(ndarray[uint8_t, ndim=2] values,             # <<<<<<<<<<<<<<
 *                            ndarray[int64_t] indexer,
 *                            out=None, fill_value=np.nan):
 */
  __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_6pandas_6_algos_69take_2d_axis1_bool, NULL, __pyx_n_s_106); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2268; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__take_2d_axis1_bool, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2268; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "pandas/src/generated.pyx":2312
 *                            ndarray[int64_t] idx0,
 *                            ndarray[int64_t] idx1,
 *                            out=None, fill_value=np.nan):             # <<<<<<<<<<<<<<
 *     cdef:
 *         Py_ssize_t i, j, k, n, idx
 */
  __pyx_t_2 = __Pyx_GetName(__pyx_m, __pyx_n_s__np); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2312; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_5 = PyObject_GetAttr(__pyx_t_2, __pyx_n_s__nan); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2312; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_k_75 = __pyx_t_5;
  __Pyx_GIVEREF(__pyx_t_5);
  __pyx_t_5 = 0;

  /* "pandas/src/generated.pyx":2309
 * @cython.wraparound(False)
 * @cython.boundscheck(False)
 * def take_2d_multi_float64(ndarray[float64_t, ndim=2] values,             # <<<<<<<<<<<<<<
 *                            ndarray[int64_t] idx0,
 *                            ndarray[int64_t] idx1,
 */
  __pyx_t_5 = PyCFunction_NewEx(&__pyx_mdef_6pandas_6_algos_70take_2d_multi_float64, NULL, __pyx_n_s_106); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2309; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s_126, __pyx_t_5) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2309; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

  /* "pandas/src/generated.pyx":2358
 *                            ndarray[int64_t] idx0,
 *                            ndarray[int64_t] idx1,
 *                            out=None, fill_value=np.nan):             # <<<<<<<<<<<<<<
 *     cdef:
 *         Py_ssize_t i, j, k, n, idx
 */
  __pyx_t_5 = __Pyx_GetName(__pyx_m, __pyx_n_s__np); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2358; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_2 = PyObject_GetAttr(__pyx_t_5, __pyx_n_s__nan); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2358; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_k_78 = __pyx_t_2;
  __Pyx_GIVEREF(__pyx_t_2);
  __pyx_t_2 = 0;

  /* "pandas/src/generated.pyx":2355
 * @cython.wraparound(False)
 * @cython.boundscheck(False)
 * def take_2d_multi_object(ndarray[object, ndim=2] values,             # <<<<<<<<<<<<<<
 *                            ndarray[int64_t] idx0,
 *                            ndarray[int64_t] idx1,
 */
  __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_6pandas_6_algos_71take_2d_multi_object, NULL, __pyx_n_s_106); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2355; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s_127, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2355; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "pandas/src/generated.pyx":2404
 *                            ndarray[int64_t] idx0,
 *                            ndarray[int64_t] idx1,
 *                            out=None, fill_value=np.nan):             # <<<<<<<<<<<<<<
 *     cdef:
 *         Py_ssize_t i, j, k, n, idx
 */
  __pyx_t_2 = __Pyx_GetName(__pyx_m, __pyx_n_s__np); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2404; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_5 = PyObject_GetAttr(__pyx_t_2, __pyx_n_s__nan); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2404; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_k_81 = __pyx_t_5;
  __Pyx_GIVEREF(__pyx_t_5);
  __pyx_t_5 = 0;

  /* "pandas/src/generated.pyx":2401
 * @cython.wraparound(False)
 * @cython.boundscheck(False)
 * def take_2d_multi_int32(ndarray[int32_t, ndim=2] values,             # <<<<<<<<<<<<<<
 *                            ndarray[int64_t] idx0,
 *                            ndarray[int64_t] idx1,
 */
  __pyx_t_5 = PyCFunction_NewEx(&__pyx_mdef_6pandas_6_algos_72take_2d_multi_int32, NULL, __pyx_n_s_106); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2401; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__take_2d_multi_int32, __pyx_t_5) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2401; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

  /* "pandas/src/generated.pyx":2450
 *                            ndarray[int64_t] idx0,
 *                            ndarray[int64_t] idx1,
 *                            out=None, fill_value=np.nan):             # <<<<<<<<<<<<<<
 *     cdef:
 *         Py_ssize_t i, j, k, n, idx
 */
  __pyx_t_5 = __Pyx_GetName(__pyx_m, __pyx_n_s__np); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2450; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_2 = PyObject_GetAttr(__pyx_t_5, __pyx_n_s__nan); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2450; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_k_84 = __pyx_t_2;
  __Pyx_GIVEREF(__pyx_t_2);
  __pyx_t_2 = 0;

  /* "pandas/src/generated.pyx":2447
 * @cython.wraparound(False)
 * @cython.boundscheck(False)
 * def take_2d_multi_int64(ndarray[int64_t, ndim=2] values,             # <<<<<<<<<<<<<<
 *                            ndarray[int64_t] idx0,
 *                            ndarray[int64_t] idx1,
 */
  __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_6pandas_6_algos_73take_2d_multi_int64, NULL, __pyx_n_s_106); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2447; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__take_2d_multi_int64, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2447; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "pandas/src/generated.pyx":2496
 *                            ndarray[int64_t] idx0,
 *                            ndarray[int64_t] idx1,
 *                            out=None, fill_value=np.nan):             # <<<<<<<<<<<<<<
 *     cdef:
 *         Py_ssize_t i, j, k, n, idx
 */
  __pyx_t_2 = __Pyx_GetName(__pyx_m, __pyx_n_s__np); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2496; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_5 = PyObject_GetAttr(__pyx_t_2, __pyx_n_s__nan); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2496; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_k_87 = __pyx_t_5;
  __Pyx_GIVEREF(__pyx_t_5);
  __pyx_t_5 = 0;

  /* "pandas/src/generated.pyx":2493
 * @cython.wraparound(False)
 * @cython.boundscheck(False)
 * def take_2d_multi_bool(ndarray[uint8_t, ndim=2] values,             # <<<<<<<<<<<<<<
 *                            ndarray[int64_t] idx0,
 *                            ndarray[int64_t] idx1,
 */
  __pyx_t_5 = PyCFunction_NewEx(&__pyx_mdef_6pandas_6_algos_74take_2d_multi_bool, NULL, __pyx_n_s_106); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2493; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s__take_2d_multi_bool, __pyx_t_5) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2493; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

  /* "pandas/src/generated.pyx":2540
 * @cython.wraparound(False)
 * @cython.boundscheck(False)
 * def left_join_indexer_unique_float64(ndarray[float64_t] left,             # <<<<<<<<<<<<<<
 *                                       ndarray[float64_t] right):
 *     cdef:
 */
  __pyx_t_5 = PyCFunction_NewEx(&__pyx_mdef_6pandas_6_algos_75left_join_indexer_unique_float64, NULL, __pyx_n_s_106); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2540; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s_128, __pyx_t_5) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2540; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

  /* "pandas/src/generated.pyx":2585
 * @cython.wraparound(False)
 * @cython.boundscheck(False)
 * def left_join_indexer_unique_object(ndarray[object] left,             # <<<<<<<<<<<<<<
 *                                       ndarray[object] right):
 *     cdef:
 */
  __pyx_t_5 = PyCFunction_NewEx(&__pyx_mdef_6pandas_6_algos_76left_join_indexer_unique_object, NULL, __pyx_n_s_106); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2585; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s_129, __pyx_t_5) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2585; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

  /* "pandas/src/generated.pyx":2630
 * @cython.wraparound(False)
 * @cython.boundscheck(False)
 * def left_join_indexer_unique_int32(ndarray[int32_t] left,             # <<<<<<<<<<<<<<
 *                                       ndarray[int32_t] right):
 *     cdef:
 */
  __pyx_t_5 = PyCFunction_NewEx(&__pyx_mdef_6pandas_6_algos_77left_join_indexer_unique_int32, NULL, __pyx_n_s_106); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2630; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s_130, __pyx_t_5) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2630; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

  /* "pandas/src/generated.pyx":2675
 * @cython.wraparound(False)
 * @cython.boundscheck(False)
 * def left_join_indexer_unique_int64(ndarray[int64_t] left,             # <<<<<<<<<<<<<<
 *                                       ndarray[int64_t] right):
 *     cdef:
 */
  __pyx_t_5 = PyCFunction_NewEx(&__pyx_mdef_6pandas_6_algos_78left_join_indexer_unique_int64, NULL, __pyx_n_s_106); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2675; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s_131, __pyx_t_5) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2675; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

  /* "pandas/src/generated.pyx":2720
 * 
 * 
 * def left_join_indexer_float64(ndarray[float64_t] left,             # <<<<<<<<<<<<<<
 *                               ndarray[float64_t] right):
 *     '''
 */
  __pyx_t_5 = PyCFunction_NewEx(&__pyx_mdef_6pandas_6_algos_79left_join_indexer_float64, NULL, __pyx_n_s_106); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2720; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s_132, __pyx_t_5) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2720; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

  /* "pandas/src/generated.pyx":2822
 * 
 * 
 * def left_join_indexer_object(ndarray[object] left,             # <<<<<<<<<<<<<<
 *                               ndarray[object] right):
 *     '''
 */
  __pyx_t_5 = PyCFunction_NewEx(&__pyx_mdef_6pandas_6_algos_80left_join_indexer_object, NULL, __pyx_n_s_106); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2822; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s_133, __pyx_t_5) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2822; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

  /* "pandas/src/generated.pyx":2924
 * 
 * 
 * def left_join_indexer_int32(ndarray[int32_t] left,             # <<<<<<<<<<<<<<
 *                               ndarray[int32_t] right):
 *     '''
 */
  __pyx_t_5 = PyCFunction_NewEx(&__pyx_mdef_6pandas_6_algos_81left_join_indexer_int32, NULL, __pyx_n_s_106); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2924; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s_134, __pyx_t_5) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2924; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

  /* "pandas/src/generated.pyx":3026
 * 
 * 
 * def left_join_indexer_int64(ndarray[int64_t] left,             # <<<<<<<<<<<<<<
 *                               ndarray[int64_t] right):
 *     '''
 */
  __pyx_t_5 = PyCFunction_NewEx(&__pyx_mdef_6pandas_6_algos_82left_join_indexer_int64, NULL, __pyx_n_s_106); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3026; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s_135, __pyx_t_5) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3026; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

  /* "pandas/src/generated.pyx":3130
 * @cython.wraparound(False)
 * @cython.boundscheck(False)
 * def outer_join_indexer_float64(ndarray[float64_t] left,             # <<<<<<<<<<<<<<
 *                                 ndarray[float64_t] right):
 *     cdef:
 */
  __pyx_t_5 = PyCFunction_NewEx(&__pyx_mdef_6pandas_6_algos_83outer_join_indexer_float64, NULL, __pyx_n_s_106); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3130; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s_136, __pyx_t_5) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3130; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

  /* "pandas/src/generated.pyx":3259
 * @cython.wraparound(False)
 * @cython.boundscheck(False)
 * def outer_join_indexer_object(ndarray[object] left,             # <<<<<<<<<<<<<<
 *                                 ndarray[object] right):
 *     cdef:
 */
  __pyx_t_5 = PyCFunction_NewEx(&__pyx_mdef_6pandas_6_algos_84outer_join_indexer_object, NULL, __pyx_n_s_106); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3259; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s_137, __pyx_t_5) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3259; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

  /* "pandas/src/generated.pyx":3388
 * @cython.wraparound(False)
 * @cython.boundscheck(False)
 * def outer_join_indexer_int32(ndarray[int32_t] left,             # <<<<<<<<<<<<<<
 *                                 ndarray[int32_t] right):
 *     cdef:
 */
  __pyx_t_5 = PyCFunction_NewEx(&__pyx_mdef_6pandas_6_algos_85outer_join_indexer_int32, NULL, __pyx_n_s_106); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3388; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s_138, __pyx_t_5) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3388; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

  /* "pandas/src/generated.pyx":3517
 * @cython.wraparound(False)
 * @cython.boundscheck(False)
 * def outer_join_indexer_int64(ndarray[int64_t] left,             # <<<<<<<<<<<<<<
 *                                 ndarray[int64_t] right):
 *     cdef:
 */
  __pyx_t_5 = PyCFunction_NewEx(&__pyx_mdef_6pandas_6_algos_86outer_join_indexer_int64, NULL, __pyx_n_s_106); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3517; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s_139, __pyx_t_5) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3517; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

  /* "pandas/src/generated.pyx":3647
 * @cython.wraparound(False)
 * @cython.boundscheck(False)
 * def inner_join_indexer_float64(ndarray[float64_t] left,             # <<<<<<<<<<<<<<
 *                               ndarray[float64_t] right):
 *     '''
 */
  __pyx_t_5 = PyCFunction_NewEx(&__pyx_mdef_6pandas_6_algos_87inner_join_indexer_float64, NULL, __pyx_n_s_106); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3647; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s_140, __pyx_t_5) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3647; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

  /* "pandas/src/generated.pyx":3740
 * @cython.wraparound(False)
 * @cython.boundscheck(False)
 * def inner_join_indexer_object(ndarray[object] left,             # <<<<<<<<<<<<<<
 *                               ndarray[object] right):
 *     '''
 */
  __pyx_t_5 = PyCFunction_NewEx(&__pyx_mdef_6pandas_6_algos_88inner_join_indexer_object, NULL, __pyx_n_s_106); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3740; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s_141, __pyx_t_5) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3740; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

  /* "pandas/src/generated.pyx":3833
 * @cython.wraparound(False)
 * @cython.boundscheck(False)
 * def inner_join_indexer_int32(ndarray[int32_t] left,             # <<<<<<<<<<<<<<
 *                               ndarray[int32_t] right):
 *     '''
 */
  __pyx_t_5 = PyCFunction_NewEx(&__pyx_mdef_6pandas_6_algos_89inner_join_indexer_int32, NULL, __pyx_n_s_106); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3833; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s_142, __pyx_t_5) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3833; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

  /* "pandas/src/generated.pyx":3926
 * @cython.wraparound(False)
 * @cython.boundscheck(False)
 * def inner_join_indexer_int64(ndarray[int64_t] left,             # <<<<<<<<<<<<<<
 *                               ndarray[int64_t] right):
 *     '''
 */
  __pyx_t_5 = PyCFunction_NewEx(&__pyx_mdef_6pandas_6_algos_90inner_join_indexer_int64, NULL, __pyx_n_s_106); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3926; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s_143, __pyx_t_5) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3926; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

  /* "pandas/src/generated.pyx":2
 * 
 * cimport numpy as np             # <<<<<<<<<<<<<<
 * cimport cython
 * 
 */
  __pyx_t_5 = PyDict_New(); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(((PyObject *)__pyx_t_5));
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s____test__, ((PyObject *)__pyx_t_5)) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(((PyObject *)__pyx_t_5)); __pyx_t_5 = 0;

  /* "util.pxd":63
 *     return not cnp.PyArray_Check(val) and (val is None or val != val)
 * 
 * cdef inline bint _checknan(object val):             # <<<<<<<<<<<<<<
 *     return not cnp.PyArray_Check(val) and val != val
 */
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  if (__pyx_m) {
    __Pyx_AddTraceback("init pandas._algos", __pyx_clineno, __pyx_lineno, __pyx_filename);
    Py_DECREF(__pyx_m); __pyx_m = 0;
  } else if (!PyErr_Occurred()) {
    PyErr_SetString(PyExc_ImportError, "init pandas._algos");
  }
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  #if PY_MAJOR_VERSION < 3
  return;
  #else
  return __pyx_m;
  #endif
}

/* Runtime support code */

#if CYTHON_REFNANNY
static __Pyx_RefNannyAPIStruct *__Pyx_RefNannyImportAPI(const char *modname) {
    PyObject *m = NULL, *p = NULL;
    void *r = NULL;
    m = PyImport_ImportModule((char *)modname);
    if (!m) goto end;
    p = PyObject_GetAttrString(m, (char *)"RefNannyAPI");
    if (!p) goto end;
    r = PyLong_AsVoidPtr(p);
end:
    Py_XDECREF(p);
    Py_XDECREF(m);
    return (__Pyx_RefNannyAPIStruct *)r;
}
#endif /* CYTHON_REFNANNY */

static PyObject *__Pyx_GetName(PyObject *dict, PyObject *name) {
    PyObject *result;
    result = PyObject_GetAttr(dict, name);
    if (!result) {
        if (dict != __pyx_b) {
            PyErr_Clear();
            result = PyObject_GetAttr(__pyx_b, name);
        }
        if (!result) {
            PyErr_SetObject(PyExc_NameError, name);
        }
    }
    return result;
}

static CYTHON_INLINE int __Pyx_IsLittleEndian(void) {
  unsigned int n = 1;
  return *(unsigned char*)(&n) != 0;
}

typedef struct {
  __Pyx_StructField root;
  __Pyx_BufFmt_StackElem* head;
  size_t fmt_offset;
  size_t new_count, enc_count;
  int is_complex;
  char enc_type;
  char new_packmode;
  char enc_packmode;
} __Pyx_BufFmt_Context;

static void __Pyx_BufFmt_Init(__Pyx_BufFmt_Context* ctx,
                              __Pyx_BufFmt_StackElem* stack,
                              __Pyx_TypeInfo* type) {
  stack[0].field = &ctx->root;
  stack[0].parent_offset = 0;
  ctx->root.type = type;
  ctx->root.name = "buffer dtype";
  ctx->root.offset = 0;
  ctx->head = stack;
  ctx->head->field = &ctx->root;
  ctx->fmt_offset = 0;
  ctx->head->parent_offset = 0;
  ctx->new_packmode = '@';
  ctx->enc_packmode = '@';
  ctx->new_count = 1;
  ctx->enc_count = 0;
  ctx->enc_type = 0;
  ctx->is_complex = 0;
  while (type->typegroup == 'S') {
    ++ctx->head;
    ctx->head->field = type->fields;
    ctx->head->parent_offset = 0;
    type = type->fields->type;
  }
}

static int __Pyx_BufFmt_ParseNumber(const char** ts) {
    int count;
    const char* t = *ts;
    if (*t < '0' || *t > '9') {
      return -1;
    } else {
        count = *t++ - '0';
        while (*t >= '0' && *t < '9') {
            count *= 10;
            count += *t++ - '0';
        }
    }
    *ts = t;
    return count;
}

static void __Pyx_BufFmt_RaiseUnexpectedChar(char ch) {
  PyErr_Format(PyExc_ValueError,
               "Unexpected format string character: '%c'", ch);
}

static const char* __Pyx_BufFmt_DescribeTypeChar(char ch, int is_complex) {
  switch (ch) {
    case 'b': return "'char'";
    case 'B': return "'unsigned char'";
    case 'h': return "'short'";
    case 'H': return "'unsigned short'";
    case 'i': return "'int'";
    case 'I': return "'unsigned int'";
    case 'l': return "'long'";
    case 'L': return "'unsigned long'";
    case 'q': return "'long long'";
    case 'Q': return "'unsigned long long'";
    case 'f': return (is_complex ? "'complex float'" : "'float'");
    case 'd': return (is_complex ? "'complex double'" : "'double'");
    case 'g': return (is_complex ? "'complex long double'" : "'long double'");
    case 'T': return "a struct";
    case 'O': return "Python object";
    case 'P': return "a pointer";
    case 0: return "end";
    default: return "unparseable format string";
  }
}

static size_t __Pyx_BufFmt_TypeCharToStandardSize(char ch, int is_complex) {
  switch (ch) {
    case '?': case 'c': case 'b': case 'B': return 1;
    case 'h': case 'H': return 2;
    case 'i': case 'I': case 'l': case 'L': return 4;
    case 'q': case 'Q': return 8;
    case 'f': return (is_complex ? 8 : 4);
    case 'd': return (is_complex ? 16 : 8);
    case 'g': {
      PyErr_SetString(PyExc_ValueError, "Python does not define a standard format string size for long double ('g')..");
      return 0;
    }
    case 'O': case 'P': return sizeof(void*);
    default:
      __Pyx_BufFmt_RaiseUnexpectedChar(ch);
      return 0;
    }
}

static size_t __Pyx_BufFmt_TypeCharToNativeSize(char ch, int is_complex) {
  switch (ch) {
    case 'c': case 'b': case 'B': return 1;
    case 'h': case 'H': return sizeof(short);
    case 'i': case 'I': return sizeof(int);
    case 'l': case 'L': return sizeof(long);
    #ifdef HAVE_LONG_LONG
    case 'q': case 'Q': return sizeof(PY_LONG_LONG);
    #endif
    case 'f': return sizeof(float) * (is_complex ? 2 : 1);
    case 'd': return sizeof(double) * (is_complex ? 2 : 1);
    case 'g': return sizeof(long double) * (is_complex ? 2 : 1);
    case 'O': case 'P': return sizeof(void*);
    default: {
      __Pyx_BufFmt_RaiseUnexpectedChar(ch);
      return 0;
    }
  }
}

typedef struct { char c; short x; } __Pyx_st_short;
typedef struct { char c; int x; } __Pyx_st_int;
typedef struct { char c; long x; } __Pyx_st_long;
typedef struct { char c; float x; } __Pyx_st_float;
typedef struct { char c; double x; } __Pyx_st_double;
typedef struct { char c; long double x; } __Pyx_st_longdouble;
typedef struct { char c; void *x; } __Pyx_st_void_p;
#ifdef HAVE_LONG_LONG
typedef struct { char c; PY_LONG_LONG x; } __Pyx_st_longlong;
#endif

static size_t __Pyx_BufFmt_TypeCharToAlignment(char ch, int is_complex) {
  switch (ch) {
    case '?': case 'c': case 'b': case 'B': return 1;
    case 'h': case 'H': return sizeof(__Pyx_st_short) - sizeof(short);
    case 'i': case 'I': return sizeof(__Pyx_st_int) - sizeof(int);
    case 'l': case 'L': return sizeof(__Pyx_st_long) - sizeof(long);
#ifdef HAVE_LONG_LONG
    case 'q': case 'Q': return sizeof(__Pyx_st_longlong) - sizeof(PY_LONG_LONG);
#endif
    case 'f': return sizeof(__Pyx_st_float) - sizeof(float);
    case 'd': return sizeof(__Pyx_st_double) - sizeof(double);
    case 'g': return sizeof(__Pyx_st_longdouble) - sizeof(long double);
    case 'P': case 'O': return sizeof(__Pyx_st_void_p) - sizeof(void*);
    default:
      __Pyx_BufFmt_RaiseUnexpectedChar(ch);
      return 0;
    }
}

static char __Pyx_BufFmt_TypeCharToGroup(char ch, int is_complex) {
  switch (ch) {
    case 'c': case 'b': case 'h': case 'i': case 'l': case 'q': return 'I';
    case 'B': case 'H': case 'I': case 'L': case 'Q': return 'U';
    case 'f': case 'd': case 'g': return (is_complex ? 'C' : 'R');
    case 'O': return 'O';
    case 'P': return 'P';
    default: {
      __Pyx_BufFmt_RaiseUnexpectedChar(ch);
      return 0;
    }
  }
}

static void __Pyx_BufFmt_RaiseExpected(__Pyx_BufFmt_Context* ctx) {
  if (ctx->head == NULL || ctx->head->field == &ctx->root) {
    const char* expected;
    const char* quote;
    if (ctx->head == NULL) {
      expected = "end";
      quote = "";
    } else {
      expected = ctx->head->field->type->name;
      quote = "'";
    }
    PyErr_Format(PyExc_ValueError,
                 "Buffer dtype mismatch, expected %s%s%s but got %s",
                 quote, expected, quote,
                 __Pyx_BufFmt_DescribeTypeChar(ctx->enc_type, ctx->is_complex));
  } else {
    __Pyx_StructField* field = ctx->head->field;
    __Pyx_StructField* parent = (ctx->head - 1)->field;
    PyErr_Format(PyExc_ValueError,
                 "Buffer dtype mismatch, expected '%s' but got %s in '%s.%s'",
                 field->type->name, __Pyx_BufFmt_DescribeTypeChar(ctx->enc_type, ctx->is_complex),
                 parent->type->name, field->name);
  }
}

static int __Pyx_BufFmt_ProcessTypeChunk(__Pyx_BufFmt_Context* ctx) {
  char group;
  size_t size, offset;
  if (ctx->enc_type == 0) return 0;
  group = __Pyx_BufFmt_TypeCharToGroup(ctx->enc_type, ctx->is_complex);
  do {
    __Pyx_StructField* field = ctx->head->field;
    __Pyx_TypeInfo* type = field->type;

    if (ctx->enc_packmode == '@' || ctx->enc_packmode == '^') {
      size = __Pyx_BufFmt_TypeCharToNativeSize(ctx->enc_type, ctx->is_complex);
    } else {
      size = __Pyx_BufFmt_TypeCharToStandardSize(ctx->enc_type, ctx->is_complex);
    }
    if (ctx->enc_packmode == '@') {
      size_t align_at = __Pyx_BufFmt_TypeCharToAlignment(ctx->enc_type, ctx->is_complex);
      size_t align_mod_offset;
      if (align_at == 0) return -1;
      align_mod_offset = ctx->fmt_offset % align_at;
      if (align_mod_offset > 0) ctx->fmt_offset += align_at - align_mod_offset;
    }

    if (type->size != size || type->typegroup != group) {
      if (type->typegroup == 'C' && type->fields != NULL) {
        /* special case -- treat as struct rather than complex number */
        size_t parent_offset = ctx->head->parent_offset + field->offset;
        ++ctx->head;
        ctx->head->field = type->fields;
        ctx->head->parent_offset = parent_offset;
        continue;
      }

      __Pyx_BufFmt_RaiseExpected(ctx);
      return -1;
    }

    offset = ctx->head->parent_offset + field->offset;
    if (ctx->fmt_offset != offset) {
      PyErr_Format(PyExc_ValueError,
                   "Buffer dtype mismatch; next field is at offset %"PY_FORMAT_SIZE_T"d but %"PY_FORMAT_SIZE_T"d expected",
                   (Py_ssize_t)ctx->fmt_offset, (Py_ssize_t)offset);
      return -1;
    }

    ctx->fmt_offset += size;

    --ctx->enc_count; /* Consume from buffer string */

    /* Done checking, move to next field, pushing or popping struct stack if needed */
    while (1) {
      if (field == &ctx->root) {
        ctx->head = NULL;
        if (ctx->enc_count != 0) {
          __Pyx_BufFmt_RaiseExpected(ctx);
          return -1;
        }
        break; /* breaks both loops as ctx->enc_count == 0 */
      }
      ctx->head->field = ++field;
      if (field->type == NULL) {
        --ctx->head;
        field = ctx->head->field;
        continue;
      } else if (field->type->typegroup == 'S') {
        size_t parent_offset = ctx->head->parent_offset + field->offset;
        if (field->type->fields->type == NULL) continue; /* empty struct */
        field = field->type->fields;
        ++ctx->head;
        ctx->head->field = field;
        ctx->head->parent_offset = parent_offset;
        break;
      } else {
        break;
      }
    }
  } while (ctx->enc_count);
  ctx->enc_type = 0;
  ctx->is_complex = 0;
  return 0;
}

static const char* __Pyx_BufFmt_CheckString(__Pyx_BufFmt_Context* ctx, const char* ts) {
  int got_Z = 0;
  while (1) {
    switch(*ts) {
      case 0:
        if (ctx->enc_type != 0 && ctx->head == NULL) {
          __Pyx_BufFmt_RaiseExpected(ctx);
          return NULL;
        }
        if (__Pyx_BufFmt_ProcessTypeChunk(ctx) == -1) return NULL;
        if (ctx->head != NULL) {
          __Pyx_BufFmt_RaiseExpected(ctx);
          return NULL;
        }
        return ts;
      case ' ':
      case 10:
      case 13:
        ++ts;
        break;
      case '<':
        if (!__Pyx_IsLittleEndian()) {
          PyErr_SetString(PyExc_ValueError, "Little-endian buffer not supported on big-endian compiler");
          return NULL;
        }
        ctx->new_packmode = '=';
        ++ts;
        break;
      case '>':
      case '!':
        if (__Pyx_IsLittleEndian()) {
          PyErr_SetString(PyExc_ValueError, "Big-endian buffer not supported on little-endian compiler");
          return NULL;
        }
        ctx->new_packmode = '=';
        ++ts;
        break;
      case '=':
      case '@':
      case '^':
        ctx->new_packmode = *ts++;
        break;
      case 'T': /* substruct */
        {
          const char* ts_after_sub;
          size_t i, struct_count = ctx->new_count;
          ctx->new_count = 1;
          ++ts;
          if (*ts != '{') {
            PyErr_SetString(PyExc_ValueError, "Buffer acquisition: Expected '{' after 'T'");
            return NULL;
          }
          ++ts;
          ts_after_sub = ts;
          for (i = 0; i != struct_count; ++i) {
            ts_after_sub = __Pyx_BufFmt_CheckString(ctx, ts);
            if (!ts_after_sub) return NULL;
          }
          ts = ts_after_sub;
        }
        break;
      case '}': /* end of substruct; either repeat or move on */
        ++ts;
        return ts;
      case 'x':
        if (__Pyx_BufFmt_ProcessTypeChunk(ctx) == -1) return NULL;
        ctx->fmt_offset += ctx->new_count;
        ctx->new_count = 1;
        ctx->enc_count = 0;
        ctx->enc_type = 0;
        ctx->enc_packmode = ctx->new_packmode;
        ++ts;
        break;
      case 'Z':
        got_Z = 1;
        ++ts;
        if (*ts != 'f' && *ts != 'd' && *ts != 'g') {
          __Pyx_BufFmt_RaiseUnexpectedChar('Z');
          return NULL;
        }        /* fall through */
      case 'c': case 'b': case 'B': case 'h': case 'H': case 'i': case 'I':
      case 'l': case 'L': case 'q': case 'Q':
      case 'f': case 'd': case 'g':
      case 'O':
        if (ctx->enc_type == *ts && got_Z == ctx->is_complex &&
            ctx->enc_packmode == ctx->new_packmode) {
          /* Continue pooling same type */
          ctx->enc_count += ctx->new_count;
        } else {
          /* New type */
          if (__Pyx_BufFmt_ProcessTypeChunk(ctx) == -1) return NULL;
          ctx->enc_count = ctx->new_count;
          ctx->enc_packmode = ctx->new_packmode;
          ctx->enc_type = *ts;
          ctx->is_complex = got_Z;
        }
        ++ts;
        ctx->new_count = 1;
        got_Z = 0;
        break;
      case ':':
        ++ts;
        while(*ts != ':') ++ts;
        ++ts;
        break;
      default:
        {
          int number = __Pyx_BufFmt_ParseNumber(&ts);
          if (number == -1) { /* First char was not a digit */
            PyErr_Format(PyExc_ValueError,
                         "Does not understand character buffer dtype format string ('%c')", *ts);
            return NULL;
          }
          ctx->new_count = (size_t)number; 
        }
    }
  }
}

static CYTHON_INLINE void __Pyx_ZeroBuffer(Py_buffer* buf) {
  buf->buf = NULL;
  buf->obj = NULL;
  buf->strides = __Pyx_zeros;
  buf->shape = __Pyx_zeros;
  buf->suboffsets = __Pyx_minusones;
}

static CYTHON_INLINE int __Pyx_GetBufferAndValidate(Py_buffer* buf, PyObject* obj, __Pyx_TypeInfo* dtype, int flags, int nd, int cast, __Pyx_BufFmt_StackElem* stack) {
  if (obj == Py_None || obj == NULL) {
    __Pyx_ZeroBuffer(buf);
    return 0;
  }
  buf->buf = NULL;
  if (__Pyx_GetBuffer(obj, buf, flags) == -1) goto fail;
  if (buf->ndim != nd) {
    PyErr_Format(PyExc_ValueError,
                 "Buffer has wrong number of dimensions (expected %d, got %d)",
                 nd, buf->ndim);
    goto fail;
  }
  if (!cast) {
    __Pyx_BufFmt_Context ctx;
    __Pyx_BufFmt_Init(&ctx, stack, dtype);
    if (!__Pyx_BufFmt_CheckString(&ctx, buf->format)) goto fail;
  }
  if ((unsigned)buf->itemsize != dtype->size) {
    PyErr_Format(PyExc_ValueError,
      "Item size of buffer (%"PY_FORMAT_SIZE_T"d byte%s) does not match size of '%s' (%"PY_FORMAT_SIZE_T"d byte%s)",
      buf->itemsize, (buf->itemsize > 1) ? "s" : "",
      dtype->name, (Py_ssize_t)dtype->size, (dtype->size > 1) ? "s" : "");
    goto fail;
  }
  if (buf->suboffsets == NULL) buf->suboffsets = __Pyx_minusones;
  return 0;
fail:;
  __Pyx_ZeroBuffer(buf);
  return -1;
}

static CYTHON_INLINE void __Pyx_SafeReleaseBuffer(Py_buffer* info) {
  if (info->buf == NULL) return;
  if (info->suboffsets == __Pyx_minusones) info->suboffsets = NULL;
  __Pyx_ReleaseBuffer(info);
}

static CYTHON_INLINE void __Pyx_ErrRestore(PyObject *type, PyObject *value, PyObject *tb) {
    PyObject *tmp_type, *tmp_value, *tmp_tb;
    PyThreadState *tstate = PyThreadState_GET();

    tmp_type = tstate->curexc_type;
    tmp_value = tstate->curexc_value;
    tmp_tb = tstate->curexc_traceback;
    tstate->curexc_type = type;
    tstate->curexc_value = value;
    tstate->curexc_traceback = tb;
    Py_XDECREF(tmp_type);
    Py_XDECREF(tmp_value);
    Py_XDECREF(tmp_tb);
}

static CYTHON_INLINE void __Pyx_ErrFetch(PyObject **type, PyObject **value, PyObject **tb) {
    PyThreadState *tstate = PyThreadState_GET();
    *type = tstate->curexc_type;
    *value = tstate->curexc_value;
    *tb = tstate->curexc_traceback;

    tstate->curexc_type = 0;
    tstate->curexc_value = 0;
    tstate->curexc_traceback = 0;
}


static int __Pyx_ArgTypeTest(PyObject *obj, PyTypeObject *type, int none_allowed,
    const char *name, int exact)
{
    if (!type) {
        PyErr_Format(PyExc_SystemError, "Missing type object");
        return 0;
    }
    if (none_allowed && obj == Py_None) return 1;
    else if (exact) {
        if (Py_TYPE(obj) == type) return 1;
    }
    else {
        if (PyObject_TypeCheck(obj, type)) return 1;
    }
    PyErr_Format(PyExc_TypeError,
        "Argument '%s' has incorrect type (expected %s, got %s)",
        name, type->tp_name, Py_TYPE(obj)->tp_name);
    return 0;
}


static void __Pyx_RaiseArgtupleInvalid(
    const char* func_name,
    int exact,
    Py_ssize_t num_min,
    Py_ssize_t num_max,
    Py_ssize_t num_found)
{
    Py_ssize_t num_expected;
    const char *more_or_less;

    if (num_found < num_min) {
        num_expected = num_min;
        more_or_less = "at least";
    } else {
        num_expected = num_max;
        more_or_less = "at most";
    }
    if (exact) {
        more_or_less = "exactly";
    }
    PyErr_Format(PyExc_TypeError,
                 "%s() takes %s %"PY_FORMAT_SIZE_T"d positional argument%s (%"PY_FORMAT_SIZE_T"d given)",
                 func_name, more_or_less, num_expected,
                 (num_expected == 1) ? "" : "s", num_found);
}

static void __Pyx_RaiseDoubleKeywordsError(
    const char* func_name,
    PyObject* kw_name)
{
    PyErr_Format(PyExc_TypeError,
        #if PY_MAJOR_VERSION >= 3
        "%s() got multiple values for keyword argument '%U'", func_name, kw_name);
        #else
        "%s() got multiple values for keyword argument '%s'", func_name,
        PyString_AS_STRING(kw_name));
        #endif
}

static int __Pyx_ParseOptionalKeywords(
    PyObject *kwds,
    PyObject **argnames[],
    PyObject *kwds2,
    PyObject *values[],
    Py_ssize_t num_pos_args,
    const char* function_name)
{
    PyObject *key = 0, *value = 0;
    Py_ssize_t pos = 0;
    PyObject*** name;
    PyObject*** first_kw_arg = argnames + num_pos_args;

    while (PyDict_Next(kwds, &pos, &key, &value)) {
        name = first_kw_arg;
        while (*name && (**name != key)) name++;
        if (*name) {
            values[name-argnames] = value;
        } else {
            #if PY_MAJOR_VERSION < 3
            if (unlikely(!PyString_CheckExact(key)) && unlikely(!PyString_Check(key))) {
            #else
            if (unlikely(!PyUnicode_CheckExact(key)) && unlikely(!PyUnicode_Check(key))) {
            #endif
                goto invalid_keyword_type;
            } else {
                for (name = first_kw_arg; *name; name++) {
                    #if PY_MAJOR_VERSION >= 3
                    if (PyUnicode_GET_SIZE(**name) == PyUnicode_GET_SIZE(key) &&
                        PyUnicode_Compare(**name, key) == 0) break;
                    #else
                    if (PyString_GET_SIZE(**name) == PyString_GET_SIZE(key) &&
                        _PyString_Eq(**name, key)) break;
                    #endif
                }
                if (*name) {
                    values[name-argnames] = value;
                } else {
                    /* unexpected keyword found */
                    for (name=argnames; name != first_kw_arg; name++) {
                        if (**name == key) goto arg_passed_twice;
                        #if PY_MAJOR_VERSION >= 3
                        if (PyUnicode_GET_SIZE(**name) == PyUnicode_GET_SIZE(key) &&
                            PyUnicode_Compare(**name, key) == 0) goto arg_passed_twice;
                        #else
                        if (PyString_GET_SIZE(**name) == PyString_GET_SIZE(key) &&
                            _PyString_Eq(**name, key)) goto arg_passed_twice;
                        #endif
                    }
                    if (kwds2) {
                        if (unlikely(PyDict_SetItem(kwds2, key, value))) goto bad;
                    } else {
                        goto invalid_keyword;
                    }
                }
            }
        }
    }
    return 0;
arg_passed_twice:
    __Pyx_RaiseDoubleKeywordsError(function_name, **name);
    goto bad;
invalid_keyword_type:
    PyErr_Format(PyExc_TypeError,
        "%s() keywords must be strings", function_name);
    goto bad;
invalid_keyword:
    PyErr_Format(PyExc_TypeError,
    #if PY_MAJOR_VERSION < 3
        "%s() got an unexpected keyword argument '%s'",
        function_name, PyString_AsString(key));
    #else
        "%s() got an unexpected keyword argument '%U'",
        function_name, key);
    #endif
bad:
    return -1;
}

static CYTHON_INLINE int __Pyx_TypeTest(PyObject *obj, PyTypeObject *type) {
    if (unlikely(!type)) {
        PyErr_Format(PyExc_SystemError, "Missing type object");
        return 0;
    }
    if (likely(PyObject_TypeCheck(obj, type)))
        return 1;
    PyErr_Format(PyExc_TypeError, "Cannot convert %.200s to %.200s",
                 Py_TYPE(obj)->tp_name, type->tp_name);
    return 0;
}

static void __Pyx_RaiseBufferFallbackError(void) {
  PyErr_Format(PyExc_ValueError,
     "Buffer acquisition failed on assignment; and then reacquiring the old buffer failed too!");
}


#if PY_MAJOR_VERSION < 3
static void __Pyx_Raise(PyObject *type, PyObject *value, PyObject *tb, PyObject *cause) {
    /* cause is unused */
    Py_XINCREF(type);
    Py_XINCREF(value);
    Py_XINCREF(tb);
    /* First, check the traceback argument, replacing None with NULL. */
    if (tb == Py_None) {
        Py_DECREF(tb);
        tb = 0;
    }
    else if (tb != NULL && !PyTraceBack_Check(tb)) {
        PyErr_SetString(PyExc_TypeError,
            "raise: arg 3 must be a traceback or None");
        goto raise_error;
    }
    /* Next, replace a missing value with None */
    if (value == NULL) {
        value = Py_None;
        Py_INCREF(value);
    }
    #if PY_VERSION_HEX < 0x02050000
    if (!PyClass_Check(type))
    #else
    if (!PyType_Check(type))
    #endif
    {
        /* Raising an instance.  The value should be a dummy. */
        if (value != Py_None) {
            PyErr_SetString(PyExc_TypeError,
                "instance exception may not have a separate value");
            goto raise_error;
        }
        /* Normalize to raise <class>, <instance> */
        Py_DECREF(value);
        value = type;
        #if PY_VERSION_HEX < 0x02050000
            if (PyInstance_Check(type)) {
                type = (PyObject*) ((PyInstanceObject*)type)->in_class;
                Py_INCREF(type);
            }
            else {
                type = 0;
                PyErr_SetString(PyExc_TypeError,
                    "raise: exception must be an old-style class or instance");
                goto raise_error;
            }
        #else
            type = (PyObject*) Py_TYPE(type);
            Py_INCREF(type);
            if (!PyType_IsSubtype((PyTypeObject *)type, (PyTypeObject *)PyExc_BaseException)) {
                PyErr_SetString(PyExc_TypeError,
                    "raise: exception class must be a subclass of BaseException");
                goto raise_error;
            }
        #endif
    }

    __Pyx_ErrRestore(type, value, tb);
    return;
raise_error:
    Py_XDECREF(value);
    Py_XDECREF(type);
    Py_XDECREF(tb);
    return;
}

#else /* Python 3+ */

static void __Pyx_Raise(PyObject *type, PyObject *value, PyObject *tb, PyObject *cause) {
    if (tb == Py_None) {
        tb = 0;
    } else if (tb && !PyTraceBack_Check(tb)) {
        PyErr_SetString(PyExc_TypeError,
            "raise: arg 3 must be a traceback or None");
        goto bad;
    }
    if (value == Py_None)
        value = 0;

    if (PyExceptionInstance_Check(type)) {
        if (value) {
            PyErr_SetString(PyExc_TypeError,
                "instance exception may not have a separate value");
            goto bad;
        }
        value = type;
        type = (PyObject*) Py_TYPE(value);
    } else if (!PyExceptionClass_Check(type)) {
        PyErr_SetString(PyExc_TypeError,
            "raise: exception class must be a subclass of BaseException");
        goto bad;
    }

    if (cause) {
        PyObject *fixed_cause;
        if (PyExceptionClass_Check(cause)) {
            fixed_cause = PyObject_CallObject(cause, NULL);
            if (fixed_cause == NULL)
                goto bad;
        }
        else if (PyExceptionInstance_Check(cause)) {
            fixed_cause = cause;
            Py_INCREF(fixed_cause);
        }
        else {
            PyErr_SetString(PyExc_TypeError,
                            "exception causes must derive from "
                            "BaseException");
            goto bad;
        }
        if (!value) {
            value = PyObject_CallObject(type, NULL);
        }
        PyException_SetCause(value, fixed_cause);
    }

    PyErr_SetObject(type, value);

    if (tb) {
        PyThreadState *tstate = PyThreadState_GET();
        PyObject* tmp_tb = tstate->curexc_traceback;
        if (tb != tmp_tb) {
            Py_INCREF(tb);
            tstate->curexc_traceback = tb;
            Py_XDECREF(tmp_tb);
        }
    }

bad:
    return;
}
#endif

static CYTHON_INLINE void __Pyx_RaiseNeedMoreValuesError(Py_ssize_t index) {
    PyErr_Format(PyExc_ValueError,
                 "need more than %"PY_FORMAT_SIZE_T"d value%s to unpack",
                 index, (index == 1) ? "" : "s");
}

static CYTHON_INLINE void __Pyx_RaiseTooManyValuesError(Py_ssize_t expected) {
    PyErr_Format(PyExc_ValueError,
                 "too many values to unpack (expected %"PY_FORMAT_SIZE_T"d)", expected);
}

static int __Pyx_IternextUnpackEndCheck(PyObject *retval, Py_ssize_t expected) {
    if (unlikely(retval)) {
        Py_DECREF(retval);
        __Pyx_RaiseTooManyValuesError(expected);
        return -1;
    } else if (PyErr_Occurred()) {
        if (likely(PyErr_ExceptionMatches(PyExc_StopIteration))) {
            PyErr_Clear();
            return 0;
        } else {
            return -1;
        }
    }
    return 0;
}
static void __Pyx_RaiseBufferIndexError(int axis) {
  PyErr_Format(PyExc_IndexError,
     "Out of bounds on buffer access (axis %d)", axis);
}


static CYTHON_INLINE void __Pyx_RaiseNoneIndexingError(void) {
    PyErr_SetString(PyExc_TypeError, "'NoneType' object is unsubscriptable");
}

static CYTHON_INLINE void __Pyx_RaiseNoneNotIterableError(void) {
    PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable");
}

static void __Pyx_UnpackTupleError(PyObject *t, Py_ssize_t index) {
    if (t == Py_None) {
      __Pyx_RaiseNoneNotIterableError();
    } else if (PyTuple_GET_SIZE(t) < index) {
      __Pyx_RaiseNeedMoreValuesError(PyTuple_GET_SIZE(t));
    } else {
      __Pyx_RaiseTooManyValuesError(index);
    }
}

#if PY_MAJOR_VERSION < 3
static int __Pyx_GetBuffer(PyObject *obj, Py_buffer *view, int flags) {
  #if PY_VERSION_HEX >= 0x02060000
  if (PyObject_CheckBuffer(obj)) return PyObject_GetBuffer(obj, view, flags);
  #endif
  if (PyObject_TypeCheck(obj, __pyx_ptype_5numpy_ndarray)) return __pyx_pf_5numpy_7ndarray___getbuffer__(obj, view, flags);
  else {
  PyErr_Format(PyExc_TypeError, "'%100s' does not have the buffer interface", Py_TYPE(obj)->tp_name);
  return -1;
    }
}

static void __Pyx_ReleaseBuffer(Py_buffer *view) {
  PyObject* obj = view->obj;
  if (obj) {
    #if PY_VERSION_HEX >= 0x02060000
    if (PyObject_CheckBuffer(obj)) {PyBuffer_Release(view); return;}
    #endif
    if (PyObject_TypeCheck(obj, __pyx_ptype_5numpy_ndarray)) __pyx_pf_5numpy_7ndarray_1__releasebuffer__(obj, view);
    Py_DECREF(obj);
    view->obj = NULL;
  }
}

#endif

static PyObject *__Pyx_Import(PyObject *name, PyObject *from_list, long level) {
    PyObject *py_import = 0;
    PyObject *empty_list = 0;
    PyObject *module = 0;
    PyObject *global_dict = 0;
    PyObject *empty_dict = 0;
    PyObject *list;
    py_import = __Pyx_GetAttrString(__pyx_b, "__import__");
    if (!py_import)
        goto bad;
    if (from_list)
        list = from_list;
    else {
        empty_list = PyList_New(0);
        if (!empty_list)
            goto bad;
        list = empty_list;
    }
    global_dict = PyModule_GetDict(__pyx_m);
    if (!global_dict)
        goto bad;
    empty_dict = PyDict_New();
    if (!empty_dict)
        goto bad;
    #if PY_VERSION_HEX >= 0x02050000
    {
        PyObject *py_level = PyInt_FromLong(level);
        if (!py_level)
            goto bad;
        module = PyObject_CallFunctionObjArgs(py_import,
            name, global_dict, empty_dict, list, py_level, NULL);
        Py_DECREF(py_level);
    }
    #else
    if (level>0) {
        PyErr_SetString(PyExc_RuntimeError, "Relative import is not supported for Python <=2.4.");
        goto bad;
    }
    module = PyObject_CallFunctionObjArgs(py_import,
        name, global_dict, empty_dict, list, NULL);
    #endif
bad:
    Py_XDECREF(empty_list);
    Py_XDECREF(py_import);
    Py_XDECREF(empty_dict);
    return module;
}

static CYTHON_INLINE npy_int32 __Pyx_PyInt_from_py_npy_int32(PyObject* x) {
    const npy_int32 neg_one = (npy_int32)-1, const_zero = (npy_int32)0;
    const int is_unsigned = const_zero < neg_one;
    if (sizeof(npy_int32) == sizeof(char)) {
        if (is_unsigned)
            return (npy_int32)__Pyx_PyInt_AsUnsignedChar(x);
        else
            return (npy_int32)__Pyx_PyInt_AsSignedChar(x);
    } else if (sizeof(npy_int32) == sizeof(short)) {
        if (is_unsigned)
            return (npy_int32)__Pyx_PyInt_AsUnsignedShort(x);
        else
            return (npy_int32)__Pyx_PyInt_AsSignedShort(x);
    } else if (sizeof(npy_int32) == sizeof(int)) {
        if (is_unsigned)
            return (npy_int32)__Pyx_PyInt_AsUnsignedInt(x);
        else
            return (npy_int32)__Pyx_PyInt_AsSignedInt(x);
    } else if (sizeof(npy_int32) == sizeof(long)) {
        if (is_unsigned)
            return (npy_int32)__Pyx_PyInt_AsUnsignedLong(x);
        else
            return (npy_int32)__Pyx_PyInt_AsSignedLong(x);
    } else if (sizeof(npy_int32) == sizeof(PY_LONG_LONG)) {
        if (is_unsigned)
            return (npy_int32)__Pyx_PyInt_AsUnsignedLongLong(x);
        else
            return (npy_int32)__Pyx_PyInt_AsSignedLongLong(x);
    }  else {
        npy_int32 val;
        PyObject *v = __Pyx_PyNumber_Int(x);
        #if PY_VERSION_HEX < 0x03000000
        if (likely(v) && !PyLong_Check(v)) {
            PyObject *tmp = v;
            v = PyNumber_Long(tmp);
            Py_DECREF(tmp);
        }
        #endif
        if (likely(v)) {
            int one = 1; int is_little = (int)*(unsigned char *)&one;
            unsigned char *bytes = (unsigned char *)&val;
            int ret = _PyLong_AsByteArray((PyLongObject *)v,
                                          bytes, sizeof(val),
                                          is_little, !is_unsigned);
            Py_DECREF(v);
            if (likely(!ret))
                return val;
        }
        return (npy_int32)-1;
    }
}

static CYTHON_INLINE npy_int64 __Pyx_PyInt_from_py_npy_int64(PyObject* x) {
    const npy_int64 neg_one = (npy_int64)-1, const_zero = (npy_int64)0;
    const int is_unsigned = const_zero < neg_one;
    if (sizeof(npy_int64) == sizeof(char)) {
        if (is_unsigned)
            return (npy_int64)__Pyx_PyInt_AsUnsignedChar(x);
        else
            return (npy_int64)__Pyx_PyInt_AsSignedChar(x);
    } else if (sizeof(npy_int64) == sizeof(short)) {
        if (is_unsigned)
            return (npy_int64)__Pyx_PyInt_AsUnsignedShort(x);
        else
            return (npy_int64)__Pyx_PyInt_AsSignedShort(x);
    } else if (sizeof(npy_int64) == sizeof(int)) {
        if (is_unsigned)
            return (npy_int64)__Pyx_PyInt_AsUnsignedInt(x);
        else
            return (npy_int64)__Pyx_PyInt_AsSignedInt(x);
    } else if (sizeof(npy_int64) == sizeof(long)) {
        if (is_unsigned)
            return (npy_int64)__Pyx_PyInt_AsUnsignedLong(x);
        else
            return (npy_int64)__Pyx_PyInt_AsSignedLong(x);
    } else if (sizeof(npy_int64) == sizeof(PY_LONG_LONG)) {
        if (is_unsigned)
            return (npy_int64)__Pyx_PyInt_AsUnsignedLongLong(x);
        else
            return (npy_int64)__Pyx_PyInt_AsSignedLongLong(x);
    }  else {
        npy_int64 val;
        PyObject *v = __Pyx_PyNumber_Int(x);
        #if PY_VERSION_HEX < 0x03000000
        if (likely(v) && !PyLong_Check(v)) {
            PyObject *tmp = v;
            v = PyNumber_Long(tmp);
            Py_DECREF(tmp);
        }
        #endif
        if (likely(v)) {
            int one = 1; int is_little = (int)*(unsigned char *)&one;
            unsigned char *bytes = (unsigned char *)&val;
            int ret = _PyLong_AsByteArray((PyLongObject *)v,
                                          bytes, sizeof(val),
                                          is_little, !is_unsigned);
            Py_DECREF(v);
            if (likely(!ret))
                return val;
        }
        return (npy_int64)-1;
    }
}

static CYTHON_INLINE npy_uint8 __Pyx_PyInt_from_py_npy_uint8(PyObject* x) {
    const npy_uint8 neg_one = (npy_uint8)-1, const_zero = (npy_uint8)0;
    const int is_unsigned = const_zero < neg_one;
    if (sizeof(npy_uint8) == sizeof(char)) {
        if (is_unsigned)
            return (npy_uint8)__Pyx_PyInt_AsUnsignedChar(x);
        else
            return (npy_uint8)__Pyx_PyInt_AsSignedChar(x);
    } else if (sizeof(npy_uint8) == sizeof(short)) {
        if (is_unsigned)
            return (npy_uint8)__Pyx_PyInt_AsUnsignedShort(x);
        else
            return (npy_uint8)__Pyx_PyInt_AsSignedShort(x);
    } else if (sizeof(npy_uint8) == sizeof(int)) {
        if (is_unsigned)
            return (npy_uint8)__Pyx_PyInt_AsUnsignedInt(x);
        else
            return (npy_uint8)__Pyx_PyInt_AsSignedInt(x);
    } else if (sizeof(npy_uint8) == sizeof(long)) {
        if (is_unsigned)
            return (npy_uint8)__Pyx_PyInt_AsUnsignedLong(x);
        else
            return (npy_uint8)__Pyx_PyInt_AsSignedLong(x);
    } else if (sizeof(npy_uint8) == sizeof(PY_LONG_LONG)) {
        if (is_unsigned)
            return (npy_uint8)__Pyx_PyInt_AsUnsignedLongLong(x);
        else
            return (npy_uint8)__Pyx_PyInt_AsSignedLongLong(x);
    }  else {
        npy_uint8 val;
        PyObject *v = __Pyx_PyNumber_Int(x);
        #if PY_VERSION_HEX < 0x03000000
        if (likely(v) && !PyLong_Check(v)) {
            PyObject *tmp = v;
            v = PyNumber_Long(tmp);
            Py_DECREF(tmp);
        }
        #endif
        if (likely(v)) {
            int one = 1; int is_little = (int)*(unsigned char *)&one;
            unsigned char *bytes = (unsigned char *)&val;
            int ret = _PyLong_AsByteArray((PyLongObject *)v,
                                          bytes, sizeof(val),
                                          is_little, !is_unsigned);
            Py_DECREF(v);
            if (likely(!ret))
                return val;
        }
        return (npy_uint8)-1;
    }
}

static CYTHON_INLINE PyObject *__Pyx_PyInt_to_py_npy_int32(npy_int32 val) {
    const npy_int32 neg_one = (npy_int32)-1, const_zero = (npy_int32)0;
    const int is_unsigned = const_zero < neg_one;
    if ((sizeof(npy_int32) == sizeof(char))  ||
        (sizeof(npy_int32) == sizeof(short))) {
        return PyInt_FromLong((long)val);
    } else if ((sizeof(npy_int32) == sizeof(int)) ||
               (sizeof(npy_int32) == sizeof(long))) {
        if (is_unsigned)
            return PyLong_FromUnsignedLong((unsigned long)val);
        else
            return PyInt_FromLong((long)val);
    } else if (sizeof(npy_int32) == sizeof(PY_LONG_LONG)) {
        if (is_unsigned)
            return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG)val);
        else
            return PyLong_FromLongLong((PY_LONG_LONG)val);
    } else {
        int one = 1; int little = (int)*(unsigned char *)&one;
        unsigned char *bytes = (unsigned char *)&val;
        return _PyLong_FromByteArray(bytes, sizeof(npy_int32),
                                     little, !is_unsigned);
    }
}

static CYTHON_INLINE PyObject *__Pyx_PyInt_to_py_npy_int64(npy_int64 val) {
    const npy_int64 neg_one = (npy_int64)-1, const_zero = (npy_int64)0;
    const int is_unsigned = const_zero < neg_one;
    if ((sizeof(npy_int64) == sizeof(char))  ||
        (sizeof(npy_int64) == sizeof(short))) {
        return PyInt_FromLong((long)val);
    } else if ((sizeof(npy_int64) == sizeof(int)) ||
               (sizeof(npy_int64) == sizeof(long))) {
        if (is_unsigned)
            return PyLong_FromUnsignedLong((unsigned long)val);
        else
            return PyInt_FromLong((long)val);
    } else if (sizeof(npy_int64) == sizeof(PY_LONG_LONG)) {
        if (is_unsigned)
            return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG)val);
        else
            return PyLong_FromLongLong((PY_LONG_LONG)val);
    } else {
        int one = 1; int little = (int)*(unsigned char *)&one;
        unsigned char *bytes = (unsigned char *)&val;
        return _PyLong_FromByteArray(bytes, sizeof(npy_int64),
                                     little, !is_unsigned);
    }
}

static CYTHON_INLINE PyObject *__Pyx_PyInt_to_py_npy_uint8(npy_uint8 val) {
    const npy_uint8 neg_one = (npy_uint8)-1, const_zero = (npy_uint8)0;
    const int is_unsigned = const_zero < neg_one;
    if ((sizeof(npy_uint8) == sizeof(char))  ||
        (sizeof(npy_uint8) == sizeof(short))) {
        return PyInt_FromLong((long)val);
    } else if ((sizeof(npy_uint8) == sizeof(int)) ||
               (sizeof(npy_uint8) == sizeof(long))) {
        if (is_unsigned)
            return PyLong_FromUnsignedLong((unsigned long)val);
        else
            return PyInt_FromLong((long)val);
    } else if (sizeof(npy_uint8) == sizeof(PY_LONG_LONG)) {
        if (is_unsigned)
            return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG)val);
        else
            return PyLong_FromLongLong((PY_LONG_LONG)val);
    } else {
        int one = 1; int little = (int)*(unsigned char *)&one;
        unsigned char *bytes = (unsigned char *)&val;
        return _PyLong_FromByteArray(bytes, sizeof(npy_uint8),
                                     little, !is_unsigned);
    }
}

#if CYTHON_CCOMPLEX
  #ifdef __cplusplus
    static CYTHON_INLINE __pyx_t_float_complex __pyx_t_float_complex_from_parts(float x, float y) {
      return ::std::complex< float >(x, y);
    }
  #else
    static CYTHON_INLINE __pyx_t_float_complex __pyx_t_float_complex_from_parts(float x, float y) {
      return x + y*(__pyx_t_float_complex)_Complex_I;
    }
  #endif
#else
    static CYTHON_INLINE __pyx_t_float_complex __pyx_t_float_complex_from_parts(float x, float y) {
      __pyx_t_float_complex z;
      z.real = x;
      z.imag = y;
      return z;
    }
#endif

#if CYTHON_CCOMPLEX
#else
    static CYTHON_INLINE int __Pyx_c_eqf(__pyx_t_float_complex a, __pyx_t_float_complex b) {
       return (a.real == b.real) && (a.imag == b.imag);
    }
    static CYTHON_INLINE __pyx_t_float_complex __Pyx_c_sumf(__pyx_t_float_complex a, __pyx_t_float_complex b) {
        __pyx_t_float_complex z;
        z.real = a.real + b.real;
        z.imag = a.imag + b.imag;
        return z;
    }
    static CYTHON_INLINE __pyx_t_float_complex __Pyx_c_difff(__pyx_t_float_complex a, __pyx_t_float_complex b) {
        __pyx_t_float_complex z;
        z.real = a.real - b.real;
        z.imag = a.imag - b.imag;
        return z;
    }
    static CYTHON_INLINE __pyx_t_float_complex __Pyx_c_prodf(__pyx_t_float_complex a, __pyx_t_float_complex b) {
        __pyx_t_float_complex z;
        z.real = a.real * b.real - a.imag * b.imag;
        z.imag = a.real * b.imag + a.imag * b.real;
        return z;
    }
    static CYTHON_INLINE __pyx_t_float_complex __Pyx_c_quotf(__pyx_t_float_complex a, __pyx_t_float_complex b) {
        __pyx_t_float_complex z;
        float denom = b.real * b.real + b.imag * b.imag;
        z.real = (a.real * b.real + a.imag * b.imag) / denom;
        z.imag = (a.imag * b.real - a.real * b.imag) / denom;
        return z;
    }
    static CYTHON_INLINE __pyx_t_float_complex __Pyx_c_negf(__pyx_t_float_complex a) {
        __pyx_t_float_complex z;
        z.real = -a.real;
        z.imag = -a.imag;
        return z;
    }
    static CYTHON_INLINE int __Pyx_c_is_zerof(__pyx_t_float_complex a) {
       return (a.real == 0) && (a.imag == 0);
    }
    static CYTHON_INLINE __pyx_t_float_complex __Pyx_c_conjf(__pyx_t_float_complex a) {
        __pyx_t_float_complex z;
        z.real =  a.real;
        z.imag = -a.imag;
        return z;
    }
    #if 1
        static CYTHON_INLINE float __Pyx_c_absf(__pyx_t_float_complex z) {
          #if !defined(HAVE_HYPOT) || defined(_MSC_VER)
            return sqrtf(z.real*z.real + z.imag*z.imag);
          #else
            return hypotf(z.real, z.imag);
          #endif
        }
        static CYTHON_INLINE __pyx_t_float_complex __Pyx_c_powf(__pyx_t_float_complex a, __pyx_t_float_complex b) {
            __pyx_t_float_complex z;
            float r, lnr, theta, z_r, z_theta;
            if (b.imag == 0 && b.real == (int)b.real) {
                if (b.real < 0) {
                    float denom = a.real * a.real + a.imag * a.imag;
                    a.real = a.real / denom;
                    a.imag = -a.imag / denom;
                    b.real = -b.real;
                }
                switch ((int)b.real) {
                    case 0:
                        z.real = 1;
                        z.imag = 0;
                        return z;
                    case 1:
                        return a;
                    case 2:
                        z = __Pyx_c_prodf(a, a);
                        return __Pyx_c_prodf(a, a);
                    case 3:
                        z = __Pyx_c_prodf(a, a);
                        return __Pyx_c_prodf(z, a);
                    case 4:
                        z = __Pyx_c_prodf(a, a);
                        return __Pyx_c_prodf(z, z);
                }
            }
            if (a.imag == 0) {
                if (a.real == 0) {
                    return a;
                }
                r = a.real;
                theta = 0;
            } else {
                r = __Pyx_c_absf(a);
                theta = atan2f(a.imag, a.real);
            }
            lnr = logf(r);
            z_r = expf(lnr * b.real - theta * b.imag);
            z_theta = theta * b.real + lnr * b.imag;
            z.real = z_r * cosf(z_theta);
            z.imag = z_r * sinf(z_theta);
            return z;
        }
    #endif
#endif

#if CYTHON_CCOMPLEX
  #ifdef __cplusplus
    static CYTHON_INLINE __pyx_t_double_complex __pyx_t_double_complex_from_parts(double x, double y) {
      return ::std::complex< double >(x, y);
    }
  #else
    static CYTHON_INLINE __pyx_t_double_complex __pyx_t_double_complex_from_parts(double x, double y) {
      return x + y*(__pyx_t_double_complex)_Complex_I;
    }
  #endif
#else
    static CYTHON_INLINE __pyx_t_double_complex __pyx_t_double_complex_from_parts(double x, double y) {
      __pyx_t_double_complex z;
      z.real = x;
      z.imag = y;
      return z;
    }
#endif

#if CYTHON_CCOMPLEX
#else
    static CYTHON_INLINE int __Pyx_c_eq(__pyx_t_double_complex a, __pyx_t_double_complex b) {
       return (a.real == b.real) && (a.imag == b.imag);
    }
    static CYTHON_INLINE __pyx_t_double_complex __Pyx_c_sum(__pyx_t_double_complex a, __pyx_t_double_complex b) {
        __pyx_t_double_complex z;
        z.real = a.real + b.real;
        z.imag = a.imag + b.imag;
        return z;
    }
    static CYTHON_INLINE __pyx_t_double_complex __Pyx_c_diff(__pyx_t_double_complex a, __pyx_t_double_complex b) {
        __pyx_t_double_complex z;
        z.real = a.real - b.real;
        z.imag = a.imag - b.imag;
        return z;
    }
    static CYTHON_INLINE __pyx_t_double_complex __Pyx_c_prod(__pyx_t_double_complex a, __pyx_t_double_complex b) {
        __pyx_t_double_complex z;
        z.real = a.real * b.real - a.imag * b.imag;
        z.imag = a.real * b.imag + a.imag * b.real;
        return z;
    }
    static CYTHON_INLINE __pyx_t_double_complex __Pyx_c_quot(__pyx_t_double_complex a, __pyx_t_double_complex b) {
        __pyx_t_double_complex z;
        double denom = b.real * b.real + b.imag * b.imag;
        z.real = (a.real * b.real + a.imag * b.imag) / denom;
        z.imag = (a.imag * b.real - a.real * b.imag) / denom;
        return z;
    }
    static CYTHON_INLINE __pyx_t_double_complex __Pyx_c_neg(__pyx_t_double_complex a) {
        __pyx_t_double_complex z;
        z.real = -a.real;
        z.imag = -a.imag;
        return z;
    }
    static CYTHON_INLINE int __Pyx_c_is_zero(__pyx_t_double_complex a) {
       return (a.real == 0) && (a.imag == 0);
    }
    static CYTHON_INLINE __pyx_t_double_complex __Pyx_c_conj(__pyx_t_double_complex a) {
        __pyx_t_double_complex z;
        z.real =  a.real;
        z.imag = -a.imag;
        return z;
    }
    #if 1
        static CYTHON_INLINE double __Pyx_c_abs(__pyx_t_double_complex z) {
          #if !defined(HAVE_HYPOT) || defined(_MSC_VER)
            return sqrt(z.real*z.real + z.imag*z.imag);
          #else
            return hypot(z.real, z.imag);
          #endif
        }
        static CYTHON_INLINE __pyx_t_double_complex __Pyx_c_pow(__pyx_t_double_complex a, __pyx_t_double_complex b) {
            __pyx_t_double_complex z;
            double r, lnr, theta, z_r, z_theta;
            if (b.imag == 0 && b.real == (int)b.real) {
                if (b.real < 0) {
                    double denom = a.real * a.real + a.imag * a.imag;
                    a.real = a.real / denom;
                    a.imag = -a.imag / denom;
                    b.real = -b.real;
                }
                switch ((int)b.real) {
                    case 0:
                        z.real = 1;
                        z.imag = 0;
                        return z;
                    case 1:
                        return a;
                    case 2:
                        z = __Pyx_c_prod(a, a);
                        return __Pyx_c_prod(a, a);
                    case 3:
                        z = __Pyx_c_prod(a, a);
                        return __Pyx_c_prod(z, a);
                    case 4:
                        z = __Pyx_c_prod(a, a);
                        return __Pyx_c_prod(z, z);
                }
            }
            if (a.imag == 0) {
                if (a.real == 0) {
                    return a;
                }
                r = a.real;
                theta = 0;
            } else {
                r = __Pyx_c_abs(a);
                theta = atan2(a.imag, a.real);
            }
            lnr = log(r);
            z_r = exp(lnr * b.real - theta * b.imag);
            z_theta = theta * b.real + lnr * b.imag;
            z.real = z_r * cos(z_theta);
            z.imag = z_r * sin(z_theta);
            return z;
        }
    #endif
#endif

static CYTHON_INLINE unsigned char __Pyx_PyInt_AsUnsignedChar(PyObject* x) {
    const unsigned char neg_one = (unsigned char)-1, const_zero = 0;
    const int is_unsigned = neg_one > const_zero;
    if (sizeof(unsigned char) < sizeof(long)) {
        long val = __Pyx_PyInt_AsLong(x);
        if (unlikely(val != (long)(unsigned char)val)) {
            if (!unlikely(val == -1 && PyErr_Occurred())) {
                PyErr_SetString(PyExc_OverflowError,
                    (is_unsigned && unlikely(val < 0)) ?
                    "can't convert negative value to unsigned char" :
                    "value too large to convert to unsigned char");
            }
            return (unsigned char)-1;
        }
        return (unsigned char)val;
    }
    return (unsigned char)__Pyx_PyInt_AsUnsignedLong(x);
}

static CYTHON_INLINE unsigned short __Pyx_PyInt_AsUnsignedShort(PyObject* x) {
    const unsigned short neg_one = (unsigned short)-1, const_zero = 0;
    const int is_unsigned = neg_one > const_zero;
    if (sizeof(unsigned short) < sizeof(long)) {
        long val = __Pyx_PyInt_AsLong(x);
        if (unlikely(val != (long)(unsigned short)val)) {
            if (!unlikely(val == -1 && PyErr_Occurred())) {
                PyErr_SetString(PyExc_OverflowError,
                    (is_unsigned && unlikely(val < 0)) ?
                    "can't convert negative value to unsigned short" :
                    "value too large to convert to unsigned short");
            }
            return (unsigned short)-1;
        }
        return (unsigned short)val;
    }
    return (unsigned short)__Pyx_PyInt_AsUnsignedLong(x);
}

static CYTHON_INLINE unsigned int __Pyx_PyInt_AsUnsignedInt(PyObject* x) {
    const unsigned int neg_one = (unsigned int)-1, const_zero = 0;
    const int is_unsigned = neg_one > const_zero;
    if (sizeof(unsigned int) < sizeof(long)) {
        long val = __Pyx_PyInt_AsLong(x);
        if (unlikely(val != (long)(unsigned int)val)) {
            if (!unlikely(val == -1 && PyErr_Occurred())) {
                PyErr_SetString(PyExc_OverflowError,
                    (is_unsigned && unlikely(val < 0)) ?
                    "can't convert negative value to unsigned int" :
                    "value too large to convert to unsigned int");
            }
            return (unsigned int)-1;
        }
        return (unsigned int)val;
    }
    return (unsigned int)__Pyx_PyInt_AsUnsignedLong(x);
}

static CYTHON_INLINE char __Pyx_PyInt_AsChar(PyObject* x) {
    const char neg_one = (char)-1, const_zero = 0;
    const int is_unsigned = neg_one > const_zero;
    if (sizeof(char) < sizeof(long)) {
        long val = __Pyx_PyInt_AsLong(x);
        if (unlikely(val != (long)(char)val)) {
            if (!unlikely(val == -1 && PyErr_Occurred())) {
                PyErr_SetString(PyExc_OverflowError,
                    (is_unsigned && unlikely(val < 0)) ?
                    "can't convert negative value to char" :
                    "value too large to convert to char");
            }
            return (char)-1;
        }
        return (char)val;
    }
    return (char)__Pyx_PyInt_AsLong(x);
}

static CYTHON_INLINE short __Pyx_PyInt_AsShort(PyObject* x) {
    const short neg_one = (short)-1, const_zero = 0;
    const int is_unsigned = neg_one > const_zero;
    if (sizeof(short) < sizeof(long)) {
        long val = __Pyx_PyInt_AsLong(x);
        if (unlikely(val != (long)(short)val)) {
            if (!unlikely(val == -1 && PyErr_Occurred())) {
                PyErr_SetString(PyExc_OverflowError,
                    (is_unsigned && unlikely(val < 0)) ?
                    "can't convert negative value to short" :
                    "value too large to convert to short");
            }
            return (short)-1;
        }
        return (short)val;
    }
    return (short)__Pyx_PyInt_AsLong(x);
}

static CYTHON_INLINE int __Pyx_PyInt_AsInt(PyObject* x) {
    const int neg_one = (int)-1, const_zero = 0;
    const int is_unsigned = neg_one > const_zero;
    if (sizeof(int) < sizeof(long)) {
        long val = __Pyx_PyInt_AsLong(x);
        if (unlikely(val != (long)(int)val)) {
            if (!unlikely(val == -1 && PyErr_Occurred())) {
                PyErr_SetString(PyExc_OverflowError,
                    (is_unsigned && unlikely(val < 0)) ?
                    "can't convert negative value to int" :
                    "value too large to convert to int");
            }
            return (int)-1;
        }
        return (int)val;
    }
    return (int)__Pyx_PyInt_AsLong(x);
}

static CYTHON_INLINE signed char __Pyx_PyInt_AsSignedChar(PyObject* x) {
    const signed char neg_one = (signed char)-1, const_zero = 0;
    const int is_unsigned = neg_one > const_zero;
    if (sizeof(signed char) < sizeof(long)) {
        long val = __Pyx_PyInt_AsLong(x);
        if (unlikely(val != (long)(signed char)val)) {
            if (!unlikely(val == -1 && PyErr_Occurred())) {
                PyErr_SetString(PyExc_OverflowError,
                    (is_unsigned && unlikely(val < 0)) ?
                    "can't convert negative value to signed char" :
                    "value too large to convert to signed char");
            }
            return (signed char)-1;
        }
        return (signed char)val;
    }
    return (signed char)__Pyx_PyInt_AsSignedLong(x);
}

static CYTHON_INLINE signed short __Pyx_PyInt_AsSignedShort(PyObject* x) {
    const signed short neg_one = (signed short)-1, const_zero = 0;
    const int is_unsigned = neg_one > const_zero;
    if (sizeof(signed short) < sizeof(long)) {
        long val = __Pyx_PyInt_AsLong(x);
        if (unlikely(val != (long)(signed short)val)) {
            if (!unlikely(val == -1 && PyErr_Occurred())) {
                PyErr_SetString(PyExc_OverflowError,
                    (is_unsigned && unlikely(val < 0)) ?
                    "can't convert negative value to signed short" :
                    "value too large to convert to signed short");
            }
            return (signed short)-1;
        }
        return (signed short)val;
    }
    return (signed short)__Pyx_PyInt_AsSignedLong(x);
}

static CYTHON_INLINE signed int __Pyx_PyInt_AsSignedInt(PyObject* x) {
    const signed int neg_one = (signed int)-1, const_zero = 0;
    const int is_unsigned = neg_one > const_zero;
    if (sizeof(signed int) < sizeof(long)) {
        long val = __Pyx_PyInt_AsLong(x);
        if (unlikely(val != (long)(signed int)val)) {
            if (!unlikely(val == -1 && PyErr_Occurred())) {
                PyErr_SetString(PyExc_OverflowError,
                    (is_unsigned && unlikely(val < 0)) ?
                    "can't convert negative value to signed int" :
                    "value too large to convert to signed int");
            }
            return (signed int)-1;
        }
        return (signed int)val;
    }
    return (signed int)__Pyx_PyInt_AsSignedLong(x);
}

static CYTHON_INLINE int __Pyx_PyInt_AsLongDouble(PyObject* x) {
    const int neg_one = (int)-1, const_zero = 0;
    const int is_unsigned = neg_one > const_zero;
    if (sizeof(int) < sizeof(long)) {
        long val = __Pyx_PyInt_AsLong(x);
        if (unlikely(val != (long)(int)val)) {
            if (!unlikely(val == -1 && PyErr_Occurred())) {
                PyErr_SetString(PyExc_OverflowError,
                    (is_unsigned && unlikely(val < 0)) ?
                    "can't convert negative value to int" :
                    "value too large to convert to int");
            }
            return (int)-1;
        }
        return (int)val;
    }
    return (int)__Pyx_PyInt_AsLong(x);
}

static CYTHON_INLINE unsigned long __Pyx_PyInt_AsUnsignedLong(PyObject* x) {
    const unsigned long neg_one = (unsigned long)-1, const_zero = 0;
    const int is_unsigned = neg_one > const_zero;
#if PY_VERSION_HEX < 0x03000000
    if (likely(PyInt_Check(x))) {
        long val = PyInt_AS_LONG(x);
        if (is_unsigned && unlikely(val < 0)) {
            PyErr_SetString(PyExc_OverflowError,
                            "can't convert negative value to unsigned long");
            return (unsigned long)-1;
        }
        return (unsigned long)val;
    } else
#endif
    if (likely(PyLong_Check(x))) {
        if (is_unsigned) {
            if (unlikely(Py_SIZE(x) < 0)) {
                PyErr_SetString(PyExc_OverflowError,
                                "can't convert negative value to unsigned long");
                return (unsigned long)-1;
            }
            return (unsigned long)PyLong_AsUnsignedLong(x);
        } else {
            return (unsigned long)PyLong_AsLong(x);
        }
    } else {
        unsigned long val;
        PyObject *tmp = __Pyx_PyNumber_Int(x);
        if (!tmp) return (unsigned long)-1;
        val = __Pyx_PyInt_AsUnsignedLong(tmp);
        Py_DECREF(tmp);
        return val;
    }
}

static CYTHON_INLINE unsigned PY_LONG_LONG __Pyx_PyInt_AsUnsignedLongLong(PyObject* x) {
    const unsigned PY_LONG_LONG neg_one = (unsigned PY_LONG_LONG)-1, const_zero = 0;
    const int is_unsigned = neg_one > const_zero;
#if PY_VERSION_HEX < 0x03000000
    if (likely(PyInt_Check(x))) {
        long val = PyInt_AS_LONG(x);
        if (is_unsigned && unlikely(val < 0)) {
            PyErr_SetString(PyExc_OverflowError,
                            "can't convert negative value to unsigned PY_LONG_LONG");
            return (unsigned PY_LONG_LONG)-1;
        }
        return (unsigned PY_LONG_LONG)val;
    } else
#endif
    if (likely(PyLong_Check(x))) {
        if (is_unsigned) {
            if (unlikely(Py_SIZE(x) < 0)) {
                PyErr_SetString(PyExc_OverflowError,
                                "can't convert negative value to unsigned PY_LONG_LONG");
                return (unsigned PY_LONG_LONG)-1;
            }
            return (unsigned PY_LONG_LONG)PyLong_AsUnsignedLongLong(x);
        } else {
            return (unsigned PY_LONG_LONG)PyLong_AsLongLong(x);
        }
    } else {
        unsigned PY_LONG_LONG val;
        PyObject *tmp = __Pyx_PyNumber_Int(x);
        if (!tmp) return (unsigned PY_LONG_LONG)-1;
        val = __Pyx_PyInt_AsUnsignedLongLong(tmp);
        Py_DECREF(tmp);
        return val;
    }
}

static CYTHON_INLINE long __Pyx_PyInt_AsLong(PyObject* x) {
    const long neg_one = (long)-1, const_zero = 0;
    const int is_unsigned = neg_one > const_zero;
#if PY_VERSION_HEX < 0x03000000
    if (likely(PyInt_Check(x))) {
        long val = PyInt_AS_LONG(x);
        if (is_unsigned && unlikely(val < 0)) {
            PyErr_SetString(PyExc_OverflowError,
                            "can't convert negative value to long");
            return (long)-1;
        }
        return (long)val;
    } else
#endif
    if (likely(PyLong_Check(x))) {
        if (is_unsigned) {
            if (unlikely(Py_SIZE(x) < 0)) {
                PyErr_SetString(PyExc_OverflowError,
                                "can't convert negative value to long");
                return (long)-1;
            }
            return (long)PyLong_AsUnsignedLong(x);
        } else {
            return (long)PyLong_AsLong(x);
        }
    } else {
        long val;
        PyObject *tmp = __Pyx_PyNumber_Int(x);
        if (!tmp) return (long)-1;
        val = __Pyx_PyInt_AsLong(tmp);
        Py_DECREF(tmp);
        return val;
    }
}

static CYTHON_INLINE PY_LONG_LONG __Pyx_PyInt_AsLongLong(PyObject* x) {
    const PY_LONG_LONG neg_one = (PY_LONG_LONG)-1, const_zero = 0;
    const int is_unsigned = neg_one > const_zero;
#if PY_VERSION_HEX < 0x03000000
    if (likely(PyInt_Check(x))) {
        long val = PyInt_AS_LONG(x);
        if (is_unsigned && unlikely(val < 0)) {
            PyErr_SetString(PyExc_OverflowError,
                            "can't convert negative value to PY_LONG_LONG");
            return (PY_LONG_LONG)-1;
        }
        return (PY_LONG_LONG)val;
    } else
#endif
    if (likely(PyLong_Check(x))) {
        if (is_unsigned) {
            if (unlikely(Py_SIZE(x) < 0)) {
                PyErr_SetString(PyExc_OverflowError,
                                "can't convert negative value to PY_LONG_LONG");
                return (PY_LONG_LONG)-1;
            }
            return (PY_LONG_LONG)PyLong_AsUnsignedLongLong(x);
        } else {
            return (PY_LONG_LONG)PyLong_AsLongLong(x);
        }
    } else {
        PY_LONG_LONG val;
        PyObject *tmp = __Pyx_PyNumber_Int(x);
        if (!tmp) return (PY_LONG_LONG)-1;
        val = __Pyx_PyInt_AsLongLong(tmp);
        Py_DECREF(tmp);
        return val;
    }
}

static CYTHON_INLINE signed long __Pyx_PyInt_AsSignedLong(PyObject* x) {
    const signed long neg_one = (signed long)-1, const_zero = 0;
    const int is_unsigned = neg_one > const_zero;
#if PY_VERSION_HEX < 0x03000000
    if (likely(PyInt_Check(x))) {
        long val = PyInt_AS_LONG(x);
        if (is_unsigned && unlikely(val < 0)) {
            PyErr_SetString(PyExc_OverflowError,
                            "can't convert negative value to signed long");
            return (signed long)-1;
        }
        return (signed long)val;
    } else
#endif
    if (likely(PyLong_Check(x))) {
        if (is_unsigned) {
            if (unlikely(Py_SIZE(x) < 0)) {
                PyErr_SetString(PyExc_OverflowError,
                                "can't convert negative value to signed long");
                return (signed long)-1;
            }
            return (signed long)PyLong_AsUnsignedLong(x);
        } else {
            return (signed long)PyLong_AsLong(x);
        }
    } else {
        signed long val;
        PyObject *tmp = __Pyx_PyNumber_Int(x);
        if (!tmp) return (signed long)-1;
        val = __Pyx_PyInt_AsSignedLong(tmp);
        Py_DECREF(tmp);
        return val;
    }
}

static CYTHON_INLINE signed PY_LONG_LONG __Pyx_PyInt_AsSignedLongLong(PyObject* x) {
    const signed PY_LONG_LONG neg_one = (signed PY_LONG_LONG)-1, const_zero = 0;
    const int is_unsigned = neg_one > const_zero;
#if PY_VERSION_HEX < 0x03000000
    if (likely(PyInt_Check(x))) {
        long val = PyInt_AS_LONG(x);
        if (is_unsigned && unlikely(val < 0)) {
            PyErr_SetString(PyExc_OverflowError,
                            "can't convert negative value to signed PY_LONG_LONG");
            return (signed PY_LONG_LONG)-1;
        }
        return (signed PY_LONG_LONG)val;
    } else
#endif
    if (likely(PyLong_Check(x))) {
        if (is_unsigned) {
            if (unlikely(Py_SIZE(x) < 0)) {
                PyErr_SetString(PyExc_OverflowError,
                                "can't convert negative value to signed PY_LONG_LONG");
                return (signed PY_LONG_LONG)-1;
            }
            return (signed PY_LONG_LONG)PyLong_AsUnsignedLongLong(x);
        } else {
            return (signed PY_LONG_LONG)PyLong_AsLongLong(x);
        }
    } else {
        signed PY_LONG_LONG val;
        PyObject *tmp = __Pyx_PyNumber_Int(x);
        if (!tmp) return (signed PY_LONG_LONG)-1;
        val = __Pyx_PyInt_AsSignedLongLong(tmp);
        Py_DECREF(tmp);
        return val;
    }
}

static void __Pyx_WriteUnraisable(const char *name, int clineno,
                                  int lineno, const char *filename) {
    PyObject *old_exc, *old_val, *old_tb;
    PyObject *ctx;
    __Pyx_ErrFetch(&old_exc, &old_val, &old_tb);
    #if PY_MAJOR_VERSION < 3
    ctx = PyString_FromString(name);
    #else
    ctx = PyUnicode_FromString(name);
    #endif
    __Pyx_ErrRestore(old_exc, old_val, old_tb);
    if (!ctx) {
        PyErr_WriteUnraisable(Py_None);
    } else {
        PyErr_WriteUnraisable(ctx);
        Py_DECREF(ctx);
    }
}

static int __Pyx_check_binary_version(void) {
    char ctversion[4], rtversion[4];
    PyOS_snprintf(ctversion, 4, "%d.%d", PY_MAJOR_VERSION, PY_MINOR_VERSION);
    PyOS_snprintf(rtversion, 4, "%s", Py_GetVersion());
    if (ctversion[0] != rtversion[0] || ctversion[2] != rtversion[2]) {
        char message[200];
        PyOS_snprintf(message, sizeof(message),
                      "compiletime version %s of module '%.100s' "
                      "does not match runtime version %s",
                      ctversion, __Pyx_MODULE_NAME, rtversion);
        #if PY_VERSION_HEX < 0x02050000
        return PyErr_Warn(NULL, message);
        #else
        return PyErr_WarnEx(NULL, message, 1);
        #endif
    }
    return 0;
}

#ifndef __PYX_HAVE_RT_ImportType
#define __PYX_HAVE_RT_ImportType
static PyTypeObject *__Pyx_ImportType(const char *module_name, const char *class_name,
    size_t size, int strict)
{
    PyObject *py_module = 0;
    PyObject *result = 0;
    PyObject *py_name = 0;
    char warning[200];

    py_module = __Pyx_ImportModule(module_name);
    if (!py_module)
        goto bad;
    #if PY_MAJOR_VERSION < 3
    py_name = PyString_FromString(class_name);
    #else
    py_name = PyUnicode_FromString(class_name);
    #endif
    if (!py_name)
        goto bad;
    result = PyObject_GetAttr(py_module, py_name);
    Py_DECREF(py_name);
    py_name = 0;
    Py_DECREF(py_module);
    py_module = 0;
    if (!result)
        goto bad;
    if (!PyType_Check(result)) {
        PyErr_Format(PyExc_TypeError,
            "%s.%s is not a type object",
            module_name, class_name);
        goto bad;
    }
    if (!strict && ((PyTypeObject *)result)->tp_basicsize > (Py_ssize_t)size) {
        PyOS_snprintf(warning, sizeof(warning),
            "%s.%s size changed, may indicate binary incompatibility",
            module_name, class_name);
        #if PY_VERSION_HEX < 0x02050000
        if (PyErr_Warn(NULL, warning) < 0) goto bad;
        #else
        if (PyErr_WarnEx(NULL, warning, 0) < 0) goto bad;
        #endif
    }
    else if (((PyTypeObject *)result)->tp_basicsize != (Py_ssize_t)size) {
        PyErr_Format(PyExc_ValueError,
            "%s.%s has the wrong size, try recompiling",
            module_name, class_name);
        goto bad;
    }
    return (PyTypeObject *)result;
bad:
    Py_XDECREF(py_module);
    Py_XDECREF(result);
    return NULL;
}
#endif

#ifndef __PYX_HAVE_RT_ImportModule
#define __PYX_HAVE_RT_ImportModule
static PyObject *__Pyx_ImportModule(const char *name) {
    PyObject *py_name = 0;
    PyObject *py_module = 0;

    #if PY_MAJOR_VERSION < 3
    py_name = PyString_FromString(name);
    #else
    py_name = PyUnicode_FromString(name);
    #endif
    if (!py_name)
        goto bad;
    py_module = PyImport_Import(py_name);
    Py_DECREF(py_name);
    return py_module;
bad:
    Py_XDECREF(py_name);
    return 0;
}
#endif

#include "compile.h"
#include "frameobject.h"
#include "traceback.h"

static void __Pyx_AddTraceback(const char *funcname, int __pyx_clineno,
                               int __pyx_lineno, const char *__pyx_filename) {
    PyObject *py_srcfile = 0;
    PyObject *py_funcname = 0;
    PyObject *py_globals = 0;
    PyCodeObject *py_code = 0;
    PyFrameObject *py_frame = 0;

    #if PY_MAJOR_VERSION < 3
    py_srcfile = PyString_FromString(__pyx_filename);
    #else
    py_srcfile = PyUnicode_FromString(__pyx_filename);
    #endif
    if (!py_srcfile) goto bad;
    if (__pyx_clineno) {
        #if PY_MAJOR_VERSION < 3
        py_funcname = PyString_FromFormat( "%s (%s:%d)", funcname, __pyx_cfilenm, __pyx_clineno);
        #else
        py_funcname = PyUnicode_FromFormat( "%s (%s:%d)", funcname, __pyx_cfilenm, __pyx_clineno);
        #endif
    }
    else {
        #if PY_MAJOR_VERSION < 3
        py_funcname = PyString_FromString(funcname);
        #else
        py_funcname = PyUnicode_FromString(funcname);
        #endif
    }
    if (!py_funcname) goto bad;
    py_globals = PyModule_GetDict(__pyx_m);
    if (!py_globals) goto bad;
    py_code = PyCode_New(
        0,            /*int argcount,*/
        #if PY_MAJOR_VERSION >= 3
        0,            /*int kwonlyargcount,*/
        #endif
        0,            /*int nlocals,*/
        0,            /*int stacksize,*/
        0,            /*int flags,*/
        __pyx_empty_bytes, /*PyObject *code,*/
        __pyx_empty_tuple,  /*PyObject *consts,*/
        __pyx_empty_tuple,  /*PyObject *names,*/
        __pyx_empty_tuple,  /*PyObject *varnames,*/
        __pyx_empty_tuple,  /*PyObject *freevars,*/
        __pyx_empty_tuple,  /*PyObject *cellvars,*/
        py_srcfile,   /*PyObject *filename,*/
        py_funcname,  /*PyObject *name,*/
        __pyx_lineno,   /*int firstlineno,*/
        __pyx_empty_bytes  /*PyObject *lnotab*/
    );
    if (!py_code) goto bad;
    py_frame = PyFrame_New(
        PyThreadState_GET(), /*PyThreadState *tstate,*/
        py_code,             /*PyCodeObject *code,*/
        py_globals,          /*PyObject *globals,*/
        0                    /*PyObject *locals*/
    );
    if (!py_frame) goto bad;
    py_frame->f_lineno = __pyx_lineno;
    PyTraceBack_Here(py_frame);
bad:
    Py_XDECREF(py_srcfile);
    Py_XDECREF(py_funcname);
    Py_XDECREF(py_code);
    Py_XDECREF(py_frame);
}

static int __Pyx_InitStrings(__Pyx_StringTabEntry *t) {
    while (t->p) {
        #if PY_MAJOR_VERSION < 3
        if (t->is_unicode) {
            *t->p = PyUnicode_DecodeUTF8(t->s, t->n - 1, NULL);
        } else if (t->intern) {
            *t->p = PyString_InternFromString(t->s);
        } else {
            *t->p = PyString_FromStringAndSize(t->s, t->n - 1);
        }
        #else  /* Python 3+ has unicode identifiers */
        if (t->is_unicode | t->is_str) {
            if (t->intern) {
                *t->p = PyUnicode_InternFromString(t->s);
            } else if (t->encoding) {
                *t->p = PyUnicode_Decode(t->s, t->n - 1, t->encoding, NULL);
            } else {
                *t->p = PyUnicode_FromStringAndSize(t->s, t->n - 1);
            }
        } else {
            *t->p = PyBytes_FromStringAndSize(t->s, t->n - 1);
        }
        #endif
        if (!*t->p)
            return -1;
        ++t;
    }
    return 0;
}

/* Type Conversion Functions */

static CYTHON_INLINE int __Pyx_PyObject_IsTrue(PyObject* x) {
   int is_true = x == Py_True;
   if (is_true | (x == Py_False) | (x == Py_None)) return is_true;
   else return PyObject_IsTrue(x);
}

static CYTHON_INLINE PyObject* __Pyx_PyNumber_Int(PyObject* x) {
  PyNumberMethods *m;
  const char *name = NULL;
  PyObject *res = NULL;
#if PY_VERSION_HEX < 0x03000000
  if (PyInt_Check(x) || PyLong_Check(x))
#else
  if (PyLong_Check(x))
#endif
    return Py_INCREF(x), x;
  m = Py_TYPE(x)->tp_as_number;
#if PY_VERSION_HEX < 0x03000000
  if (m && m->nb_int) {
    name = "int";
    res = PyNumber_Int(x);
  }
  else if (m && m->nb_long) {
    name = "long";
    res = PyNumber_Long(x);
  }
#else
  if (m && m->nb_int) {
    name = "int";
    res = PyNumber_Long(x);
  }
#endif
  if (res) {
#if PY_VERSION_HEX < 0x03000000
    if (!PyInt_Check(res) && !PyLong_Check(res)) {
#else
    if (!PyLong_Check(res)) {
#endif
      PyErr_Format(PyExc_TypeError,
                   "__%s__ returned non-%s (type %.200s)",
                   name, name, Py_TYPE(res)->tp_name);
      Py_DECREF(res);
      return NULL;
    }
  }
  else if (!PyErr_Occurred()) {
    PyErr_SetString(PyExc_TypeError,
                    "an integer is required");
  }
  return res;
}

static CYTHON_INLINE Py_ssize_t __Pyx_PyIndex_AsSsize_t(PyObject* b) {
  Py_ssize_t ival;
  PyObject* x = PyNumber_Index(b);
  if (!x) return -1;
  ival = PyInt_AsSsize_t(x);
  Py_DECREF(x);
  return ival;
}

static CYTHON_INLINE PyObject * __Pyx_PyInt_FromSize_t(size_t ival) {
#if PY_VERSION_HEX < 0x02050000
   if (ival <= LONG_MAX)
       return PyInt_FromLong((long)ival);
   else {
       unsigned char *bytes = (unsigned char *) &ival;
       int one = 1; int little = (int)*(unsigned char*)&one;
       return _PyLong_FromByteArray(bytes, sizeof(size_t), little, 0);
   }
#else
   return PyInt_FromSize_t(ival);
#endif
}

static CYTHON_INLINE size_t __Pyx_PyInt_AsSize_t(PyObject* x) {
   unsigned PY_LONG_LONG val = __Pyx_PyInt_AsUnsignedLongLong(x);
   if (unlikely(val == (unsigned PY_LONG_LONG)-1 && PyErr_Occurred())) {
       return (size_t)-1;
   } else if (unlikely(val != (unsigned PY_LONG_LONG)(size_t)val)) {
       PyErr_SetString(PyExc_OverflowError,
                       "value too large to convert to size_t");
       return (size_t)-1;
   }
   return (size_t)val;
}


#endif /* Py_PYTHON_H */
