// File: ehw-fit[P]py-paretoarchive/src/paretoarchive/core.cpp
// Function: _Pyx_PyUnicode_Join(_object*, long, long, unsigned int)
static PyObject* __Pyx_PyUnicode_Join(PyObject* value_tuple, Py_ssize_t value_count, Py_ssize_t result_ulength,
                                      CYTHON_UNUSED Py_UCS4 max_char) {
#if CYTHON_USE_UNICODE_INTERNALS && CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
    PyObject *result_uval;
    int result_ukind;
    Py_ssize_t i, char_pos;
    void *result_udata;
#if CYTHON_PEP393_ENABLED
    result_uval = PyUnicode_New(result_ulength, max_char);
    if (unlikely(!result_uval)) return NULL;
    result_ukind = (max_char <= 255) ? PyUnicode_1BYTE_KIND : (max_char <= 65535) ? PyUnicode_2BYTE_KIND : PyUnicode_4BYTE_KIND;
    result_udata = PyUnicode_DATA(result_uval);
#else
    result_uval = PyUnicode_FromUnicode(NULL, result_ulength);
    if (unlikely(!result_uval)) return NULL;
    result_ukind = sizeof(Py_UNICODE);
    result_udata = PyUnicode_AS_UNICODE(result_uval);
#endif
    char_pos = 0;
    for (i=0; i < value_count; i++) {
        int ukind;
        Py_ssize_t ulength;
        void *udata;
        PyObject *uval = PyTuple_GET_ITEM(value_tuple, i);
        if (unlikely(__Pyx_PyUnicode_READY(uval)))
            goto bad;
        ulength = __Pyx_PyUnicode_GET_LENGTH(uval);
        if (unlikely(!ulength))
            continue;
        if (unlikely(char_pos + ulength < 0))
            goto overflow;
        ukind = __Pyx_PyUnicode_KIND(uval);
        udata = __Pyx_PyUnicode_DATA(uval);
        if (!CYTHON_PEP393_ENABLED || ukind == result_ukind) {
            memcpy((char *)result_udata + char_pos * result_ukind, udata, (size_t) (ulength * result_ukind));
        } else {
            #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030300F0 || defined(_PyUnicode_FastCopyCharacters)
            _PyUnicode_FastCopyCharacters(result_uval, char_pos, uval, 0, ulength);
            #else
            Py_ssize_t j;
            for (j=0; j < ulength; j++) {
                Py_UCS4 uchar = __Pyx_PyUnicode_READ(ukind, udata, j);
                __Pyx_PyUnicode_WRITE(result_ukind, result_udata, char_pos+j, uchar);
            }
            #endif
        }
        char_pos += ulength;
    }
    return result_uval;
overflow:
    PyErr_SetString(PyExc_OverflowError, "join() result is too long for a Python string");
bad:
    Py_DECREF(result_uval);
    return NULL;
#else
    result_ulength++;
    value_count++;
    return PyUnicode_Join(__pyx_empty_unicode, value_tuple);
#endif
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0xa0, %rsp
movq %rdi, -0x10(%rbp)
movq %rsi, -0x18(%rbp)
movq %rdx, -0x20(%rbp)
movl %ecx, -0x24(%rbp)
movq -0x20(%rbp), %rdi
movl -0x24(%rbp), %esi
callq 0x29140
movq %rax, -0x30(%rbp)
cmpq $0x0, -0x30(%rbp)
setne %al
xorb $-0x1, %al
xorb $-0x1, %al
xorb $-0x1, %al
testb $0x1, %al
jne 0x6586e
jmp 0x6587b
movq $0x0, -0x8(%rbp)
jmp 0x65aec
cmpl $0xff, -0x24(%rbp)
ja 0x6588e
movl $0x1, %eax
movl %eax, -0x74(%rbp)
jmp 0x658a7
movl -0x24(%rbp), %edx
movl $0x4, %eax
movl $0x2, %ecx
cmpl $0xffff, %edx           # imm = 0xFFFF
cmovbel %ecx, %eax
movl %eax, -0x74(%rbp)
movl -0x74(%rbp), %eax
movl %eax, -0x34(%rbp)
movq -0x30(%rbp), %rax
movl 0x20(%rax), %eax
shrl $0x5, %eax
andl $0x1, %eax
cmpl $0x0, %eax
je 0x658f8
movq -0x30(%rbp), %rax
movl 0x20(%rax), %eax
shrl $0x6, %eax
andl $0x1, %eax
cmpl $0x0, %eax
je 0x658df
movq -0x30(%rbp), %rax
addq $0x30, %rax
movq %rax, -0x80(%rbp)
jmp 0x658eb
movq -0x30(%rbp), %rax
addq $0x48, %rax
movq %rax, -0x80(%rbp)
movq -0x80(%rbp), %rax
movq %rax, -0x88(%rbp)
jmp 0x65907
movq -0x30(%rbp), %rax
movq 0x48(%rax), %rax
movq %rax, -0x88(%rbp)
movq -0x88(%rbp), %rax
movq %rax, -0x50(%rbp)
movq $0x0, -0x48(%rbp)
movq $0x0, -0x40(%rbp)
movq -0x40(%rbp), %rax
cmpq -0x18(%rbp), %rax
jge 0x65abb
movq -0x10(%rbp), %rax
movq -0x40(%rbp), %rcx
movq 0x18(%rax,%rcx,8), %rax
movq %rax, -0x70(%rbp)
movq -0x70(%rbp), %rax
movl 0x20(%rax), %eax
shrl $0x7, %eax
andl $0x1, %eax
cmpl $0x0, %eax
setne %al
xorb $-0x1, %al
xorb $-0x1, %al
testb $0x1, %al
jne 0x6595e
jmp 0x65968
xorl %eax, %eax
movl %eax, -0x8c(%rbp)
jmp 0x65977
movq -0x70(%rbp), %rdi
callq 0x29560
movl %eax, -0x8c(%rbp)
movl -0x8c(%rbp), %eax
cmpl $0x0, %eax
setne %al
xorb $-0x1, %al
xorb $-0x1, %al
testb $0x1, %al
jne 0x6598d
jmp 0x65992
jmp 0x65adb
movq -0x70(%rbp), %rax
movq 0x10(%rax), %rax
movq %rax, -0x60(%rbp)
cmpq $0x0, -0x60(%rbp)
setne %al
xorb $-0x1, %al
xorb $-0x1, %al
xorb $-0x1, %al
testb $0x1, %al
jne 0x659b2
jmp 0x659b7
jmp 0x65aaa
movq -0x48(%rbp), %rax
addq -0x60(%rbp), %rax
cmpq $0x0, %rax
setl %al
xorb $-0x1, %al
xorb $-0x1, %al
testb $0x1, %al
jne 0x659d0
jmp 0x659d5
jmp 0x65ac5
movq -0x70(%rbp), %rax
movl 0x20(%rax), %eax
shrl $0x2, %eax
andl $0x7, %eax
movl %eax, -0x54(%rbp)
movq -0x70(%rbp), %rax
movl 0x20(%rax), %eax
shrl $0x5, %eax
andl $0x1, %eax
cmpl $0x0, %eax
je 0x65a39
movq -0x70(%rbp), %rax
movl 0x20(%rax), %eax
shrl $0x6, %eax
andl $0x1, %eax
cmpl $0x0, %eax
je 0x65a1a
movq -0x70(%rbp), %rax
addq $0x30, %rax
movq %rax, -0x98(%rbp)
jmp 0x65a29
movq -0x70(%rbp), %rax
addq $0x48, %rax
movq %rax, -0x98(%rbp)
movq -0x98(%rbp), %rax
movq %rax, -0xa0(%rbp)
jmp 0x65a48
movq -0x70(%rbp), %rax
movq 0x48(%rax), %rax
movq %rax, -0xa0(%rbp)
movq -0xa0(%rbp), %rax
movq %rax, -0x68(%rbp)
movl -0x54(%rbp), %eax
cmpl -0x34(%rbp), %eax
jne 0x65a85
movq -0x50(%rbp), %rdi
movq -0x48(%rbp), %rax
movslq -0x34(%rbp), %rcx
imulq %rcx, %rax
addq %rax, %rdi
movq -0x68(%rbp), %rsi
movq -0x60(%rbp), %rdx
movslq -0x34(%rbp), %rax
imulq %rax, %rdx
callq 0x29380
jmp 0x65a9e
movq -0x30(%rbp), %rdi
movq -0x48(%rbp), %rsi
movq -0x70(%rbp), %rdx
movq -0x60(%rbp), %r8
xorl %eax, %eax
movl %eax, %ecx
callq 0x29100
movq -0x60(%rbp), %rax
addq -0x48(%rbp), %rax
movq %rax, -0x48(%rbp)
movq -0x40(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x40(%rbp)
jmp 0x65922
movq -0x30(%rbp), %rax
movq %rax, -0x8(%rbp)
jmp 0x65aec
movq 0x41394(%rip), %rax     # 0xa6e60
movq (%rax), %rdi
leaq 0x2a665(%rip), %rsi     # 0x9013b
callq 0x29450
movq -0x30(%rbp), %rdi
callq 0x2a7e0
movq $0x0, -0x8(%rbp)
movq -0x8(%rbp), %rax
addq $0xa0, %rsp
popq %rbp
retq
nopl (%rax)