LdrProcessRelocationBlockLongLong
_IMAGE_BASE_RELOCATION *__fastcall LdrProcessRelocationBlockLongLong(
UINT16 ImageMachine,
UINT64 Va,
UINT64 SizeOfBlock,
UINT16 *RelocationPtr,
INT64 Diff){
UINT16 *v5;
int v7;
UINT16 *v8;
unsigned int v9;
v5 = RelocationPtr;
v7 = ImageMachine;
v8 = &RelocationPtr[(unsigned int)SizeOfBlock];
if( RelocationPtr >= v8 )
return(_IMAGE_BASE_RELOCATION *)v5;
while( 1 )
{
if( ((1 << (*v5 >> 12)) & 0x3A0) == 0 )
{
v9 = LdrpGenericProcessRelocation(v5, Va, Diff);
goto LABEL_9;
}
if( v7 != 448 )
break;
v9 = LdrpArmProcessRelocation(v5, Va, Diff);
LABEL_9:
if( !v9 )
return 0i64;
v5 += v9;
if( v5 >= v8 )
return(_IMAGE_BASE_RELOCATION *)v5;
}
if( v7 == 450 || v7 == 452 )
{
v9 = LdrpThumbProcessRelocation(v5, Va, Diff);
goto LABEL_9;
}
return 0i64;
}Referenced by:
LdrRelocateImageWithBias