CbsVerifyFileAgainstCatalog
__int64 __fastcall CbsVerifyFileAgainstCatalog(__int64 a1, __int64 a2)
{
__int64 v2;
__int64 v3;
signed int v4;
const char *v5;
signed int v6;
__int32 v7;
__int64 *v8;
__int32 v9;
__int64 v10;
__int64 v11;
signed int v12;
__int32 v13;
signed int v14;
__int64 v15;
__int64 v16;
__int64 v17;
void (__fastcall *v18)(__int64 *);
void (__fastcall *v19)(__int64 *);
void (__fastcall *v21)(__int64 *);
__int32 *v22;
bool v23[
8];
__int64 *v24;
const char *v25;
__int64 v26;
const char *v27;
__int32 v28;
__int64 v29;
__int64 v30;
__int64 v31;
__int128 v32;
__int128 v33;
__int64 v34;
__int64 v35;
__int64 v36;
char v37;
int v38;
int v39;
v28 = -
2147023537;
v2 = a2;
v3 = a1;
if ( !a1 )
{
v4 =
150;
v5 =
"Not-null check failed: pszFileNameToVerify";
LABEL_3:
Windows::ErrorHandling::COM::CBaseFrame<Windows::ErrorHandling::COM::CSimpleHResultCarryingFrame>::SetInvalidParameter_NullPointer(&v28);
LABEL_34:
LODWORD(v26) = v4;
v24 = (__int64 *)
"base\\cbs\\util\\cbsverifytrust.cpp";
v27 = v5;
v25 =
"CbsVerifyFileAgainstCatalog";
Windows::ErrorHandling::COM::CBaseFrame<Windows::ErrorHandling::COM::CSimpleHResultCarryingFrame>::ReportErrorOrigination(
&v28,
(Windows::ErrorHandling::COM *)&v24);
return (
unsigned int)v28;
}
if ( !a2 )
{
v4 =
151;
v5 =
"Not-null check failed: pszCatalogToVerifyAgainst";
goto LABEL_3;
}
v24 =
0i64;
v6 = RtlGetSystem(
0,
0i64, (
void (__fastcall ****)(_QWORD))&v24);
if ( v6 <
0 )
{
v7 = ConvertNtStatusToHResult(v6);
v8 = v24;
v28 = v7;
LABEL_23:
if ( v8 )
{
v18 = *(
void (__fastcall **)(__int64 *))*v8;
_guard_check_icall_fptr(*(_QWORD *)*v8);
v18(v8);
}
Windows::ErrorHandling::COM::CBaseFrame<Windows::ErrorHandling::COM::CSimpleHResultCarryingFrame>::ReportErrorPropagation(&v28);
return (
unsigned int)v28;
}
v8 = v24;
v30 =
0i64;
v29 =
0i64;
v31 =
0i64;
v9 = GetFileContents(v24, v2, (__int64)&v29);
if ( v9 <
0 )
{
v28 = v9;
LABEL_22:
Windows::Rtl::AutoBlob<Windows::Auto<_LBLOB>>::Close((__int64)&v29);
goto LABEL_23;
}
v34 =
0i64;
_mm_store_si128((__m128i *)&v32,
0i64);
_mm_store_si128((__m128i *)&v33,
0i64);
v35 =
0i64;
v36 =
0i64;
v37 =
0;
v39 =
0;
v12 = CCatalog::Create((CCatalog *)&v32, v10, v11, (
const struct _LBLOB *)&v29, (
unsigned __int32 *)v22);
if ( v12 <
0 )
{
v28 = ConvertNtStatusToHResult(v12);
LABEL_21:
CCatalog::~CCatalog((CCatalog *)&v32);
goto LABEL_22;
}
if ( v38 !=
4 )
{
CBSWdsLog(
0x2000000u, -
2147024121,
1i64,
"Can't understand the catalog algorithm in catalog %S");
v4 =
172;
v5 =
0i64;
v28 = ConvertNtStatusToHResult(-
1073740759);
goto LABEL_32;
}
v25 =
0i64;
v24 =
0i64;
v26 =
0i64;
v13 = GetFileContents(v8, v3, (__int64)&v24);
if ( v13 <
0 )
{
v28 = v13;
LABEL_20:
Windows::Rtl::AutoBlob<Windows::Auto<_LBLOB>>::Close((__int64)&v24);
goto LABEL_21;
}
v26 =
0i64;
v25 =
0i64;
*(_QWORD *)v23 =
0i64;
v14 = RtlAllocateLBlob(
32i64, (__int64)&v25);
if ( v14 <
0
|| (v14 = RtlHashLBlob(v16, v15, (__int64)&v24, &v25), v14 <
0)
|| (v28 =
0,
v23[
0] =
0,
v14 = CCatalog::FindSubject((CCatalog *)&v32, v17, (
const struct _LBLOB *)&v25, v23, &v28),
v14 <
0) )
{
v28 = ConvertNtStatusToHResult(v14);
Windows::Rtl::AutoBlob<Windows::Auto<_LBLOB>>::Close((__int64)&v25);
goto LABEL_20;
}
if ( !v23[
0] || v28 <
0 )
{
v28 = -
2146762496;
v4 =
197;
v5 =
"((HRESULT)0x800B0100L)";
Windows::Rtl::AutoBlob<Windows::Auto<_LBLOB>>::Close((__int64)&v25);
Windows::Rtl::AutoBlob<Windows::Auto<_LBLOB>>::Close((__int64)&v24);
LABEL_32:
CCatalog::~CCatalog((CCatalog *)&v32);
Windows::Rtl::AutoBlob<Windows::Auto<_LBLOB>>::Close((__int64)&v29);
if ( v8 )
{
v21 = *(
void (__fastcall **)(__int64 *))*v8;
_guard_check_icall_fptr(*(_QWORD *)*v8);
v21(v8);
}
goto LABEL_34;
}
Windows::Rtl::AutoBlob<Windows::Auto<_LBLOB>>::Close((__int64)&v25);
Windows::Rtl::AutoBlob<Windows::Auto<_LBLOB>>::Close((__int64)&v24);
CCatalog::~CCatalog((CCatalog *)&v32);
Windows::Rtl::AutoBlob<Windows::Auto<_LBLOB>>::Close((__int64)&v29);
if ( v8 )
{
v19 = *(
void (__fastcall **)(__int64 *))*v8;
_guard_check_icall_fptr(*(_QWORD *)*v8);
v19(v8);
}
return 0i64;
}
转载请注明原文地址: https://ju.6miu.com/read-1305682.html