PnpCompareInterruptInformation

char __fastcall PnpCompareInterruptInformation(__int64 a1, const VOID *a2, unsigned int a3){
  _SIZE_T *v3; 
  _SIZE_T *v4; 
  _DWORD *v5; 
  __int64 v6; 
  __int64 v7; 
  char *v8; 
  int v9; 
  __int64 v10; 
  int *v11; 
  int *v12; 
  int v13; 
  __int64 v14; 
  ULONG v16; 
  int v17; 
  int v18[3]; 
  _EVENT_DATA_DESCRIPTOR v19; 
  const char *v20; 
  int v21; 
  int v22; 
  __int64 *v23; 
  __int64 v24; 
  int *v25; 
  __int64 v26[4]; 
  int v27[2]; 

  v3 = *(_SIZE_T **)(a1 + 312);
  v4 = (_SIZE_T *)a3;
  v5 = (_DWORD *)*((_QWORD *)v3 + 11);
  v6 = *((_QWORD *)v3 + 5);
  if( v5 )
  {
    if( *v5 == a3 )
    {
      v3 = RtlCompareMemory(v5 + 1, a2, a3);
      if( v3 != v4 && *(&stru_140C00F40 + 1952) > 5u )
      {
        LOBYTE(v3) = tlgKeywordOn((__int64)&stru_140C00F40 + 7808, 0x400000000000i64);
        if( (_BYTE)v3 )
        {
          v14 = -1i64;
          do
            ++v14;
          while( aCompareFailed[v14] );
          v20 = "Compare Failed";
          v21 = v14 + 1;
          v11 = &v17;
          v12 = v18;
          v18[0] = v13;
          v17 = (int)v4;
          v8 = (char *)word_14002417A;
LABEL_20:
          v23 = (__int64 *)v12;
          v26[1] = (__int64)v27;
          v26[3] = *(_QWORD *)(v6 + 48);
          v27[0] = *(unsigned __int16 *)(v6 + 40);
          v16 = 7;
          v27[1] = 0;
          v26[2] = 2i64;
          v26[0] = 4i64;
          v25 = v11;
          v24 = 4i64;
LABEL_21:
          v22 = 0;
          LOBYTE(v3) = tlgWriteTransfer_EtwWriteTransfer(
                         (__int64)&stru_140C00F40 + 7808,
                         (unsigned __int8 *)v8,
                         0i64,
                         0i64,
                         v16,
                         &v19);
        }
      }
    }
    else if( *(&stru_140C00F40 + 1952) > 5u )
    {
      LOBYTE(v3) = tlgKeywordOn((__int64)&stru_140C00F40 + 7808, 0x400000000000i64);
      if( (_BYTE)v3 )
      {
        v10 = -1i64;
        do
          ++v10;
        while( aSizeMismatch[v10] );
        v20 = "Size Mismatch";
        v21 = v10 + 1;
        v11 = v18;
        v12 = &v17;
        v17 = v9;
        v18[0] = (int)v4;
        v8 = byte_1400241D1;
        goto LABEL_20;
      }
    }
  }
  else if( *(&stru_140C00F40 + 1952) > 5u )
  {
    LOBYTE(v3) = tlgKeywordOn((__int64)&stru_140C00F40 + 7808, 0x400000000000i64);
    if( (_BYTE)v3 )
    {
      v7 = -1i64;
      do
        ++v7;
      while( aNotFound_0[v7] );
      v20 = "Not Found";
      v21 = v7 + 1;
      v8 = byte_140024131;
      v24 = 2i64;
      v23 = v26;
      v25 = *(int **)(v6 + 48);
      v26[0] = *(unsigned __int16 *)(v6 + 40);
      v16 = 5;
      goto LABEL_21;
    }
  }
  return(char)v3;
}

Referenced by:

PnpGetDevicePropertyData