// File: Ciaxur[P]yagb-emu/include/imgui/imgui_widgets.cpp
// Function: ImGui::Selectable(char const*, bool, int, ImVec2 const&)
bool ImGui::Selectable(const char* label, bool selected, ImGuiSelectableFlags flags, const ImVec2& size_arg)
{
    ImGuiWindow* window = GetCurrentWindow();
    if (window->SkipItems)
        return false;

    ImGuiContext& g = *GImGui;
    const ImGuiStyle& style = g.Style;

    // Submit label or explicit size to ItemSize(), whereas ItemAdd() will submit a larger/spanning rectangle.
    ImGuiID id = window->GetID(label);
    ImVec2 label_size = CalcTextSize(label, NULL, true);
    ImVec2 size(size_arg.x != 0.0f ? size_arg.x : label_size.x, size_arg.y != 0.0f ? size_arg.y : label_size.y);
    ImVec2 pos = window->DC.CursorPos;
    pos.y += window->DC.CurrLineTextBaseOffset;
    ItemSize(size, 0.0f);

    // Fill horizontal space
    // We don't support (size < 0.0f) in Selectable() because the ItemSpacing extension would make explicitely right-aligned sizes not visibly match other widgets.
    const bool span_all_columns = (flags & ImGuiSelectableFlags_SpanAllColumns) != 0;
    const float min_x = span_all_columns ? window->ParentWorkRect.Min.x : pos.x;
    const float max_x = span_all_columns ? window->ParentWorkRect.Max.x : window->WorkRect.Max.x;
    if (size_arg.x == 0.0f || (flags & ImGuiSelectableFlags_SpanAvailWidth))
        size.x = ImMax(label_size.x, max_x - min_x);

    // Text stays at the submission position, but bounding box may be extended on both sides
    const ImVec2 text_min = pos;
    const ImVec2 text_max(min_x + size.x, pos.y + size.y);

    // Selectables are meant to be tightly packed together with no click-gap, so we extend their box to cover spacing between selectable.
    ImRect bb(min_x, pos.y, text_max.x, text_max.y);
    if ((flags & ImGuiSelectableFlags_NoPadWithHalfSpacing) == 0)
    {
        const float spacing_x = span_all_columns ? 0.0f : style.ItemSpacing.x;
        const float spacing_y = style.ItemSpacing.y;
        const float spacing_L = IM_FLOOR(spacing_x * 0.50f);
        const float spacing_U = IM_FLOOR(spacing_y * 0.50f);
        bb.Min.x -= spacing_L;
        bb.Min.y -= spacing_U;
        bb.Max.x += (spacing_x - spacing_L);
        bb.Max.y += (spacing_y - spacing_U);
    }
    //if (g.IO.KeyCtrl) { GetForegroundDrawList()->AddRect(bb.Min, bb.Max, IM_COL32(0, 255, 0, 255)); }

    // Modify ClipRect for the ItemAdd(), faster than doing a PushColumnsBackground/PushTableBackground for every Selectable..
    const float backup_clip_rect_min_x = window->ClipRect.Min.x;
    const float backup_clip_rect_max_x = window->ClipRect.Max.x;
    if (span_all_columns)
    {
        window->ClipRect.Min.x = window->ParentWorkRect.Min.x;
        window->ClipRect.Max.x = window->ParentWorkRect.Max.x;
    }

    bool item_add;
    if (flags & ImGuiSelectableFlags_Disabled)
    {
        ImGuiItemFlags backup_item_flags = window->DC.ItemFlags;
        window->DC.ItemFlags |= ImGuiItemFlags_Disabled | ImGuiItemFlags_NoNavDefaultFocus;
        item_add = ItemAdd(bb, id);
        window->DC.ItemFlags = backup_item_flags;
    }
    else
    {
        item_add = ItemAdd(bb, id);
    }

    if (span_all_columns)
    {
        window->ClipRect.Min.x = backup_clip_rect_min_x;
        window->ClipRect.Max.x = backup_clip_rect_max_x;
    }

    if (!item_add)
        return false;

    // FIXME: We can standardize the behavior of those two, we could also keep the fast path of override ClipRect + full push on render only,
    // which would be advantageous since most selectable are not selected.
    if (span_all_columns && window->DC.CurrentColumns)
        PushColumnsBackground();
    else if (span_all_columns && g.CurrentTable)
        TablePushBackgroundChannel();

    // We use NoHoldingActiveID on menus so user can click and _hold_ on a menu then drag to browse child entries
    ImGuiButtonFlags button_flags = 0;
    if (flags & ImGuiSelectableFlags_NoHoldingActiveID) { button_flags |= ImGuiButtonFlags_NoHoldingActiveId; }
    if (flags & ImGuiSelectableFlags_SelectOnClick)     { button_flags |= ImGuiButtonFlags_PressedOnClick; }
    if (flags & ImGuiSelectableFlags_SelectOnRelease)   { button_flags |= ImGuiButtonFlags_PressedOnRelease; }
    if (flags & ImGuiSelectableFlags_Disabled)          { button_flags |= ImGuiButtonFlags_Disabled; }
    if (flags & ImGuiSelectableFlags_AllowDoubleClick)  { button_flags |= ImGuiButtonFlags_PressedOnClickRelease | ImGuiButtonFlags_PressedOnDoubleClick; }
    if (flags & ImGuiSelectableFlags_AllowItemOverlap)  { button_flags |= ImGuiButtonFlags_AllowItemOverlap; }

    if (flags & ImGuiSelectableFlags_Disabled)
        selected = false;

    const bool was_selected = selected;
    bool hovered, held;
    bool pressed = ButtonBehavior(bb, id, &hovered, &held, button_flags);

    // Update NavId when clicking or when Hovering (this doesn't happen on most widgets), so navigation can be resumed with gamepad/keyboard
    if (pressed || (hovered && (flags & ImGuiSelectableFlags_SetNavIdOnHover)))
    {
        if (!g.NavDisableMouseHover && g.NavWindow == window && g.NavLayer == window->DC.NavLayerCurrent)
        {
            g.NavDisableHighlight = true;
            SetNavID(id, window->DC.NavLayerCurrent, window->DC.NavFocusScopeIdCurrent);
        }
    }
    if (pressed)
        MarkItemEdited(id);

    if (flags & ImGuiSelectableFlags_AllowItemOverlap)
        SetItemAllowOverlap();

    // In this branch, Selectable() cannot toggle the selection so this will never trigger.
    if (selected != was_selected) //-V547
        window->DC.LastItemStatusFlags |= ImGuiItemStatusFlags_ToggledSelection;

    // Render
    if (held && (flags & ImGuiSelectableFlags_DrawHoveredWhenHeld))
        hovered = true;
    if (hovered || selected)
    {
        const ImU32 col = GetColorU32((held && hovered) ? ImGuiCol_HeaderActive : hovered ? ImGuiCol_HeaderHovered : ImGuiCol_Header);
        RenderFrame(bb.Min, bb.Max, col, false, 0.0f);
        RenderNavHighlight(bb, id, ImGuiNavHighlightFlags_TypeThin | ImGuiNavHighlightFlags_NoRounding);
    }

    if (span_all_columns && window->DC.CurrentColumns)
        PopColumnsBackground();
    else if (span_all_columns && g.CurrentTable)
        TablePopBackgroundChannel();

    if (flags & ImGuiSelectableFlags_Disabled) PushStyleColor(ImGuiCol_Text, style.Colors[ImGuiCol_TextDisabled]);
    RenderTextClipped(text_min, text_max, label, NULL, &label_size, style.SelectableTextAlign, &bb);
    if (flags & ImGuiSelectableFlags_Disabled) PopStyleColor();

    // Automatically close popups
    if (pressed && (window->Flags & ImGuiWindowFlags_Popup) && !(flags & ImGuiSelectableFlags_DontClosePopups) && !(window->DC.ItemFlags & ImGuiItemFlags_SelectableDontClosePopup))
        CloseCurrentPopup();

    IMGUI_TEST_ENGINE_ITEM_INFO(id, label, window->DC.ItemFlags);
    return pressed;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0xf0, %rsp
movb %sil, %al
movq %rdi, -0x10(%rbp)
andb $0x1, %al
movb %al, -0x11(%rbp)
movl %edx, -0x18(%rbp)
movq %rcx, -0x20(%rbp)
callq 0xeb270
movq %rax, -0x28(%rbp)
movq -0x28(%rbp), %rax
testb $0x1, 0x93(%rax)
je 0x13f2ed
movb $0x0, -0x1(%rbp)
jmp 0x13fab1
leaq 0xd3c4c(%rip), %rax     # 0x212f40
movq (%rax), %rax
movq %rax, -0x30(%rbp)
movq -0x30(%rbp), %rax
addq $0x1560, %rax           # imm = 0x1560
movq %rax, -0x38(%rbp)
movq -0x28(%rbp), %rdi
movq -0x10(%rbp), %rsi
xorl %eax, %eax
movl %eax, %edx
movq %rdx, -0xc8(%rbp)
callq 0xc9910
movq -0xc8(%rbp), %rsi
movl %eax, -0x3c(%rbp)
movq -0x10(%rbp), %rdi
movl $0x1, %edx
movss 0x32c44(%rip), %xmm0    # 0x171f80
callq 0xc87e0
movlpd %xmm0, -0x44(%rbp)
movq -0x20(%rbp), %rax
movss (%rax), %xmm0
xorps %xmm1, %xmm1
ucomiss %xmm1, %xmm0
jne 0x13f35a
jp 0x13f35a
jmp 0x13f36c
movq -0x20(%rbp), %rax
movss (%rax), %xmm0
movss %xmm0, -0xcc(%rbp)
jmp 0x13f379
movss -0x44(%rbp), %xmm0
movss %xmm0, -0xcc(%rbp)
movss -0xcc(%rbp), %xmm0
movss %xmm0, -0xd0(%rbp)
movq -0x20(%rbp), %rax
movss 0x4(%rax), %xmm0
xorps %xmm1, %xmm1
ucomiss %xmm1, %xmm0
jne 0x13f39e
jp 0x13f39e
jmp 0x13f3b1
movq -0x20(%rbp), %rax
movss 0x4(%rax), %xmm0
movss %xmm0, -0xd4(%rbp)
jmp 0x13f3be
movss -0x40(%rbp), %xmm0
movss %xmm0, -0xd4(%rbp)
movss -0xd0(%rbp), %xmm0
movss -0xd4(%rbp), %xmm1
leaq -0x4c(%rbp), %rdi
callq 0xbf4c0
movq -0x28(%rbp), %rax
movq 0xd8(%rax), %rax
movq %rax, -0x54(%rbp)
movq -0x28(%rbp), %rax
movss 0x110(%rax), %xmm0
addss -0x50(%rbp), %xmm0
movss %xmm0, -0x50(%rbp)
leaq -0x4c(%rbp), %rdi
xorps %xmm0, %xmm0
callq 0xd6030
movl -0x18(%rbp), %eax
andl $0x2, %eax
cmpl $0x0, %eax
setne %al
andb $0x1, %al
movb %al, -0x55(%rbp)
testb $0x1, -0x55(%rbp)
je 0x13f435
movq -0x28(%rbp), %rax
movss 0x248(%rax), %xmm0
movss %xmm0, -0xd8(%rbp)
jmp 0x13f442
movss -0x54(%rbp), %xmm0
movss %xmm0, -0xd8(%rbp)
movss -0xd8(%rbp), %xmm0
movss %xmm0, -0x5c(%rbp)
testb $0x1, -0x55(%rbp)
je 0x13f46b
movq -0x28(%rbp), %rax
movss 0x250(%rax), %xmm0
movss %xmm0, -0xdc(%rbp)
jmp 0x13f47f
movq -0x28(%rbp), %rax
movss 0x240(%rax), %xmm0
movss %xmm0, -0xdc(%rbp)
movss -0xdc(%rbp), %xmm0
movss %xmm0, -0x60(%rbp)
movq -0x20(%rbp), %rax
movss (%rax), %xmm0
xorps %xmm1, %xmm1
ucomiss %xmm1, %xmm0
jne 0x13f4a0
jp 0x13f4a0
jmp 0x13f4ad
movl -0x18(%rbp), %eax
andl $0x800000, %eax         # imm = 0x800000
cmpl $0x0, %eax
je 0x13f4c6
movss -0x44(%rbp), %xmm0
movss -0x60(%rbp), %xmm1
subss -0x5c(%rbp), %xmm1
callq 0x139050
movss %xmm0, -0x4c(%rbp)
movq -0x54(%rbp), %rax
movq %rax, -0x68(%rbp)
movss -0x5c(%rbp), %xmm0
addss -0x4c(%rbp), %xmm0
movss -0x50(%rbp), %xmm1
addss -0x48(%rbp), %xmm1
leaq -0x70(%rbp), %rdi
callq 0xbf4c0
movss -0x5c(%rbp), %xmm0
movss -0x50(%rbp), %xmm1
movss -0x70(%rbp), %xmm2
movss -0x6c(%rbp), %xmm3
leaq -0x80(%rbp), %rdi
callq 0xec090
movl -0x18(%rbp), %eax
andl $0x4000000, %eax        # imm = 0x4000000
cmpl $0x0, %eax
jne 0x13f5fe
testb $0x1, -0x55(%rbp)
je 0x13f52c
xorps %xmm0, %xmm0
movss %xmm0, -0xe0(%rbp)
jmp 0x13f53d
movq -0x38(%rbp), %rax
movss 0x48(%rax), %xmm0
movss %xmm0, -0xe0(%rbp)
movss -0xe0(%rbp), %xmm0
movss %xmm0, -0x84(%rbp)
movq -0x38(%rbp), %rax
movss 0x4c(%rax), %xmm0
movss %xmm0, -0x88(%rbp)
movss 0x32a72(%rip), %xmm0    # 0x171fd8
mulss -0x84(%rbp), %xmm0
cvttss2si %xmm0, %eax
cvtsi2ss %eax, %xmm0
movss %xmm0, -0x8c(%rbp)
movss 0x32a52(%rip), %xmm0    # 0x171fd8
mulss -0x88(%rbp), %xmm0
cvttss2si %xmm0, %eax
cvtsi2ss %eax, %xmm0
movss %xmm0, -0x90(%rbp)
movss -0x8c(%rbp), %xmm1
movss -0x80(%rbp), %xmm0
subss %xmm1, %xmm0
movss %xmm0, -0x80(%rbp)
movss -0x90(%rbp), %xmm1
movss -0x7c(%rbp), %xmm0
subss %xmm1, %xmm0
movss %xmm0, -0x7c(%rbp)
movss -0x84(%rbp), %xmm0
subss -0x8c(%rbp), %xmm0
addss -0x78(%rbp), %xmm0
movss %xmm0, -0x78(%rbp)
movss -0x88(%rbp), %xmm0
subss -0x90(%rbp), %xmm0
addss -0x74(%rbp), %xmm0
movss %xmm0, -0x74(%rbp)
movq -0x28(%rbp), %rax
movss 0x258(%rax), %xmm0
movss %xmm0, -0x94(%rbp)
movq -0x28(%rbp), %rax
movss 0x260(%rax), %xmm0
movss %xmm0, -0x98(%rbp)
testb $0x1, -0x55(%rbp)
je 0x13f65c
movq -0x28(%rbp), %rax
movss 0x248(%rax), %xmm0
movq -0x28(%rbp), %rax
movss %xmm0, 0x258(%rax)
movq -0x28(%rbp), %rax
movss 0x250(%rax), %xmm0
movq -0x28(%rbp), %rax
movss %xmm0, 0x260(%rax)
movl -0x18(%rbp), %eax
andl $0x8, %eax
cmpl $0x0, %eax
je 0x13f6b4
movq -0x28(%rbp), %rax
movl 0x1cc(%rax), %eax
movl %eax, -0xa0(%rbp)
movq -0x28(%rbp), %rax
movl 0x1cc(%rax), %ecx
orl $0x14, %ecx
movl %ecx, 0x1cc(%rax)
movl -0x3c(%rbp), %esi
leaq -0x80(%rbp), %rdi
xorl %eax, %eax
movl %eax, %edx
callq 0xd6250
andb $0x1, %al
movb %al, -0x99(%rbp)
movl -0xa0(%rbp), %ecx
movq -0x28(%rbp), %rax
movl %ecx, 0x1cc(%rax)
jmp 0x13f6cc
movl -0x3c(%rbp), %esi
leaq -0x80(%rbp), %rdi
xorl %eax, %eax
movl %eax, %edx
callq 0xd6250
andb $0x1, %al
movb %al, -0x99(%rbp)
testb $0x1, -0x55(%rbp)
je 0x13f6fa
movss -0x94(%rbp), %xmm0
movq -0x28(%rbp), %rax
movss %xmm0, 0x258(%rax)
movss -0x98(%rbp), %xmm0
movq -0x28(%rbp), %rax
movss %xmm0, 0x260(%rax)
testb $0x1, -0x99(%rbp)
jne 0x13f70c
movb $0x0, -0x1(%rbp)
jmp 0x13fab1
testb $0x1, -0x55(%rbp)
je 0x13f727
movq -0x28(%rbp), %rax
cmpq $0x0, 0x1b0(%rax)
je 0x13f727
callq 0x1358e0
jmp 0x13f742
testb $0x1, -0x55(%rbp)
je 0x13f740
movq -0x30(%rbp), %rax
cmpq $0x0, 0x20a8(%rax)
je 0x13f740
callq 0x132090
jmp 0x13f742
movl $0x0, -0xa4(%rbp)
movl -0x18(%rbp), %eax
andl $0x100000, %eax         # imm = 0x100000
cmpl $0x0, %eax
je 0x13f76a
movl -0xa4(%rbp), %eax
orl $0x20000, %eax          # imm = 0x20000
movl %eax, -0xa4(%rbp)
movl -0x18(%rbp), %eax
andl $0x200000, %eax         # imm = 0x200000
cmpl $0x0, %eax
je 0x13f786
movl -0xa4(%rbp), %eax
orl $0x10, %eax
movl %eax, -0xa4(%rbp)
movl -0x18(%rbp), %eax
andl $0x400000, %eax         # imm = 0x400000
cmpl $0x0, %eax
je 0x13f7a4
movl -0xa4(%rbp), %eax
orl $0x80, %eax
movl %eax, -0xa4(%rbp)
movl -0x18(%rbp), %eax
andl $0x8, %eax
cmpl $0x0, %eax
je 0x13f7c0
movl -0xa4(%rbp), %eax
orl $0x4000, %eax           # imm = 0x4000
movl %eax, -0xa4(%rbp)
movl -0x18(%rbp), %eax
andl $0x4, %eax
cmpl $0x0, %eax
je 0x13f7dc
movl -0xa4(%rbp), %eax
orl $0x120, %eax            # imm = 0x120
movl %eax, -0xa4(%rbp)
movl -0x18(%rbp), %eax
andl $0x10, %eax
cmpl $0x0, %eax
je 0x13f7f8
movl -0xa4(%rbp), %eax
orl $0x1000, %eax           # imm = 0x1000
movl %eax, -0xa4(%rbp)
movl -0x18(%rbp), %eax
andl $0x8, %eax
cmpl $0x0, %eax
je 0x13f807
movb $0x0, -0x11(%rbp)
movb -0x11(%rbp), %al
andb $0x1, %al
movb %al, -0xa5(%rbp)
movl -0x3c(%rbp), %esi
movl -0xa4(%rbp), %r8d
leaq -0x80(%rbp), %rdi
leaq -0xa6(%rbp), %rdx
leaq -0xa7(%rbp), %rcx
callq 0x139df0
andb $0x1, %al
movb %al, -0xa8(%rbp)
testb $0x1, -0xa8(%rbp)
jne 0x13f85a
testb $0x1, -0xa6(%rbp)
je 0x13f8b7
movl -0x18(%rbp), %eax
andl $0x2000000, %eax        # imm = 0x2000000
cmpl $0x0, %eax
je 0x13f8b7
movq -0x30(%rbp), %rax
testb $0x1, 0x1ce7(%rax)
jne 0x13f8b5
movq -0x30(%rbp), %rax
movq 0x1c90(%rax), %rax
cmpq -0x28(%rbp), %rax
jne 0x13f8b5
movq -0x30(%rbp), %rax
movl 0x1cdc(%rax), %eax
movq -0x28(%rbp), %rcx
cmpl 0x14c(%rcx), %eax
jne 0x13f8b5
movq -0x30(%rbp), %rax
movb $0x1, 0x1ce6(%rax)
movl -0x3c(%rbp), %edi
movq -0x28(%rbp), %rax
movl 0x14c(%rax), %esi
movq -0x28(%rbp), %rax
movl 0x158(%rax), %edx
callq 0xdf300
jmp 0x13f8b7
testb $0x1, -0xa8(%rbp)
je 0x13f8c8
movl -0x3c(%rbp), %edi
callq 0xca110
movl -0x18(%rbp), %eax
andl $0x10, %eax
cmpl $0x0, %eax
je 0x13f8d8
callq 0xd5760
movb -0x11(%rbp), %al
andb $0x1, %al
movzbl %al, %eax
movb -0xa5(%rbp), %cl
andb $0x1, %cl
movzbl %cl, %ecx
cmpl %ecx, %eax
je 0x13f903
movq -0x28(%rbp), %rax
movl 0x128(%rax), %ecx
orl $0x8, %ecx
movl %ecx, 0x128(%rax)
testb $0x1, -0xa7(%rbp)
je 0x13f920
movl -0x18(%rbp), %eax
andl $0x1000000, %eax        # imm = 0x1000000
cmpl $0x0, %eax
je 0x13f920
movb $0x1, -0xa6(%rbp)
testb $0x1, -0xa6(%rbp)
jne 0x13f933
testb $0x1, -0x11(%rbp)
je 0x13f9ce
testb $0x1, -0xa7(%rbp)
je 0x13f952
testb $0x1, -0xa6(%rbp)
je 0x13f952
movl $0x1a, %eax
movl %eax, -0xe4(%rbp)
jmp 0x13f96e
movb -0xa6(%rbp), %dl
movl $0x18, %eax
movl $0x19, %ecx
testb $0x1, %dl
cmovnel %ecx, %eax
movl %eax, -0xe4(%rbp)
movl -0xe4(%rbp), %edi
movss 0x312c0(%rip), %xmm0    # 0x170c3c
callq 0xc76e0
movl %eax, -0xac(%rbp)
movq -0x80(%rbp), %rax
movq %rax, -0xb8(%rbp)
movq -0x78(%rbp), %rax
movq %rax, -0xc0(%rbp)
movl -0xac(%rbp), %edi
movsd -0xb8(%rbp), %xmm0
movsd -0xc0(%rbp), %xmm1
xorl %esi, %esi
xorps %xmm2, %xmm2
callq 0xc8f20
movl -0x3c(%rbp), %esi
leaq -0x80(%rbp), %rdi
movl $0xa, %edx
callq 0xc91e0
testb $0x1, -0x55(%rbp)
je 0x13f9e9
movq -0x28(%rbp), %rax
cmpq $0x0, 0x1b0(%rax)
je 0x13f9e9
callq 0x135960
jmp 0x13fa04
testb $0x1, -0x55(%rbp)
je 0x13fa02
movq -0x30(%rbp), %rax
cmpq $0x0, 0x20a8(%rax)
je 0x13fa02
callq 0x132130
jmp 0x13fa04
movl -0x18(%rbp), %eax
andl $0x8, %eax
cmpl $0x0, %eax
je 0x13fa25
movq -0x38(%rbp), %rsi
addq $0xc4, %rsi
addq $0x10, %rsi
xorl %edi, %edi
callq 0xc78f0
movq -0x10(%rbp), %rdx
movq -0x38(%rbp), %r9
addq $0x9c, %r9
leaq -0x68(%rbp), %rdi
leaq -0x70(%rbp), %rsi
xorl %eax, %eax
movl %eax, %ecx
leaq -0x44(%rbp), %r8
leaq -0x80(%rbp), %rax
movq %rax, (%rsp)
callq 0xc8900
movl -0x18(%rbp), %eax
andl $0x8, %eax
cmpl $0x0, %eax
je 0x13fa66
movl $0x1, %edi
callq 0xc7990
testb $0x1, -0xa8(%rbp)
je 0x13faa2
movq -0x28(%rbp), %rax
movl 0xc(%rax), %eax
andl $0x4000000, %eax        # imm = 0x4000000
cmpl $0x0, %eax
je 0x13faa2
movl -0x18(%rbp), %eax
andl $0x1, %eax
cmpl $0x0, %eax
jne 0x13faa2
movq -0x28(%rbp), %rax
movl 0x1cc(%rax), %eax
andl $0x20, %eax
cmpl $0x0, %eax
jne 0x13faa2
callq 0xde2d0
jmp 0x13faa4
jmp 0x13faa6
movb -0xa8(%rbp), %al
andb $0x1, %al
movb %al, -0x1(%rbp)
movb -0x1(%rbp), %al
andb $0x1, %al
addq $0xf0, %rsp
popq %rbp
retq
nop