IopProcessIrpStackProfiler

VOID __stdcall IopProcessIrpStackProfiler(UINT64 *StackSizes, UINT64 StackSizesNumElements){
  UINT64 v2; 
  unsigned int v3; 
  unsigned int v5; 
  signed __int64 v6; 
  __int64 v7; 
  unsigned int v8; 
  UINT64 *v9; 
  unsigned __int64 v10; 
  unsigned int v11; 
  bool v12; 
  bool v13; 
  unsigned __int64 v14; 
  unsigned int v15; 
  UINT64 *v16; 
  unsigned int v17; 
  signed __int64 v18; 

  v2 = 0i64;
  v3 = *(&stru_140C452E0 + 711);
  v5 = *(&stru_140C452E0 + 710);
  v6 = 0i64;
  v7 = 0i64;
  if( (*(&stru_140C452E0 + 1144) & 1) != 0 )
  {
    v8 = 10;
    v9 = StackSizes + 10;
    do
    {
      v10 = *v9;
      v11 = v8;
      v12 = *v9 < v2;
      v13 = *v9++ == v2;
      v14 = v10;
      if( v12 || v13 )
      {
        v14 = v2;
        if( v12 || v13 )
          v11 = v3;
      }
      ++v8;
      v3 = v11;
      v2 = v14;
    }
    while( v8 < 0x14 );
    if( v14 < *(&stru_140C452E0 + 432) )
      v3 = *(&stru_140C452E0 + 711);
  }
  v15 = 2;
  if( (*(&stru_140C452E0 + 1144) & 2) != 0 && v3 > 2 )
  {
    v16 = StackSizes + 2;
    do
    {
      v7 += *v16;
      v17 = v15;
      ++v16;
      v18 = v7 * (v15 - (unsigned __int64)v3);
      if( v18 >= v6 )
        v17 = v5;
      ++v15;
      v5 = v17;
      if( v18 >= v6 )
        v18 = v6;
      v6 = v18;
    }
    while( v15 < v3 );
  }
  if( *(&stru_140C452E0 + 711) != v3 )
    *(&stru_140C452E0 + 711) = v3;
  if( *(&stru_140C452E0 + 710) != v5 )
    *(&stru_140C452E0 + 710) = v5;
}

Referenced by:

IopIrpStackProfilerDpcRoutine