// File: ehw-fit[P]py-paretoarchive/src/paretoarchive/core.cpp
// Function: _pyx_pw_13paretoarchive_4core_16PyBspTreeArchive_3filter(_object*, _object*, _object*)
static PyObject *__pyx_pw_13paretoarchive_4core_16PyBspTreeArchive_3filter(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_self = 0;
  PyObject *__pyx_v_data = 0;
  PyObject *__pyx_v_returnIds = 0;
  PyObject *__pyx_v_sortKey = 0;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("filter (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_self,&__pyx_n_s_data,&__pyx_n_s_returnIds,&__pyx_n_s_sortKey,0};
    PyObject* values[4] = {0,0,0,0};
    values[2] = ((PyObject *)((PyObject *)Py_False));
    values[3] = ((PyObject *)((PyObject *)Py_None));
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_self)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_data)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("filter", 0, 2, 4, 1); __PYX_ERR(0, 1293, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (kw_args > 0) {
          PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_returnIds);
          if (value) { values[2] = value; kw_args--; }
        }
        CYTHON_FALLTHROUGH;
        case  3:
        if (kw_args > 0) {
          PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_sortKey);
          if (value) { values[3] = value; kw_args--; }
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "filter") < 0)) __PYX_ERR(0, 1293, __pyx_L3_error)
      }
    } else {
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        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_self = values[0];
    __pyx_v_data = values[1];
    __pyx_v_returnIds = values[2];
    __pyx_v_sortKey = values[3];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("filter", 0, 2, 4, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 1293, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("paretoarchive.core.PyBspTreeArchive.filter", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_13paretoarchive_4core_16PyBspTreeArchive_2filter(__pyx_self, __pyx_v_self, __pyx_v_data, __pyx_v_returnIds, __pyx_v_sortKey);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0xd0, %rsp
movq %fs:0x28, %rax
movq %rax, -0x8(%rbp)
movq %rdi, -0x40(%rbp)
movq %rsi, -0x48(%rbp)
movq %rdx, -0x50(%rbp)
movq $0x0, -0x58(%rbp)
movq $0x0, -0x60(%rbp)
movq $0x0, -0x68(%rbp)
movq $0x0, -0x70(%rbp)
movl $0x0, -0x74(%rbp)
movq $0x0, -0x80(%rbp)
movl $0x0, -0x84(%rbp)
movq $0x0, -0x90(%rbp)
leaq -0x30(%rbp), %rdi
xorl %esi, %esi
movl $0x20, %edx
callq 0x29250
movq 0x40679(%rip), %rax     # 0xa6f38
movq %rax, -0x20(%rbp)
movq 0x4051e(%rip), %rax     # 0xa6de8
movq %rax, -0x18(%rbp)
cmpq $0x0, -0x50(%rbp)
setne %al
xorb $-0x1, %al
xorb $-0x1, %al
testb $0x1, %al
jne 0x668e3
jmp 0x66b81
movq -0x48(%rbp), %rax
movq 0x10(%rax), %rax
movq %rax, -0xa0(%rbp)
movq -0xa0(%rbp), %rax
movq %rax, -0xb8(%rbp)
subq $0x4, %rax
ja 0x6694f
movq -0xb8(%rbp), %rax
leaq 0x278a8(%rip), %rcx     # 0x8e1bc
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
movq -0x48(%rbp), %rax
movq 0x30(%rax), %rax
movq %rax, -0x18(%rbp)
movq -0x48(%rbp), %rax
movq 0x28(%rax), %rax
movq %rax, -0x20(%rbp)
movq -0x48(%rbp), %rax
movq 0x20(%rax), %rax
movq %rax, -0x28(%rbp)
movq -0x48(%rbp), %rax
movq 0x18(%rax), %rax
movq %rax, -0x30(%rbp)
jmp 0x66954
jmp 0x66c0e
movq -0x50(%rbp), %rdi
callq 0x29650
movq %rax, -0x98(%rbp)
movq -0xa0(%rbp), %rax
movq %rax, -0xc0(%rbp)
subq $0x3, %rax
ja 0x66b11
movq -0xc0(%rbp), %rax
leaq 0x27846(%rip), %rcx     # 0x8e1d0
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
movq -0x50(%rbp), %rdi
movq 0x45d62(%rip), %rsi     # 0xac700
movq 0x45d5b(%rip), %rax     # 0xac700
movq 0x18(%rax), %rdx
callq 0x29490
movq %rax, -0x30(%rbp)
cmpq $0x0, %rax
setne %al
xorb $-0x1, %al
xorb $-0x1, %al
testb $0x1, %al
jne 0x669c3
jmp 0x669d7
movq -0x98(%rbp), %rax
addq $-0x1, %rax
movq %rax, -0x98(%rbp)
jmp 0x669dc
jmp 0x66c0e
jmp 0x669de
movq -0x50(%rbp), %rdi
movq 0x45c4f(%rip), %rsi     # 0xac638
movq 0x45c48(%rip), %rax     # 0xac638
movq 0x18(%rax), %rdx
callq 0x29490
movq %rax, -0x28(%rbp)
cmpq $0x0, %rax
setne %al
xorb $-0x1, %al
xorb $-0x1, %al
testb $0x1, %al
jne 0x66a0e
jmp 0x66a22
movq -0x98(%rbp), %rax
addq $-0x1, %rax
movq %rax, -0x98(%rbp)
jmp 0x66a61
leaq 0x298c3(%rip), %rdi     # 0x902ec
xorl %esi, %esi
movl $0x2, %edx
movl $0x4, %ecx
movl $0x1, %r8d
callq 0x2f6a0
movq 0x40a19(%rip), %rax     # 0xa7460
movq %rax, -0x80(%rbp)
movl $0x50d, -0x74(%rbp)     # imm = 0x50D
movl $0x598f, -0x84(%rbp)    # imm = 0x598F
jmp 0x66c4a
jmp 0x66a63
cmpq $0x0, -0x98(%rbp)
jle 0x66ab8
movq -0x50(%rbp), %rdi
movq 0x45c80(%rip), %rsi     # 0xac6f8
movq 0x45c79(%rip), %rax     # 0xac6f8
movq 0x18(%rax), %rdx
callq 0x29490
movq %rax, -0xa8(%rbp)
cmpq $0x0, -0xa8(%rbp)
je 0x66ab6
movq -0xa8(%rbp), %rax
movq %rax, -0x20(%rbp)
movq -0x98(%rbp), %rax
addq $-0x1, %rax
movq %rax, -0x98(%rbp)
jmp 0x66ab8
jmp 0x66aba
cmpq $0x0, -0x98(%rbp)
jle 0x66b0f
movq -0x50(%rbp), %rdi
movq 0x45c41(%rip), %rsi     # 0xac710
movq 0x45c3a(%rip), %rax     # 0xac710
movq 0x18(%rax), %rdx
callq 0x29490
movq %rax, -0xb0(%rbp)
cmpq $0x0, -0xb0(%rbp)
je 0x66b0d
movq -0xb0(%rbp), %rax
movq %rax, -0x18(%rbp)
movq -0x98(%rbp), %rax
addq $-0x1, %rax
movq %rax, -0x98(%rbp)
jmp 0x66b0f
jmp 0x66b11
cmpq $0x0, -0x98(%rbp)
setg %al
xorb $-0x1, %al
xorb $-0x1, %al
testb $0x1, %al
jne 0x66b26
jmp 0x66b7f
movq -0x50(%rbp), %rdi
leaq -0x30(%rbp), %rcx
movq -0xa0(%rbp), %r8
leaq 0x457f4(%rip), %rsi     # 0xac330
xorl %eax, %eax
movl %eax, %edx
leaq 0x297a5(%rip), %r9      # 0x902ec
callq 0x2f320
cmpl $0x0, %eax
setl %al
xorb $-0x1, %al
xorb $-0x1, %al
testb $0x1, %al
jne 0x66b5c
jmp 0x66b7d
movq 0x408fd(%rip), %rax     # 0xa7460
movq %rax, -0x80(%rbp)
movl $0x50d, -0x74(%rbp)     # imm = 0x50D
movl $0x599f, -0x84(%rbp)    # imm = 0x599F
jmp 0x66c4a
jmp 0x66b7f
jmp 0x66bec
movq -0x48(%rbp), %rax
movq 0x10(%rax), %rax
movq %rax, -0xc8(%rbp)
subq $0x2, %rax
je 0x66bce
jmp 0x66b98
movq -0xc8(%rbp), %rax
subq $0x3, %rax
je 0x66bc2
jmp 0x66ba7
movq -0xc8(%rbp), %rax
subq $0x4, %rax
jne 0x66be8
jmp 0x66bb6
movq -0x48(%rbp), %rax
movq 0x30(%rax), %rax
movq %rax, -0x18(%rbp)
movq -0x48(%rbp), %rax
movq 0x28(%rax), %rax
movq %rax, -0x20(%rbp)
movq -0x48(%rbp), %rax
movq 0x20(%rax), %rax
movq %rax, -0x28(%rbp)
movq -0x48(%rbp), %rax
movq 0x18(%rax), %rax
movq %rax, -0x30(%rbp)
jmp 0x66bea
jmp 0x66c0e
jmp 0x66bec
movq -0x30(%rbp), %rax
movq %rax, -0x58(%rbp)
movq -0x28(%rbp), %rax
movq %rax, -0x60(%rbp)
movq -0x20(%rbp), %rax
movq %rax, -0x68(%rbp)
movq -0x18(%rbp), %rax
movq %rax, -0x70(%rbp)
jmp 0x66c6d
movq -0x48(%rbp), %rax
movq 0x10(%rax), %r8
leaq 0x296cf(%rip), %rdi     # 0x902ec
xorl %esi, %esi
movl $0x2, %edx
movl $0x4, %ecx
callq 0x2f6a0
movq 0x4082b(%rip), %rax     # 0xa7460
movq %rax, -0x80(%rbp)
movl $0x50d, -0x74(%rbp)     # imm = 0x50D
movl $0x59b4, -0x84(%rbp)    # imm = 0x59B4
movl -0x84(%rbp), %esi
movl -0x74(%rbp), %edx
movq -0x80(%rbp), %rcx
leaq 0x2966a(%rip), %rdi     # 0x902c8
callq 0x2c5a0
movq $0x0, -0x38(%rbp)
jmp 0x66c98
movq -0x40(%rbp), %rdi
movq -0x58(%rbp), %rsi
movq -0x60(%rbp), %rdx
movq -0x68(%rbp), %rcx
movq -0x70(%rbp), %r8
callq 0x66cd0
movq %rax, -0x90(%rbp)
movq -0x90(%rbp), %rax
movq %rax, -0x38(%rbp)
movq -0x38(%rbp), %rax
movq %rax, -0xd0(%rbp)
movq %fs:0x28, %rax
movq -0x8(%rbp), %rcx
cmpq %rcx, %rax
jne 0x66cc5
movq -0xd0(%rbp), %rax
addq $0xd0, %rsp
popq %rbp
retq
callq 0x29420
nopw (%rax,%rax)