// File: /workspace/github_cpp_makefile_star2_O2/Ciaxur[P]yagb-emu/include/imgui/imgui_widgets.cpp
// Function: ImGui::SliderBehavior(ImRect const&, unsigned int, int, void*, void const*, void const*, char const*, int, ImRect*)
bool ImGui::SliderBehavior(const ImRect& bb, ImGuiID id, ImGuiDataType data_type, void* p_v, const void* p_min, const void* p_max, const char* format, ImGuiSliderFlags flags, ImRect* out_grab_bb)
{
    // Read imgui.cpp "API BREAKING CHANGES" section for 1.78 if you hit this assert.
    IM_ASSERT((flags == 1 || (flags & ImGuiSliderFlags_InvalidMask_) == 0) && "Invalid ImGuiSliderFlags flag!  Has the 'float power' argument been mistakenly cast to flags? Call function with ImGuiSliderFlags_Logarithmic flags instead.");

    ImGuiContext& g = *GImGui;
    if ((g.CurrentWindow->DC.ItemFlags & ImGuiItemFlags_ReadOnly) || (flags & ImGuiSliderFlags_ReadOnly))
        return false;

    switch (data_type)
    {
    case ImGuiDataType_S8:  { ImS32 v32 = (ImS32)*(ImS8*)p_v;  bool r = SliderBehaviorT<ImS32, ImS32, float>(bb, id, ImGuiDataType_S32, &v32, *(const ImS8*)p_min,  *(const ImS8*)p_max,  format, flags, out_grab_bb); if (r) *(ImS8*)p_v  = (ImS8)v32;  return r; }
    case ImGuiDataType_U8:  { ImU32 v32 = (ImU32)*(ImU8*)p_v;  bool r = SliderBehaviorT<ImU32, ImS32, float>(bb, id, ImGuiDataType_U32, &v32, *(const ImU8*)p_min,  *(const ImU8*)p_max,  format, flags, out_grab_bb); if (r) *(ImU8*)p_v  = (ImU8)v32;  return r; }
    case ImGuiDataType_S16: { ImS32 v32 = (ImS32)*(ImS16*)p_v; bool r = SliderBehaviorT<ImS32, ImS32, float>(bb, id, ImGuiDataType_S32, &v32, *(const ImS16*)p_min, *(const ImS16*)p_max, format, flags, out_grab_bb); if (r) *(ImS16*)p_v = (ImS16)v32; return r; }
    case ImGuiDataType_U16: { ImU32 v32 = (ImU32)*(ImU16*)p_v; bool r = SliderBehaviorT<ImU32, ImS32, float>(bb, id, ImGuiDataType_U32, &v32, *(const ImU16*)p_min, *(const ImU16*)p_max, format, flags, out_grab_bb); if (r) *(ImU16*)p_v = (ImU16)v32; return r; }
    case ImGuiDataType_S32:
        IM_ASSERT(*(const ImS32*)p_min >= IM_S32_MIN / 2 && *(const ImS32*)p_max <= IM_S32_MAX / 2);
        return SliderBehaviorT<ImS32, ImS32, float >(bb, id, data_type, (ImS32*)p_v,  *(const ImS32*)p_min,  *(const ImS32*)p_max,  format, flags, out_grab_bb);
    case ImGuiDataType_U32:
        IM_ASSERT(*(const ImU32*)p_max <= IM_U32_MAX / 2);
        return SliderBehaviorT<ImU32, ImS32, float >(bb, id, data_type, (ImU32*)p_v,  *(const ImU32*)p_min,  *(const ImU32*)p_max,  format, flags, out_grab_bb);
    case ImGuiDataType_S64:
        IM_ASSERT(*(const ImS64*)p_min >= IM_S64_MIN / 2 && *(const ImS64*)p_max <= IM_S64_MAX / 2);
        return SliderBehaviorT<ImS64, ImS64, double>(bb, id, data_type, (ImS64*)p_v,  *(const ImS64*)p_min,  *(const ImS64*)p_max,  format, flags, out_grab_bb);
    case ImGuiDataType_U64:
        IM_ASSERT(*(const ImU64*)p_max <= IM_U64_MAX / 2);
        return SliderBehaviorT<ImU64, ImS64, double>(bb, id, data_type, (ImU64*)p_v,  *(const ImU64*)p_min,  *(const ImU64*)p_max,  format, flags, out_grab_bb);
    case ImGuiDataType_Float:
        IM_ASSERT(*(const float*)p_min >= -FLT_MAX / 2.0f && *(const float*)p_max <= FLT_MAX / 2.0f);
        return SliderBehaviorT<float, float, float >(bb, id, data_type, (float*)p_v,  *(const float*)p_min,  *(const float*)p_max,  format, flags, out_grab_bb);
    case ImGuiDataType_Double:
        IM_ASSERT(*(const double*)p_min >= -DBL_MAX / 2.0f && *(const double*)p_max <= DBL_MAX / 2.0f);
        return SliderBehaviorT<double, double, double>(bb, id, data_type, (double*)p_v, *(const double*)p_min, *(const double*)p_max, format, flags, out_grab_bb);
    case ImGuiDataType_COUNT: break;
    }
    IM_ASSERT(0);
    return false;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %rbx
pushq %rax
movq %rcx, %rbx
movl 0x18(%rbp), %eax
cmpl $0x1, %eax
setne %cl
testl $0x7000000f, %eax       # imm = 0x7000000F
setne %r10b
testb %r10b, %cl
jne 0x7fd26
leaq 0x6421a(%rip), %rcx     # 0xe3ce0
movq (%rcx), %rcx
movq 0x1ae0(%rcx), %rcx
movl $0x80, %r10d
andl 0x1cc(%rcx), %r10d
movl %eax, %ecx
andl $0x200000, %ecx         # imm = 0x200000
orl %r10d, %ecx
je 0x7faf3
xorl %eax, %eax
addq $0x8, %rsp
popq %rbx
popq %rbp
retq
cmpl $0x9, %edx
ja 0x7fdc1
movq 0x20(%rbp), %r11
movq 0x10(%rbp), %r10
movl %edx, %ecx
leaq 0x3875b(%rip), %rdx     # 0xb8268
movslq (%rdx,%rcx,4), %rcx
addq %rdx, %rcx
jmpq *%rcx
movsbl (%rbx), %edx
leaq -0xc(%rbp), %rcx
movl %edx, (%rcx)
movsbl (%r8), %r8d
movsbl (%r9), %r9d
subq $0x8, %rsp
pushq $0x4
popq %rdx
pushq %r11
pushq %rax
pushq %r10
callq 0x90355
jmp 0x7fc5c
movl (%r8), %r8d
cmpl $0xc0000000, %r8d       # imm = 0xC0000000
jl 0x7fd45
movl (%r9), %r9d
cmpl $0x40000000, %r9d       # imm = 0x40000000
jge 0x7fd45
subq $0x8, %rsp
pushq $0x4
popq %rdx
movq %rbx, %rcx
pushq %r11
pushq %rax
pushq %r10
callq 0x90355
jmp 0x7fcd7
movsd (%r8), %xmm0
ucomisd 0x387d5(%rip), %xmm0    # 0xb8358
jb 0x7fd64
movsd (%r9), %xmm1
movsd 0x387ca(%rip), %xmm2    # 0xb8360
ucomisd %xmm1, %xmm2
jb 0x7fd64
subq $0x8, %rsp
pushq $0x9
popq %rdx
movq %rbx, %rcx
movq %r10, %r8
movl %eax, %r9d
pushq %r11
callq 0x928f9
jmp 0x7fd1f
movswl (%rbx), %edx
leaq -0xc(%rbp), %rcx
movl %edx, (%rcx)
movswl (%r8), %r8d
movswl (%r9), %r9d
subq $0x8, %rsp
pushq $0x4
popq %rdx
pushq %r11
pushq %rax
pushq %r10
callq 0x90355
jmp 0x7fc02
movzwl (%rbx), %edx
leaq -0xc(%rbp), %rcx
movl %edx, (%rcx)
movzwl (%r8), %r8d
movzwl (%r9), %r9d
subq $0x8, %rsp
pushq $0x5
popq %rdx
pushq %r11
pushq %rax
pushq %r10
callq 0x90ad8
addq $0x20, %rsp
testb %al, %al
je 0x7faec
movzwl -0xc(%rbp), %ecx
movw %cx, (%rbx)
jmp 0x7faec
movq (%r9), %r9
testq %r9, %r9
js 0x7fde0
movq (%r8), %r8
pushq $0x7
popq %rdx
movq %rbx, %rcx
addq $0x8, %rsp
popq %rbx
popq %rbp
jmp 0x919da
movzbl (%rbx), %edx
leaq -0xc(%rbp), %rcx
movl %edx, (%rcx)
movzbl (%r8), %r8d
movzbl (%r9), %r9d
subq $0x8, %rsp
pushq $0x5
popq %rdx
pushq %r11
pushq %rax
pushq %r10
callq 0x90ad8
addq $0x20, %rsp
testb %al, %al
je 0x7faec
movb -0xc(%rbp), %cl
movb %cl, (%rbx)
jmp 0x7faec
movl (%r9), %r9d
testl %r9d, %r9d
js 0x7fdff
movl (%r8), %r8d
subq $0x8, %rsp
pushq $0x5
popq %rdx
movq %rbx, %rcx
pushq %r11
pushq %rax
pushq %r10
callq 0x90ad8
jmp 0x7fcd7
movq (%r8), %r8
movabsq $-0x4000000000000000, %rcx # imm = 0xC000000000000000
cmpq %rcx, %r8
jl 0x7fd83
movq (%r9), %r9
movabsq $0x4000000000000000, %rcx # imm = 0x4000000000000000
cmpq %rcx, %r9
jge 0x7fd83
subq $0x8, %rsp
pushq $0x6
popq %rdx
movq %rbx, %rcx
pushq %r11
pushq %rax
pushq %r10
callq 0x9122f
addq $0x28, %rsp
jmp 0x7faf0
movss (%r8), %xmm0
ucomiss 0x3840c(%rip), %xmm0    # 0xb80f8
jb 0x7fda2
movss (%r9), %xmm1
movss 0x383fd(%rip), %xmm2    # 0xb80fc
ucomiss %xmm1, %xmm2
jb 0x7fda2
subq $0x8, %rsp
pushq $0x8
popq %rdx
movq %rbx, %rcx
movq %r10, %r8
movl %eax, %r9d
pushq %r11
callq 0x92143
popq %rcx
popq %rdx
jmp 0x7faec
leaq 0x3901d(%rip), %rdi     # 0xb8d4a
leaq 0x38654(%rip), %rsi     # 0xb8388
leaq 0x390ee(%rip), %rcx     # 0xb8e29
movl $0xb0f, %edx            # imm = 0xB0F
callq 0xc140
leaq 0x3916e(%rip), %rdi     # 0xb8eba
leaq 0x38635(%rip), %rsi     # 0xb8388
leaq 0x390cf(%rip), %rcx     # 0xb8e29
movl $0xb1c, %edx            # imm = 0xB1C
callq 0xc140
leaq 0x392a1(%rip), %rdi     # 0xb900c
leaq 0x38616(%rip), %rsi     # 0xb8388
leaq 0x390b0(%rip), %rcx     # 0xb8e29
movl $0xb2b, %edx            # imm = 0xB2B
callq 0xc140
leaq 0x391a8(%rip), %rdi     # 0xb8f32
leaq 0x385f7(%rip), %rsi     # 0xb8388
leaq 0x39091(%rip), %rcx     # 0xb8e29
movl $0xb22, %edx            # imm = 0xB22
callq 0xc140
leaq 0x39201(%rip), %rdi     # 0xb8faa
leaq 0x385d8(%rip), %rsi     # 0xb8388
leaq 0x39072(%rip), %rcx     # 0xb8e29
movl $0xb28, %edx            # imm = 0xB28
callq 0xc140
leaq 0x1f354(%rip), %rdi     # 0x9f11c
leaq 0x385b9(%rip), %rsi     # 0xb8388
leaq 0x39053(%rip), %rcx     # 0xb8e29
movl $0xb2f, %edx            # imm = 0xB2F
callq 0xc140
leaq 0x3919c(%rip), %rdi     # 0xb8f83
leaq 0x3859a(%rip), %rsi     # 0xb8388
leaq 0x39034(%rip), %rcx     # 0xb8e29
movl $0xb25, %edx            # imm = 0xB25
callq 0xc140
leaq 0x39105(%rip), %rdi     # 0xb8f0b
leaq 0x3857b(%rip), %rsi     # 0xb8388
leaq 0x39015(%rip), %rcx     # 0xb8e29
movl $0xb1f, %edx            # imm = 0xB1F
callq 0xc140