HalpDpReplaceTarget

INT64 __fastcall HalpDpReplaceTarget(INT64 a1, INT64 a2, INT64 a3){
  int v3; 
  unsigned int v5; 
  int v6; 
  int v7; 
  unsigned int v8; 
  INT64 result; 
  v3 = *(_DWORD *)a1;
  v5 = 0;
  _InterlockedIncrement((volatile signed __int32 *)(a1 + 48));
  v6 = *(_DWORD *)(a1 + 48);
  v7 = v3 + 1;
  while( v6 < v7 )
  {
    if( (++v5 & dword_140C4A13C) != 0 || !qword_140C4A140 )
      _mm_pause();
    else
      qword_140C4A140(v5, a2, a3);
    v6 = *(_DWORD *)(a1 + 48);
  }
  if( !*(_BYTE *)(a1 + 68) )
    HalpDpOfflineProcessorForReplace(a1);
  v8 = 0;
  _InterlockedIncrement((volatile signed __int32 *)(a1 + 52));
  while( 1 )
  {
    result = *(unsigned int *)(a1 + 52);
    if( (int)result >= v7 )
      break;
    if( (++v8 & dword_140C4A13C) != 0 || !qword_140C4A140 )
      _mm_pause();
    else
      qword_140C4A140(v8, a2, a3);
  }
  return result;
}

Referenced by:

No references.