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