RtlCompareAltitudes

NTSTATUS __stdcall RtlCompareAltitudes(_UNICODE_STRING *Altitude1, _UNICODE_STRING *Altitude2){
  unsigned __int16 Length; 
  unsigned __int16 v3; 
  wchar_t *Buffer; 
  unsigned __int16 v5; 
  wchar_t *v6; 
  unsigned __int16 v7; 
  unsigned __int16 v8; 
  unsigned __int16 v9; 
  NTSTATUS v10; 
  unsigned __int16 i; 
  unsigned __int16 v12; 
  unsigned __int16 j; 
  unsigned __int16 v14; 
  unsigned __int16 k; 
  bool v16; 
  unsigned __int16 v18; 
  wchar_t v19; 
  wchar_t v20; 
  __int16 v21; 
  __int16 v22; 
  signed __int16 v23; 
  unsigned __int16 m; 
  __int16 v25; 
  unsigned __int16 n; 
  wchar_t *v27; 
  wchar_t *v28; 
  int v29; 
  wchar_t v30; 
  wchar_t v31; 

  Length = Altitude1->Length;
  v3 = Altitude2->Length;
  Buffer = Altitude1->Buffer;
  v5 = 0;
  v6 = Altitude2->Buffer;
  v7 = 0;
  v8 = Length >> 1;
  v9 = v3 >> 1;
  v10 = 1;
  if( v8 )
  {
    do
    {
      if( Buffer[v7] == 46 )
        break;
      ++v7;
    }
    while( v7 < v8 );
  }
  for( i = 0; i < v9; ++i )
  {
    if( v6[i] == 46 )
      break;
  }
  v12 = v7;
  for( j = 0; j < v12; --v8 )
  {
    if( *Buffer != 48 )
      break;
    ++j;
    ++Buffer;
    --v7;
  }
  v14 = i;
  for( k = 0; k < v14; --v9 )
  {
    if( *v6 != 48 )
      break;
    ++k;
    ++v6;
    --i;
  }
  if( v7 != i )
  {
    v16 = i < v7;
    return v16 ? 1 : -1;
  }
  v18 = 0;
  if( v7 )
  {
    do
    {
      v19 = Buffer[v18];
      v20 = v6[v18];
      v16 = v20 < v19;
      if( v20 != v19 )
        return v16 ? 1 : -1;
    }
    while( ++v18 < v7 );
  }
  v21 = 0;
  v22 = 0;
  if( (__int16)(v8 - v7 - 1) >= 0 )
    v21 = v8 - v7 - 1;
  v23 = v21;
  if( (__int16)(v9 - i - 1) >= 0 )
    v22 = v9 - i - 1;
  if( v8 )
  {
    for( m = v8 - 1; m > v7 && Buffer[m] == 48; --m )
      --v23;
  }
  v25 = v22;
  if( v9 )
  {
    for( n = v9 - 1; n > i && v6[n] == 48; --n )
      --v25;
  }
  v27 = &Buffer[v7];
  v28 = &v6[i];
  if( v23 > 0 )
  {
    v29 = 0;
    while( v29 < v25 )
    {
      v30 = v27[v5 + 1];
      v31 = v28[v5 + 1];
      if( v31 != v30 )
        return v31 < v30 ? 1 : -1;
      v29 = ++v5;
      if( v5 >= v23 )
        break;
    }
  }
  if( v23 == v25 )
    return 0;
  if( v23 <= v25 )
    return -1;
  return v10;
}

Referenced by:

CmpInsertCallbackInListByAltitude
ObpInsertCallbackByAltitude