diff --git a/indra/llcommon/llmemory.h b/indra/llcommon/llmemory.h
index 117268cfe7b15d50977a1426250e0b5d89262c6d..93dd7a7fe3cae390fb05762066e0990b112f81a3 100644
--- a/indra/llcommon/llmemory.h
+++ b/indra/llcommon/llmemory.h
@@ -34,7 +34,7 @@
 
 #include <stdlib.h>
 
-inline void* ll_aligned_malloc_16(size_t size) // returned hunk MUST be freed with ll_aligned_free().
+inline void* ll_aligned_malloc_16(size_t size) // returned hunk MUST be freed with ll_aligned_free_16().
 {
 #if defined(LL_WINDOWS)
 	return _mm_malloc(size, 16);
diff --git a/indra/llmath/lloctree.h b/indra/llmath/lloctree.h
index df779712041958077af97bda9a65ef22620a74c6..59828ae565010df816eb70ab531e4c5868d12415 100644
--- a/indra/llmath/lloctree.h
+++ b/indra/llmath/lloctree.h
@@ -102,7 +102,7 @@ class LLOctreeNode : public LLTreeNode<T>
 	:	mParent((oct_node*)parent), 
 		mOctant(octant) 
 	{ 
-		mD = (LLVector4a*) _mm_malloc(sizeof(LLVector4a)*4, 16);
+		mD = (LLVector4a*) ll_aligned_malloc_16(sizeof(LLVector4a)*4);
 
 		mD[CENTER] = center;
 		mD[SIZE] = size;
@@ -125,7 +125,7 @@ class LLOctreeNode : public LLTreeNode<T>
 			delete getChild(i);
 		} 
 
-		_mm_free(mD);
+		ll_aligned_free_16(mD);
 	}
 
 	inline const BaseType* getParent()	const			{ return mParent; }
diff --git a/indra/llmath/llvolume.cpp b/indra/llmath/llvolume.cpp
index ef1ab5703657fe481fd01ba1e6147ecf9b39505e..a8684759f3d47adbdd773083d6d0d40a98b381e3 100644
--- a/indra/llmath/llvolume.cpp
+++ b/indra/llmath/llvolume.cpp
@@ -1987,7 +1987,7 @@ BOOL LLVolume::generate()
 
 void LLVolumeFace::VertexData::init()
 {
-	mData = (LLVector4a*) _mm_malloc(32, 16);
+	mData = (LLVector4a*) ll_aligned_malloc_16(32);
 }
 
 LLVolumeFace::VertexData::VertexData()
@@ -2004,7 +2004,7 @@ LLVolumeFace::VertexData::VertexData(const VertexData& rhs)
 
 LLVolumeFace::VertexData::~VertexData()
 {
-	_mm_free(mData);
+	ll_aligned_free_16(mData);
 }
 
 LLVector4a& LLVolumeFace::VertexData::getPosition()
@@ -5196,7 +5196,7 @@ LLVolumeFace::LLVolumeFace() :
 	mWeights(NULL),
 	mOctree(NULL)
 {
-	mExtents = (LLVector4a*) _mm_malloc(48, 16);
+	mExtents = (LLVector4a*) ll_aligned_malloc_16(48);
 	mCenter = mExtents+2;
 }
 
@@ -5217,7 +5217,7 @@ LLVolumeFace::LLVolumeFace(const LLVolumeFace& src)
 	mWeights(NULL),
 	mOctree(NULL)
 { 
-	mExtents = (LLVector4a*) _mm_malloc(48, 16);
+	mExtents = (LLVector4a*) ll_aligned_malloc_16(48);
 	mCenter = mExtents+2;
 	*this = src;
 }
@@ -5264,7 +5264,7 @@ LLVolumeFace& LLVolumeFace::operator=(const LLVolumeFace& src)
 		}
 		else
 		{
-			_mm_free(mBinormals);
+			ll_aligned_free_16(mBinormals);
 			mBinormals = NULL;
 		}
 
@@ -5275,7 +5275,7 @@ LLVolumeFace& LLVolumeFace::operator=(const LLVolumeFace& src)
 		}
 		else
 		{
-			_mm_free(mWeights);
+			ll_aligned_free_16(mWeights);
 			mWeights = NULL;
 		}
 	}
