// File: /workspace/github_c_makefile_star2_O1/arkanis[P]process-map/./deps/raygui.h
// Function: GuiSliderPro
float GuiSliderPro(Rectangle bounds, const char *textLeft, const char *textRight, float value, float minValue, float maxValue, int sliderWidth)
{
    GuiControlState state = guiState;

    int sliderValue = (int)(((value - minValue)/(maxValue - minValue))*(bounds.width - 2*GuiGetStyle(SLIDER, BORDER_WIDTH)));

    Rectangle slider = { bounds.x, bounds.y + GuiGetStyle(SLIDER, BORDER_WIDTH) + GuiGetStyle(SLIDER, SLIDER_PADDING),
                         0, bounds.height - 2*GuiGetStyle(SLIDER, BORDER_WIDTH) - 2*GuiGetStyle(SLIDER, SLIDER_PADDING) };

    if (sliderWidth > 0)        // Slider
    {
        slider.x += (sliderValue - sliderWidth/2);
        slider.width = (float)sliderWidth;
    }
    else if (sliderWidth == 0)  // SliderBar
    {
        slider.x += GuiGetStyle(SLIDER, BORDER_WIDTH);
        slider.width = (float)sliderValue;
    }

    // Update control
    //--------------------------------------------------------------------
    if ((state != GUI_STATE_DISABLED) && !guiLocked)
    {
        Vector2 mousePoint = GetMousePosition();

        if (CheckCollisionPointRec(mousePoint, bounds))
        {
            if (IsMouseButtonDown(MOUSE_LEFT_BUTTON))
            {
                state = GUI_STATE_PRESSED;

                // Get equivalent value and slider position from mousePoint.x
                value = ((maxValue - minValue)*(mousePoint.x - (float)(bounds.x + sliderWidth/2)))/(float)(bounds.width - sliderWidth) + minValue;

                if (sliderWidth > 0) slider.x = mousePoint.x - slider.width/2;  // Slider
                else if (sliderWidth == 0) slider.width = (float)sliderValue;          // SliderBar
            }
            else state = GUI_STATE_FOCUSED;
        }

        if (value > maxValue) value = maxValue;
        else if (value < minValue) value = minValue;
    }

    // Bar limits check
    if (sliderWidth > 0)        // Slider
    {
        if (slider.x <= (bounds.x + GuiGetStyle(SLIDER, BORDER_WIDTH))) slider.x = bounds.x + GuiGetStyle(SLIDER, BORDER_WIDTH);
        else if ((slider.x + slider.width) >= (bounds.x + bounds.width)) slider.x = bounds.x + bounds.width - slider.width - GuiGetStyle(SLIDER, BORDER_WIDTH);
    }
    else if (sliderWidth == 0)  // SliderBar
    {
        if (slider.width > bounds.width) slider.width = bounds.width - 2*GuiGetStyle(SLIDER, BORDER_WIDTH);
    }
    //--------------------------------------------------------------------

    // Draw control
    //--------------------------------------------------------------------
    GuiDrawRectangle(bounds, GuiGetStyle(SLIDER, BORDER_WIDTH), Fade(GetColor(GuiGetStyle(SLIDER, BORDER + (state*3))), guiAlpha), Fade(GetColor(GuiGetStyle(SLIDER, (state != GUI_STATE_DISABLED)?  BASE_COLOR_NORMAL : BASE_COLOR_DISABLED)), guiAlpha));

    // Draw slider internal bar (depends on state)
    if ((state == GUI_STATE_NORMAL) || (state == GUI_STATE_PRESSED)) GuiDrawRectangle(slider, 0, BLANK, Fade(GetColor(GuiGetStyle(SLIDER, BASE_COLOR_PRESSED)), guiAlpha));
    else if (state == GUI_STATE_FOCUSED) GuiDrawRectangle(slider, 0, BLANK, Fade(GetColor(GuiGetStyle(SLIDER, TEXT_COLOR_FOCUSED)), guiAlpha));

    // Draw left/right text if provided
    if (textLeft != NULL)
    {
        Rectangle textBounds = { 0 };
        textBounds.width = (float)GetTextWidth(textLeft);  // TODO: Consider text icon
        textBounds.height = (float)GuiGetStyle(DEFAULT, TEXT_SIZE);
        textBounds.x = bounds.x - textBounds.width - GuiGetStyle(SLIDER, TEXT_PADDING);
        textBounds.y = bounds.y + bounds.height/2 - GuiGetStyle(DEFAULT, TEXT_SIZE)/2;

        GuiDrawText(textLeft, textBounds, GUI_TEXT_ALIGN_RIGHT, Fade(GetColor(GuiGetStyle(SLIDER, TEXT + (state*3))), guiAlpha));
    }

    if (textRight != NULL)
    {
        Rectangle textBounds = { 0 };
        textBounds.width = (float)GetTextWidth(textRight);  // TODO: Consider text icon
        textBounds.height = (float)GuiGetStyle(DEFAULT, TEXT_SIZE);
        textBounds.x = bounds.x + bounds.width + GuiGetStyle(SLIDER, TEXT_PADDING);
        textBounds.y = bounds.y + bounds.height/2 - GuiGetStyle(DEFAULT, TEXT_SIZE)/2;

        GuiDrawText(textRight, textBounds, GUI_TEXT_ALIGN_LEFT, Fade(GetColor(GuiGetStyle(SLIDER, TEXT + (state*3))), guiAlpha));
    }
    //--------------------------------------------------------------------

    return value;
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0xb8, %rsp
movl %edx, %ebp
movss %xmm4, 0x60(%rsp)
movss %xmm3, 0xc(%rsp)
movss %xmm2, 0x40(%rsp)
movq %rsi, 0xb0(%rsp)
movq %rdi, %r14
movaps %xmm1, 0x70(%rsp)
movaps %xmm0, %xmm3
movl 0x9a5f0(%rip), %r12d    # 0xa7250
cmpb $0x0, 0x9a5ee(%rip)     # 0xa7255
movaps %xmm0, 0x30(%rsp)
jne 0xcc78
callq 0x6a18
movaps 0x30(%rsp), %xmm3
movl 0x9a7c2(%rip), %ebx     # 0xa7440
addl %ebx, %ebx
movaps %xmm3, %xmm0
shufps $0x55, %xmm3, %xmm0     # xmm0 = xmm0[1,1],xmm3[1,1]
movaps %xmm0, 0x80(%rsp)
cmpb $0x0, 0x9a5bf(%rip)     # 0xa7255
jne 0xcca2
callq 0x6a18
movaps 0x30(%rsp), %xmm3
movss 0x40(%rsp), %xmm4
movss 0xc(%rsp), %xmm0
subss %xmm0, %xmm4
cvtsi2ss %ebx, %xmm6
movss 0x60(%rsp), %xmm1
xorps %xmm2, %xmm2
cvtsi2ssl 0x9a779(%rip), %xmm2 # 0xa7440
subss %xmm0, %xmm1
movss %xmm1, 0x5c(%rsp)
addss 0x80(%rsp), %xmm2
cmpb $0x0, 0x9a574(%rip)     # 0xa7255
jne 0xcd15
movaps %xmm2, 0x10(%rsp)
movss %xmm4, 0x20(%rsp)
movss %xmm6, 0xa0(%rsp)
callq 0x6a18
movss 0xa0(%rsp), %xmm6
movss 0x20(%rsp), %xmm4
movaps 0x10(%rsp), %xmm2
movaps 0x30(%rsp), %xmm3
divss 0x5c(%rsp), %xmm4
movaps 0x70(%rsp), %xmm1
movaps %xmm1, %xmm5
subss %xmm6, %xmm5
xorps %xmm0, %xmm0
cvtsi2ssl 0x9a722(%rip), %xmm0 # 0xa7454
addss %xmm0, %xmm2
shufps $0x55, %xmm1, %xmm1     # xmm1 = xmm1[1,1,1,1]
movaps %xmm1, 0xa0(%rsp)
cmpb $0x0, 0x9a50c(%rip)     # 0xa7255
jne 0xcd7d
movaps %xmm2, 0x10(%rsp)
movss %xmm4, 0x20(%rsp)
movss %xmm5, 0x90(%rsp)
callq 0x6a18
movss 0x90(%rsp), %xmm5
movss 0x20(%rsp), %xmm4
movaps 0x10(%rsp), %xmm2
movaps 0x30(%rsp), %xmm3
mulss %xmm5, %xmm4
movlhps %xmm3, %xmm2            # xmm2 = xmm2[0],xmm3[0]
movl 0x9a6b6(%rip), %eax     # 0xa7440
addl %eax, %eax
xorps %xmm0, %xmm0
cvtsi2ss %eax, %xmm0
movaps 0xa0(%rsp), %xmm1
subss %xmm0, %xmm1
cmpb $0x0, 0x9a4af(%rip)     # 0xa7255
jne 0xcdd8
movaps %xmm2, 0x10(%rsp)
movss %xmm4, 0x20(%rsp)
movaps %xmm1, 0x90(%rsp)
callq 0x6a18
movaps 0x90(%rsp), %xmm1
movss 0x20(%rsp), %xmm4
movaps 0x10(%rsp), %xmm2
movaps 0x30(%rsp), %xmm3
cvttss2si %xmm4, %ebx
shufps $0xe2, %xmm3, %xmm2     # xmm2 = xmm2[2,0],xmm3[2,3]
movl 0x9a66e(%rip), %eax     # 0xa7454
addl %eax, %eax
xorps %xmm0, %xmm0
cvtsi2ss %eax, %xmm0
subss %xmm0, %xmm1
movq %xmm1, %xmm4            # xmm4 = xmm1[0],zero
xorps %xmm0, %xmm0
shufps $0xe2, %xmm0, %xmm4     # xmm4 = xmm4[2,0],xmm0[2,3]
testl %ebp, %ebp
movss 0x40(%rsp), %xmm1
jle 0xce25
movl %ebp, %eax
shrl %eax
movl %ebx, %ecx
subl %eax, %ecx
xorps %xmm0, %xmm0
cvtsi2ss %ecx, %xmm0
addss %xmm3, %xmm0
movss %xmm0, %xmm2            # xmm2 = xmm0[0],xmm2[1,2,3]
cvtsi2ss %ebp, %xmm4
jmp 0xce6b
jne 0xce6b
cmpb $0x0, 0x9a427(%rip)     # 0xa7255
jne 0xce54
movaps %xmm2, 0x10(%rsp)
movaps %xmm4, 0x20(%rsp)
callq 0x6a18
movss 0x40(%rsp), %xmm1
movaps 0x20(%rsp), %xmm4
movaps 0x10(%rsp), %xmm2
movaps 0x30(%rsp), %xmm3
xorps %xmm0, %xmm0
cvtsi2ssl 0x9a5e1(%rip), %xmm0 # 0xa7440
addss %xmm3, %xmm0
movss %xmm0, %xmm2            # xmm2 = xmm0[0],xmm2[1,2,3]
cvtsi2ss %ebx, %xmm4
cmpl $0x3, %r12d
jne 0xce79
movl $0x3, %r12d
jmp 0xce86
cmpb $0x0, 0x9a3d4(%rip)     # 0xa7254
je 0xd341
movss %xmm1, 0xc(%rsp)
testl %ebp, %ebp
movaps %xmm4, 0x20(%rsp)
movaps %xmm2, 0x10(%rsp)
jle 0xcf1e
cmpb $0x0, 0x9a3b0(%rip)     # 0xa7255
jne 0xcebb
callq 0x6a18
movaps 0x20(%rsp), %xmm4
movaps 0x10(%rsp), %xmm2
movaps 0x30(%rsp), %xmm3
xorps %xmm0, %xmm0
cvtsi2ssl 0x9a57a(%rip), %xmm0 # 0xa7440
addss %xmm3, %xmm0
ucomiss %xmm2, %xmm0
jae 0xcf5d
movaps %xmm2, %xmm0
addss %xmm4, %xmm0
addps 0x70(%rsp), %xmm3
ucomiss %xmm3, %xmm0
jb 0xcf8d
subss %xmm4, %xmm3
cmpb $0x0, 0x9a362(%rip)     # 0xa7255
jne 0xcf09
movaps %xmm3, 0x40(%rsp)
callq 0x6a18
movaps 0x40(%rsp), %xmm3
movaps 0x10(%rsp), %xmm2
xorps %xmm0, %xmm0
cvtsi2ssl 0x9a52c(%rip), %xmm0 # 0xa7440
subss %xmm0, %xmm3
movss %xmm3, %xmm2            # xmm2 = xmm3[0],xmm2[1,2,3]
jmp 0xcf88
jne 0xcf8d
ucomiss 0x70(%rsp), %xmm4
jbe 0xcf8d
cmpb $0x0, 0x9a327(%rip)     # 0xa7255
jne 0xcf3a
callq 0x6a18
movaps 0x20(%rsp), %xmm4
movl 0x9a500(%rip), %eax     # 0xa7440
addl %eax, %eax
xorps %xmm0, %xmm0
cvtsi2ss %eax, %xmm0
movaps 0x70(%rsp), %xmm1
subss %xmm0, %xmm1
movss %xmm1, %xmm4            # xmm4 = xmm1[0],xmm4[1,2,3]
movaps %xmm4, 0x20(%rsp)
jmp 0xcf8d
cmpb $0x0, 0x9a2f1(%rip)     # 0xa7255
jne 0xcf75
callq 0x6a18
movaps 0x10(%rsp), %xmm2
movaps 0x30(%rsp), %xmm3
xorps %xmm0, %xmm0
cvtsi2ssl 0x9a4c0(%rip), %xmm0 # 0xa7440
addss %xmm3, %xmm0
movss %xmm0, %xmm2            # xmm2 = xmm0[0],xmm2[1,2,3]
movaps %xmm2, 0x10(%rsp)
cmpb $0x0, 0x9a2c1(%rip)     # 0xa7255
jne 0xcf9b
callq 0x6a18
movl 0x9a49f(%rip), %ebp     # 0xa7440
leal (%r12,%r12,2), %r13d
cmpb $0x0, 0x9a2a9(%rip)     # 0xa7255
jne 0xcfb3
callq 0x6a18
movslq %r13d, %rax
leaq 0x9a2d3(%rip), %rbx     # 0xa7290
movl 0x180(%rbx,%rax,4), %edi
callq 0x44152
movss 0x9945f(%rip), %xmm0    # 0xa6430
movl %eax, %edi
callq 0x43e1c
movl %eax, %r15d
cmpb $0x0, 0x9a273(%rip)     # 0xa7255
jne 0xcfe9
callq 0x6a18
xorl %eax, %eax
cmpl $0x3, %r12d
sete %al
shll $0x2, %eax
leal (%rax,%rax,8), %eax
movl 0x184(%rax,%rbx), %edi
callq 0x44152
movss 0x99424(%rip), %xmm0    # 0xa6430
movl %eax, %edi
callq 0x43e1c
movaps 0x30(%rsp), %xmm0
movaps 0x70(%rsp), %xmm1
movl %ebp, %edi
movl %r15d, %esi
movl %eax, %edx
callq 0x7546
testl $0xfffffffd, %r12d      # imm = 0xFFFFFFFD
je 0xd04e
cmpl $0x1, %r12d
jne 0xd0a7
cmpb $0x0, 0x9a216(%rip)     # 0xa7255
jne 0xd046
callq 0x6a18
movl 0x9a3d8(%rip), %edi     # 0xa7424
jmp 0xd062
cmpb $0x0, 0x9a200(%rip)     # 0xa7255
jne 0xd05c
callq 0x6a18
movl 0x9a3ca(%rip), %edi     # 0xa742c
callq 0x44152
movss 0x993c1(%rip), %xmm0    # 0xa6430
movl %eax, %edi
callq 0x43e1c
cmpl $0x1000000, %eax        # imm = 0x1000000
jb 0xd0a7
movaps 0x10(%rsp), %xmm0
cvttss2si %xmm0, %edi
shufps $0x55, %xmm0, %xmm0     # xmm0 = xmm0[1,1,1,1]
cvttss2si %xmm0, %esi
movaps 0x20(%rsp), %xmm0
cvttss2si %xmm0, %edx
shufps $0x55, %xmm0, %xmm0     # xmm0 = xmm0[1,1,1,1]
cvttss2si %xmm0, %ecx
movl %eax, %r8d
callq 0x31115
testq %r14, %r14
je 0xd1e2
movq %r14, %rdi
callq 0x7821
xorps %xmm4, %xmm4
cvtsi2ss %eax, %xmm4
cmpb $0x0, 0x9a18f(%rip)     # 0xa7255
movaps %xmm4, 0x20(%rsp)
jne 0xd0d7
callq 0x6a18
movaps 0x20(%rsp), %xmm4
xorps %xmm1, %xmm1
cvtsi2ssl 0x9a1ee(%rip), %xmm1 # 0xa72d0
movaps 0x30(%rsp), %xmm3
subss %xmm4, %xmm3
cmpb $0x0, 0x9a163(%rip)     # 0xa7255
jne 0xd112
movaps %xmm1, 0x10(%rsp)
movaps %xmm3, 0x60(%rsp)
callq 0x6a18
movaps 0x20(%rsp), %xmm4
movaps 0x60(%rsp), %xmm3
movaps 0x10(%rsp), %xmm1
xorps %xmm0, %xmm0
cvtsi2ssl 0x9a327(%rip), %xmm0 # 0xa7444
movlhps %xmm4, %xmm1            # xmm1 = xmm1[0],xmm4[0]
subss %xmm0, %xmm3
movss 0x5aee4(%rip), %xmm2    # 0x68010
mulss 0xa0(%rsp), %xmm2
addss 0x80(%rsp), %xmm2
cmpb $0x0, 0x9a110(%rip)     # 0xa7255
jne 0xd16f
movaps %xmm1, 0x10(%rsp)
movaps %xmm2, 0x40(%rsp)
movaps %xmm3, 0x60(%rsp)
callq 0x6a18
movaps 0x20(%rsp), %xmm4
movaps 0x60(%rsp), %xmm3
movaps 0x40(%rsp), %xmm2
movaps 0x10(%rsp), %xmm1
shufps $0xe2, %xmm4, %xmm1     # xmm1 = xmm1[2,0],xmm4[2,3]
movaps %xmm1, 0x10(%rsp)
movl 0x9a152(%rip), %eax     # 0xa72d0
movl %eax, %ecx
shrl $0x1f, %ecx
addl %eax, %ecx
sarl %ecx
xorps %xmm0, %xmm0
cvtsi2ss %ecx, %xmm0
subss %xmm0, %xmm2
movlhps %xmm3, %xmm2            # xmm2 = xmm2[0],xmm3[0]
shufps $0xe2, %xmm3, %xmm2     # xmm2 = xmm2[2,0],xmm3[2,3]
movaps %xmm2, 0x40(%rsp)
cmpb $0x0, 0x9a0b0(%rip)     # 0xa7255
jne 0xd1ac
callq 0x6a18
leal 0x62(%r13), %eax
cltq
movl (%rbx,%rax,4), %edi
callq 0x44152
movss 0x9926e(%rip), %xmm0    # 0xa6430
movl %eax, %edi
callq 0x43e1c
movq %r14, %rdi
movaps 0x40(%rsp), %xmm0
movaps 0x10(%rsp), %xmm1
movl $0x2, %esi
movl %eax, %edx
callq 0x95ee
movq 0xb0(%rsp), %r14
testq %r14, %r14
je 0xd329
movq %r14, %rdi
callq 0x7821
xorps %xmm0, %xmm0
cvtsi2ss %eax, %xmm0
movaps %xmm0, 0x40(%rsp)
cmpb $0x0, 0x9a047(%rip)     # 0xa7255
jne 0xd215
callq 0x6a18
xorps %xmm3, %xmm3
cvtsi2ssl 0x9a0b0(%rip), %xmm3 # 0xa72d0
movaps 0x30(%rsp), %xmm2
addss 0x70(%rsp), %xmm2
cmpb $0x0, 0x9a023(%rip)     # 0xa7255
jne 0xd24d
movaps %xmm2, 0x30(%rsp)
movaps %xmm3, 0x10(%rsp)
callq 0x6a18
movaps 0x10(%rsp), %xmm3
movaps 0x30(%rsp), %xmm2
xorps %xmm0, %xmm0
cvtsi2ssl 0x9a1ec(%rip), %xmm0 # 0xa7444
unpcklpd 0x40(%rsp), %xmm3       # xmm3 = xmm3[0],mem[0]
movaps 0xa0(%rsp), %xmm1
mulss 0x5ada2(%rip), %xmm1    # 0x68010
addss %xmm0, %xmm2
movaps 0x80(%rsp), %xmm0
addss %xmm1, %xmm0
movaps %xmm0, 0x80(%rsp)
cmpb $0x0, 0x99fc8(%rip)     # 0xa7255
jne 0xd2a8
movaps %xmm2, 0x30(%rsp)
movaps %xmm3, 0x10(%rsp)
callq 0x6a18
movaps 0x10(%rsp), %xmm3
movaps 0x30(%rsp), %xmm2
shufps $0xe2, 0x40(%rsp), %xmm3 # xmm3 = xmm3[2,0],mem[2,3]
movaps %xmm3, 0x10(%rsp)
movl 0x9a017(%rip), %eax     # 0xa72d0
movl %eax, %ecx
shrl $0x1f, %ecx
addl %eax, %ecx
sarl %ecx
xorps %xmm0, %xmm0
cvtsi2ss %ecx, %xmm0
movaps 0x80(%rsp), %xmm1
subss %xmm0, %xmm1
movlhps %xmm2, %xmm1            # xmm1 = xmm1[0],xmm2[0]
shufps $0xe2, %xmm2, %xmm1     # xmm1 = xmm1[2,0],xmm2[2,3]
movaps %xmm1, 0x80(%rsp)
cmpb $0x0, 0x99f6a(%rip)     # 0xa7255
jne 0xd2f2
callq 0x6a18
addl $0x62, %r13d
movslq %r13d, %rax
movl (%rbx,%rax,4), %edi
callq 0x44152
movss 0x99127(%rip), %xmm0    # 0xa6430
movl %eax, %edi
callq 0x43e1c
movq %r14, %rdi
movaps 0x80(%rsp), %xmm0
movaps 0x10(%rsp), %xmm1
xorl %esi, %esi
movl %eax, %edx
callq 0x95ee
movss 0xc(%rsp), %xmm0
addq $0xb8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movaps %xmm4, 0x20(%rsp)
movaps %xmm2, 0x10(%rsp)
callq 0x2867d
movaps %xmm0, 0x90(%rsp)
movaps 0x30(%rsp), %xmm1
movaps 0x70(%rsp), %xmm2
callq 0x34d6b
testb %al, %al
je 0xd3f9
xorl %edi, %edi
callq 0x286ba
movl $0x1, %r12d
testb %al, %al
je 0xd3f9
movl %ebp, %eax
shrl $0x1f, %eax
addl %ebp, %eax
sarl %eax
xorps %xmm0, %xmm0
cvtsi2ss %eax, %xmm0
movaps 0x30(%rsp), %xmm3
addss %xmm3, %xmm0
movaps 0x90(%rsp), %xmm5
movaps %xmm5, %xmm1
xorps %xmm2, %xmm2
cvtsi2ss %ebp, %xmm2
subss %xmm0, %xmm1
movss 0x5c(%rsp), %xmm4
mulss %xmm1, %xmm4
movaps 0x70(%rsp), %xmm0
subss %xmm2, %xmm0
divss %xmm0, %xmm4
movaps %xmm4, %xmm1
addss 0xc(%rsp), %xmm1
testl %ebp, %ebp
movaps 0x20(%rsp), %xmm4
jle 0xd416
movss 0x5ac3c(%rip), %xmm0    # 0x6801c
mulss %xmm4, %xmm0
addss %xmm5, %xmm0
movaps 0x10(%rsp), %xmm2
movss %xmm0, %xmm2            # xmm2 = xmm0[0],xmm2[1,2,3]
movl $0x2, %r12d
jmp 0xd427
movaps 0x30(%rsp), %xmm3
movaps 0x10(%rsp), %xmm2
movaps 0x20(%rsp), %xmm4
movss 0x60(%rsp), %xmm0
movss 0x40(%rsp), %xmm1
jmp 0xd42d
movl $0x2, %r12d
movaps 0x10(%rsp), %xmm2
jne 0xd427
cvtsi2ss %ebx, %xmm4
movss 0x60(%rsp), %xmm0
ucomiss %xmm0, %xmm1
jbe 0xd43d
movss %xmm0, 0xc(%rsp)
jmp 0xce8c
movss 0xc(%rsp), %xmm0
ucomiss %xmm1, %xmm0
jbe 0xce86
jmp 0xce8c