RtlpHpSegPageRangeHandleCommit

NTSTATUS __stdcall RtlpHpSegPageRangeHandleCommit(UINT16 *a1, UINT64 a2){
  int *v2; 
  _DWORD *v3; 
  _DWORD *v4; 
  int v5; 
  unsigned int v6; 
  NTSTATUS v7; 
  char v8; 
  unsigned __int64 v9; 
  unsigned __int64 v10; 
  UINT64 v11; 
  unsigned int v12; 
  unsigned __int64 v13; 
  int v14; 
  UINT64 v15; 
  unsigned int v16; 
  int v17; 
  int v18; 
  unsigned int v19; 
  unsigned int v21; 
  int v22; 
  int v23; 
  unsigned int v24; 
  unsigned int v25; 
  unsigned int v26; 
  unsigned int v27; 
  int v28; 
  int v29; 
  int *v30; 
  int v31; 

  v30 = v2;
  v4 = v3;
  v5 = 0;
  v6 = 1 << *((_BYTE *)a1 + 9);
  v7 = 0;
  v8 = *((_BYTE *)a1 + 9);
  v9 = (unsigned __int64)(unsigned int)*v2 >> v8;
  v10 = v9 << v8;
  v11 = a2 + 32 * v9;
  v12 = *v2 & (v6 - 1);
  v13 = (unsigned __int64)(v12 + *v4 - 1) >> v8;
  v14 = -1;
  v15 = v11 + 32 * v13;
  v16 = ((v12 + *v4 - 1) & (v6 - 1)) + 1;
  v17 = -1;
  if( v12 )
  {
    v25 = *(unsigned __int8 *)(v11 + 25);
    v26 = v6;
    if( v11 == v15 )
      v26 = ((v12 + *v4 - 1) & (v6 - 1)) + 1;
    if( v31 > 1 || v25 >= v26 )
    {
      if( v31 != 2 || v25 <= v12 )
      {
LABEL_34:
        v11 += 32i64;
        LODWORD(v10) = v6 + v10;
        goto LABEL_2;
      }
      v27 = v12;
      v26 = *(unsigned __int8 *)(v11 + 25);
    }
    else
    {
      v27 = v26;
      v12 = *(unsigned __int8 *)(v11 + 25);
    }
    v7 = v27 - v25;
    v14 = v10 + v26;
    v17 = v10 + v12;
    if( v7 && v31 >= 1 )
      *(_BYTE *)(v11 + 25) = v7 + v25;
    goto LABEL_34;
  }
LABEL_2:
  if( v11 < v15 )
  {
    while( 1 )
    {
      v21 = *(unsigned __int8 *)(v11 + 25);
      v22 = v17;
      v23 = 0;
      if( v21 < v6 && v31 <= 1 )
        break;
      if( v31 == 2 && *(_BYTE *)(v11 + 25) )
      {
        v28 = v10;
        v23 = -v21;
        if( v17 != -1 )
          v28 = v17;
        v17 = v28;
        v24 = *(unsigned __int8 *)(v11 + 25);
        goto LABEL_19;
      }
LABEL_22:
      v7 += v23;
      v11 += 32i64;
      LODWORD(v10) = v6 + v10;
      if( v11 >= v15 )
        goto LABEL_3;
    }
    v17 = v21 + v10;
    v23 = v6 - v21;
    v24 = v6;
    if( v22 != -1 )
      v17 = v22;
LABEL_19:
    v14 = v10 + v24;
    if( v23 && v31 >= 1 )
      *(_BYTE *)(v11 + 25) = v23 + v21;
    goto LABEL_22;
  }
LABEL_3:
  v18 = v17;
  if( v11 != v15 )
    goto LABEL_12;
  v19 = *(unsigned __int8 *)(v11 + 25);
  if( v31 <= 1 && v19 < v16 )
  {
    v17 = v10 + v19;
    v5 = v16 - v19;
    if( v18 != -1 )
      v17 = v18;
LABEL_8:
    v14 = v10 + v16;
    if( v5 && v31 >= 1 )
      *(_BYTE *)(v11 + 25) = v5 + v19;
    goto LABEL_11;
  }
  if( v31 == 2 && *(_BYTE *)(v11 + 25) )
  {
    v29 = v10;
    v5 = -v19;
    v16 = *(unsigned __int8 *)(v11 + 25);
    if( v17 != -1 )
      v29 = v17;
    v17 = v29;
    goto LABEL_8;
  }
LABEL_11:
  v7 += v5;
LABEL_12:
  if( v7 )
  {
    *v4 = v14 - v17;
    *v30 = v17;
  }
  return v7;
}

Referenced by:

RtlpHpSegPageRangeCommit