/* DxeIplLzmaDecodeMatch @ 0xffc17ea7 size=0x79 */
int __fastcall DxeIplLzmaDecodeMatch(int *a1, unsigned int n0x112, unsigned int a3)
{
unsigned int n0x112_1; // edx
int v6; // ebx
unsigned int v7; // ecx
int result; // eax
unsigned int v9; // eax
while ( 1 ) /*0xffc17eb7*/
{
n0x112_1 = n0x112; /*0xffc17eb7*/
if ( !a1[12] ) /*0xffc17eb3*/
{
v6 = a1[9]; /*0xffc17ec0*/
v7 = a1[3] - a1[11]; /*0xffc17ec5*/
if ( n0x112 - v6 > v7 ) /*0xffc17eca*/
n0x112_1 = v6 + v7; /*0xffc17ecc*/
}
result = DxeIplLzmaDecodeRange(a1, n0x112_1, a3); /*0xffc17ed2*/
if ( result ) /*0xffc17ed9*/
break; /*0xffc17ed9*/
if ( !a1[12] ) /*0xffc17edb*/
{
v9 = a1[3]; /*0xffc17ee0*/
if ( a1[11] >= v9 ) /*0xffc17ee6*/
a1[12] = v9; /*0xffc17ee8*/
}
DxeIplLzmaDecodeLiteral(a1, n0x112); /*0xffc17eef*/
if ( a1[9] >= n0x112 || a1[6] >= a3 || (unsigned int)a1[18] >= 0x112 ) /*0xffc17f05*/
{
if ( (unsigned int)a1[18] > 0x112 ) /*0xffc17f0e*/
a1[18] = 274; /*0xffc17f10*/
return 0; /*0xffc17f17*/
}
}
return result; /*0xffc17f19*/
}