// File: /workspace/github_cpp_makefile_star2_O1/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 0x59198
movl $0x12, %edi
movl %ebx, %esi
callq 0x59005
movaps %xmm0, -0x40(%rbp)
movl $0x11, %edi
movl %ebx, %esi
callq 0x59005
movaps -0x40(%rbp), %xmm1
subss %xmm0, %xmm1
movaps %xmm1, -0x40(%rbp)
movl $0x14, %edi
movl %ebx, %esi
callq 0x59005
movaps %xmm0, -0x30(%rbp)
movl $0x13, %edi
movl %ebx, %esi
callq 0x59005
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 0x59207
movl $0x5, %edi
movl %ebx, %esi
movaps %xmm2, -0x40(%rbp)
callq 0x59005
movaps %xmm0, -0x30(%rbp)
movl $0x4, %edi
movl %ebx, %esi
callq 0x59005
movaps -0x30(%rbp), %xmm1
subss %xmm0, %xmm1
movaps %xmm1, -0x30(%rbp)
movl $0x7, %edi
movl %ebx, %esi
callq 0x59005
movss %xmm0, -0x14(%rbp)
movl $0x6, %edi
movl %ebx, %esi
callq 0x59005
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 0x59276
movl $0x9, %edi
movl %ebx, %esi
movaps %xmm2, -0x40(%rbp)
callq 0x59005
movaps %xmm0, -0x30(%rbp)
movl $0x8, %edi
movl %ebx, %esi
callq 0x59005
movaps -0x30(%rbp), %xmm1
subss %xmm0, %xmm1
movaps %xmm1, -0x30(%rbp)
movl $0xb, %edi
movl %ebx, %esi
callq 0x59005
movss %xmm0, -0x14(%rbp)
movl $0xa, %edi
movl %ebx, %esi
callq 0x59005
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 0x59285
jnp 0x592b3
movq 0xa4a44(%rip), %rax     # 0xfdcd0
movss 0x37c(%rax), %xmm1
ucomiss %xmm0, %xmm1
jbe 0x592b3
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 0x592bf
jnp 0x592f0
movq 0xa4a0a(%rip), %rax     # 0xfdcd0
movss 0x380(%rax), %xmm0
xorps %xmm1, %xmm1
ucomiss %xmm1, %xmm0
jbe 0x592f0
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