LdrpGetImageSize

NTSTATUS __stdcall LdrpGetImageSize(PVOID DllHandle, UINT64 *ImageSize){
  NTSTATUS v3; 
  UINT64 Flink_low; 
  __int64 v6; 
  _LIST_ENTRY *DataTableEntry; 
  NTSTATUS result; 
  __int16 v9; 

  v3 = 0;
  Flink_low = 0i64;
  LODWORD(v6) = RtlImageNtHeader((unsigned __int64)DllHandle & 0xFFFFFFFFFFFFFFFCui64);
  if( !v6 )
    goto LABEL_9;
  if( ((unsigned __int8)DllHandle & 1) == 0 )
  {
    v9 = *(_WORD *)(v6 + 24);
    if( v9 == 267 || v9 == 523 )
    {
      Flink_low = *(unsigned int *)(v6 + 80);
      goto LABEL_5;
    }
LABEL_9:
    v3 = -1073741701;
    goto LABEL_5;
  }
  DataTableEntry = LdrpKrnGetDataTableEntry(DllHandle);
  if( DataTableEntry )
    Flink_low = LODWORD(DataTableEntry[4].Flink);
LABEL_5:
  result = v3;
  *ImageSize = Flink_low;
  return result;
}

Referenced by:

LdrpAccessResourceData
LdrpAccessResourceDataNoMultipleLanguage