// Decompiled: 0xffe06a52
// Function: PchIoWrite
// Module: TxtPei.efi (TXTPEI)
int __cdecl PchIoWrite(_DWORD *a1)
{
_DWORD *v1; // ecx
_DWORD *v2; // esi
int v3; // edi
int result; // eax
int v5; // eax
int v6; // [esp+Ch] [ebp-8h] BYREF
int v7; // [esp+10h] [ebp-4h] BYREF
v2 = v1; /*0xffe06a59*/
v7 = 0; /*0xffe06a61*/
v3 = 0; /*0xffe06a67*/
result = (*(int (__cdecl **)(_DWORD, _DWORD, int *))(*(_DWORD *)*v1 + 56))(*v1, 0, &v7); /*0xffe06a6d*/
LABEL_6:
if ( result >= 0 ) /*0xffe06ab7*/
{
v6 = 0; /*0xffe06a72*/
do /*0xffe06a7f*/
{
if ( (*(int (__cdecl **)(_DWORD, int, int *, int *))(*(_DWORD *)*v2 + 60))(*v2, 1, &v7, &v6) < 0 ) /*0xffe06a9f*/
{
v5 = *v2; /*0xffe06aa1*/
++v3; /*0xffe06aa7*/
v7 = 0; /*0xffe06aa8*/
result = (*(int (__cdecl **)(int, int, int *))(*(_DWORD *)v5 + 56))(v5, v3, &v7); /*0xffe06aaf*/
goto LABEL_6; /*0xffe06aaf*/
}
}
while ( !(unsigned __int8)HobGetSize(v6, &unk_FFE08D20) ); /*0xffe06a7f*/
*a1 = v6 + 24; /*0xffe06ac4*/
return 0; /*0xffe06ac6*/
}
return result; /*0xffe06ac8*/
}