0x140012de0-0x140012f27 sub_140012DE0

__int64 __fastcall sub_140012DE0(unsigned int a1, unsigned int a2, unsigned int a3, unsigned int a4, int a5)
{
  __int64 v6; // rdx
  signed int v7; // eax
  __int64 v8; // r11
  __int64 v9; // r11

  if ( a1 > 3 )
    return 0xFFFFFFFFLL;
  if ( (a2 & 0x80000000) != 0 )
    return 0xFFFFFFFFLL;
  if ( (a3 & 0x80000000) != 0 )
    return 0xFFFFFFFFLL;
  if ( (a4 & 0x80000000) != 0 )
    return 0xFFFFFFFFLL;
  v6 = 131502LL * (int)a1;
  if ( (signed int)(a2 >> 6) >= SLODWORD(qword_15ADA9274[v6]) )
    return 0xFFFFFFFFLL;
  if ( (signed int)(a3 >> 6) >= SHIDWORD(qword_15ADA9274[v6]) )
    return 0xFFFFFFFFLL;
  v7 = qword_15ADA927C[v6];
  if ( (int)(a4 >> 6) >= v7 )
    return 0xFFFFFFFFLL;
  v8 = *(int *)(qword_15ADA9288[v6]
              + 4LL * (int)((a2 >> 6) + LODWORD(qword_15ADA9274[v6]) * ((a4 >> 6) + (a3 >> 6) * v7)));
  if ( (_DWORD)v8 == -1 )
    return 0xFFFFFFFFLL;
  v9 = dword_15ADA97B0[263004 * (int)a1
                     + 513 * v8
                     + (int)(((a2 >> 3) & 7) + 8 * (((a4 >> 3) & 7) + 8 * ((a3 >> 3) & 7)))];
  if ( (_DWORD)v9 == -1 )
    return 0xFFFFFFFFLL;
  else
    return (unsigned __int16)word_154162248[13860 * v9 + (int)(a5 + 8 * ((a2 & 7) + 8 * ((a4 & 7) + 8 * (a3 & 7))))];
}
