// File: /workspace/github_cpp_makefile_star2_O2/Ciaxur[P]yagb-emu/include/imgui/imgui.cpp
// Function: ImGui::GetNavInputAmount2d(int, ImGuiInputReadMode, float, float)
ImVec2 ImGui::GetNavInputAmount2d(ImGuiNavDirSourceFlags dir_sources, ImGuiInputReadMode mode, float slow_factor, float fast_factor)
{
    ImVec2 delta(0.0f, 0.0f);
    if (dir_sources & ImGuiNavDirSourceFlags_Keyboard)
        delta += ImVec2(GetNavInputAmount(ImGuiNavInput_KeyRight_, mode)   - GetNavInputAmount(ImGuiNavInput_KeyLeft_,   mode), GetNavInputAmount(ImGuiNavInput_KeyDown_,   mode) - GetNavInputAmount(ImGuiNavInput_KeyUp_,   mode));
    if (dir_sources & ImGuiNavDirSourceFlags_PadDPad)
        delta += ImVec2(GetNavInputAmount(ImGuiNavInput_DpadRight, mode)   - GetNavInputAmount(ImGuiNavInput_DpadLeft,   mode), GetNavInputAmount(ImGuiNavInput_DpadDown,   mode) - GetNavInputAmount(ImGuiNavInput_DpadUp,   mode));
    if (dir_sources & ImGuiNavDirSourceFlags_PadLStick)
        delta += ImVec2(GetNavInputAmount(ImGuiNavInput_LStickRight, mode) - GetNavInputAmount(ImGuiNavInput_LStickLeft, mode), GetNavInputAmount(ImGuiNavInput_LStickDown, mode) - GetNavInputAmount(ImGuiNavInput_LStickUp, mode));
    if (slow_factor != 0.0f && IsNavInputDown(ImGuiNavInput_TweakSlow))
        delta *= slow_factor;
    if (fast_factor != 0.0f && IsNavInputDown(ImGuiNavInput_TweakFast))
        delta *= fast_factor;
    return delta;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r14
pushq %rbx
subq $0x30, %rsp
movss %xmm1, -0x1c(%rbp)
movss %xmm0, -0x18(%rbp)
movl %esi, %ebx
movl %edi, %r14d
xorps %xmm2, %xmm2
testb $0x1, %r14b
je 0x45841
pushq $0x12
popq %rdi
movl %ebx, %esi
callq 0x456b9
movaps %xmm0, -0x40(%rbp)
pushq $0x11
popq %rdi
movl %ebx, %esi
callq 0x456b9
movaps -0x40(%rbp), %xmm1
subss %xmm0, %xmm1
movaps %xmm1, -0x40(%rbp)
pushq $0x14
popq %rdi
movl %ebx, %esi
callq 0x456b9
movaps %xmm0, -0x30(%rbp)
pushq $0x13
popq %rdi
movl %ebx, %esi
callq 0x456b9
movaps -0x40(%rbp), %xmm2
movaps -0x30(%rbp), %xmm1
subss %xmm0, %xmm1
xorps %xmm0, %xmm0
addss %xmm0, %xmm2
addss %xmm0, %xmm1
unpcklps %xmm1, %xmm2            # xmm2 = xmm2[0],xmm1[0],xmm2[1],xmm1[1]
testb $0x2, %r14b
je 0x458a8
pushq $0x5
popq %rdi
movl %ebx, %esi
movaps %xmm2, -0x40(%rbp)
callq 0x456b9
movaps %xmm0, -0x30(%rbp)
pushq $0x4
popq %rdi
movl %ebx, %esi
callq 0x456b9
movaps -0x30(%rbp), %xmm1
subss %xmm0, %xmm1
movaps %xmm1, -0x30(%rbp)
pushq $0x7
popq %rdi
movl %ebx, %esi
callq 0x456b9
movss %xmm0, -0x14(%rbp)
pushq $0x6
popq %rdi
movl %ebx, %esi
callq 0x456b9
movss -0x14(%rbp), %xmm1
subss %xmm0, %xmm1
movaps -0x40(%rbp), %xmm0
movaps -0x30(%rbp), %xmm2
addss %xmm0, %xmm2
shufps $0x55, %xmm0, %xmm0     # xmm0 = xmm0[1,1,1,1]
addss %xmm1, %xmm0
unpcklps %xmm0, %xmm2            # xmm2 = xmm2[0],xmm0[0],xmm2[1],xmm0[1]
testb $0x4, %r14b
je 0x4590f
pushq $0x9
popq %rdi
movl %ebx, %esi
movaps %xmm2, -0x40(%rbp)
callq 0x456b9
movaps %xmm0, -0x30(%rbp)
pushq $0x8
popq %rdi
movl %ebx, %esi
callq 0x456b9
movaps -0x30(%rbp), %xmm1
subss %xmm0, %xmm1
movaps %xmm1, -0x30(%rbp)
pushq $0xb
popq %rdi
movl %ebx, %esi
callq 0x456b9
movss %xmm0, -0x14(%rbp)
pushq $0xa
popq %rdi
movl %ebx, %esi
callq 0x456b9
movss -0x14(%rbp), %xmm1
subss %xmm0, %xmm1
movaps -0x40(%rbp), %xmm0
movaps -0x30(%rbp), %xmm2
addss %xmm0, %xmm2
shufps $0x55, %xmm0, %xmm0     # xmm0 = xmm0[1,1,1,1]
addss %xmm1, %xmm0
unpcklps %xmm0, %xmm2            # xmm2 = xmm2[0],xmm0[0],xmm2[1],xmm0[1]
xorps %xmm0, %xmm0
movss -0x18(%rbp), %xmm1
ucomiss %xmm0, %xmm1
jne 0x4591e
jnp 0x4594c
movq 0x9e3bb(%rip), %rax     # 0xe3ce0
movss 0x37c(%rax), %xmm1
ucomiss %xmm0, %xmm1
jbe 0x4594c
movaps %xmm2, %xmm1
movss -0x18(%rbp), %xmm3
mulss %xmm3, %xmm1
shufps $0x55, %xmm2, %xmm2     # xmm2 = xmm2[1,1,1,1]
mulss %xmm3, %xmm2
unpcklps %xmm2, %xmm1            # xmm1 = xmm1[0],xmm2[0],xmm1[1],xmm2[1]
movaps %xmm1, %xmm2
movss -0x1c(%rbp), %xmm1
ucomiss %xmm0, %xmm1
jne 0x45958
jnp 0x45989
movq 0x9e381(%rip), %rax     # 0xe3ce0
movss 0x380(%rax), %xmm0
xorps %xmm1, %xmm1
ucomiss %xmm1, %xmm0
jbe 0x45989
movaps %xmm2, %xmm0
movss -0x1c(%rbp), %xmm1
mulss %xmm1, %xmm0
shufps $0x55, %xmm2, %xmm2     # xmm2 = xmm2[1,1,1,1]
mulss %xmm1, %xmm2
unpcklps %xmm2, %xmm0            # xmm0 = xmm0[0],xmm2[0],xmm0[1],xmm2[1]
movaps %xmm0, %xmm2
movaps %xmm2, %xmm0
addq $0x30, %rsp
popq %rbx
popq %r14
popq %rbp
retq