ExpCovGetSectionInfo
VOID *__stdcall ExpCovGetSectionInfo(VOID *ImageBaseAddress, UINT64 *CoverageSectionSize){
__int64 v4;
__int64 v5;
unsigned int v6;
__int64 v7;
__int64 v8;
_DWORD *v9;
__int64 v11;
_DWORD *v12;
unsigned __int64 v13;
*(_DWORD *)CoverageSectionSize = 0;
LODWORD(v4) = RtlImageNtHeader((UINT64)ImageBaseAddress);
v5 = v4;
if( !v4 )
return 0i64;
v6 = *(unsigned __int16 *)(v4 + 6);
v7 = v4 + *(unsigned __int16 *)(v4 + 20);
v8 = 0i64;
v9 = (_DWORD *)(v7 + 24);
if( !*(_WORD *)(v5 + 6) )
return 0i64;
while( *v9 != 1987011374 )
{
v8 = (unsigned int)(v8 + 1);
v9 += 10;
if( (unsigned int)v8 >= v6 )
return 0i64;
}
v11 = *(unsigned int *)(v7 + 40 * v8 + 32);
v12 = (char *)ImageBaseAddress + *(unsigned int *)(v7 + 40 * v8 + 36);
if( (char *)v12 + v11 > (char *)ImageBaseAddress + *(unsigned int *)(v5 + 80)
|| !*(_DWORD *)(v7 + 40 * v8 + 40)
|| (unsigned int)v11 < 0x28
|| *v12 != -557841984
|| (v13 = (unsigned int)v12[6], (_DWORD)v13 != (_DWORD)v11)
|| v13 <= (unsigned __int64)(unsigned int)v12[7] + 40
|| (v12[8] & 7) != 0 )
{
DbgPrintEx(0x7Eu, 0, (PCSTR)&stru_1407D9AB0.P3Home, ImageBaseAddress);
return 0i64;
}
*(_DWORD *)CoverageSectionSize = v13;
return v12;
}Referenced by:
MiConstructLoaderEntry