Normalization__LoadTables

NTSTATUS __stdcall Normalization__LoadTables(
        _RTL_NORM_FORM eNormalizationForm,
        VOID *FileViewBase,
        UINT64 FileViewSize,
        _RTL_NORMALIZATION *pNormalization){
  char v6; 
  UINT64 v8; 
  UINT64 v9; 
  UINT64 v10; 
  char *v11; 
  _RTL_NORMALIZATION v12; 

  v6 = BYTE1(eNormalizationForm);
  memset(pNormalization, 0i64, 0x78u);
  v8 = FileViewSize >> 1;
  if( FileViewSize >> 1 < *((unsigned __int16 *)FileViewBase + 26) )
    return -1073741672;
  v9 = *((unsigned __int16 *)FileViewBase + 27);
  if( v8 < v9 )
    return -1073741672;
  v10 = *((unsigned __int16 *)FileViewBase + 28);
  if( v8 < v10
    || v8 < *((unsigned __int16 *)FileViewBase + 29)
    || v8 < *((unsigned __int16 *)FileViewBase + 30)
    || v8 < *((unsigned __int16 *)FileViewBase + 31)
    || v8 < *((unsigned __int16 *)FileViewBase + 32)
    || v8 < *((unsigned __int16 *)FileViewBase + 33)
    || (_DWORD)v10 - (_DWORD)v9 != 4352 )
  {
    return -1073741672;
  }
  *((_QWORD *)pNormalization + 1) = FileViewBase;
  *((_QWORD *)pNormalization + 2) = FileViewSize;
  *pNormalization = *((unsigned __int16 *)FileViewBase + 20);
  pNormalization[6] = *((unsigned __int16 *)FileViewBase + 21);
  pNormalization[7] = *((unsigned __int16 *)FileViewBase + 22);
  *((_QWORD *)pNormalization + 4) = (char *)FileViewBase + 2 * *((unsigned __int16 *)FileViewBase + 27);
  *((_QWORD *)pNormalization + 5) = (char *)FileViewBase + 2 * *((unsigned __int16 *)FileViewBase + 28);
  pNormalization[14] = *((unsigned __int16 *)FileViewBase + 23);
  *((_QWORD *)pNormalization + 8) = (char *)FileViewBase + 2 * *((unsigned __int16 *)FileViewBase + 29);
  *((_QWORD *)pNormalization + 9) = (char *)FileViewBase + 2 * *((unsigned __int16 *)FileViewBase + 30);
  *((_QWORD *)pNormalization + 10) = (char *)FileViewBase + 2 * *((unsigned __int16 *)FileViewBase + 31);
  v11 = 0i64;
  v12 = *((unsigned __int16 *)FileViewBase + 24);
  pNormalization[22] = v12;
  if( v12 )
  {
    *((_BYTE *)pNormalization + 112) = 0;
    *((_QWORD *)pNormalization + 12) = (char *)FileViewBase + 2 * *((unsigned __int16 *)FileViewBase + 32);
    v11 = (char *)FileViewBase + 2 * *((unsigned __int16 *)FileViewBase + 33);
  }
  else
  {
    *((_BYTE *)pNormalization + 112) = 1;
    *((_QWORD *)pNormalization + 12) = 0i64;
  }
  *((_QWORD *)pNormalization + 13) = v11;
  *((_QWORD *)pNormalization + 6) = (char *)FileViewBase + 2 * *((unsigned __int16 *)FileViewBase + 26);
  Normalization__LoadClassMapExceptions(pNormalization);
  *((_BYTE *)pNormalization + 113) = (v6 & 1) == 0;
  return 0;
}

Referenced by:

RtlpGetNormalization