int __thiscall sub_FFD80563(int this)
{
  int v2; // ebx
  unsigned int v3; // esi

  v2 = sub_FFD8CBBA(0, 31, 1); /*0xffd80574*/
  if ( (*(_DWORD *)(this + 2727) & 2) != 0 ) /*0xffd8057f*/
    sub_FFD8CCD3( /*0xffd805aa*/
      v2 + 112,
      (*(_DWORD *)(this + 2727) >> 21) & 7
    | (unsigned __int16)(8 * ((32 * *(unsigned __int8 *)(this + 2728)) | HIWORD(*(_DWORD *)(this + 2727)) & 0x1F)));
  v3 = *(_DWORD *)(this + 2731); /*0xffd805af*/
  if ( !v3 ) /*0xffd805b7*/
    v3 = -19922944; /*0xffd805b9*/
  *(_BYTE *)(v2 + 96) = *(_BYTE *)(v2 + 96) & 0xFC | (v3 >> 12) & 3 | 0x80; /*0xffd805d0*/
  if ( (*(_BYTE *)(this + 2727) & 1) != 0 ) /*0xffd805dd*/
    *(_DWORD *)(v3 + 16) |= 1u; /*0xffd805e5*/
  sub_FFD8CF04(v3, 0); /*0xffd805ed*/
  return sub_FFD8D005(v3, 0); /*0xffd805ff*/
}
