// File: 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
subq $0x60, %rsp
movl %edi, -0xc(%rbp)
movl %esi, -0x10(%rbp)
movss %xmm0, -0x14(%rbp)
movss %xmm1, -0x18(%rbp)
leaq -0x8(%rbp), %rdi
xorps %xmm1, %xmm1
movaps %xmm1, %xmm0
callq 0xbf4c0
movl -0xc(%rbp), %eax
andl $0x1, %eax
cmpl $0x0, %eax
je 0xdfa18
movl -0x10(%rbp), %esi
movl $0x12, %edi
callq 0xdf780
movss %xmm0, -0x3c(%rbp)
movl -0x10(%rbp), %esi
movl $0x11, %edi
callq 0xdf780
movaps %xmm0, %xmm1
movss -0x3c(%rbp), %xmm0
subss %xmm1, %xmm0
movss %xmm0, -0x34(%rbp)
movl -0x10(%rbp), %esi
movl $0x14, %edi
callq 0xdf780
movss %xmm0, -0x38(%rbp)
movl -0x10(%rbp), %esi
movl $0x13, %edi
callq 0xdf780
movss -0x38(%rbp), %xmm1
movaps %xmm0, %xmm2
movss -0x34(%rbp), %xmm0
subss %xmm2, %xmm1
leaq -0x20(%rbp), %rdi
callq 0xbf4c0
leaq -0x8(%rbp), %rdi
leaq -0x20(%rbp), %rsi
callq 0xda7f0
movl -0xc(%rbp), %eax
andl $0x2, %eax
cmpl $0x0, %eax
je 0xdfa99
movl -0x10(%rbp), %esi
movl $0x5, %edi
callq 0xdf780
movss %xmm0, -0x48(%rbp)
movl -0x10(%rbp), %esi
movl $0x4, %edi
callq 0xdf780
movaps %xmm0, %xmm1
movss -0x48(%rbp), %xmm0
subss %xmm1, %xmm0
movss %xmm0, -0x40(%rbp)
movl -0x10(%rbp), %esi
movl $0x7, %edi
callq 0xdf780
movss %xmm0, -0x44(%rbp)
movl -0x10(%rbp), %esi
movl $0x6, %edi
callq 0xdf780
movss -0x44(%rbp), %xmm1
movaps %xmm0, %xmm2
movss -0x40(%rbp), %xmm0
subss %xmm2, %xmm1
leaq -0x28(%rbp), %rdi
callq 0xbf4c0
leaq -0x8(%rbp), %rdi
leaq -0x28(%rbp), %rsi
callq 0xda7f0
movl -0xc(%rbp), %eax
andl $0x4, %eax
cmpl $0x0, %eax
je 0xdfb1a
movl -0x10(%rbp), %esi
movl $0x9, %edi
callq 0xdf780
movss %xmm0, -0x54(%rbp)
movl -0x10(%rbp), %esi
movl $0x8, %edi
callq 0xdf780
movaps %xmm0, %xmm1
movss -0x54(%rbp), %xmm0
subss %xmm1, %xmm0
movss %xmm0, -0x4c(%rbp)
movl -0x10(%rbp), %esi
movl $0xb, %edi
callq 0xdf780
movss %xmm0, -0x50(%rbp)
movl -0x10(%rbp), %esi
movl $0xa, %edi
callq 0xdf780
movss -0x50(%rbp), %xmm1
movaps %xmm0, %xmm2
movss -0x4c(%rbp), %xmm0
subss %xmm2, %xmm1
leaq -0x30(%rbp), %rdi
callq 0xbf4c0
leaq -0x8(%rbp), %rdi
leaq -0x30(%rbp), %rsi
callq 0xda7f0
movss -0x14(%rbp), %xmm0
xorps %xmm1, %xmm1
ucomiss %xmm1, %xmm0
jne 0xdfb2b
jp 0xdfb2b
jmp 0xdfb49
movl $0xe, %edi
callq 0xec0f0
testb $0x1, %al
jne 0xdfb3b
jmp 0xdfb49
movss -0x14(%rbp), %xmm0
leaq -0x8(%rbp), %rdi
callq 0xdfb90
movss -0x18(%rbp), %xmm0
xorps %xmm1, %xmm1
ucomiss %xmm1, %xmm0
jne 0xdfb5a
jp 0xdfb5a
jmp 0xdfb78
movl $0xf, %edi
callq 0xec0f0
testb $0x1, %al
jne 0xdfb6a
jmp 0xdfb78
movss -0x18(%rbp), %xmm0
leaq -0x8(%rbp), %rdi
callq 0xdfb90
movsd -0x8(%rbp), %xmm0
addq $0x60, %rsp
popq %rbp
retq
nopw %cs:(%rax,%rax)