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) --------------------------------------------------------