Mercurial > mm7
diff mm7_2.cpp @ 295:640a176c030f
sub_42ECB5
author | Nomad |
---|---|
date | Tue, 19 Feb 2013 13:29:02 +0200 |
parents | 1f0af5cac2dd |
children | af7e848d6def |
line wrap: on
line diff
--- a/mm7_2.cpp Mon Feb 18 16:39:49 2013 +0600 +++ b/mm7_2.cpp Tue Feb 19 13:29:02 2013 +0200 @@ -9124,20 +9124,20 @@ } //----- (00452A9E) -------------------------------------------------------- -int sub_452A9E(int square_distance) +int integer_sqrt(int val) { signed int result; // eax@2 - int v2; // edx@3 + unsigned int v2; // edx@3 unsigned int v3; // edi@3 //signed int v4; // ebx@3 int v5; // esi@4 - if (square_distance < 1) - return square_distance; + if (val < 1) + return val; v2 = 0; - v3 = square_distance; + v3 = val; result = 0; //v4 = 16; for (uint i = 0; i < 16; ++i) @@ -9146,7 +9146,7 @@ v2 = (v3 >> 30) | 4 * v2; v5 = 2 * result + 1; v3 *= 4; - if ( v2 >= (unsigned int)v5 ) + if ( v2 >= v5 ) { ++result; v2 -= v5; @@ -9154,8 +9154,9 @@ //--v4; } //while ( v4 ); - if ( square_distance - result * result >= (unsigned int)(result - 1) ) + if ( val - result * result >= (unsigned int)(result - 1) ) ++result; + return result; } //----- (00452AE2) --------------------------------------------------------