/* DxeIplLzmaDecodeLiteral @ 0xffc17e29 size=0x7e */
char __fastcall DxeIplLzmaDecodeLiteral(_DWORD *a1, unsigned int n0x112_1)
{
unsigned int n0x112; // edi
unsigned int v4; // edx
int v5; // ebp
unsigned int n0x112_2; // esi
unsigned int v7; // ebx
int v9; // [esp+8h] [ebp-4h]
n0x112 = a1[18]; /*0xffc17e2c*/
if ( n0x112 && n0x112 < 0x112 )
{
v4 = a1[9]; /*0xffc17e3d*/
n0x112_1 -= v4; /*0xffc17e40*/
v5 = a1[5]; /*0xffc17e47*/
n0x112_2 = a1[18]; /*0xffc17e4b*/
v9 = a1[10]; /*0xffc17e4d*/
v7 = a1[14]; /*0xffc17e51*/
if ( n0x112_1 < n0x112 ) /*0xffc17e5a*/
n0x112_2 = n0x112_1; /*0xffc17e5c*/
if ( !a1[12] ) /*0xffc17e5e*/
{
n0x112_1 = a1[3] - a1[11]; /*0xffc17e69*/
if ( n0x112_1 <= n0x112_2 ) /*0xffc17e6e*/
a1[12] = a1[3]; /*0xffc17e70*/
}
a1[11] += n0x112_2; /*0xffc17e77*/
for ( a1[18] = n0x112 - n0x112_2; n0x112_2; --n0x112_2 )
{
LOBYTE(n0x112_1) = *(_BYTE *)(v4 + (v4 < v7 ? v9 : 0) - v7 + v5);
*(_BYTE *)(v4 + v5) = n0x112_1; /*0xffc17e94*/
++v4; /*0xffc17e97*/
}
a1[9] = v4; /*0xffc17e9f*/
}
return n0x112_1; /*0xffc17ea3*/
}