// File: /workspace/github_cpp_makefile_star2_O1/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 0x98a55
leaq 0x654f1(%rip), %rcx     # 0xfdcd0
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 0x9880c
xorl %eax, %eax
addq $0x8, %rsp
popq %rbx
popq %rbp
retq
cmpl $0x9, %edx
ja 0x98af0
movq 0x20(%rbp), %r11
movq 0x10(%rbp), %r10
movl %edx, %ecx
leaq 0x3a802(%rip), %rdx     # 0xd3028
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 0xaaa15
jmp 0x98983
movl (%r8), %r8d
cmpl $0xc0000000, %r8d       # imm = 0xC0000000
jl 0x98a74
movl (%r9), %r9d
cmpl $0x40000000, %r9d       # imm = 0x40000000
jge 0x98a74
subq $0x8, %rsp
movl $0x4, %edx
movq %rbx, %rcx
pushq %r11
pushq %rax
pushq %r10
callq 0xaaa15
jmp 0x98a02
movsd (%r8), %xmm0
ucomisd 0x3a878(%rip), %xmm0    # 0xd3118
jb 0x98a93
movsd (%r9), %xmm1
movsd 0x3a86d(%rip), %xmm2    # 0xd3120
ucomisd %xmm1, %xmm2
jb 0x98a93
subq $0x8, %rsp
movl $0x9, %edx
movq %rbx, %rcx
movq %r10, %r8
movl %eax, %r9d
pushq %r11
callq 0xacdfc
jmp 0x98a4c
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 0xaaa15
jmp 0x98925
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 0xab118
addq $0x20, %rsp
testb %al, %al
je 0x98805
movzwl -0xc(%rbp), %ecx
movw %cx, (%rbx)
jmp 0x98805
movq (%r9), %r9
testq %r9, %r9
js 0x98b0f
movq (%r8), %r8
movl $0x7, %edx
movq %rbx, %rcx
addq $0x8, %rsp
popq %rbx
popq %rbp
jmp 0xabf60
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 0xab118
addq $0x20, %rsp
testb %al, %al
je 0x98805
movb -0xc(%rbp), %cl
movb %cl, (%rbx)
jmp 0x98805
movl (%r9), %r9d
testl %r9d, %r9d
js 0x98b2e
movl (%r8), %r8d
subq $0x8, %rsp
movl $0x5, %edx
movq %rbx, %rcx
pushq %r11
pushq %rax
pushq %r10
callq 0xab118
jmp 0x98a02
movq (%r8), %r8
movabsq $-0x4000000000000000, %rcx # imm = 0xC000000000000000
cmpq %rcx, %r8
jl 0x98ab2
movq (%r9), %r9
movabsq $0x4000000000000000, %rcx # imm = 0x4000000000000000
cmpq %rcx, %r9
jge 0x98ab2
subq $0x8, %rsp
movl $0x6, %edx
movq %rbx, %rcx
pushq %r11
pushq %rax
pushq %r10
callq 0xab842
addq $0x28, %rsp
jmp 0x98809
movss (%r8), %xmm0
ucomiss 0x3a4a5(%rip), %xmm0    # 0xd2ebc
jb 0x98ad1
movss (%r9), %xmm1
movss 0x3a496(%rip), %xmm2    # 0xd2ec0
ucomiss %xmm1, %xmm2
jb 0x98ad1
subq $0x8, %rsp
movl $0x8, %edx
movq %rbx, %rcx
movq %r10, %r8
movl %eax, %r9d
pushq %r11
callq 0xac6b2
addq $0x18, %rsp
jmp 0x98809
leaq 0x3b0d1(%rip), %rdi     # 0xd3b2d
leaq 0x3a6e5(%rip), %rsi     # 0xd3148
leaq 0x3b1a2(%rip), %rcx     # 0xd3c0c
movl $0xb0f, %edx            # imm = 0xB0F
callq 0xc140
leaq 0x3b222(%rip), %rdi     # 0xd3c9d
leaq 0x3a6c6(%rip), %rsi     # 0xd3148
leaq 0x3b183(%rip), %rcx     # 0xd3c0c
movl $0xb1c, %edx            # imm = 0xB1C
callq 0xc140
leaq 0x3b355(%rip), %rdi     # 0xd3def
leaq 0x3a6a7(%rip), %rsi     # 0xd3148
leaq 0x3b164(%rip), %rcx     # 0xd3c0c
movl $0xb2b, %edx            # imm = 0xB2B
callq 0xc140
leaq 0x3b25c(%rip), %rdi     # 0xd3d15
leaq 0x3a688(%rip), %rsi     # 0xd3148
leaq 0x3b145(%rip), %rcx     # 0xd3c0c
movl $0xb22, %edx            # imm = 0xB22
callq 0xc140
leaq 0x3b2b5(%rip), %rdi     # 0xd3d8d
leaq 0x3a669(%rip), %rsi     # 0xd3148
leaq 0x3b126(%rip), %rcx     # 0xd3c0c
movl $0xb28, %edx            # imm = 0xB28
callq 0xc140
leaq 0x215f5(%rip), %rdi     # 0xba0ec
leaq 0x3a64a(%rip), %rsi     # 0xd3148
leaq 0x3b107(%rip), %rcx     # 0xd3c0c
movl $0xb2f, %edx            # imm = 0xB2F
callq 0xc140
leaq 0x3b250(%rip), %rdi     # 0xd3d66
leaq 0x3a62b(%rip), %rsi     # 0xd3148
leaq 0x3b0e8(%rip), %rcx     # 0xd3c0c
movl $0xb25, %edx            # imm = 0xB25
callq 0xc140
leaq 0x3b1b9(%rip), %rdi     # 0xd3cee
leaq 0x3a60c(%rip), %rsi     # 0xd3148
leaq 0x3b0c9(%rip), %rcx     # 0xd3c0c
movl $0xb1f, %edx            # imm = 0xB1F
callq 0xc140