// File: /workspace/github_cpp_makefile_star2_O3/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 0x96d0a
leaq 0x6523c(%rip), %rcx     # 0xfbcd0
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 0x96ac1
xorl %eax, %eax
addq $0x8, %rsp
popq %rbx
popq %rbp
retq
cmpl $0x9, %edx
ja 0x96da5
movq 0x20(%rbp), %r11
movq 0x10(%rbp), %r10
movl %edx, %ecx
leaq 0x3a41d(%rip), %rdx     # 0xd0ef8
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
movl $0x4, %edx
pushq %r11
pushq %rax
pushq %r10
callq 0xa8fde
jmp 0x96c38
movl (%r8), %r8d
cmpl $0xc0000000, %r8d       # imm = 0xC0000000
jl 0x96d29
movl (%r9), %r9d
cmpl $0x40000000, %r9d       # imm = 0x40000000
jge 0x96d29
subq $0x8, %rsp
movl $0x4, %edx
movq %rbx, %rcx
pushq %r11
pushq %rax
pushq %r10
callq 0xa8fde
jmp 0x96cb7
movsd (%r8), %xmm0
ucomisd 0x3a493(%rip), %xmm0    # 0xd0fe8
jb 0x96d48
movsd (%r9), %xmm1
movsd 0x3a488(%rip), %xmm2    # 0xd0ff0
ucomisd %xmm1, %xmm2
jb 0x96d48
subq $0x8, %rsp
movl $0x9, %edx
movq %rbx, %rcx
movq %r10, %r8
movl %eax, %r9d
pushq %r11
callq 0xab771
jmp 0x96d01
movswl (%rbx), %edx
leaq -0xc(%rbp), %rcx
movl %edx, (%rcx)
movswl (%r8), %r8d
movswl (%r9), %r9d
subq $0x8, %rsp
movl $0x4, %edx
pushq %r11
pushq %rax
pushq %r10
callq 0xa8fde
jmp 0x96bda
movzwl (%rbx), %edx
leaq -0xc(%rbp), %rcx
movl %edx, (%rcx)
movzwl (%r8), %r8d
movzwl (%r9), %r9d
subq $0x8, %rsp
movl $0x5, %edx
pushq %r11
pushq %rax
pushq %r10
callq 0xa97bf
addq $0x20, %rsp
testb %al, %al
je 0x96aba
movzwl -0xc(%rbp), %ecx
movw %cx, (%rbx)
jmp 0x96aba
movq (%r9), %r9
testq %r9, %r9
js 0x96dc4
movq (%r8), %r8
movl $0x7, %edx
movq %rbx, %rcx
addq $0x8, %rsp
popq %rbx
popq %rbp
jmp 0xaa797
movzbl (%rbx), %edx
leaq -0xc(%rbp), %rcx
movl %edx, (%rcx)
movzbl (%r8), %r8d
movzbl (%r9), %r9d
subq $0x8, %rsp
movl $0x5, %edx
pushq %r11
pushq %rax
pushq %r10
callq 0xa97bf
addq $0x20, %rsp
testb %al, %al
je 0x96aba
movb -0xc(%rbp), %cl
movb %cl, (%rbx)
jmp 0x96aba
movl (%r9), %r9d
testl %r9d, %r9d
js 0x96de3
movl (%r8), %r8d
subq $0x8, %rsp
movl $0x5, %edx
movq %rbx, %rcx
pushq %r11
pushq %rax
pushq %r10
callq 0xa97bf
jmp 0x96cb7
movq (%r8), %r8
movabsq $-0x4000000000000000, %rcx # imm = 0xC000000000000000
cmpq %rcx, %r8
jl 0x96d67
movq (%r9), %r9
movabsq $0x4000000000000000, %rcx # imm = 0x4000000000000000
cmpq %rcx, %r9
jge 0x96d67
subq $0x8, %rsp
movl $0x6, %edx
movq %rbx, %rcx
pushq %r11
pushq %rax
pushq %r10
callq 0xa9f95
addq $0x28, %rsp
jmp 0x96abe
movss (%r8), %xmm0
ucomiss 0x3a0c4(%rip), %xmm0    # 0xd0d90
jb 0x96d86
movss (%r9), %xmm1
movss 0x3a0b5(%rip), %xmm2    # 0xd0d94
ucomiss %xmm1, %xmm2
jb 0x96d86
subq $0x8, %rsp
movl $0x8, %edx
movq %rbx, %rcx
movq %r10, %r8
movl %eax, %r9d
pushq %r11
callq 0xaaf8f
addq $0x18, %rsp
jmp 0x96abe
leaq 0x3acc9(%rip), %rdi     # 0xd19da
leaq 0x3a300(%rip), %rsi     # 0xd1018
leaq 0x3ad9a(%rip), %rcx     # 0xd1ab9
movl $0xb0f, %edx            # imm = 0xB0F
callq 0xc140
leaq 0x3ae1a(%rip), %rdi     # 0xd1b4a
leaq 0x3a2e1(%rip), %rsi     # 0xd1018
leaq 0x3ad7b(%rip), %rcx     # 0xd1ab9
movl $0xb1c, %edx            # imm = 0xB1C
callq 0xc140
leaq 0x3af4d(%rip), %rdi     # 0xd1c9c
leaq 0x3a2c2(%rip), %rsi     # 0xd1018
leaq 0x3ad5c(%rip), %rcx     # 0xd1ab9
movl $0xb2b, %edx            # imm = 0xB2B
callq 0xc140
leaq 0x3ae54(%rip), %rdi     # 0xd1bc2
leaq 0x3a2a3(%rip), %rsi     # 0xd1018
leaq 0x3ad3d(%rip), %rcx     # 0xd1ab9
movl $0xb22, %edx            # imm = 0xB22
callq 0xc140
leaq 0x3aead(%rip), %rdi     # 0xd1c3a
leaq 0x3a284(%rip), %rsi     # 0xd1018
leaq 0x3ad1e(%rip), %rcx     # 0xd1ab9
movl $0xb28, %edx            # imm = 0xB28
callq 0xc140
leaq 0x21340(%rip), %rdi     # 0xb80ec
leaq 0x3a265(%rip), %rsi     # 0xd1018
leaq 0x3acff(%rip), %rcx     # 0xd1ab9
movl $0xb2f, %edx            # imm = 0xB2F
callq 0xc140
leaq 0x3ae48(%rip), %rdi     # 0xd1c13
leaq 0x3a246(%rip), %rsi     # 0xd1018
leaq 0x3ace0(%rip), %rcx     # 0xd1ab9
movl $0xb25, %edx            # imm = 0xB25
callq 0xc140
leaq 0x3adb1(%rip), %rdi     # 0xd1b9b
leaq 0x3a227(%rip), %rsi     # 0xd1018
leaq 0x3acc1(%rip), %rcx     # 0xd1ab9
movl $0xb1f, %edx            # imm = 0xB1F
callq 0xc140