SepLogTokenSidManagement
void __fastcall SepLogTokenSidManagement(int a1, _SEP_SID_VALUES_BLOCK *a2, _SEP_SID_VALUES_BLOCK *a3, __int64 a4){
int v6;
_LUID *v7;
_DWORD *v8;
__int64 v9;
int v10;
_OBJECT_NAME_INFORMATION *ImageFileName;
void *v12;
void *v13;
int v14;
void *v15;
int v16;
__int64 ReferenceCount;
unsigned int SidCount;
unsigned int v19;
void *SidValuesDump;
__int64 v21;
__int64 v22;
unsigned int v23;
unsigned int v24;
__int64 v25;
ULONG v26;
void *v27;
VOID *v28;
unsigned int v29;
__int64 v30;
unsigned int v31;
int v32;
int v33;
int v34;
UINT64 OutputSize;
unsigned int v36;
unsigned int v37;
_LUID v38;
_LUID v39;
__int64 v40;
__int64 v41;
_EVENT_DATA_DESCRIPTOR UserData;
void *v43;
int v44;
int v45;
void *v46;
int v47;
int v48;
void *v49;
int v50;
int v51;
_LUID *v52;
__int64 v53;
_LUID *v54;
__int64 v55;
int *v56;
__int64 v57;
int *v58;
__int64 v59;
int *v60;
__int64 v61;
__int64 *v62;
__int64 v63;
int *v64;
__int64 v65;
void *v66;
int v67;
int v68;
v6 = a1;
v31 = 0;
OutputSize = 0i64;
if( *(&ExBootDevicesRemovedEvent + 380) && SepTokenSidManagementLoggingEnabled )
{
if( a4 )
{
v38 = RtlConvertLuidToUlonglong((_LUID *)(a4 + 16));
v39 = RtlConvertLuidToUlonglong(v7 + 3);
v32 = v8[48];
v33 = v8[49];
v34 = v8[50];
}
else
{
v38 = 0i64;
v39 = 0i64;
v32 = 0;
v33 = 0;
v34 = 0;
}
UserData.Ptr = (unsigned __int64)SepGetSidManagementActionName(v6, &v31);
v10 = 2;
UserData.Size = v31;
UserData.Reserved = 0;
ImageFileName = KeGetCurrentThread()->ApcState.Process->SeAuditProcessCreationInfo.ImageFileName;
v12 = &unk_140CF9D90;
if( ImageFileName && *(_WORD *)ImageFileName )
{
v13 = (void *)*((_QWORD *)ImageFileName + 1);
v14 = *((unsigned __int16 *)ImageFileName + 1);
}
else
{
v13 = &unk_140CF9D90;
v14 = 2;
}
v43 = v13;
v44 = v14;
v45 = 0;
if( v9 && *(_WORD *)(v9 + 56) )
{
v15 = *(void **)(v9 + 64);
v16 = *(unsigned __int16 *)(v9 + 58);
}
else
{
v15 = &unk_140CF9D90;
v16 = 2;
}
v46 = v15;
v47 = v16;
v48 = 0;
if( v9 && *(_WORD *)(v9 + 72) )
{
v12 = *(void **)(v9 + 80);
v10 = *(unsigned __int16 *)(v9 + 74);
}
v49 = v12;
v52 = &v38;
v54 = &v39;
v56 = &v32;
v58 = &v33;
v60 = &v34;
v50 = v10;
v51 = 0;
v53 = 8i64;
v55 = 8i64;
v57 = 4i64;
v59 = 4i64;
v61 = 4i64;
if( a2 )
ReferenceCount = a2->ReferenceCount;
else
ReferenceCount = 0i64;
v40 = ReferenceCount;
v62 = &v40;
v63 = 8i64;
if( a2 )
SidCount = a2->SidCount;
else
SidCount = 0;
v36 = SidCount;
v64 = (int *)&v36;
v19 = 11;
v65 = 4i64;
SidValuesDump = 0i64;
if( a2 && SidCount )
{
SidValuesDump = SepGetSidValuesDump(a2, &OutputSize);
v67 = OutputSize;
v19 = 12;
v66 = SidValuesDump;
v68 = 0;
}
if( a3 )
v21 = a3->ReferenceCount;
else
v21 = 0i64;
v41 = v21;
v22 = v19;
v23 = v19 + 1;
v22 *= 2i64;
*(&UserData.Ptr + v22) = (unsigned __int64)&v41;
*((_QWORD *)&UserData.Size + v22) = 8i64;
if( !a3 || a2 == a3 )
v24 = 0;
else
v24 = a3->SidCount;
v25 = 2i64 * v23;
v37 = v24;
v26 = v23 + 1;
v27 = 0i64;
*(&UserData.Ptr + v25) = (unsigned __int64)&v37;
*((_QWORD *)&UserData.Size + v25) = 4i64;
if( a3 && v24 )
{
v28 = SepGetSidValuesDump(a3, (UINT64 *)((char *)&OutputSize + 4));
v29 = HIDWORD(OutputSize);
v27 = v28;
v30 = 2i64 * v26++;
*(&UserData.Ptr + v30) = (unsigned __int64)v28;
*(&UserData.Size + 2 * v30) = v29;
*(&UserData.Reserved + 2 * v30) = 0;
}
EtwWrite(*(&ExBootDevicesRemovedEvent + 380), &TokenSidManagementLog, 0, v26, &UserData);
if( SidValuesDump )
ExFreePoolWithTag(SidValuesDump, 0);
if( v27 )
ExFreePoolWithTag(v27, 0);
}
}Referenced by:
SepDereferenceSidValuesBlock
SepSetTokenUserAndGroups