PopPepAttemptAcitivityPromotion

CHAR __fastcall PopPepAttemptAcitivityPromotion(INT64 a1, INT64 a2, INT64 a3, INT64 a4, volatile INT32 *a5){
  unsigned int v5; 
  int v9; 
  CHAR v10; 
  CHAR result; 
  unsigned int v12; 
  unsigned int v13; 
  v5 = a4;
  v9 = *(_DWORD *)&byte_140002938[136 * (int)a4];
  if( !v9 )
  {
    *(_DWORD *)a3 = *(_DWORD *)a3 & 0xFFFFFFFC | 2;
    *(_DWORD *)(a3 + 8) = *(_DWORD *)(a3 + 4);
LABEL_9:
    result = (char)a5;
    _InterlockedIncrement(a5);
    return result;
  }
  v10 = *(_BYTE *)(a3 + 16);
  result = PopPepShouldActivityWait(a1 + 72, (unsigned int)a4, 0i64, 0i64, v10);
  if( result == 1 )
    return result;
  if( v9 == 2 )
  {
    v12 = *(_DWORD *)(a2 + 8);
    v13 = v12;
    goto LABEL_5;
  }
  v13 = *(_DWORD *)(a1 + 180);
  if( v9 == 3 )
  {
    v12 = v13 - 1;
    v13 = 0;
    goto LABEL_5;
  }
  v12 = 0;
  if( v13 )
  {
LABEL_7:
    result = PopPepShouldActivityWait(a1 + 72, v5, 4i64, 5i64, v10);
    if( result == 1 )
      return result;
    *(_DWORD *)a3 = *(_DWORD *)a3 & 0xFFFFFFFC | 2;
    *(_DWORD *)(a3 + 8) = *(_DWORD *)(a3 + 4);
    goto LABEL_9;
  }
LABEL_5:
  while( 1 )
  {
    result = PopPepShouldActivityWait(a1 + 200i64 * v13 + 240, v5, 1i64, 3i64, v10);
    if( result == 1 )
      return result;
    if( ++v13 > v12 )
      goto LABEL_7;
  }
}

Referenced by:

PopPepPromoteActivities