// File: /workspace/github_cpp_makefile_star2_O2/Ciaxur[P]yagb-emu/include/imgui/imgui.cpp
// Function: AddDrawListToDrawData(ImVector<ImDrawList*>*, ImDrawList*)
static void AddDrawListToDrawData(ImVector<ImDrawList*>* out_list, ImDrawList* draw_list)
{
    // Remove trailing command if unused.
    // Technically we could return directly instead of popping, but this make things looks neat in Metrics/Debugger window as well.
    draw_list->_PopUnusedDrawCmd();
    if (draw_list->CmdBuffer.Size == 0)
        return;

    // Draw list sanity check. Detect mismatch between PrimReserve() calls and incrementing _VtxCurrentIdx, _VtxWritePtr etc.
    // May trigger for you if you are using PrimXXX functions incorrectly.
    IM_ASSERT(draw_list->VtxBuffer.Size == 0 || draw_list->_VtxWritePtr == draw_list->VtxBuffer.Data + draw_list->VtxBuffer.Size);
    IM_ASSERT(draw_list->IdxBuffer.Size == 0 || draw_list->_IdxWritePtr == draw_list->IdxBuffer.Data + draw_list->IdxBuffer.Size);
    if (!(draw_list->Flags & ImDrawListFlags_AllowVtxOffset))
        IM_ASSERT((int)draw_list->_VtxCurrentIdx == draw_list->VtxBuffer.Size);

    // Check that draw_list doesn't use more vertices than indexable (default ImDrawIdx = unsigned short = 2 bytes = 64K vertices per ImDrawList = per window)
    // If this assert triggers because you are drawing lots of stuff manually:
    // - First, make sure you are coarse clipping yourself and not trying to draw many things outside visible bounds.
    //   Be mindful that the ImDrawList API doesn't filter vertices. Use the Metrics/Debugger window to inspect draw list contents.
    // - If you want large meshes with more than 64K vertices, you can either:
    //   (A) Handle the ImDrawCmd::VtxOffset value in your renderer backend, and set 'io.BackendFlags |= ImGuiBackendFlags_RendererHasVtxOffset'.
    //       Most example backends already support this from 1.71. Pre-1.71 backends won't.
    //       Some graphics API such as GL ES 1/2 don't have a way to offset the starting vertex so it is not supported for them.
    //   (B) Or handle 32-bit indices in your renderer backend, and uncomment '#define ImDrawIdx unsigned int' line in imconfig.h.
    //       Most example backends already support this. For example, the OpenGL example code detect index size at compile-time:
    //         glDrawElements(GL_TRIANGLES, (GLsizei)pcmd->ElemCount, sizeof(ImDrawIdx) == 2 ? GL_UNSIGNED_SHORT : GL_UNSIGNED_INT, idx_buffer_offset);
    //       Your own engine or render API may use different parameters or function calls to specify index sizes.
    //       2 and 4 bytes indices are generally supported by most graphics API.
    // - If for some reason neither of those solutions works for you, a workaround is to call BeginChild()/EndChild() before reaching
    //   the 64K limit to split your draw commands in multiple draw lists.
    if (sizeof(ImDrawIdx) == 2)
        IM_ASSERT(draw_list->_VtxCurrentIdx < (1 << 16) && "Too many vertices in ImDrawList using 16-bit indices. Read comment above");

    out_list->push_back(draw_list);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r14
pushq %rbx
subq $0x10, %rsp
movq %rsi, %r14
movq %rdi, %rbx
movq %rsi, -0x18(%rbp)
movq %rsi, %rdi
callq 0x61f94
cmpl $0x0, (%r14)
je 0x3ff1b
movslq 0x20(%r14), %rax
testq %rax, %rax
je 0x3fee0
imulq $0x14, %rax, %rcx
addq 0x28(%r14), %rcx
cmpq %rcx, 0x48(%r14)
jne 0x3ff43
movslq 0x10(%r14), %rcx
testq %rcx, %rcx
je 0x3fef6
addq %rcx, %rcx
addq 0x18(%r14), %rcx
cmpq %rcx, 0x50(%r14)
jne 0x3ff62
testb $0x8, 0x30(%r14)
movl 0x34(%r14), %ecx
jne 0x3ff07
cmpl %eax, %ecx
movl %eax, %ecx
jne 0x3ff81
cmpl $0x10000, %ecx          # imm = 0x10000
jae 0x3ff24
leaq -0x18(%rbp), %rsi
movq %rbx, %rdi
callq 0x4c128
addq $0x10, %rsp
popq %rbx
popq %r14
popq %rbp
retq
leaq 0x60975(%rip), %rdi     # 0xa08a0
leaq 0x5d263(%rip), %rsi     # 0x9d195
leaq 0x60875(%rip), %rcx     # 0xa07ae
movl $0x1041, %edx           # imm = 0x1041
callq 0xc140
leaq 0x607f1(%rip), %rdi     # 0xa073b
leaq 0x5d244(%rip), %rsi     # 0x9d195
leaq 0x60856(%rip), %rcx     # 0xa07ae
movl $0x102c, %edx           # imm = 0x102C
callq 0xc140
leaq 0x60888(%rip), %rdi     # 0xa07f1
leaq 0x5d225(%rip), %rsi     # 0x9d195
leaq 0x60837(%rip), %rcx     # 0xa07ae
movl $0x102d, %edx           # imm = 0x102D
callq 0xc140
leaq 0x608dc(%rip), %rdi     # 0xa0864
leaq 0x5d206(%rip), %rsi     # 0x9d195
leaq 0x60818(%rip), %rcx     # 0xa07ae
movl $0x102f, %edx           # imm = 0x102F
callq 0xc140