MiUpdateThunks
VOID __stdcall MiUpdateThunks(_LOADER_PARAMETER_BLOCK *LoaderBlock, PVOID OldAddress, PVOID NewAddress, UINT64 a4){
char *v4;
char *v5;
char *v6;
signed __int64 v7;
unsigned __int64 *v9;
unsigned __int64 *v10;
__int64 v11;
unsigned __int64 v12;
UINT64 Size;
LODWORD(Size) = 0;
v4 = (char *)OldAddress + (unsigned int)(a4 - 1);
v5 = (char *)LoaderBlock + 16;
v6 = (char *)*((_QWORD *)LoaderBlock + 2);
v7 = (_BYTE *)NewAddress - (_BYTE *)OldAddress;
while( v6 != v5 )
{
LODWORD(v9) = RtlImageDirectoryEntryToData(*((PVOID *)v6 + 6), 1u, 0xCu, &Size);
v10 = v9;
if( v9 )
{
LODWORD(Size) = (unsigned int)Size >> 3;
v11 = (unsigned int)Size;
if( (_DWORD)Size )
{
do
{
v12 = *v10;
if( *v10 >= (unsigned __int64)OldAddress && v12 <= (unsigned __int64)v4 )
*v10 = v7 + v12;
++v10;
--v11;
}
while( v11 );
}
}
v6 = *(char **)v6;
}
}Referenced by:
MiBootImageRelocated