EtwpTraceOpticalIo
VOID __stdcall EtwpTraceOpticalIo(UINT64 Key, UINT64 DiskNumber, IRP *Irp, LARGE_INTEGER ResponseTime){
char *v5;
int v7;
char v8;
__int64 v9;
int v10;
UINT16 v11;
int *v12;
CDB *ScsiPassThroughCdb;
UCHAR OperationCode;
unsigned __int64 v15;
__int16 v16;
int v17;
__int64 v18;
int v19;
int v20;
UINT16 v21;
int v22;
__int64 v23;
__int64 v24;
int v25;
int v26;
__int64 v27;
__int64 v28;
int v29;
int v30;
__int64 *v31;
UINT64 Flag;
int v33;
int v34;
int v35;
int v36;
unsigned __int64 v37;
__int64 v38;
IRP *v39;
LARGE_INTEGER v40;
int v41;
int v42;
int v43[2];
LARGE_INTEGER v44;
IRP *v45;
int v46;
int v47;
EVENT_DATA_DESCRIPTOR EventData;
v47 = 0;
v42 = 0;
v5 = (char *)*((_QWORD *)Irp + 23);
v7 = DiskNumber;
v8 = *v5;
if( (unsigned __int8)(*v5 - 3) <= 1u )
{
v35 = *((_DWORD *)Irp + 14);
v33 = DiskNumber;
v39 = Irp;
v21 = (v8 != 3) + 311;
v22 = *((_DWORD *)Irp + 4);
v34 = v22;
v23 = *((_QWORD *)v5 + 3);
v36 = 0;
v37 = v23;
v24 = *((_QWORD *)Irp + 19);
v40 = ResponseTime;
if( v24 )
v25 = *(_DWORD *)(v24 + 1152);
else
v25 = -1;
v41 = v25;
if( (Key & 0xFFFF0000) == 1448280064 )
{
v36 = 1;
}
else
{
v26 = Key & 0xFFFFFF;
if( v26 == 5467492 || v26 == 5460546 )
v36 = 2;
}
if( (v22 & 8) != 0 )
{
v27 = *((_QWORD *)Irp + 3);
if( v27 )
{
v28 = *(_QWORD *)(v27 + 192);
if( v28 )
goto LABEL_37;
v28 = *(_QWORD *)(*(_QWORD *)(v27 + 184) + 48i64);
LABEL_36:
if( v28 )
goto LABEL_37;
}
}
else
{
v28 = *((_QWORD *)Irp + 24);
if( v28 )
{
LABEL_37:
v38 = *(_QWORD *)(v28 + 24);
LABEL_39:
EventData.Size = 52;
v11 = v21;
goto LABEL_40;
}
v29 = *((unsigned __int8 *)Irp + 67);
v30 = *((char *)Irp + 66);
if( v29 <= v30 )
{
v31 = (__int64 *)(v5 + 48);
while( 1 )
{
v28 = *v31;
if( *v31 )
goto LABEL_37;
LOBYTE(v29) = v29 + 1;
v31 += 9;
if( (unsigned __int8)v29 > v30 )
goto LABEL_36;
}
}
}
v38 = 0i64;
goto LABEL_39;
}
if( v8 == 9 )
{
LABEL_3:
v43[1] = *((_DWORD *)Irp + 4);
v9 = *((_QWORD *)Irp + 19);
v43[0] = v7;
v44 = ResponseTime;
v45 = Irp;
if( v9 )
v10 = *(_DWORD *)(v9 + 1152);
else
v10 = -1;
v46 = v10;
v11 = 313;
v12 = v43;
EventData.Size = 28;
goto LABEL_41;
}
if( v8 == 14 )
{
ScsiPassThroughCdb = EtwpGetScsiPassThroughCdb(Irp);
if( ScsiPassThroughCdb )
{
OperationCode = ScsiPassThroughCdb->CDB6GENERIC.OperationCode;
v15 = (ScsiPassThroughCdb->CDB6READWRITE.Control | (unsigned __int64)((ScsiPassThroughCdb->CDB6GENERIC.CommandUniqueBytes[2] | ((ScsiPassThroughCdb->CDB6GENERIC.CommandUniqueBytes[1] | (ScsiPassThroughCdb->CDB6GENERIC.CommandUniqueBytes[0] << 8)) << 8)) << 8)) << 11;
if( ((OperationCode - 40) & 0x7F) != 0 )
{
if( ((OperationCode - 42) & 0x7F) != 0 )
{
if( OperationCode != 53 )
return;
goto LABEL_3;
}
v16 = 312;
}
else
{
v16 = 311;
}
v17 = *((_DWORD *)Irp + 4);
v36 = 0;
v38 = 0i64;
v37 = v15;
v18 = *((_QWORD *)Irp + 19);
v34 = v17;
v19 = *((_DWORD *)Irp + 14);
v33 = v7;
v39 = Irp;
v35 = v19;
v40 = ResponseTime;
if( v18 )
v20 = *(_DWORD *)(v18 + 1152);
else
v20 = -1;
v41 = v20;
v11 = v16;
EventData.Size = 28;
LABEL_40:
v12 = &v33;
LABEL_41:
EventData.Reserved = 0;
LODWORD(Flag) = 4200451;
EventData.Ptr = (unsigned __int64)v12;
EtwTraceKernelEvent(&EventData, 1ui64, 0x80000001ui64, v11, Flag);
}
}
}Referenced by:
No references.