// File: donfreiday[P]gb/./imgui/imgui.cpp
// Function: ImGui::BeginChild(char const*, ImVec2 const&, bool, int)
bool ImGui::BeginChild(const char* str_id, const ImVec2& size_arg, bool border, ImGuiWindowFlags extra_flags)
{
    ImGuiWindow* window = GetCurrentWindow();
    ImGuiWindowFlags flags = ImGuiWindowFlags_NoTitleBar|ImGuiWindowFlags_NoResize|ImGuiWindowFlags_NoSavedSettings|ImGuiWindowFlags_ChildWindow;

    const ImVec2 content_avail = ImGui::GetContentRegionAvail();
    ImVec2 size = ImRound(size_arg);
    if (size.x <= 0.0f)
    {
        if (size.x == 0.0f)
            flags |= ImGuiWindowFlags_ChildWindowAutoFitX;
        size.x = ImMax(content_avail.x, 4.0f) - fabsf(size.x); // Arbitrary minimum zero-ish child size of 4.0f (0.0f causing too much issues)
    }
    if (size.y <= 0.0f)
    {
        if (size.y == 0.0f)
            flags |= ImGuiWindowFlags_ChildWindowAutoFitY;
        size.y = ImMax(content_avail.y, 4.0f) - fabsf(size.y);
    }
    if (border)
        flags |= ImGuiWindowFlags_ShowBorders;
    flags |= extra_flags;

    char title[256];
    ImFormatString(title, IM_ARRAYSIZE(title), "%s.%s", window->Name, str_id);

    const float alpha = 1.0f;
    bool ret = ImGui::Begin(title, NULL, size, alpha, flags);

    if (!(window->Flags & ImGuiWindowFlags_ShowBorders))
        GetCurrentWindow()->Flags &= ~ImGuiWindowFlags_ShowBorders;

    return ret;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x150, %rsp            # imm = 0x150
movb %dl, %al
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
andb $0x1, %al
movb %al, -0x11(%rbp)
movl %ecx, -0x18(%rbp)
callq 0x2e220
movq %rax, -0x20(%rbp)
movl $0x100103, -0x24(%rbp)  # imm = 0x100103
callq 0x15d60
movlpd %xmm0, -0x2c(%rbp)
movq -0x10(%rbp), %rax
movq (%rax), %rax
movq %rax, -0x40(%rbp)
movsd -0x40(%rbp), %xmm0
callq 0x15dc0
movlpd %xmm0, -0x34(%rbp)
xorps %xmm0, %xmm0
ucomiss -0x34(%rbp), %xmm0
jb 0x15c5f
movss -0x34(%rbp), %xmm0
xorps %xmm1, %xmm1
ucomiss %xmm1, %xmm0
jne 0x15c34
jp 0x15c34
movl -0x24(%rbp), %eax
orl $0x200000, %eax         # imm = 0x200000
movl %eax, -0x24(%rbp)
movss -0x2c(%rbp), %xmm0
movss 0x45417(%rip), %xmm1    # 0x5b058
callq 0xb7c0
movss -0x34(%rbp), %xmm1
movaps 0x454ee(%rip), %xmm2    # 0x5b140
pand %xmm2, %xmm1
subss %xmm1, %xmm0
movss %xmm0, -0x34(%rbp)
xorps %xmm0, %xmm0
ucomiss -0x30(%rbp), %xmm0
jb 0x15cad
movss -0x30(%rbp), %xmm0
xorps %xmm1, %xmm1
ucomiss %xmm1, %xmm0
jne 0x15c82
jp 0x15c82
movl -0x24(%rbp), %eax
orl $0x400000, %eax         # imm = 0x400000
movl %eax, -0x24(%rbp)
movss -0x28(%rbp), %xmm0
movss 0x453c9(%rip), %xmm1    # 0x5b058
callq 0xb7c0
movss -0x30(%rbp), %xmm1
movaps 0x454a0(%rip), %xmm2    # 0x5b140
pand %xmm2, %xmm1
subss %xmm1, %xmm0
movss %xmm0, -0x30(%rbp)
testb $0x1, -0x11(%rbp)
je 0x15cbe
movl -0x24(%rbp), %eax
orl $0x80, %eax
movl %eax, -0x24(%rbp)
movl -0x18(%rbp), %eax
orl -0x24(%rbp), %eax
movl %eax, -0x24(%rbp)
leaq -0x140(%rbp), %rdi
movq -0x20(%rbp), %rax
movq (%rax), %rcx
movq -0x8(%rbp), %r8
movl $0x100, %esi            # imm = 0x100
leaq 0x45c34(%rip), %rdx     # 0x5b919
movb $0x0, %al
callq 0x95a0
movss 0x45324(%rip), %xmm0    # 0x5b018
movss %xmm0, -0x144(%rbp)
leaq -0x140(%rbp), %rdi
movl -0x24(%rbp), %ecx
xorl %eax, %eax
movl %eax, %esi
leaq -0x34(%rbp), %rdx
movss 0x45302(%rip), %xmm0    # 0x5b018
callq 0x12020
andb $0x1, %al
movb %al, -0x145(%rbp)
movq -0x20(%rbp), %rax
movl 0xc(%rax), %eax
andl $0x80, %eax
cmpl $0x0, %eax
jne 0x15d45
callq 0x2e220
movl 0xc(%rax), %ecx
andl $0xffffff7f, %ecx       # imm = 0xFFFFFF7F
movl %ecx, 0xc(%rax)
movb -0x145(%rbp), %al
andb $0x1, %al
addq $0x150, %rsp            # imm = 0x150
popq %rbp
retq
nopw %cs:(%rax,%rax)