int __usercall sub_FFD86E37@<eax>(int a1@<edx>, int a2@<ecx>, int a3, int a4, int a5, int a6, int a7, ...)
{
int v7; // ebx
unsigned int n8_3; // esi
unsigned int v9; // edi
unsigned __int8 *v10; // ebx
unsigned __int8 n8; // al
int n8_4; // ebp
int v13; // eax
unsigned int n8_1; // ecx
_DWORD *v15; // edx
int v16; // eax
unsigned int v17; // edi
unsigned __int8 *v18; // ebp
unsigned __int8 n8_2; // al
int n8_5; // ebx
int v21; // eax
_DWORD *v22; // ecx
int result; // eax
unsigned int retaddr; // [esp+5Ch] [ebp+0h]
int v27; // [esp+74h] [ebp+18h] BYREF
va_list va; // [esp+74h] [ebp+18h]
int v29; // [esp+78h] [ebp+1Ch]
int v30; // [esp+7Ch] [ebp+20h]
int v31; // [esp+80h] [ebp+24h]
int v32; // [esp+84h] [ebp+28h]
int v33; // [esp+88h] [ebp+2Ch]
int v34; // [esp+8Ch] [ebp+30h]
int v35; // [esp+90h] [ebp+34h]
va_list va1; // [esp+94h] [ebp+38h] BYREF
va_start(va1, a7);
va_start(va, a7);
v27 = va_arg(va1, _DWORD); /*0xffd86e37*/
v29 = va_arg(va1, _DWORD); /*0xffd86e37*/
v30 = va_arg(va1, _DWORD); /*0xffd86e37*/
v31 = va_arg(va1, _DWORD); /*0xffd86e37*/
v32 = va_arg(va1, _DWORD); /*0xffd86e37*/
v33 = va_arg(va1, _DWORD); /*0xffd86e37*/
v34 = va_arg(va1, _DWORD); /*0xffd86e37*/
v35 = va_arg(va1, _DWORD); /*0xffd86e37*/
v7 = a2; /*0xffd86e3e*/
sub_FFD8D4C8(va1, retaddr); /*0xffd86e4f*/
sub_FFD8D4C8((int *)va, retaddr); /*0xffd86e5b*/
sub_FFD8BF54(); /*0xffd86e60*/
n8_3 = 0; /*0xffd86e65*/
v9 = 0; /*0xffd86e67*/
if ( (unsigned __int8)sub_FFD8C051() ) /*0xffd86e69*/
{
v10 = (unsigned __int8 *)(v7 + 264); /*0xffd86e72*/
do /*0xffd86ebd*/
{
n8 = *v10; /*0xffd86e78*/
if ( *v10 != 8 ) /*0xffd86e7c*/
{
n8_4 = n8; /*0xffd86e7e*/
if ( n8 >= 8u ) /*0xffd86e84*/
{
v13 = GetReportStatusCodePpi(); /*0xffd86e86*/
if ( v13 ) /*0xffd86e8d*/
(*(void (**)(void))(v13 + 4))(); /*0xffd86e9e*/
}
*((int *)va + n8_4) |= 1 << v9; /*0xffd86eab*/
}
++v9; /*0xffd86eaf*/
v10 += 16; /*0xffd86eb0*/
}
while ( v9 < (unsigned __int8)sub_FFD8C051() ); /*0xffd86ebd*/
v7 = a2; /*0xffd86ebf*/
}
n8_1 = 0; /*0xffd86ec7*/
v15 = (_DWORD *)(a1 + 208); /*0xffd86ec9*/
do /*0xffd86edc*/
{
v16 = *((int *)va + n8_1++); /*0xffd86ecf*/
*v15++ = v16; /*0xffd86ed4*/
}
while ( n8_1 < 8 ); /*0xffd86edc*/
v17 = 0; /*0xffd86ede*/
v18 = (unsigned __int8 *)(v7 + 8); /*0xffd86ee0*/
while ( (unsigned int)(sub_FFD8BE68() - 1) <= 1 && v17 < retaddr ) /*0xffd86efb*/
{
n8_2 = *v18; /*0xffd86efd*/
if ( *v18 != 8 ) /*0xffd86f02*/
{
n8_5 = n8_2; /*0xffd86f04*/
if ( n8_2 >= 8u ) /*0xffd86f0a*/
{
v21 = GetReportStatusCodePpi(); /*0xffd86f0c*/
if ( v21 ) /*0xffd86f13*/
(*(void (**)(void))(v21 + 4))(); /*0xffd86f24*/
}
va1[n8_5] = (void *)((unsigned int)va1[n8_5] | (1 << v17)); /*0xffd86f31*/
}
++v17; /*0xffd86f35*/
v18 += 16; /*0xffd86f36*/
}
v22 = (_DWORD *)(a1 + 176); /*0xffd86f3f*/
do /*0xffd86f52*/
{
result = (int)va1[n8_3++]; /*0xffd86f45*/
*v22++ = result; /*0xffd86f4a*/
}
while ( n8_3 < 8 ); /*0xffd86f52*/
return result; /*0xffd86f54*/
}