ExpRotateFastOwnerEntrySublistHead
_QWORD *__fastcall ExpRotateFastOwnerEntrySublistHead(__int64 a1, __int64 a2, char a3){
_QWORD *v3;
_QWORD *v5;
__int64 v7;
char v8;
__int64 v9;
__int64 *v10;
_QWORD *v11;
__int64 v12;
__int64 v13;
_QWORD *v14;
_QWORD *result;
_QWORD *v16;
v3 = (_QWORD *)(a2 + 40);
v5 = *(_QWORD **)(a2 + 40);
if( v5[1] != a2 + 40 )
goto LABEL_6;
v7 = *v5;
if( *(_QWORD **)(*v5 + 8i64) != v5 )
goto LABEL_6;
*v3 = v7;
*(_QWORD *)(v7 + 8) = v3;
*((_BYTE *)v5 + 18) = 1;
v8 = *(_BYTE *)(a2 + 16);
*(_BYTE *)(a2 + 18) = 0;
*((_BYTE *)v5 + 16) = v8;
*(_BYTE *)(a2 + 16) = 0;
ExpReplaceListEntry((_QWORD *)a2, v5);
ExpReplaceListEntry(v3, (_QWORD *)(v9 + 40));
v13 = *v10;
if( *(__int64 **)(*v10 + 8) != v10 )
goto LABEL_6;
v11[1] = v10;
*v11 = v13;
*(_QWORD *)(v13 + 8) = v11;
*v10 = (__int64)v11;
v14 = (_QWORD *)(v12 + 56);
if( a3 )
return ExpReplaceListEntry(v11 + 7, v14);
++*(_DWORD *)(a1 + 64);
result = (_QWORD *)(a1 + 48);
v16 = *(_QWORD **)(a1 + 56);
if( *v16 != a1 + 48 )
LABEL_6:
__fastfail(3u);
*v14 = result;
*(_QWORD *)(v12 + 64) = v16;
*v16 = v14;
*(_QWORD *)(a1 + 56) = v14;
return result;
}Referenced by:
ExDisownFastResource
ExpReleaseDisownedFastResourceExclusive
ExpReleaseDisownedFastResourceShared
ExpReleaseFastResourceExclusive
ExpReleaseFastResourceShared