SC_DEVICE::ExtractDeviceStrings

__int64 __fastcall SC_DEVICE::ExtractDeviceStrings(SC_DEVICE *this){
  _DWORD *v1; 
  int v3; 
  int *v4; 
  unsigned int v5; 
  unsigned int v6; 
  __int64 v7; 
  __int64 *v8; 
  __int64 v9; 
  _OWORD *v10; 
  int *v11; 
  int v13[4]; 
  __int64 v14[4]; 
  _OWORD v15[4]; 

  v1 = (_DWORD *)*((_QWORD *)this + 20);
  v3 = 0;
  v13[0] = v1[3];
  v13[1] = v1[4];
  v13[2] = v1[5];
  v13[3] = v1[6];
  v14[0] = (__int64)this + 24;
  v14[1] = (__int64)this + 40;
  v14[2] = (__int64)this + 56;
  v14[3] = (__int64)this + 72;
  memset(v15, 0i64, sizeof(v15));
  v4 = v13;
  v5 = v1[1] - 1;
  v6 = 0;
  while( 1 )
  {
    v7 = (unsigned int)*v4;
    if( (unsigned int)v7 >= 0x24 && (unsigned int)v7 <= v5 )
    {
      v3 = ScAnsiToUnicodeString((PCSZ)(*((_QWORD *)this + 20) + v7), (struct _UNICODE_STRING *)&v15[v6]);
      if( v3 < 0 )
        break;
    }
    ++v6;
    ++v4;
    if( v6 >= 4 )
    {
      v8 = v14;
      v9 = 4i64;
      v10 = v15;
      v11 = v13;
      do
      {
        if( (unsigned int)*v11 >= 0x24 && *v11 <= v5 )
          *(_OWORD *)*v8 = *v10;
        ++v11;
        ++v10;
        ++v8;
        --v9;
      }
      while( v9 );
      return(unsigned int)v3;
    }
  }
  return(unsigned int)v3;
}

Referenced by:

No references.