RtlpMuiRegResizeStringPool
_MUISTRINGPOOL *__stdcall RtlpMuiRegResizeStringPool(
_MUISTRINGPOOL *OldPool,
INT16 NewStringsSize,
INT16 NewPoolSize,
UINT8 CreateCopy){
_MUISTRINGPOOL *v4;
INT16 v7;
INT16 v8;
INT64 v9;
INT64 v10;
size_t v11;
size_t v12;
_MUISTRINGPOOL *StringPool;
v4 = 0i64;
v7 = 4;
if( NewStringsSize >= 1 )
v7 = NewStringsSize;
v8 = 40;
if( NewPoolSize >= 1 )
v8 = NewPoolSize;
if( OldPool )
{
v9 = (unsigned int)v7;
if( (int)v9 >= *((unsigned __int16 *)OldPool + 3) )
{
v10 = (unsigned int)v8;
if( (int)v10 >= *((unsigned __int16 *)OldPool + 5) )
{
v11 = 2 * *((unsigned __int16 *)OldPool + 2);
v12 = 2 * *((unsigned __int16 *)OldPool + 4);
StringPool = RtlpMuiRegCreateStringPool(v9, v10);
v4 = StringPool;
if( StringPool )
{
memmove(*((VOID **)StringPool + 2), *((const VOID **)OldPool + 2), v11);
memmove(*((VOID **)v4 + 3), *((const VOID **)OldPool + 3), v12);
*((_WORD *)v4 + 3) = *((_WORD *)OldPool + 3);
*((_WORD *)v4 + 5) = *((_WORD *)OldPool + 5);
if( !CreateCopy )
ExFreePoolWithTag(OldPool, 0);
}
}
}
}
return v4;
}Referenced by:
RtlpMuiRegGrowStringPool