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.