UINT64 __stdcall IopInterlockedAdd(UINT64 *Addend, INT64 Value){
unsigned __int64 v2;
unsigned __int64 v3;
__int64 v4;
v2 = *Addend;
do
{
v3 = v2;
v4 = (int)Value + ((v2 >> 1) & 3);
v2 = _InterlockedCompareExchange64((volatile signed __int64 *)Addend, v2 & 0xFFFFFFFFFFFFFFF9ui64 | (2 * v4), v2);
}
while( v3 != v2 );
return(unsigned int)v4;
}