__int64 __fastcall sub_27F8(__int64 a1, _DWORD *a2, _DWORD *a3, _DWORD *a4, _DWORD *a5)
{
unsigned int v8; // edi
__int64 n15; // rax
int n6; // ebx
v8 = a1; /*0x281f*/
if ( a5 ) /*0x2824*/
*a5 = sub_2BDC(a1, 12, 13); /*0x2834*/
if ( a4 ) /*0x283a*/
*a4 = sub_2BDC(v8, 0, 3); /*0x2849*/
n15 = sub_2BDC(v8, 8, 11); /*0x2856*/
n6 = n15; /*0x285b*/
if ( a2 ) /*0x2860*/
{
*a2 = n15; /*0x2862*/
if ( (_DWORD)n15 == 15 ) /*0x2868*/
{
n15 = sub_2BDC(v8, 20, 27); /*0x2873*/
*a2 += n15; /*0x2878*/
}
}
if ( a3 ) /*0x287e*/
{
n15 = sub_2BDC(v8, 4, 7); /*0x288b*/
*a3 = n15; /*0x2890*/
if ( n6 == 6 || n6 == 15 ) /*0x289a*/
{
n15 = 16 * (unsigned int)sub_2BDC(v8, 16, 19); /*0x28ac*/
*a3 += n15; /*0x28af*/
}
}
return n15; /*0x28c5*/
}