/* DxeIplPeiEndCallback @ 0xffc16ee0 size=0x6a */
unsigned int __cdecl DxeIplPeiEndCallback(int a1, unsigned __int8 **a2, unsigned __int8 **buf, _DWORD *a4)
{
int v5; // ecx
if ( (*(_DWORD *)a1 & 0xFFFFFF) == 0xFFFFFF ) /*0xffc16efb*/
{
if ( !DxeIplFvIsAddrValid(dword_FFC18D18, (_DWORD *)(a1 + 8)) ) /*0xffc16f00*/
return -2147483646; /*0xffc16f0e*/
*a4 = 0; /*0xffc16f13*/
v5 = *(unsigned __int16 *)(a1 + 24); /*0xffc16f16*/
}
else
{
if ( !DxeIplFvIsAddrValid(dword_FFC18D18, (_DWORD *)(a1 + 4)) ) /*0xffc16f26*/
return -2147483646; /*0xffc16f26*/
*a4 = 0; /*0xffc16f2b*/
v5 = *(unsigned __int16 *)(a1 + 20); /*0xffc16f2e*/
}
return DxeIplLzmaDecodeProp((unsigned __int8 *)(a1 + v5), *a2, buf, 2); /*0xffc16f45*/
}