// File: /workspace/github_cpp_makefile_star2_O1/Ciaxur[P]yagb-emu/include/imgui/imgui.cpp
// Function: ImTriangleClosestPoint(ImVec2 const&, ImVec2 const&, ImVec2 const&, ImVec2 const&)
ImVec2 ImTriangleClosestPoint(const ImVec2& a, const ImVec2& b, const ImVec2& c, const ImVec2& p)
{
    ImVec2 proj_ab = ImLineClosestPoint(a, b, p);
    ImVec2 proj_bc = ImLineClosestPoint(b, c, p);
    ImVec2 proj_ca = ImLineClosestPoint(c, a, p);
    float dist2_ab = ImLengthSqr(p - proj_ab);
    float dist2_bc = ImLengthSqr(p - proj_bc);
    float dist2_ca = ImLengthSqr(p - proj_ca);
    float m = ImMin(dist2_ab, ImMin(dist2_bc, dist2_ca));
    if (m == dist2_ab)
        return proj_ab;
    if (m == dist2_bc)
        return proj_bc;
    return proj_ca;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
movss (%rcx), %xmm2
movss 0x4(%rcx), %xmm4
movss (%rdi), %xmm6
movss 0x4(%rdi), %xmm5
movaps %xmm2, %xmm8
subss %xmm6, %xmm8
movaps %xmm4, %xmm9
subss %xmm5, %xmm9
movss (%rsi), %xmm3
movss 0x4(%rsi), %xmm7
movaps %xmm3, %xmm1
subss %xmm6, %xmm1
movaps %xmm7, %xmm0
subss %xmm5, %xmm0
mulss %xmm0, %xmm9
mulss %xmm1, %xmm8
addss %xmm9, %xmm8
xorps %xmm9, %xmm9
ucomiss %xmm8, %xmm9
jbe 0x421c6
movsd (%rdi), %xmm1
jmp 0x42208
movaps %xmm0, %xmm10
mulss %xmm0, %xmm10
movaps %xmm1, %xmm9
mulss %xmm1, %xmm9
addss %xmm10, %xmm9
ucomiss %xmm9, %xmm8
jbe 0x421e9
movsd (%rsi), %xmm1
jmp 0x42208
mulss %xmm8, %xmm1
mulss %xmm8, %xmm0
divss %xmm9, %xmm1
divss %xmm9, %xmm0
addss %xmm6, %xmm1
addss %xmm5, %xmm0
unpcklps %xmm0, %xmm1            # xmm1 = xmm1[0],xmm0[0],xmm1[1],xmm0[1]
movaps %xmm2, %xmm11
subss %xmm3, %xmm11
movaps %xmm4, %xmm12
subss %xmm7, %xmm12
movss (%rdx), %xmm0
movss 0x4(%rdx), %xmm8
movaps %xmm0, %xmm9
subss %xmm3, %xmm9
movaps %xmm8, %xmm10
subss %xmm7, %xmm10
mulss %xmm10, %xmm12
mulss %xmm9, %xmm11
addss %xmm12, %xmm11
xorps %xmm12, %xmm12
ucomiss %xmm11, %xmm12
jbe 0x42255
movsd (%rsi), %xmm3
jmp 0x42299
movaps %xmm10, %xmm13
mulss %xmm10, %xmm13
movaps %xmm9, %xmm12
mulss %xmm9, %xmm12
addss %xmm13, %xmm12
ucomiss %xmm12, %xmm11
jbe 0x42278
movsd (%rdx), %xmm3
jmp 0x42299
mulss %xmm11, %xmm9
mulss %xmm11, %xmm10
divss %xmm12, %xmm9
divss %xmm12, %xmm10
addss %xmm9, %xmm3
addss %xmm10, %xmm7
unpcklps %xmm7, %xmm3            # xmm3 = xmm3[0],xmm7[0],xmm3[1],xmm7[1]
movaps %xmm2, %xmm7
subss %xmm0, %xmm7
movaps %xmm4, %xmm9
subss %xmm8, %xmm9
subss %xmm0, %xmm6
subss %xmm8, %xmm5
mulss %xmm5, %xmm9
mulss %xmm6, %xmm7
addss %xmm9, %xmm7
xorps %xmm9, %xmm9
ucomiss %xmm7, %xmm9
jbe 0x422d0
movsd (%rdx), %xmm0
jmp 0x42312
movaps %xmm5, %xmm10
mulss %xmm5, %xmm10
movaps %xmm6, %xmm9
mulss %xmm6, %xmm9
addss %xmm10, %xmm9
ucomiss %xmm9, %xmm7
jbe 0x422f3
movsd (%rdi), %xmm0
jmp 0x42312
mulss %xmm7, %xmm6
mulss %xmm7, %xmm5
divss %xmm9, %xmm6
divss %xmm9, %xmm5
addss %xmm6, %xmm0
addss %xmm5, %xmm8
unpcklps %xmm8, %xmm0            # xmm0 = xmm0[0],xmm8[0],xmm0[1],xmm8[1]
movaps %xmm2, %xmm5
subss %xmm1, %xmm5
movaps %xmm1, %xmm6
shufps $0x55, %xmm1, %xmm6     # xmm6 = xmm6[1,1],xmm1[1,1]
movaps %xmm4, %xmm7
subss %xmm6, %xmm7
mulss %xmm7, %xmm7
mulss %xmm5, %xmm5
addss %xmm7, %xmm5
movaps %xmm2, %xmm6
subss %xmm3, %xmm6
movaps %xmm3, %xmm7
shufps $0x55, %xmm3, %xmm7     # xmm7 = xmm7[1,1],xmm3[1,1]
movaps %xmm4, %xmm8
subss %xmm7, %xmm8
mulss %xmm8, %xmm8
mulss %xmm6, %xmm6
addss %xmm8, %xmm6
subss %xmm0, %xmm2
movaps %xmm0, %xmm7
shufps $0x55, %xmm0, %xmm7     # xmm7 = xmm7[1,1],xmm0[1,1]
subss %xmm7, %xmm4
mulss %xmm4, %xmm4
mulss %xmm2, %xmm2
addss %xmm4, %xmm2
movaps %xmm6, %xmm4
minss %xmm2, %xmm4
movaps %xmm5, %xmm2
minss %xmm4, %xmm2
ucomiss %xmm6, %xmm2
jne 0x4238b
jp 0x4238b
movaps %xmm3, %xmm0
ucomiss %xmm5, %xmm2
jne 0x42395
jp 0x42395
movaps %xmm1, %xmm0
popq %rbp
retq