/* DxeIplDecodeCleanup @ 0xffc18782 size=0x50 */
int __fastcall DxeIplDecodeCleanup(int a1, _BYTE *a2, int a3)
{
int v4; // edi
int v5; // eax
v4 = (768 << (*a2 + a2[4])) + 1846; /*0xffc18792*/
if ( *(_DWORD *)(a1 + 16) && v4 == *(_DWORD *)(a1 + 84) ) /*0xffc187a1*/
return 0; /*0xffc187a1*/
(*(void (__cdecl **)(int, _DWORD))(a3 + 4))(a3, *(_DWORD *)(a1 + 16)); /*0xffc187ac*/
*(_DWORD *)(a1 + 16) = 0; /*0xffc187af*/
v5 = (*(int (__cdecl **)(int, int))a3)(a3, 2 * v4); /*0xffc187b8*/
*(_DWORD *)(a1 + 16) = v5; /*0xffc187bd*/
*(_DWORD *)(a1 + 84) = v4; /*0xffc187c0*/
if ( v5 ) /*0xffc187c6*/
return 0; /*0xffc187cd*/
else
return 2; /*0xffc187ca*/
}