@@ -5295,7 +5295,7 @@ LLVolumeFace& LLVolumeFace::operator=(const LLVolumeFace& src)
 
 LLVolumeFace::~LLVolumeFace()
 {
-	_mm_free(mExtents);
+	ll_aligned_free_16(mExtents);
 	mExtents = NULL;
 
 	freeData();
@@ -5303,17 +5303,17 @@ LLVolumeFace::~LLVolumeFace()
 
 void LLVolumeFace::freeData()
 {
-	_mm_free(mPositions);
+	ll_aligned_free_16(mPositions);
 	mPositions = NULL;
-	_mm_free(mNormals);
+	ll_aligned_free_16(mNormals);
 	mNormals = NULL;
-	_mm_free(mTexCoords);
+	ll_aligned_free_16(mTexCoords);
 	mTexCoords = NULL;
-	_mm_free(mIndices);
+	ll_aligned_free_16(mIndices);
 	mIndices = NULL;
-	_mm_free(mBinormals);
+	ll_aligned_free_16(mBinormals);
 	mBinormals = NULL;
-	_mm_free(mWeights);
+	ll_aligned_free_16(mWeights);
 	mWeights = NULL;
 
 	delete mOctree;
@@ -6082,21 +6082,21 @@ void LLVolumeFace::createBinormals()
 
 void LLVolumeFace::resizeVertices(S32 num_verts)
 {
-	_mm_free(mPositions);
-	_mm_free(mNormals);
-	_mm_free(mBinormals);
-	_mm_free(mTexCoords);
+	ll_aligned_free_16(mPositions);
+	ll_aligned_free_16(mNormals);
+	ll_aligned_free_16(mBinormals);
+	ll_aligned_free_16(mTexCoords);
 
 	mBinormals = NULL;
 
 	if (num_verts)
 	{
-		mPositions = (LLVector4a*) _mm_malloc(num_verts*16, 16);
-		mNormals = (LLVector4a*) _mm_malloc(num_verts*16, 16);
+		mPositions = (LLVector4a*) ll_aligned_malloc_16(num_verts*16);
+		mNormals = (LLVector4a*) ll_aligned_malloc_16(num_verts*16);
 
 		//pad texture coordinate block end to allow for QWORD reads
 		S32 size = ((num_verts*8) + 0xF) & ~0xF;
-		mTexCoords = (LLVector2*) _mm_malloc(size, 16);
+		mTexCoords = (LLVector2*) ll_aligned_malloc_16(size);
 	}
 	else
 	{
@@ -6119,20 +6119,20 @@ void LLVolumeFace::pushVertex(const LLVector4a& pos, const LLVector4a& norm, con
 	S32 new_size = new_verts*16;
 	
 	//positions
-	LLVector4a* dst = (LLVector4a*) _mm_malloc(new_size, 16);
+	LLVector4a* dst = (LLVector4a*) ll_aligned_malloc_16(new_size);
 	if (mPositions)
 	{
 		LLVector4a::memcpyNonAliased16((F32*) dst, (F32*) mPositions, new_size/4);
-		_mm_free(mPositions);
+		ll_aligned_free_16(mPositions);
 	}
 	mPositions = dst;
 
 	//normals
-	dst = (LLVector4a*) _mm_malloc(new_size, 16);
+	dst = (LLVector4a*) ll_aligned_malloc_16(new_size);
 	if (mNormals)
 	{
 		LLVector4a::memcpyNonAliased16((F32*) dst, (F32*) mNormals, new_size/4);
-		_mm_free(mNormals);
+		ll_aligned_free_16(mNormals);
 	}
 	mNormals = dst;
 
@@ -6140,16 +6140,16 @@ void LLVolumeFace::pushVertex(const LLVector4a& pos, const LLVector4a& norm, con
 	new_size = ((new_verts*8)+0xF) & ~0xF;
 
 	{
-		LLVector2* dst = (LLVector2*) _mm_malloc(new_size, 16);
+		LLVector2* dst = (LLVector2*) ll_aligned_malloc_16(new_size);
 		if (mTexCoords)
 		{
 			LLVector4a::memcpyNonAliased16((F32*) dst, (F32*) mTexCoords, new_size/4);
-			_mm_free(mTexCoords);
+			ll_aligned_free_16(mTexCoords);
 		}
 	}
 
 	//just clear binormals
-	_mm_free(mBinormals);
+	ll_aligned_free_16(mBinormals);
 	mBinormals = NULL;
 
 	mPositions[mNumVertices] = pos;
@@ -6161,26 +6161,26 @@ void LLVolumeFace::pushVertex(const LLVector4a& pos, const LLVector4a& norm, con
 
 void LLVolumeFace::allocateBinormals(S32 num_verts)
 {
-	_mm_free(mBinormals);
-	mBinormals = (LLVector4a*) _mm_malloc(num_verts*16, 16);
+	ll_aligned_free_16(mBinormals);
+	mBinormals = (LLVector4a*) ll_aligned_malloc_16(num_verts*16);
 }
 
 void LLVolumeFace::allocateWeights(S32 num_verts)
 {
-	_mm_free(mWeights);
-	mWeights = (LLVector4a*) _mm_malloc(num_verts*16, 16);
+	ll_aligned_free_16(mWeights);
+	mWeights = (LLVector4a*) ll_aligned_malloc_16(num_verts*16);
 }
 
 void LLVolumeFace::resizeIndices(S32 num_indices)
 {
-	_mm_free(mIndices);
+	ll_aligned_free_16(mIndices);
 
 	if (num_indices)
 	{
 		//pad index block end to allow for QWORD reads
 		S32 size = ((num_indices*2) + 0xF) & ~0xF;
 		
-		mIndices = (U16*) _mm_malloc(size,16);	
+		mIndices = (U16*) ll_aligned_malloc_16(size);	
 	}
 	else
 	{
@@ -6198,9 +6198,9 @@ void LLVolumeFace::pushIndex(const U16& idx)
 	S32 old_size = (mNumIndices+0xF) & ~0xF;
 	if (new_size != old_size)
 	{
-		U16* dst = (U16*) _mm_malloc(new_size, 16);
+		U16* dst = (U16*) ll_aligned_malloc_16(new_size);
 		LLVector4a::memcpyNonAliased16((F32*) dst, (F32*) mIndices, new_size/4);
-		_mm_free(mIndices);
+		ll_aligned_free_16(mIndices);
 		mIndices = dst;
 	}
 	
@@ -6237,17 +6237,17 @@ void LLVolumeFace::appendFace(const LLVolumeFace& face, LLMatrix4& mat_in, LLMat
 	}
 	
 	
-	LLVector4a* new_pos = (LLVector4a*) _mm_malloc(new_count*16, 16);
-	LLVector4a* new_norm = (LLVector4a*) _mm_malloc(new_count*16, 16);
-	LLVector2* new_tc = (LLVector2*) _mm_malloc((new_count*8+0xF) & ~0xF, 16);
+	LLVector4a* new_pos = (LLVector4a*) ll_aligned_malloc_16(new_count*16);
+	LLVector4a* new_norm = (LLVector4a*) ll_aligned_malloc_16(new_count*16);
+	LLVector2* new_tc = (LLVector2*) ll_aligned_malloc_16((new_count*8+0xF) & ~0xF);
 
 	LLVector4a::memcpyNonAliased16((F32*) new_pos, (F32*) mPositions, new_count*4);
 	LLVector4a::memcpyNonAliased16((F32*) new_norm, (F32*) mNormals, new_count*4);
 	LLVector4a::memcpyNonAliased16((F32*) new_tc, (F32*) mTexCoords, new_count*2);
 
-	_mm_free(mPositions);
-	_mm_free(mNormals);
-	_mm_free(mTexCoords);
+	ll_aligned_free_16(mPositions);
+	ll_aligned_free_16(mNormals);
+	ll_aligned_free_16(mTexCoords);
 
 	mPositions = new_pos;
 	mNormals = new_norm;
@@ -6287,9 +6287,9 @@ void LLVolumeFace::appendFace(const LLVolumeFace& face, LLMatrix4& mat_in, LLMat
 
 
 	new_count = mNumIndices + face.mNumIndices;
-	U16* new_indices = (U16*) _mm_malloc((new_count*2+0xF) & ~0xF, 16);
+	U16* new_indices = (U16*) ll_aligned_malloc_16((new_count*2+0xF) & ~0xF);
 	LLVector4a::memcpyNonAliased16((F32*) new_indices, (F32*) mIndices, new_count/2);
-	_mm_free(mIndices);
+	ll_aligned_free_16(mIndices);
 	mIndices = new_indices;
 	mNumIndices = new_count;