/Engine/Source/Runtime/Engine/Public/AnimationRuntime.h
The blend is done by taking a weighted sum of each atom, and re-normalizing the quaternion part at the end, not using SLERP. This allows n-way blends, and makes the code much faster, though the angular velocity will not be constant across the blend.
static void BlendPosesTogether ( [TArrayView](API\Runtime\Core\Containers\TArrayView)< const [FCompactPose](API\Runtime\Engine\FCompactPose) > SourcePoses, [TArrayView](API\Runtime\Core\Containers\TArrayView)< const [FBlendedCurve](API\Runtime\Engine\Animation\FBlendedCurve) > SourceCurves, [TArrayView](API\Runtime\Core\Containers\TArrayView)< const float > SourceWeights, [FCompactPose](API\Runtime\Engine\FCompactPose) & ResultPose, [FBlendedCurve](API\Runtime\Engine\Animation\FBlendedCurve) & ResultCurve )