// File: Ciaxur[P]yagb-emu/include/imgui/imgui_widgets.cpp
// Function: ImGui::BeginCombo(char const*, char const*, int)
bool ImGui::BeginCombo(const char* label, const char* preview_value, ImGuiComboFlags flags)
{
    // Always consume the SetNextWindowSizeConstraint() call in our early return paths
    ImGuiContext& g = *GImGui;
    bool has_window_size_constraint = (g.NextWindowData.Flags & ImGuiNextWindowDataFlags_HasSizeConstraint) != 0;
    g.NextWindowData.Flags &= ~ImGuiNextWindowDataFlags_HasSizeConstraint;

    ImGuiWindow* window = GetCurrentWindow();
    if (window->SkipItems)
        return false;

    IM_ASSERT((flags & (ImGuiComboFlags_NoArrowButton | ImGuiComboFlags_NoPreview)) != (ImGuiComboFlags_NoArrowButton | ImGuiComboFlags_NoPreview)); // Can't use both flags together

    const ImGuiStyle& style = g.Style;
    const ImGuiID id = window->GetID(label);

    const float arrow_size = (flags & ImGuiComboFlags_NoArrowButton) ? 0.0f : GetFrameHeight();
    const ImVec2 label_size = CalcTextSize(label, NULL, true);
    const float expected_w = CalcItemWidth();
    const float w = (flags & ImGuiComboFlags_NoPreview) ? arrow_size : expected_w;
    const ImRect frame_bb(window->DC.CursorPos, window->DC.CursorPos + ImVec2(w, label_size.y + style.FramePadding.y * 2.0f));
    const ImRect total_bb(frame_bb.Min, frame_bb.Max + ImVec2(label_size.x > 0.0f ? style.ItemInnerSpacing.x + label_size.x : 0.0f, 0.0f));
    ItemSize(total_bb, style.FramePadding.y);
    if (!ItemAdd(total_bb, id, &frame_bb))
        return false;

    bool hovered, held;
    bool pressed = ButtonBehavior(frame_bb, id, &hovered, &held);
    bool popup_open = IsPopupOpen(id, ImGuiPopupFlags_None);

    const ImU32 frame_col = GetColorU32(hovered ? ImGuiCol_FrameBgHovered : ImGuiCol_FrameBg);
    const float value_x2 = ImMax(frame_bb.Min.x, frame_bb.Max.x - arrow_size);
    RenderNavHighlight(frame_bb, id);
    if (!(flags & ImGuiComboFlags_NoPreview))
        window->DrawList->AddRectFilled(frame_bb.Min, ImVec2(value_x2, frame_bb.Max.y), frame_col, style.FrameRounding, (flags & ImGuiComboFlags_NoArrowButton) ? ImDrawCornerFlags_All : ImDrawCornerFlags_Left);
    if (!(flags & ImGuiComboFlags_NoArrowButton))
    {
        ImU32 bg_col = GetColorU32((popup_open || hovered) ? ImGuiCol_ButtonHovered : ImGuiCol_Button);
        ImU32 text_col = GetColorU32(ImGuiCol_Text);
        window->DrawList->AddRectFilled(ImVec2(value_x2, frame_bb.Min.y), frame_bb.Max, bg_col, style.FrameRounding, (w <= arrow_size) ? ImDrawCornerFlags_All : ImDrawCornerFlags_Right);
        if (value_x2 + arrow_size - style.FramePadding.x <= frame_bb.Max.x)
            RenderArrow(window->DrawList, ImVec2(value_x2 + style.FramePadding.y, frame_bb.Min.y + style.FramePadding.y), text_col, ImGuiDir_Down, 1.0f);
    }
    RenderFrameBorder(frame_bb.Min, frame_bb.Max, style.FrameRounding);
    if (preview_value != NULL && !(flags & ImGuiComboFlags_NoPreview))
        RenderTextClipped(frame_bb.Min + style.FramePadding, ImVec2(value_x2, frame_bb.Max.y), preview_value, NULL, NULL, ImVec2(0.0f, 0.0f));
    if (label_size.x > 0)
        RenderText(ImVec2(frame_bb.Max.x + style.ItemInnerSpacing.x, frame_bb.Min.y + style.FramePadding.y), label);

    if ((pressed || g.NavActivateId == id) && !popup_open)
    {
        if (window->DC.NavLayerCurrent == 0)
            window->NavLastIds[0] = id;
        OpenPopupEx(id, ImGuiPopupFlags_None);
        popup_open = true;
    }

    if (!popup_open)
        return false;

    if (has_window_size_constraint)
    {
        g.NextWindowData.Flags |= ImGuiNextWindowDataFlags_HasSizeConstraint;
        g.NextWindowData.SizeConstraintRect.Min.x = ImMax(g.NextWindowData.SizeConstraintRect.Min.x, w);
    }
    else
    {
        if ((flags & ImGuiComboFlags_HeightMask_) == 0)
            flags |= ImGuiComboFlags_HeightRegular;
        IM_ASSERT(ImIsPowerOfTwo(flags & ImGuiComboFlags_HeightMask_));    // Only one
        int popup_max_height_in_items = -1;
        if (flags & ImGuiComboFlags_HeightRegular)     popup_max_height_in_items = 8;
        else if (flags & ImGuiComboFlags_HeightSmall)  popup_max_height_in_items = 4;
        else if (flags & ImGuiComboFlags_HeightLarge)  popup_max_height_in_items = 20;
        SetNextWindowSizeConstraints(ImVec2(w, 0.0f), ImVec2(FLT_MAX, CalcMaxPopupHeightFromItemCount(popup_max_height_in_items)));
    }

    char name[16];
    ImFormatString(name, IM_ARRAYSIZE(name), "##Combo_%02d", g.BeginPopupStack.Size); // Recycle windows based on depth

    // Position the window given a custom constraint (peak into expected window size so we can position it)
    // This might be easier to express with an hypothetical SetNextWindowPosConstraints() function.
    if (ImGuiWindow* popup_window = FindWindowByName(name))
        if (popup_window->WasActive)
        {
            // Always override 'AutoPosLastDirection' to not leave a chance for a past value to affect us.
            ImVec2 size_expected = CalcWindowNextAutoFitSize(popup_window);
            if (flags & ImGuiComboFlags_PopupAlignLeft)
                popup_window->AutoPosLastDirection = ImGuiDir_Left; // "Below, Toward Left"
            else
                popup_window->AutoPosLastDirection = ImGuiDir_Down; // "Below, Toward Right (default)"
            ImRect r_outer = GetWindowAllowedExtentRect(popup_window);
            ImVec2 pos = FindBestWindowPosForPopupEx(frame_bb.GetBL(), size_expected, &popup_window->AutoPosLastDirection, r_outer, frame_bb, ImGuiPopupPositionPolicy_ComboBox);
            SetNextWindowPos(pos);
        }

    // We don't use BeginPopupEx() solely because we have a custom name string, which we could make an argument to BeginPopupEx()
    ImGuiWindowFlags window_flags = ImGuiWindowFlags_AlwaysAutoResize | ImGuiWindowFlags_Popup | ImGuiWindowFlags_NoTitleBar | ImGuiWindowFlags_NoResize | ImGuiWindowFlags_NoSavedSettings | ImGuiWindowFlags_NoMove;

    // Horizontally align ourselves with the framed text
    PushStyleVar(ImGuiStyleVar_WindowPadding, ImVec2(style.FramePadding.x, style.WindowPadding.y));
    bool ret = Begin(name, NULL, window_flags);
    PopStyleVar();
    if (!ret)
    {
        EndPopup();
        IM_ASSERT(0);   // This should never happen as we tested for IsPopupOpen() above
        return false;
    }
    return true;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x1e0, %rsp            # imm = 0x1E0
movq %rdi, -0x10(%rbp)
movq %rsi, -0x18(%rbp)
movl %edx, -0x1c(%rbp)
leaq 0xd4863(%rip), %rax     # 0x212f40
movq (%rax), %rax
movq %rax, -0x28(%rbp)
movq -0x28(%rbp), %rax
movl 0x1b88(%rax), %eax
andl $0x10, %eax
cmpl $0x0, %eax
setne %al
andb $0x1, %al
movb %al, -0x29(%rbp)
movq -0x28(%rbp), %rax
movl 0x1b88(%rax), %ecx
andl $-0x11, %ecx
movl %ecx, 0x1b88(%rax)
callq 0xeb270
movq %rax, -0x38(%rbp)
movq -0x38(%rbp), %rax
testb $0x1, 0x93(%rax)
je 0x13e72e
movb $0x0, -0x1(%rbp)
jmp 0x13f024
movl -0x1c(%rbp), %eax
andl $0x60, %eax
cmpl $0x60, %eax
je 0x13e73b
jmp 0x13e75a
leaq 0x5007a(%rip), %rdi     # 0x18e7bc
leaq 0x4fc97(%rip), %rsi     # 0x18e3e0
movl $0x609, %edx            # imm = 0x609
leaq 0x500ec(%rip), %rcx     # 0x18e841
callq 0xd180
movq -0x28(%rbp), %rax
addq $0x1560, %rax           # imm = 0x1560
movq %rax, -0x40(%rbp)
movq -0x38(%rbp), %rdi
movq -0x10(%rbp), %rsi
xorl %eax, %eax
movl %eax, %edx
callq 0xc9910
movl %eax, -0x44(%rbp)
movl -0x1c(%rbp), %eax
andl $0x20, %eax
cmpl $0x0, %eax
je 0x13e794
xorps %xmm0, %xmm0
movss %xmm0, -0x16c(%rbp)
jmp 0x13e7a1
callq 0xdd050
movss %xmm0, -0x16c(%rbp)
movss -0x16c(%rbp), %xmm0
movss %xmm0, -0x48(%rbp)
movq -0x10(%rbp), %rdi
xorl %eax, %eax
movl %eax, %esi
movl $0x1, %edx
movss 0x337bd(%rip), %xmm0    # 0x171f80
callq 0xc87e0
movlpd %xmm0, -0x50(%rbp)
callq 0xdcdc0
movss %xmm0, -0x54(%rbp)
movl -0x1c(%rbp), %eax
andl $0x40, %eax
cmpl $0x0, %eax
je 0x13e7f1
movss -0x48(%rbp), %xmm0
movss %xmm0, -0x170(%rbp)
jmp 0x13e7fe
movss -0x54(%rbp), %xmm0
movss %xmm0, -0x170(%rbp)
movss -0x170(%rbp), %xmm0
movss %xmm0, -0x58(%rbp)
movq -0x38(%rbp), %rax
addq $0xd8, %rax
movq %rax, -0x188(%rbp)
movss -0x58(%rbp), %xmm0
movss -0x4c(%rbp), %xmm2
movq -0x40(%rbp), %rax
movss 0x3c(%rax), %xmm1
addss %xmm1, %xmm1
addss %xmm2, %xmm1
leaq -0x78(%rbp), %rdi
movq %rdi, -0x190(%rbp)
callq 0xbf4c0
movq -0x190(%rbp), %rsi
movq -0x188(%rbp), %rdi
callq 0x139090
movq -0x188(%rbp), %rsi
movlpd %xmm0, -0x70(%rbp)
leaq -0x68(%rbp), %rdi
leaq -0x70(%rbp), %rdx
callq 0xe8660
leaq -0x68(%rbp), %rax
movq %rax, -0x180(%rbp)
leaq -0x68(%rbp), %rax
addq $0x8, %rax
movq %rax, -0x178(%rbp)
movss -0x50(%rbp), %xmm0
xorps %xmm1, %xmm1
ucomiss %xmm1, %xmm0
jbe 0x13e8b2
movq -0x40(%rbp), %rax
movss 0x50(%rax), %xmm0
addss -0x50(%rbp), %xmm0
movss %xmm0, -0x194(%rbp)
jmp 0x13e8bf
xorps %xmm0, %xmm0
movss %xmm0, -0x194(%rbp)
jmp 0x13e8bf
movss -0x194(%rbp), %xmm0
leaq -0x98(%rbp), %rdi
movq %rdi, -0x1a0(%rbp)
xorps %xmm1, %xmm1
callq 0xbf4c0
movq -0x178(%rbp), %rdi
movq -0x1a0(%rbp), %rsi
callq 0x139090
movq -0x180(%rbp), %rsi
movlpd %xmm0, -0x90(%rbp)
leaq -0x88(%rbp), %rdi
leaq -0x90(%rbp), %rdx
callq 0xe8660
movq -0x40(%rbp), %rax
movss 0x3c(%rax), %xmm0
leaq -0x88(%rbp), %rdi
callq 0xdc300
movl -0x44(%rbp), %esi
leaq -0x88(%rbp), %rdi
leaq -0x68(%rbp), %rdx
callq 0xd6250
testb $0x1, %al
jne 0x13e947
movb $0x0, -0x1(%rbp)
jmp 0x13f024
movl -0x44(%rbp), %esi
leaq -0x68(%rbp), %rdi
leaq -0x99(%rbp), %rdx
leaq -0x9a(%rbp), %rcx
xorl %r8d, %r8d
callq 0x139df0
andb $0x1, %al
movb %al, -0x9b(%rbp)
movl -0x44(%rbp), %edi
xorl %esi, %esi
callq 0xcbb60
andb $0x1, %al
movb %al, -0x9c(%rbp)
movb -0x99(%rbp), %cl
movl $0x7, %edi
movl $0x8, %eax
testb $0x1, %cl
cmovnel %eax, %edi
movss 0x322a0(%rip), %xmm0    # 0x170c3c
callq 0xc76e0
movl %eax, -0xa0(%rbp)
movss -0x68(%rbp), %xmm0
movss -0x60(%rbp), %xmm1
subss -0x48(%rbp), %xmm1
callq 0x139050
movss %xmm0, -0xa4(%rbp)
movl -0x44(%rbp), %esi
leaq -0x68(%rbp), %rdi
movl $0x1, %edx
callq 0xc91e0
movl -0x1c(%rbp), %eax
andl $0x40, %eax
cmpl $0x0, %eax
jne 0x13ea56
movq -0x38(%rbp), %rax
movq 0x2b8(%rax), %rax
movq %rax, -0x1b0(%rbp)
leaq -0x68(%rbp), %rax
movq %rax, -0x1a8(%rbp)
movss -0xa4(%rbp), %xmm0
movss -0x5c(%rbp), %xmm1
leaq -0xac(%rbp), %rdi
callq 0xbf4c0
movq -0x1b0(%rbp), %rdi
movq -0x1a8(%rbp), %rsi
movl -0xa0(%rbp), %ecx
movq -0x40(%rbp), %rax
movss 0x40(%rax), %xmm0
movl -0x1c(%rbp), %edx
andl $0x20, %edx
movl $0x5, %r8d
movl $0xf, %eax
cmpl $0x0, %edx
cmovnel %eax, %r8d
leaq -0xac(%rbp), %rdx
callq 0x113090
movl -0x1c(%rbp), %eax
andl $0x20, %eax
cmpl $0x0, %eax
jne 0x13ebb6
movb $0x1, %al
testb $0x1, -0x9c(%rbp)
movb %al, -0x1b1(%rbp)
jne 0x13ea82
movb -0x99(%rbp), %al
movb %al, -0x1b1(%rbp)
movb -0x1b1(%rbp), %cl
movl $0x15, %edi
movl $0x16, %eax
testb $0x1, %cl
cmovnel %eax, %edi
movss 0x3219c(%rip), %xmm0    # 0x170c3c
callq 0xc76e0
movl %eax, -0xb0(%rbp)
xorl %edi, %edi
movss 0x32187(%rip), %xmm0    # 0x170c3c
callq 0xc76e0
movl %eax, -0xb4(%rbp)
movq -0x38(%rbp), %rax
movq 0x2b8(%rax), %rax
movq %rax, -0x1c0(%rbp)
movss -0xa4(%rbp), %xmm0
movss -0x64(%rbp), %xmm1
leaq -0xbc(%rbp), %rdi
callq 0xbf4c0
movq -0x1c0(%rbp), %rdi
leaq -0x68(%rbp), %rdx
addq $0x8, %rdx
movl -0xb0(%rbp), %ecx
movq -0x40(%rbp), %rax
movss 0x40(%rax), %xmm0
movss -0x58(%rbp), %xmm2
movss -0x48(%rbp), %xmm1
movl $0xa, %r8d
movl $0xf, %eax
ucomiss %xmm2, %xmm1
cmovael %eax, %r8d
leaq -0xbc(%rbp), %rsi
callq 0x113090
movss -0xa4(%rbp), %xmm1
addss -0x48(%rbp), %xmm1
movq -0x40(%rbp), %rax
subss 0x38(%rax), %xmm1
movss -0x60(%rbp), %xmm0
ucomiss %xmm1, %xmm0
jb 0x13ebb4
movq -0x38(%rbp), %rax
movq 0x2b8(%rax), %rax
movq %rax, -0x1c8(%rbp)
movss -0xa4(%rbp), %xmm0
movq -0x40(%rbp), %rax
movss 0x3c(%rax), %xmm2
addss %xmm2, %xmm0
movss -0x64(%rbp), %xmm1
addss %xmm2, %xmm1
leaq -0xc4(%rbp), %rdi
callq 0xbf4c0
movq -0x1c8(%rbp), %rdi
movl -0xb4(%rbp), %esi
movsd -0xc4(%rbp), %xmm0
movl $0x3, %edx
movss 0x3208d(%rip), %xmm1    # 0x170c3c
callq 0x11ca10
jmp 0x13ebb6
movq -0x68(%rbp), %rax
movq %rax, -0xd0(%rbp)
movq -0x60(%rbp), %rax
movq %rax, -0xd8(%rbp)
movq -0x40(%rbp), %rax
movss 0x40(%rax), %xmm2
movsd -0xd0(%rbp), %xmm0
movsd -0xd8(%rbp), %xmm1
callq 0xc90a0
cmpq $0x0, -0x18(%rbp)
je 0x13ec84
movl -0x1c(%rbp), %eax
andl $0x40, %eax
cmpl $0x0, %eax
jne 0x13ec84
movq -0x40(%rbp), %rsi
addq $0x38, %rsi
leaq -0x68(%rbp), %rdi
callq 0x139090
movlpd %xmm0, -0xe0(%rbp)
movss -0xa4(%rbp), %xmm0
movss -0x5c(%rbp), %xmm1
leaq -0xe8(%rbp), %rdi
callq 0xbf4c0
movq -0x18(%rbp), %rax
movq %rax, -0x1d0(%rbp)
leaq -0xf0(%rbp), %rdi
xorps %xmm1, %xmm1
movaps %xmm1, %xmm0
callq 0xbf4c0
movq -0x1d0(%rbp), %rdx
leaq -0xe0(%rbp), %rdi
leaq -0xe8(%rbp), %rsi
xorl %eax, %eax
movl %eax, %r8d
leaq -0xf0(%rbp), %r9
movq %r8, %rcx
movq $0x0, (%rsp)
callq 0xc8900
movss -0x50(%rbp), %xmm0
xorps %xmm1, %xmm1
ucomiss %xmm1, %xmm0
jbe 0x13ecd7
movss -0x64(%rbp), %xmm1
movss -0x60(%rbp), %xmm0
movq -0x40(%rbp), %rax
movss 0x3c(%rax), %xmm2
movss 0x50(%rax), %xmm3
addss %xmm3, %xmm0
addss %xmm2, %xmm1
leaq -0xf8(%rbp), %rdi
callq 0xbf4c0
movq -0x10(%rbp), %rdi
movsd -0xf8(%rbp), %xmm0
xorl %eax, %eax
movl %eax, %esi
movl $0x1, %edx
callq 0xc8120
testb $0x1, -0x9b(%rbp)
jne 0x13ecef
movq -0x28(%rbp), %rax
movl 0x1ca0(%rax), %eax
cmpl -0x44(%rbp), %eax
jne 0x13ed23
testb $0x1, -0x9c(%rbp)
jne 0x13ed23
movq -0x38(%rbp), %rax
cmpl $0x0, 0x14c(%rax)
jne 0x13ed12
movl -0x44(%rbp), %ecx
movq -0x38(%rbp), %rax
movl %ecx, 0x3b0(%rax)
movl -0x44(%rbp), %edi
xorl %esi, %esi
callq 0xdde50
movb $0x1, -0x9c(%rbp)
testb $0x1, -0x9c(%rbp)
jne 0x13ed35
movb $0x0, -0x1(%rbp)
jmp 0x13f024
testb $0x1, -0x29(%rbp)
je 0x13ed75
movq -0x28(%rbp), %rax
movl 0x1b88(%rax), %ecx
orl $0x10, %ecx
movl %ecx, 0x1b88(%rax)
movq -0x28(%rbp), %rax
movss 0x1bc4(%rax), %xmm0
movss -0x58(%rbp), %xmm1
callq 0x139050
movq -0x28(%rbp), %rax
movss %xmm0, 0x1bc4(%rax)
jmp 0x13ee5c
movl -0x1c(%rbp), %eax
andl $0x1e, %eax
cmpl $0x0, %eax
jne 0x13ed89
movl -0x1c(%rbp), %eax
orl $0x4, %eax
movl %eax, -0x1c(%rbp)
movl -0x1c(%rbp), %edi
andl $0x1e, %edi
callq 0x13de90
testb $0x1, %al
jne 0x13ed9a
jmp 0x13ed9c
jmp 0x13edbb
leaq 0x4fae2(%rip), %rdi     # 0x18e885
leaq 0x4f636(%rip), %rsi     # 0x18e3e0
movl $0x643, %edx            # imm = 0x643
leaq 0x4fa8b(%rip), %rcx     # 0x18e841
callq 0xd180
movl $0xffffffff, -0xfc(%rbp) # imm = 0xFFFFFFFF
movl -0x1c(%rbp), %eax
andl $0x4, %eax
cmpl $0x0, %eax
je 0x13eddc
movl $0x8, -0xfc(%rbp)
jmp 0x13ee0c
movl -0x1c(%rbp), %eax
andl $0x2, %eax
cmpl $0x0, %eax
je 0x13edf3
movl $0x4, -0xfc(%rbp)
jmp 0x13ee0a
movl -0x1c(%rbp), %eax
andl $0x8, %eax
cmpl $0x0, %eax
je 0x13ee08
movl $0x14, -0xfc(%rbp)
jmp 0x13ee0a
jmp 0x13ee0c
movss -0x58(%rbp), %xmm0
leaq -0x104(%rbp), %rdi
xorps %xmm1, %xmm1
callq 0xbf4c0
movl -0xfc(%rbp), %edi
callq 0x13f040
movaps %xmm0, %xmm1
leaq -0x10c(%rbp), %rdi
movss 0x33177(%rip), %xmm0    # 0x171fb4
callq 0xbf4c0
leaq -0x104(%rbp), %rdi
leaq -0x10c(%rbp), %rsi
xorl %eax, %eax
movl %eax, %ecx
movq %rcx, %rdx
callq 0xdac00
leaq -0x120(%rbp), %rdi
movq -0x28(%rbp), %rax
movl 0x1c80(%rax), %ecx
movl $0x10, %esi
leaq 0x4fa40(%rip), %rdx     # 0x18e8b9
movb $0x0, %al
callq 0xc4d30
leaq -0x120(%rbp), %rdi
callq 0xd6500
movq %rax, -0x128(%rbp)
cmpq $0x0, -0x128(%rbp)
je 0x13ef92
movq -0x128(%rbp), %rax
testb $0x1, 0x8f(%rax)
je 0x13ef90
movq -0x128(%rbp), %rdi
callq 0xd6530
movlpd %xmm0, -0x130(%rbp)
movl -0x1c(%rbp), %eax
andl $0x1, %eax
cmpl $0x0, %eax
je 0x13eee7
movq -0x128(%rbp), %rax
movl $0x0, 0xa8(%rax)
jmp 0x13eef8
movq -0x128(%rbp), %rax
movl $0x3, 0xa8(%rax)
movq -0x128(%rbp), %rdi
callq 0xdf210
movlpd %xmm0, -0x140(%rbp)
movlpd %xmm1, -0x138(%rbp)
leaq -0x68(%rbp), %rdi
movq %rdi, -0x1d8(%rbp)
callq 0xee510
movq -0x1d8(%rbp), %r8
movlpd %xmm0, -0x150(%rbp)
movq -0x128(%rbp), %rdx
addq $0xa8, %rdx
leaq -0x150(%rbp), %rdi
leaq -0x130(%rbp), %rsi
leaq -0x140(%rbp), %rcx
movl $0x1, %r9d
callq 0xdead0
movlpd %xmm0, -0x148(%rbp)
leaq -0x158(%rbp), %rdi
xorps %xmm1, %xmm1
movaps %xmm1, %xmm0
callq 0xbf4c0
leaq -0x148(%rbp), %rdi
xorl %esi, %esi
leaq -0x158(%rbp), %rdx
callq 0xdab40
jmp 0x13ef92
movl $0x4000147, -0x15c(%rbp) # imm = 0x4000147
movq -0x40(%rbp), %rax
movss 0x38(%rax), %xmm0
movq -0x40(%rbp), %rax
movss 0x8(%rax), %xmm1
leaq -0x164(%rbp), %rdi
callq 0xbf4c0
movl $0x1, %edi
leaq -0x164(%rbp), %rsi
callq 0xc7b50
leaq -0x120(%rbp), %rdi
movl -0x15c(%rbp), %edx
xorl %eax, %eax
movl %eax, %esi
callq 0xd0170
andb $0x1, %al
movb %al, -0x165(%rbp)
movl $0x1, %edi
callq 0xc7c10
testb $0x1, -0x165(%rbp)
jne 0x13f020
callq 0xde4e0
leaq 0x36102(%rip), %rdi     # 0x17510a
leaq 0x4f3d1(%rip), %rsi     # 0x18e3e0
movl $0x668, %edx            # imm = 0x668
leaq 0x4f826(%rip), %rcx     # 0x18e841
callq 0xd180
movb $0x1, -0x1(%rbp)
movb -0x1(%rbp), %al
andb $0x1, %al
addq $0x1e0, %rsp            # imm = 0x1E0
popq %rbp
retq
nopw %cs:(%rax,%rax)