// File: donfreiday[P]gb/./imgui/imgui.cpp
// Function: ImGui::ShowMetricsWindow(bool*)::Funcs::NodeDrawList(ImDrawList*, char const*)
static void NodeDrawList(ImDrawList* draw_list, const char* label)
            {
                bool node_opened = ImGui::TreeNode(draw_list, "%s: '%s' %d vtx, %d indices, %d cmds", label, draw_list->_OwnerName ? draw_list->_OwnerName : "", draw_list->VtxBuffer.Size, draw_list->IdxBuffer.Size, draw_list->CmdBuffer.Size);
                if (draw_list == ImGui::GetWindowDrawList())
                {
                    ImGui::SameLine();
                    ImGui::TextColored(ImColor(255,100,100), "CURRENTLY APPENDING"); // Can't display stats for active draw list! (we don't have the data double-buffered)
                }
                if (!node_opened)
                    return;

                int elem_offset = 0;
                for (const ImDrawCmd* pcmd = draw_list->CmdBuffer.begin(); pcmd < draw_list->CmdBuffer.end(); elem_offset += pcmd->ElemCount, pcmd++)
                {
                    if (pcmd->UserCallback)
                        ImGui::BulletText("Callback %p, user_data %p", pcmd->UserCallback, pcmd->UserCallbackData);
                    else
                    {
                        ImGui::BulletText("Draw %d indexed vtx, tex = %p, clip_rect = (%.0f,%.0f)..(%.0f,%.0f)", pcmd->ElemCount, pcmd->TextureId, pcmd->ClipRect.x, pcmd->ClipRect.y, pcmd->ClipRect.z, pcmd->ClipRect.w);
                        if (show_clip_rects && ImGui::IsItemHovered())
                        {
                            ImRect clip_rect = pcmd->ClipRect;
                            ImRect vtxs_rect;
                            for (int i = elem_offset; i < elem_offset + (int)pcmd->ElemCount; i++)
                                vtxs_rect.Add(draw_list->VtxBuffer[draw_list->IdxBuffer[i]].pos);
                            GImGui->OverlayDrawList.PushClipRectFullScreen();
                            clip_rect.Round(); GImGui->OverlayDrawList.AddRect(clip_rect.Min, clip_rect.Max, ImColor(255,255,0));
                            vtxs_rect.Round(); GImGui->OverlayDrawList.AddRect(vtxs_rect.Min, vtxs_rect.Max, ImColor(255,0,255));
                            GImGui->OverlayDrawList.PopClipRect();
                        }
                    }
                }
                ImGui::TreePop();
            }

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x100, %rsp            # imm = 0x100
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq -0x8(%rbp), %rax
movq %rax, -0x98(%rbp)
movq -0x10(%rbp), %rax
movq %rax, -0x90(%rbp)
movq -0x8(%rbp), %rax
cmpq $0x0, 0x30(%rax)
je 0x2abc5
movq -0x8(%rbp), %rax
movq 0x30(%rax), %rax
movq %rax, -0xa0(%rbp)
jmp 0x2abd5
leaq 0x34682(%rip), %rax     # 0x5f24e
movq %rax, -0xa0(%rbp)
jmp 0x2abd5
movq -0x90(%rbp), %rdx
movq -0x98(%rbp), %rdi
movq -0xa0(%rbp), %rcx
movq -0x8(%rbp), %rax
movl 0x20(%rax), %r8d
movq -0x8(%rbp), %rax
movl 0x10(%rax), %r9d
movq -0x8(%rbp), %rax
movl (%rax), %eax
leaq 0x3210c(%rip), %rsi     # 0x5cd13
movl %eax, (%rsp)
movb $0x0, %al
callq 0x1caf0
andb $0x1, %al
movb %al, -0x11(%rbp)
movq -0x8(%rbp), %rax
movq %rax, -0xa8(%rbp)
callq 0x19a70
movq %rax, %rcx
movq -0xa8(%rbp), %rax
cmpq %rcx, %rax
jne 0x2ac8d
xorps %xmm0, %xmm0
movss 0x3043c(%rip), %xmm1    # 0x5b07c
callq 0x1a5e0
leaq -0x34(%rbp), %rdi
movq %rdi, -0xb0(%rbp)
movl $0x64, %ecx
movl $0xff, %r8d
movl %r8d, %esi
movl %ecx, %edx
callq 0x31710
movq -0xb0(%rbp), %rdi
callq 0x31790
movlpd %xmm0, -0x24(%rbp)
movlpd %xmm1, -0x1c(%rbp)
leaq -0x24(%rbp), %rdi
leaq 0x320b2(%rip), %rsi     # 0x5cd38
movb $0x0, %al
callq 0x1a300
testb $0x1, -0x11(%rbp)
jne 0x2ac98
jmp 0x2af2b
movl $0x0, -0x38(%rbp)
movq -0x8(%rbp), %rdi
callq 0x317b0
movq %rax, -0x40(%rbp)
movq -0x40(%rbp), %rax
movq %rax, -0xb8(%rbp)
movq -0x8(%rbp), %rdi
callq 0x317d0
movq %rax, %rcx
movq -0xb8(%rbp), %rax
cmpq %rcx, %rax
jae 0x2af26
movq -0x40(%rbp), %rax
cmpq $0x0, 0x20(%rax)
je 0x2ad01
movq -0x40(%rbp), %rax
movq 0x20(%rax), %rsi
movq -0x40(%rbp), %rax
movq 0x28(%rax), %rdx
leaq 0x32057(%rip), %rdi     # 0x5cd4c
movb $0x0, %al
callq 0x1c760
jmp 0x2af07
movq -0x40(%rbp), %rax
movl (%rax), %esi
movq -0x40(%rbp), %rax
movq 0x18(%rax), %rdx
movq -0x40(%rbp), %rax
movss 0x4(%rax), %xmm0
cvtss2sd %xmm0, %xmm0
movq -0x40(%rbp), %rax
movss 0x8(%rax), %xmm1
cvtss2sd %xmm1, %xmm1
movq -0x40(%rbp), %rax
movss 0xc(%rax), %xmm2
cvtss2sd %xmm2, %xmm2
movq -0x40(%rbp), %rax
movss 0x10(%rax), %xmm3
cvtss2sd %xmm3, %xmm3
leaq 0x3201c(%rip), %rdi     # 0x5cd66
movb $0x4, %al
callq 0x1c760
testb $0x1, 0x4e770(%rip)     # 0x794c8
je 0x2af05
callq 0x11cb0
testb $0x1, %al
jne 0x2ad6c
jmp 0x2af05
movq -0x40(%rbp), %rsi
addq $0x4, %rsi
leaq -0x50(%rbp), %rdi
callq 0x2eff0
leaq -0x60(%rbp), %rdi
callq 0x2dda0
movl -0x38(%rbp), %eax
movl %eax, -0x64(%rbp)
movl -0x64(%rbp), %eax
movl -0x38(%rbp), %ecx
movq -0x40(%rbp), %rdx
addl (%rdx), %ecx
cmpl %ecx, %eax
jge 0x2ade1
movq -0x8(%rbp), %rax
addq $0x20, %rax
movq %rax, -0xc0(%rbp)
movq -0x8(%rbp), %rdi
addq $0x10, %rdi
movl -0x64(%rbp), %esi
callq 0x31550
movq -0xc0(%rbp), %rdi
movzwl (%rax), %esi
callq 0x318a0
movq %rax, %rsi
leaq -0x60(%rbp), %rdi
callq 0x317f0
movl -0x64(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x64(%rbp)
jmp 0x2ad8c
movq 0x4e6d8(%rip), %rdi     # 0x794c0
addq $0x18a8, %rdi           # imm = 0x18A8
callq 0x3d180
leaq -0x50(%rbp), %rdi
callq 0x31900
movq 0x4e6bc(%rip), %rax     # 0x794c0
addq $0x18a8, %rax           # imm = 0x18A8
movq %rax, -0xf0(%rbp)
leaq -0x50(%rbp), %rax
movq %rax, -0xe8(%rbp)
leaq -0x50(%rbp), %rax
addq $0x8, %rax
movq %rax, -0xe0(%rbp)
leaq -0x74(%rbp), %rdi
movl $0xff, %r8d
xorl %ecx, %ecx
movl %r8d, %esi
movl %r8d, %edx
callq 0x31710
leaq -0x74(%rbp), %rdi
callq 0x31950
movq -0xf0(%rbp), %rdi
movq -0xe8(%rbp), %rsi
movq -0xe0(%rbp), %rdx
movl %eax, %ecx
xorps %xmm0, %xmm0
movl $0xf, %r8d
callq 0x40590
leaq -0x60(%rbp), %rdi
callq 0x31900
movq 0x4e640(%rip), %rax     # 0x794c0
addq $0x18a8, %rax           # imm = 0x18A8
movq %rax, -0xd8(%rbp)
leaq -0x60(%rbp), %rax
movq %rax, -0xd0(%rbp)
leaq -0x60(%rbp), %rax
addq $0x8, %rax
movq %rax, -0xc8(%rbp)
leaq -0x84(%rbp), %rdi
movl $0xff, %r8d
xorl %edx, %edx
movl %r8d, %esi
movl %r8d, %ecx
callq 0x31710
leaq -0x84(%rbp), %rdi
callq 0x31950
movq -0xd8(%rbp), %rdi
movq -0xd0(%rbp), %rsi
movq -0xc8(%rbp), %rdx
movl %eax, %ecx
xorps %xmm0, %xmm0
movl $0xf, %r8d
callq 0x40590
movq 0x4e5c7(%rip), %rdi     # 0x794c0
addq $0x18a8, %rdi           # imm = 0x18A8
callq 0x3d1b0
jmp 0x2af07
jmp 0x2af09
movq -0x40(%rbp), %rax
movl (%rax), %eax
addl -0x38(%rbp), %eax
movl %eax, -0x38(%rbp)
movq -0x40(%rbp), %rax
addq $0x30, %rax
movq %rax, -0x40(%rbp)
jmp 0x2acac
callq 0x2a440
addq $0x100, %rsp            # imm = 0x100
popq %rbp
retq
nopw %cs:(%rax,%rax)