LdrpGetRcConfig

PVOID __fastcall LdrpGetRcConfig(VOID *Module, INT64 a2, CHAR a3, CHAR a4){
  __int64 v4; 
  void *v7; 
  PVOID v8; 
  NTSTATUS v10; 
  UINT64 Flags; 
  INT64 ErrorCode; 
  PVOID Address; 
  PVOID ResourceDirectoryOrData; 
  UINT64 Size; 
  UINT64 ResourceIdPath[3]; 

  v4 = -1i64;
  ResourceDirectoryOrData = 0i64;
  Address = 0i64;
  if( !a4 )
    goto LABEL_5;
  v7 = LdrpGetFromMUIMemCache(Module, 0, 0i64, 8ui64);
  Address = v7;
  v8 = v7;
  if( v7 != (void *)-1i64 )
  {
    if( v7 )
      return v8;
LABEL_5:
    ResourceIdPath[1] = 1i64;
    ResourceIdPath[0] = (UINT64)L"MUI";
    ResourceIdPath[2] = 0i64;
    v10 = LdrpSearchResourceSection_U(Module, ResourceIdPath, 3ui64, 0x2000030ui64, &ResourceDirectoryOrData);
    if( v10 >= 0 )
    {
      v10 = LdrpAccessResourceDataNoMultipleLanguage(
              Module,
              (_IMAGE_RESOURCE_DATA_ENTRY *)ResourceDirectoryOrData,
              &Address,
              &Size);
      if( v10 >= 0 )
      {
        v8 = Address;
        if( *(_DWORD *)Address == -20054323 )
          goto LABEL_8;
        v10 = -1073741701;
      }
    }
    v8 = 0i64;
LABEL_8:
    if( a3 )
    {
      LODWORD(ErrorCode) = v10;
      if( v8 )
        v4 = (__int64)v8;
      LODWORD(Flags) = 2;
      LdrpSetAlternateResourceModuleHandle(Module, 0i64, 0i64, (VOID *)v4, 0, Flags, ErrorCode, 0i64, (UINT64)Address);
    }
    return v8;
  }
  return 0i64;
}

Referenced by:

LdrIsResItemExist
LdrpVerifyAlternateResourceModuleEx