// File: /workspace/github_c_makefile_star2_O2/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 $0xc8, %rsp
movl %edx, %ebp
movq %rsi, 0x90(%rsp)
movq %rdi, 0x70(%rsp)
movaps %xmm1, 0x50(%rsp)
movaps %xmm0, 0x30(%rsp)
movaps %xmm1, %xmm5
shufps $0x55, %xmm1, %xmm5     # xmm5 = xmm5[1,1],xmm1[1,1]
movaps %xmm5, 0xa0(%rsp)
shufps $0x55, %xmm0, %xmm0     # xmm0 = xmm0[1,1,1,1]
movaps %xmm0, 0x80(%rsp)
movl 0x8f79a(%rip), %ebx     # 0x9b280
movss %xmm2, 0x1c(%rsp)
subss %xmm3, %xmm2
movss %xmm4, 0x48(%rsp)
movss %xmm3, 0x4c(%rsp)
subss %xmm3, %xmm4
movss %xmm4, 0x6c(%rsp)
divss %xmm4, %xmm2
movss %xmm2, (%rsp)
pushq $0x4
popq %r15
pushq $0xc
popq %r12
movl %r15d, %edi
movl %r12d, %esi
callq 0x6e93
addl %eax, %eax
cvtsi2ss %eax, %xmm0
movaps 0x50(%rsp), %xmm1
subss %xmm0, %xmm1
mulss (%rsp), %xmm1
cvttss2si %xmm1, %r14d
movl %r15d, %edi
movl %r12d, %esi
callq 0x6e93
cvtsi2ss %eax, %xmm0
addss 0x80(%rsp), %xmm0
movss %xmm0, (%rsp)
pushq $0x11
popq %r13
movl %r15d, %edi
movl %r13d, %esi
callq 0x6e93
cvtsi2ss %eax, %xmm1
addss (%rsp), %xmm1
movaps 0x30(%rsp), %xmm0
movlhps %xmm0, %xmm1            # xmm1 = xmm1[0],xmm0[0]
shufps $0xe2, %xmm0, %xmm1     # xmm1 = xmm1[2,0],xmm0[2,3]
movaps %xmm1, (%rsp)
movl %r15d, %edi
movl %r12d, %esi
callq 0x6e93
addl %eax, %eax
cvtsi2ss %eax, %xmm0
movaps 0xa0(%rsp), %xmm1
subss %xmm0, %xmm1
movaps %xmm1, 0x20(%rsp)
movl %r15d, %edi
movl %r13d, %esi
callq 0x6e93
movaps 0x30(%rsp), %xmm2
addl %eax, %eax
cvtsi2ss %eax, %xmm0
movaps 0x20(%rsp), %xmm1
subss %xmm0, %xmm1
movq %xmm1, %xmm1            # xmm1 = xmm1[0],zero
xorps %xmm0, %xmm0
shufps $0xe2, %xmm0, %xmm1     # xmm1 = xmm1[2,0],xmm0[2,3]
testl %ebp, %ebp
jle 0xbbf8
movl %ebp, %eax
shrl %eax
movl %r14d, %ecx
subl %eax, %ecx
cvtsi2ss %ecx, %xmm0
addss %xmm2, %xmm0
movaps (%rsp), %xmm2
movss %xmm0, %xmm2            # xmm2 = xmm0[0],xmm2[1,2,3]
movaps %xmm2, (%rsp)
cvtsi2ss %ebp, %xmm1
movaps %xmm1, 0x20(%rsp)
jmp 0xbc2f
movaps %xmm1, 0x20(%rsp)
jne 0xbc2f
pushq $0x4
popq %rdi
pushq $0xc
popq %rsi
callq 0x6e93
cvtsi2ss %eax, %xmm0
addss 0x30(%rsp), %xmm0
movaps (%rsp), %xmm1
movss %xmm0, %xmm1            # xmm1 = xmm0[0],xmm1[1,2,3]
movaps %xmm1, (%rsp)
movaps 0x20(%rsp), %xmm0
cvtsi2ss %r14d, %xmm0
movaps %xmm0, 0x20(%rsp)
cmpl $0x3, %ebx
movss 0x1c(%rsp), %xmm1
movaps 0x50(%rsp), %xmm0
jne 0xbc44
pushq $0x3
popq %rbx
jmp 0xbc51
cmpb $0x0, 0x8f639(%rip)     # 0x9b284
je 0xbfed
movq 0x70(%rsp), %r14
testl %ebp, %ebp
movss %xmm1, 0x1c(%rsp)
jle 0xbcd5
pushq $0x4
popq %rdi
pushq $0xc
popq %rsi
callq 0x6e93
cvtsi2ss %eax, %xmm0
movaps 0x30(%rsp), %xmm1
addss %xmm1, %xmm0
movaps (%rsp), %xmm2
ucomiss %xmm2, %xmm0
movaps %xmm2, %xmm0
jae 0xbd10
movaps %xmm0, %xmm3
movaps 0x20(%rsp), %xmm2
addss %xmm2, %xmm0
addps 0x50(%rsp), %xmm1
ucomiss %xmm1, %xmm0
jb 0xbd35
subss %xmm2, %xmm1
movaps %xmm1, 0x70(%rsp)
pushq $0x4
popq %rdi
pushq $0xc
popq %rsi
movaps %xmm3, (%rsp)
callq 0x6e93
cvtsi2ss %eax, %xmm0
movaps 0x70(%rsp), %xmm1
subss %xmm0, %xmm1
movaps (%rsp), %xmm0
movss %xmm1, %xmm0            # xmm0 = xmm1[0],xmm0[1,2,3]
movaps %xmm0, (%rsp)
jmp 0xbd35
jne 0xbd35
movaps 0x20(%rsp), %xmm1
ucomiss %xmm0, %xmm1
jbe 0xbd35
pushq $0x4
popq %rdi
pushq $0xc
popq %rsi
movaps %xmm1, 0x20(%rsp)
callq 0x6e93
addl %eax, %eax
cvtsi2ss %eax, %xmm0
movaps 0x50(%rsp), %xmm1
subss %xmm0, %xmm1
movaps 0x20(%rsp), %xmm0
movss %xmm1, %xmm0            # xmm0 = xmm1[0],xmm0[1,2,3]
movaps %xmm0, 0x20(%rsp)
jmp 0xbd35
pushq $0x4
popq %rdi
pushq $0xc
popq %rsi
movaps %xmm0, (%rsp)
callq 0x6e93
cvtsi2ss %eax, %xmm0
addss 0x30(%rsp), %xmm0
movaps (%rsp), %xmm1
movss %xmm0, %xmm1            # xmm1 = xmm0[0],xmm1[1,2,3]
movaps %xmm1, (%rsp)
pushq $0x4
popq %r12
pushq $0xc
popq %rsi
movl %r12d, %edi
callq 0x6e93
movl %eax, %ebp
leal (%rbx,%rbx,2), %r15d
movl %r12d, %edi
movl %r15d, %esi
callq 0x6e93
movl %eax, %edi
callq 0x38400
movss 0x8e6dc(%rip), %xmm0    # 0x9a440
movl %eax, %edi
callq 0x380d5
movl %eax, %r13d
xorl %eax, %eax
cmpl $0x3, %ebx
sete %al
leal (%rax,%rax,8), %esi
incl %esi
movl %r12d, %edi
callq 0x6e93
movl %eax, %edi
callq 0x38400
movss 0x8e6ae(%rip), %xmm0    # 0x9a440
movl %eax, %edi
callq 0x380d5
movaps 0x30(%rsp), %xmm0
movaps 0x50(%rsp), %xmm1
movl %ebp, %edi
movl %r13d, %esi
movl %eax, %edx
callq 0x7476
testl $0xfffffffd, %ebx       # imm = 0xFFFFFFFD
je 0xbdc9
cmpl $0x1, %ebx
movq 0x90(%rsp), %rbx
jne 0xbe06
pushq $0x5
popq %rsi
jmp 0xbdd4
pushq $0x7
popq %rsi
movq 0x90(%rsp), %rbx
pushq $0x4
popq %rdi
callq 0x6e93
movl %eax, %edi
callq 0x38400
movss 0x8e655(%rip), %xmm0    # 0x9a440
movl %eax, %edi
callq 0x380d5
movaps (%rsp), %xmm0
movaps 0x20(%rsp), %xmm1
xorl %edi, %edi
xorl %esi, %esi
movl %eax, %edx
callq 0x7476
testq %r14, %r14
je 0xbeeb
movq %r14, %rdi
callq 0x76f6
movl %eax, %ebp
pushq $0x10
popq %r12
xorl %edi, %edi
movl %r12d, %esi
callq 0x6e93
movd %eax, %xmm0
movd %ebp, %xmm1
punpckldq %xmm0, %xmm1    # xmm1 = xmm1[0],xmm0[0],xmm1[1],xmm0[1]
cvtdq2ps %xmm1, %xmm0
movaps %xmm0, 0x20(%rsp)
movaps 0x30(%rsp), %xmm1
subss %xmm0, %xmm1
movaps %xmm1, (%rsp)
pushq $0x4
popq %rbp
pushq $0xd
popq %rsi
movl %ebp, %edi
callq 0x6e93
cvtsi2ss %eax, %xmm0
movaps (%rsp), %xmm1
subss %xmm0, %xmm1
movaps %xmm1, (%rsp)
movss 0x4d19f(%rip), %xmm0    # 0x5900c
mulss 0xa0(%rsp), %xmm0
addss 0x80(%rsp), %xmm0
movaps %xmm0, 0x90(%rsp)
xorl %edi, %edi
movl %r12d, %esi
callq 0x6e93
pushq $0x2
popq %r12
cltd
idivl %r12d
cvtsi2ss %eax, %xmm0
movaps 0x90(%rsp), %xmm1
subss %xmm0, %xmm1
movaps (%rsp), %xmm0
unpcklps %xmm1, %xmm0            # xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1]
movaps %xmm0, (%rsp)
leal 0x2(%r15), %esi
movl %ebp, %edi
callq 0x6e93
movl %eax, %edi
callq 0x38400
movss 0x8e572(%rip), %xmm0    # 0x9a440
movl %eax, %edi
callq 0x380d5
movq %r14, %rdi
movaps (%rsp), %xmm0
movaps 0x20(%rsp), %xmm1
movl %r12d, %esi
movl %eax, %edx
callq 0x8d31
testq %rbx, %rbx
je 0xbfd5
movq %rbx, %rdi
callq 0x76f6
movl %eax, %ebp
pushq $0x10
popq %r14
xorl %edi, %edi
movl %r14d, %esi
callq 0x6e93
movd %eax, %xmm0
movd %ebp, %xmm1
punpckldq %xmm0, %xmm1    # xmm1 = xmm1[0],xmm0[0],xmm1[1],xmm0[1]
cvtdq2ps %xmm1, %xmm0
movaps %xmm0, (%rsp)
movaps 0x30(%rsp), %xmm0
addss 0x50(%rsp), %xmm0
movaps %xmm0, 0x30(%rsp)
pushq $0x4
popq %rbp
pushq $0xd
popq %rsi
movl %ebp, %edi
callq 0x6e93
cvtsi2ss %eax, %xmm0
addss 0x30(%rsp), %xmm0
movaps %xmm0, 0x30(%rsp)
movaps 0xa0(%rsp), %xmm0
mulss 0x4d0b1(%rip), %xmm0    # 0x5900c
movaps 0x80(%rsp), %xmm1
addss %xmm0, %xmm1
movaps %xmm1, 0x80(%rsp)
xorl %edi, %edi
movl %r14d, %esi
callq 0x6e93
pushq $0x2
popq %rcx
cltd
idivl %ecx
cvtsi2ss %eax, %xmm0
movaps 0x80(%rsp), %xmm1
subss %xmm0, %xmm1
movaps 0x30(%rsp), %xmm0
unpcklps %xmm1, %xmm0            # xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1]
movaps %xmm0, 0x30(%rsp)
addl $0x2, %r15d
movl %ebp, %edi
movl %r15d, %esi
callq 0x6e93
movl %eax, %edi
callq 0x38400
movss 0x8e487(%rip), %xmm0    # 0x9a440
movl %eax, %edi
callq 0x380d5
movq %rbx, %rdi
movaps 0x30(%rsp), %xmm0
movaps (%rsp), %xmm1
xorl %esi, %esi
movl %eax, %edx
callq 0x8d31
movss 0x1c(%rsp), %xmm0
addq $0xc8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
callq 0x1fd8b
movaps %xmm0, 0xb0(%rsp)
movaps 0x30(%rsp), %xmm1
movaps 0x50(%rsp), %xmm2
callq 0x2a643
testb %al, %al
je 0xc092
xorl %edi, %edi
callq 0x1fdb3
testb %al, %al
je 0xc08f
pushq $0x2
popq %rbx
movl %ebp, %eax
cltd
idivl %ebx
cvtsi2ss %eax, %xmm0
addss 0x30(%rsp), %xmm0
movaps 0xb0(%rsp), %xmm5
movaps %xmm5, %xmm1
cvtsi2ss %ebp, %xmm2
subss %xmm0, %xmm1
movss 0x6c(%rsp), %xmm3
mulss %xmm1, %xmm3
movaps 0x50(%rsp), %xmm0
subss %xmm2, %xmm0
divss %xmm0, %xmm3
movaps %xmm3, %xmm1
movss 0x4c(%rsp), %xmm3
addss %xmm3, %xmm1
testl %ebp, %ebp
movss 0x48(%rsp), %xmm4
jle 0xc0ab
movss 0x4cf9d(%rip), %xmm0    # 0x59014
mulss 0x20(%rsp), %xmm0
addss %xmm5, %xmm0
movaps (%rsp), %xmm2
movss %xmm0, %xmm2            # xmm2 = xmm0[0],xmm2[1,2,3]
movaps %xmm2, (%rsp)
jmp 0xc0bc
pushq $0x1
popq %rbx
movss 0x1c(%rsp), %xmm1
movaps 0x50(%rsp), %xmm0
movss 0x4c(%rsp), %xmm3
movss 0x48(%rsp), %xmm4
jmp 0xc0c1
jne 0xc0bc
movaps 0x20(%rsp), %xmm0
cvtsi2ss %r14d, %xmm0
movaps %xmm0, 0x20(%rsp)
movaps 0x50(%rsp), %xmm0
ucomiss %xmm4, %xmm1
movq 0x70(%rsp), %r14
jbe 0xc0d3
movaps %xmm4, %xmm1
jmp 0xbc56
ucomiss %xmm1, %xmm3
jbe 0xbc56
movaps %xmm3, %xmm1
jmp 0xbc56