MiCreatePebOrTeb

NTSTATUS __stdcall MiCreatePebOrTeb(UINT64 AllocationFlags, PVOID *Base){
  _QWORD *v2; 
  int v3; 
  UINT64 v5; 
  __int64 v6; 
  v3 = AllocationFlags;
  v5 = 0i64;
  *v2 = 0i64;
  if( !v3 )
  {
    v6 = 1992i64;
    return MiAllocateFromSubAllocatedRegion(v5, (v6 + 4095) & 0xFFFFF000i64, v2);
  }
  v6 = 6200i64;
  if( v3 == 3 )
  {
LABEL_3:
    if( (unsigned int)(v3 - 3) > 2 )
      return MiAllocateFromSubAllocatedRegion(v5, (v6 + 4095) & 0xFFFFF000i64, v2);
    goto LABEL_4;
  }
  if( v3 == 4 )
  {
    v6 = 12288i64;
  }
  else
  {
    if( v3 != 5 )
    {
      if( v3 == 1 )
      {
        v6 = 1192i64;
        return MiAllocateFromSubAllocatedRegion(v5, (v6 + 4095) & 0xFFFFF000i64, v2);
      }
      if( v3 == 2 )
        v6 = 2032i64;
      goto LABEL_3;
    }
    v6 = 14392i64;
  }
LABEL_4:
  if( Base )
    v5 = 1i64;
  return MiAllocateFromSubAllocatedRegion(v5, (v6 + 4095) & 0xFFFFF000i64, v2);
}

Referenced by:

MiInitializeWowPeb
MmCreatePeb
MmCreateTeb