// File: 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
subq $0x80, %rsp
movq 0x20(%rbp), %rax
movl 0x18(%rbp), %eax
movq 0x10(%rbp), %rax
movq %rdi, -0x10(%rbp)
movl %esi, -0x14(%rbp)
movl %edx, -0x18(%rbp)
movq %rcx, -0x20(%rbp)
movq %r8, -0x28(%rbp)
movq %r9, -0x30(%rbp)
cmpl $0x1, 0x18(%rbp)
je 0x143a55
movl 0x18(%rbp), %ecx
andl $0x7000000f, %ecx       # imm = 0x7000000F
xorl %eax, %eax
cmpl $0x0, %ecx
movb %al, -0x56(%rbp)
jne 0x143a5c
movb $0x1, %al
movb %al, -0x56(%rbp)
jmp 0x143a5c
movb -0x56(%rbp), %al
testb $0x1, %al
jne 0x143a65
jmp 0x143a67
jmp 0x143a86
leaq 0x4b4f8(%rip), %rdi     # 0x18ef66
leaq 0x4a96b(%rip), %rsi     # 0x18e3e0
movl $0xb0f, %edx            # imm = 0xB0F
leaq 0x4b5c4(%rip), %rcx     # 0x18f045
callq 0xd180
leaq 0xcf4b3(%rip), %rax     # 0x212f40
movq (%rax), %rax
movq %rax, -0x38(%rbp)
movq -0x38(%rbp), %rax
movq 0x1ae0(%rax), %rax
movl 0x1cc(%rax), %eax
andl $0x80, %eax
cmpl $0x0, %eax
jne 0x143abc
movl 0x18(%rbp), %eax
andl $0x200000, %eax         # imm = 0x200000
cmpl $0x0, %eax
je 0x143ac5
movb $0x0, -0x1(%rbp)
jmp 0x144003
movl -0x18(%rbp), %eax
movq %rax, -0x60(%rbp)
subq $0xa, %rax
ja 0x143fe4
movq -0x60(%rbp), %rax
leaq 0x4a83f(%rip), %rcx     # 0x18e320
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
movq -0x20(%rbp), %rax
movsbl (%rax), %eax
movl %eax, -0x3c(%rbp)
movq -0x10(%rbp), %rdi
movl -0x14(%rbp), %esi
movq -0x28(%rbp), %rax
movsbl (%rax), %r8d
movq -0x30(%rbp), %rax
movsbl (%rax), %r9d
movq 0x10(%rbp), %r11
movl 0x18(%rbp), %r10d
movq 0x20(%rbp), %rax
movl $0x4, %edx
leaq -0x3c(%rbp), %rcx
movq %r11, (%rsp)
movl %r10d, 0x8(%rsp)
movq %rax, 0x10(%rsp)
callq 0x15e640
andb $0x1, %al
movb %al, -0x3d(%rbp)
testb $0x1, -0x3d(%rbp)
je 0x143b49
movl -0x3c(%rbp), %eax
movb %al, %cl
movq -0x20(%rbp), %rax
movb %cl, (%rax)
movb -0x3d(%rbp), %al
andb $0x1, %al
movb %al, -0x1(%rbp)
jmp 0x144003
movq -0x20(%rbp), %rax
movzbl (%rax), %eax
movl %eax, -0x44(%rbp)
movq -0x10(%rbp), %rdi
movl -0x14(%rbp), %esi
movq -0x28(%rbp), %rax
movzbl (%rax), %r8d
movq -0x30(%rbp), %rax
movzbl (%rax), %r9d
movq 0x10(%rbp), %r11
movl 0x18(%rbp), %r10d
movq 0x20(%rbp), %rax
movl $0x5, %edx
leaq -0x44(%rbp), %rcx
movq %r11, (%rsp)
movl %r10d, 0x8(%rsp)
movq %rax, 0x10(%rsp)
callq 0x15f000
andb $0x1, %al
movb %al, -0x45(%rbp)
testb $0x1, -0x45(%rbp)
je 0x143bb5
movl -0x44(%rbp), %eax
movb %al, %cl
movq -0x20(%rbp), %rax
movb %cl, (%rax)
movb -0x45(%rbp), %al
andb $0x1, %al
movb %al, -0x1(%rbp)
jmp 0x144003
movq -0x20(%rbp), %rax
movswl (%rax), %eax
movl %eax, -0x4c(%rbp)
movq -0x10(%rbp), %rdi
movl -0x14(%rbp), %esi
movq -0x28(%rbp), %rax
movswl (%rax), %r8d
movq -0x30(%rbp), %rax
movswl (%rax), %r9d
movq 0x10(%rbp), %r11
movl 0x18(%rbp), %r10d
movq 0x20(%rbp), %rax
movl $0x4, %edx
leaq -0x4c(%rbp), %rcx
movq %r11, (%rsp)
movl %r10d, 0x8(%rsp)
movq %rax, 0x10(%rsp)
callq 0x15e640
andb $0x1, %al
movb %al, -0x4d(%rbp)
testb $0x1, -0x4d(%rbp)
je 0x143c23
movl -0x4c(%rbp), %eax
movw %ax, %cx
movq -0x20(%rbp), %rax
movw %cx, (%rax)
movb -0x4d(%rbp), %al
andb $0x1, %al
movb %al, -0x1(%rbp)
jmp 0x144003
movq -0x20(%rbp), %rax
movzwl (%rax), %eax
movl %eax, -0x54(%rbp)
movq -0x10(%rbp), %rdi
movl -0x14(%rbp), %esi
movq -0x28(%rbp), %rax
movzwl (%rax), %r8d
movq -0x30(%rbp), %rax
movzwl (%rax), %r9d
movq 0x10(%rbp), %r11
movl 0x18(%rbp), %r10d
movq 0x20(%rbp), %rax
movl $0x5, %edx
leaq -0x54(%rbp), %rcx
movq %r11, (%rsp)
movl %r10d, 0x8(%rsp)
movq %rax, 0x10(%rsp)
callq 0x15f000
andb $0x1, %al
movb %al, -0x55(%rbp)
testb $0x1, -0x55(%rbp)
je 0x143c91
movl -0x54(%rbp), %eax
movw %ax, %cx
movq -0x20(%rbp), %rax
movw %cx, (%rax)
movb -0x55(%rbp), %al
andb $0x1, %al
movb %al, -0x1(%rbp)
jmp 0x144003
movq -0x28(%rbp), %rcx
xorl %eax, %eax
cmpl $0xc0000000, (%rcx)     # imm = 0xC0000000
movb %al, -0x61(%rbp)
jl 0x143cbf
movq -0x30(%rbp), %rax
cmpl $0x3fffffff, (%rax)     # imm = 0x3FFFFFFF
setle %al
movb %al, -0x61(%rbp)
movb -0x61(%rbp), %al
testb $0x1, %al
jne 0x143cc8
jmp 0x143cca
jmp 0x143ce9
leaq 0x4b405(%rip), %rdi     # 0x18f0d6
leaq 0x4a708(%rip), %rsi     # 0x18e3e0
movl $0xb1c, %edx            # imm = 0xB1C
leaq 0x4b361(%rip), %rcx     # 0x18f045
callq 0xd180
movq -0x10(%rbp), %rdi
movl -0x14(%rbp), %esi
movl -0x18(%rbp), %edx
movq -0x20(%rbp), %rcx
movq -0x28(%rbp), %rax
movl (%rax), %r8d
movq -0x30(%rbp), %rax
movl (%rax), %r9d
movq 0x10(%rbp), %r11
movl 0x18(%rbp), %r10d
movq 0x20(%rbp), %rax
movq %r11, (%rsp)
movl %r10d, 0x8(%rsp)
movq %rax, 0x10(%rsp)
callq 0x15e640
andb $0x1, %al
movb %al, -0x1(%rbp)
jmp 0x144003
movq -0x30(%rbp), %rax
cmpl $0x7fffffff, (%rax)     # imm = 0x7FFFFFFF
ja 0x143d3c
jmp 0x143d5b
leaq 0x4b3e4(%rip), %rdi     # 0x18f127
leaq 0x4a696(%rip), %rsi     # 0x18e3e0
movl $0xb1f, %edx            # imm = 0xB1F
leaq 0x4b2ef(%rip), %rcx     # 0x18f045
callq 0xd180
movq -0x10(%rbp), %rdi
movl -0x14(%rbp), %esi
movl -0x18(%rbp), %edx
movq -0x20(%rbp), %rcx
movq -0x28(%rbp), %rax
movl (%rax), %r8d
movq -0x30(%rbp), %rax
movl (%rax), %r9d
movq 0x10(%rbp), %r11
movl 0x18(%rbp), %r10d
movq 0x20(%rbp), %rax
movq %r11, (%rsp)
movl %r10d, 0x8(%rsp)
movq %rax, 0x10(%rsp)
callq 0x15f000
andb $0x1, %al
movb %al, -0x1(%rbp)
jmp 0x144003
movq -0x28(%rbp), %rcx
xorl %eax, %eax
movabsq $-0x4000000000000000, %rdx # imm = 0xC000000000000000
cmpq %rdx, (%rcx)
movb %al, -0x62(%rbp)
jl 0x143dcf
movq -0x30(%rbp), %rax
movabsq $0x3fffffffffffffff, %rcx # imm = 0x3FFFFFFFFFFFFFFF
cmpq %rcx, (%rax)
setle %al
movb %al, -0x62(%rbp)
movb -0x62(%rbp), %al
testb $0x1, %al
jne 0x143dd8
jmp 0x143dda
jmp 0x143df9
leaq 0x4b36d(%rip), %rdi     # 0x18f14e
leaq 0x4a5f8(%rip), %rsi     # 0x18e3e0
movl $0xb22, %edx            # imm = 0xB22
leaq 0x4b251(%rip), %rcx     # 0x18f045
callq 0xd180
movq -0x10(%rbp), %rdi
movl -0x14(%rbp), %esi
movl -0x18(%rbp), %edx
movq -0x20(%rbp), %rcx
movq -0x28(%rbp), %rax
movq (%rax), %r8
movq -0x30(%rbp), %rax
movq (%rax), %r9
movq 0x10(%rbp), %r11
movl 0x18(%rbp), %r10d
movq 0x20(%rbp), %rax
movq %r11, (%rsp)
movl %r10d, 0x8(%rsp)
movq %rax, 0x10(%rsp)
callq 0x15f9c0
andb $0x1, %al
movb %al, -0x1(%rbp)
jmp 0x144003
movq -0x30(%rbp), %rax
movabsq $0x7fffffffffffffff, %rcx # imm = 0x7FFFFFFFFFFFFFFF
cmpq %rcx, (%rax)
ja 0x143e53
jmp 0x143e72
leaq 0x4b345(%rip), %rdi     # 0x18f19f
leaq 0x4a57f(%rip), %rsi     # 0x18e3e0
movl $0xb25, %edx            # imm = 0xB25
leaq 0x4b1d8(%rip), %rcx     # 0x18f045
callq 0xd180
movq -0x10(%rbp), %rdi
movl -0x14(%rbp), %esi
movl -0x18(%rbp), %edx
movq -0x20(%rbp), %rcx
movq -0x28(%rbp), %rax
movq (%rax), %r8
movq -0x30(%rbp), %rax
movq (%rax), %r9
movq 0x10(%rbp), %r11
movl 0x18(%rbp), %r10d
movq 0x20(%rbp), %rax
movq %r11, (%rsp)
movl %r10d, 0x8(%rsp)
movq %rax, 0x10(%rsp)
callq 0x1603f0
andb $0x1, %al
movb %al, -0x1(%rbp)
jmp 0x144003
movq -0x28(%rbp), %rax
movss (%rax), %xmm0
xorl %eax, %eax
movss 0x4a323(%rip), %xmm1    # 0x18e1ec
ucomiss %xmm1, %xmm0
movb %al, -0x63(%rbp)
jb 0x143ee6
movq -0x30(%rbp), %rax
movss 0x4a313(%rip), %xmm0    # 0x18e1f0
ucomiss (%rax), %xmm0
setae %al
movb %al, -0x63(%rbp)
movb -0x63(%rbp), %al
testb $0x1, %al
jne 0x143eef
jmp 0x143ef1
jmp 0x143f10
leaq 0x4b2ce(%rip), %rdi     # 0x18f1c6
leaq 0x4a4e1(%rip), %rsi     # 0x18e3e0
movl $0xb28, %edx            # imm = 0xB28
leaq 0x4b13a(%rip), %rcx     # 0x18f045
callq 0xd180
movq -0x10(%rbp), %rdi
movl -0x14(%rbp), %esi
movl -0x18(%rbp), %edx
movq -0x20(%rbp), %rcx
movq -0x28(%rbp), %rax
movss (%rax), %xmm0
movq -0x30(%rbp), %rax
movss (%rax), %xmm1
movq 0x10(%rbp), %r8
movl 0x18(%rbp), %r9d
movq 0x20(%rbp), %rax
movq %rax, (%rsp)
callq 0x160e20
andb $0x1, %al
movb %al, -0x1(%rbp)
jmp 0x144003
movq -0x28(%rbp), %rax
movsd (%rax), %xmm0
xorl %eax, %eax
movsd 0x4a439(%rip), %xmm1    # 0x18e398
ucomisd %xmm1, %xmm0
movb %al, -0x64(%rbp)
jb 0x143f7e
movq -0x30(%rbp), %rax
movsd 0x4a42c(%rip), %xmm0    # 0x18e3a0
ucomisd (%rax), %xmm0
setae %al
movb %al, -0x64(%rbp)
movb -0x64(%rbp), %al
testb $0x1, %al
jne 0x143f87
jmp 0x143f89
jmp 0x143fa8
leaq 0x4b298(%rip), %rdi     # 0x18f228
leaq 0x4a449(%rip), %rsi     # 0x18e3e0
movl $0xb2b, %edx            # imm = 0xB2B
leaq 0x4b0a2(%rip), %rcx     # 0x18f045
callq 0xd180
movq -0x10(%rbp), %rdi
movl -0x14(%rbp), %esi
movl -0x18(%rbp), %edx
movq -0x20(%rbp), %rcx
movq -0x28(%rbp), %rax
movsd (%rax), %xmm0
movq -0x30(%rbp), %rax
movsd (%rax), %xmm1
movq 0x10(%rbp), %r8
movl 0x18(%rbp), %r9d
movq 0x20(%rbp), %rax
movq %rax, (%rsp)
callq 0x161880
andb $0x1, %al
movb %al, -0x1(%rbp)
jmp 0x144003
jmp 0x143fe4
leaq 0x3111f(%rip), %rdi     # 0x17510a
leaq 0x4a3ee(%rip), %rsi     # 0x18e3e0
movl $0xb2f, %edx            # imm = 0xB2F
leaq 0x4b047(%rip), %rcx     # 0x18f045
callq 0xd180
movb -0x1(%rbp), %al
andb $0x1, %al
addq $0x80, %rsp
popq %rbp
retq
nopw %cs:(%rax,%rax)