// File: donfreiday[P]gb/./imgui/imgui.cpp
// Function: ImGui::Separator()
void ImGui::Separator()
{
    ImGuiWindow* window = GetCurrentWindow();
    if (window->SkipItems)
        return;

    if (window->DC.ColumnsCount > 1)
        PopClipRect();

    float x1 = window->Pos.x;
    float x2 = window->Pos.x + window->Size.x;
    if (!window->DC.GroupStack.empty())
        x1 += window->DC.ColumnsStartX;

    const ImRect bb(ImVec2(x1, window->DC.CursorPos.y), ImVec2(x2, window->DC.CursorPos.y));
    ItemSize(ImVec2(0.0f, 0.0f)); // NB: we don't provide our width so that it doesn't get feed back into AutoFit   // FIXME: Height should be 1.0f not 0.0f ?
    if (!ItemAdd(bb, NULL))
    {
        if (window->DC.ColumnsCount > 1)
            PushColumnClipRect();
        return;
    }

    window->DrawList->AddLine(bb.Min, bb.Max, window->Color(ImGuiCol_Border));

    ImGuiState& g = *GImGui;
    if (g.LogEnabled)
        ImGui::LogText(IM_NEWLINE "--------------------------------");

    if (window->DC.ColumnsCount > 1)
    {
        PushColumnClipRect();
        window->DC.ColumnsCellMinY = window->DC.CursorPos.y;
    }
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x60, %rsp
callq 0x2e220
movq %rax, -0x8(%rbp)
movq -0x8(%rbp), %rax
testb $0x1, 0x74(%rax)
je 0x29c20
jmp 0x29dbe
movq -0x8(%rbp), %rax
cmpl $0x1, 0x1a0(%rax)
jle 0x29c32
callq 0x18470
movq -0x8(%rbp), %rax
movss 0x18(%rax), %xmm0
movss %xmm0, -0xc(%rbp)
movq -0x8(%rbp), %rax
movss 0x18(%rax), %xmm0
movq -0x8(%rbp), %rax
addss 0x20(%rax), %xmm0
movss %xmm0, -0x10(%rbp)
movq -0x8(%rbp), %rdi
addq $0xa8, %rdi
addq $0xc0, %rdi
callq 0x30220
testb $0x1, %al
jne 0x29c88
movq -0x8(%rbp), %rax
movss 0x194(%rax), %xmm0
addss -0xc(%rbp), %xmm0
movss %xmm0, -0xc(%rbp)
movss -0xc(%rbp), %xmm0
movq -0x8(%rbp), %rax
movss 0xac(%rax), %xmm1
leaq -0x28(%rbp), %rdi
callq 0x2d280
movss -0x10(%rbp), %xmm0
movq -0x8(%rbp), %rax
movss 0xac(%rax), %xmm1
leaq -0x30(%rbp), %rdi
callq 0x2d280
leaq -0x20(%rbp), %rdi
leaq -0x28(%rbp), %rsi
leaq -0x30(%rbp), %rdx
callq 0x2eb40
leaq -0x38(%rbp), %rdi
xorps %xmm1, %xmm1
movaps %xmm1, %xmm0
callq 0x2d280
leaq -0x38(%rbp), %rdi
xorps %xmm0, %xmm0
callq 0xbeb0
leaq -0x20(%rbp), %rdi
xorl %eax, %eax
movl %eax, %esi
callq 0xc0a0
testb $0x1, %al
jne 0x29d15
movq -0x8(%rbp), %rax
cmpl $0x1, 0x1a0(%rax)
jle 0x29d10
movl $0xffffffff, %edi       # imm = 0xFFFFFFFF
callq 0x27800
jmp 0x29dbe
movq -0x8(%rbp), %rax
movq 0x270(%rax), %rax
movq %rax, -0x58(%rbp)
leaq -0x20(%rbp), %rax
movq %rax, -0x50(%rbp)
leaq -0x20(%rbp), %rax
addq $0x8, %rax
movq %rax, -0x48(%rbp)
movq -0x8(%rbp), %rdi
movl $0x4, %esi
movss 0x312cf(%rip), %xmm0    # 0x5b018
callq 0x2ea40
movq -0x58(%rbp), %rdi
movq -0x50(%rbp), %rsi
movq -0x48(%rbp), %rdx
movl %eax, %ecx
movss 0x312b4(%rip), %xmm0    # 0x5b018
callq 0x404c0
movq 0x4f750(%rip), %rax     # 0x794c0
movq %rax, -0x40(%rbp)
movq -0x40(%rbp), %rax
testb $0x1, 0x2be8(%rax)
je 0x29d8f
leaq 0x32659(%rip), %rdi     # 0x5c3e1
movb $0x0, %al
callq 0x10010
movq -0x8(%rbp), %rax
cmpl $0x1, 0x1a0(%rax)
jle 0x29dbe
movl $0xffffffff, %edi       # imm = 0xFFFFFFFF
callq 0x27800
movq -0x8(%rbp), %rax
movss 0xac(%rax), %xmm0
movq -0x8(%rbp), %rax
movss %xmm0, 0x1ac(%rax)
addq $0x60, %rsp
popq %rbp
retq
nopw %cs:(%rax,%rax)