FsRtlDissectDbcs
VOID __stdcall FsRtlDissectDbcs(_STRING *struct_ptr, _STRING *FirstName, _STRING *RemainingName){
__int64 v3;
unsigned int Length;
char *Buffer;
char v9;
__int64 i;
char v11;
unsigned __int16 v12;
unsigned __int16 v13;
v3 = 0i64;
*(_DWORD *)&FirstName->Length = 0;
FirstName->Buffer = 0i64;
*(_DWORD *)&RemainingName->Length = 0;
RemainingName->Buffer = 0i64;
Length = struct_ptr->Length;
if( struct_ptr->Length )
{
Buffer = struct_ptr->Buffer;
v9 = *Buffer;
for( i = *Buffer == 92; (unsigned int)i < Length; LODWORD(i) = i + 1 )
{
v11 = Buffer[(unsigned int)i];
if( v11 == 92 )
break;
if( (unsigned __int8)v11 >= 0x80u
&& (_BYTE)NlsMbOemCodePageTag
&& NlsOemLeadByteInfoTable[(unsigned __int8)Buffer[(unsigned int)i]] )
{
LODWORD(i) = i + 1;
}
}
v12 = i - (*Buffer == 92);
FirstName->Length = v12;
FirstName->MaximumLength = v12;
LOBYTE(v3) = v9 == 92;
FirstName->Buffer = &struct_ptr->Buffer[v3];
if( (unsigned int)i < Length )
{
v13 = Length - i - 1;
RemainingName->Length = v13;
RemainingName->MaximumLength = v13;
RemainingName->Buffer = &struct_ptr->Buffer[(unsigned int)(i + 1)];
}
}
}Referenced by:
FsRtlIsFatDbcsLegal
FsRtlIsHpfsDbcsLegal