BgpFmSqrt
NTSTATUS __stdcall BgpFmSqrt(INT64 Value, UINT64 Scale){
INT64 v2;
INT64 v3;
INT64 v4;
INT64 v5;
__int64 v6;
__int64 v7;
__int64 v8;
__int64 v9;
if( Value <= 0 )
goto LABEL_6;
v2 = Value << 32;
v3 = 0i64;
v4 = (Value + 1) >> 1;
if( v4 > 0 )
{
do
v4 -= v3++;
while( v4 > v3 );
}
v5 = v3 << 16;
if( v5 )
{
v6 = (v2 + (v2 + v5 * v5) / (2 * v5) * ((v2 + v5 * v5) / (2 * v5))) / (2 * ((v2 + v5 * v5) / (2 * v5)));
v7 = (v2 + (v2 + v6 * v6) / (2 * v6) * ((v2 + v6 * v6) / (2 * v6))) / (2 * ((v2 + v6 * v6) / (2 * v6)));
v8 = (v2 + (v2 + v7 * v7) / (2 * v7) * ((v2 + v7 * v7) / (2 * v7))) / (2 * ((v2 + v7 * v7) / (2 * v7)));
return(v2 + v8 * v8) / (2 * v8);
}
else
{
LABEL_6:
LODWORD(v9) = 0;
}
return v9;
}Referenced by:
RaspTestIntersection