qsort
INT64 *qsort(WCHAR *Dest, size_t Count, const WCHAR *Format, ...){
INT64 *v6;
WCHAR *v7;
__int64 v8;
WCHAR *v9;
char *i;
const WCHAR *v11;
WCHAR *v12;
signed __int64 v13;
unsigned __int8 v14;
unsigned __int64 v15;
WCHAR *v16;
_BYTE *v17;
const WCHAR *v18;
char v19;
const WCHAR *v20;
WCHAR *v21;
signed __int64 v22;
char v23;
const WCHAR *v24;
WCHAR *v25;
signed __int64 v26;
char v27;
WCHAR *v28;
WCHAR *v29;
unsigned __int64 v30;
WCHAR *v31;
signed __int64 v32;
char v33;
WCHAR *v34;
__int64 v35;
__int64 result[62];
__int64 v37[62];
__int64(__fastcall *v38)(char *, WCHAR *);
va_list va;
va_start(va, Format);
v38 = va_arg(va, __int64(__fastcall *)(char *, WCHAR *));
memset((INT64)result, 0i64);
v6 = (INT64 *)memset((INT64)v37, 0i64);
if( !Dest && Count || !Format || !v38 )
return(INT64 *)xHalTimerWatchdogStop(0i64, 0i64);
if( Count >= 2 )
{
v7 = (WCHAR *)((char *)Dest + (_QWORD)Format * (Count - 1));
v8 = 0i64;
v35 = 0i64;
while( 1 )
{
while( 1 )
{
v6 = (INT64 *)(((char *)v7 - (char *)Dest) / (unsigned __int64)Format);
if( (unsigned __int64)v6 + 1 <= 8 )
{
if( v7 > Dest )
{
do
{
v9 = Dest;
for( i = (char *)Dest + (_QWORD)Format; i <= (char *)v7; i = &i[(_QWORD)Format] )
{
v6 = (INT64 *)v38(i, v9);
if( (int)v6 > 0 )
v9 = (WCHAR *)i;
}
v11 = Format;
v12 = v7;
if( v9 != v7 )
{
v13 = (char *)v9 - (char *)v7;
do
{
v6 = (INT64 *)*(unsigned __int8 *)v12;
v14 = *((_BYTE *)v12 + v13);
*((_BYTE *)v12 + v13) = (_BYTE)v6;
*(_BYTE *)v12 = v14;
v12 = (WCHAR *)((char *)v12 + 1);
v11 = (const WCHAR *)((char *)v11 - 1);
}
while( v11 );
}
v7 = (WCHAR *)((char *)v7 - (__int64)Format);
}
while( v7 > Dest );
v8 = v35;
}
goto LABEL_18;
}
v15 = (_QWORD)Format * (((unsigned __int64)v6 + 1) >> 1);
v16 = (WCHAR *)((char *)Dest + v15);
if( (int)v38((char *)Dest, (WCHAR *)((char *)Dest + v15)) > 0 )
{
v18 = Format;
v17 = (char *)Dest + v15;
if( Dest != v16 )
{
do
{
v19 = v17[-v15];
v17[-v15] = *v17;
*v17++ = v19;
v18 = (const WCHAR *)((char *)v18 - 1);
}
while( v18 );
}
}
if( ((int(__fastcall *)(WCHAR *, WCHAR *, _BYTE *, const WCHAR *))v38)(Dest, v7, v17, v18) > 0 )
{
v20 = Format;
v21 = v7;
if( Dest != v7 )
{
v22 = (char *)Dest - (char *)v7;
do
{
v23 = *((_BYTE *)v21 + v22);
*((_BYTE *)v21 + v22) = *(_BYTE *)v21;
*(_BYTE *)v21 = v23;
v21 = (WCHAR *)((char *)v21 + 1);
v20 = (const WCHAR *)((char *)v20 - 1);
}
while( v20 );
}
}
if( ((int(__fastcall *)(char *, WCHAR *, const WCHAR *))v38)((char *)Dest + v15, v7, v20) > 0 )
{
v24 = Format;
v25 = v7;
if( v16 != v7 )
{
v26 = (char *)v16 - (char *)v7;
do
{
v27 = *((_BYTE *)v25 + v26);
*((_BYTE *)v25 + v26) = *(_BYTE *)v25;
*(_BYTE *)v25 = v27;
v25 = (WCHAR *)((char *)v25 + 1);
v24 = (const WCHAR *)((char *)v24 - 1);
}
while( v24 );
}
}
v28 = Dest;
v29 = v7;
while( 1 )
{
if( v16 > v28 )
{
while( 1 )
{
v28 = (WCHAR *)((char *)v28 + (_QWORD)Format);
if( v28 >= v16 )
break;
if( ((int(__fastcall *)(WCHAR *, WCHAR *, const WCHAR *))v38)(v28, v16, v24) > 0 )
goto LABEL_38;
}
}
do
v28 = (WCHAR *)((char *)v28 + (_QWORD)Format);
while( v28 <= v7 && ((int(__fastcall *)(WCHAR *, WCHAR *, const WCHAR *))v38)(v28, v16, v24) <= 0 );
do
{
LABEL_38:
v30 = (unsigned __int64)v29;
v29 = (WCHAR *)((char *)v29 - (__int64)Format);
}
while( v29 > v16 && (int)v38((char *)v29, v16) > 0 );
if( v29 < v28 )
break;
v24 = Format;
v31 = v29;
if( v29 != v28 )
{
v32 = (char *)v28 - (char *)v29;
do
{
v33 = *((_BYTE *)v31 + v32);
*((_BYTE *)v31 + v32) = *(_BYTE *)v31;
*(_BYTE *)v31 = v33;
v31 = (WCHAR *)((char *)v31 + 1);
v24 = (const WCHAR *)((char *)v24 - 1);
}
while( v24 );
}
v34 = v28;
if( v16 != v29 )
v34 = v16;
v16 = v34;
}
if( (unsigned __int64)v16 < v30 )
{
while( 1 )
{
v30 -= (unsigned __int64)Format;
if( v30 <= (unsigned __int64)v16 )
break;
if( (unsigned int)v38((char *)v30, v16) )
goto LABEL_53;
}
}
do
v30 -= (unsigned __int64)Format;
while( v30 > (unsigned __int64)Dest && !(unsigned int)v38((char *)v30, v16) );
LABEL_53:
v6 = (INT64 *)(v30 - (_QWORD)Dest);
v8 = v35;
if( (__int64)(v30 - (_QWORD)Dest) >= (char *)v7 - (char *)v28 )
break;
if( v28 < v7 )
{
result[v35] = (__int64)v28;
v37[v35] = (__int64)v7;
v8 = ++v35;
}
if( (unsigned __int64)Dest >= v30 )
{
LABEL_18:
v35 = --v8;
if( v8 < 0 )
return v6;
Dest = (WCHAR *)result[v8];
v7 = (WCHAR *)v37[v8];
}
else
{
v7 = (WCHAR *)v30;
}
}
if( (unsigned __int64)Dest < v30 )
{
result[v35] = (__int64)Dest;
v37[v35] = v30;
v8 = ++v35;
}
if( v28 >= v7 )
goto LABEL_18;
Dest = v28;
}
}
return v6;
}Referenced by:
AdtpBuildObjectTypeStrings
AsiPopulateHashes
CmpSortedValueEnumStackEntryStart
EtwpAllocateTraceBuffer
EtwpGetTraceGroupInfo
EtwpUpdateDisallowedGuids
ExpLoadAndSortLicensingCacheDescriptors
HalpChannelInitializeStaticConfiguration
HalpNumaAddRangeProximity
HalpNumaInitializeStaticConfiguration
HalpNumaParseHmat
HvlStartBootLogicalProcessors
IopRearrangeReqList
KiComputeNumaCosts
KiIntSteerCalculateDistribution
MiAssignTopLevelRanges
MiClearPteAccessed
MiCreateFreePfns
MiDeleteVa
MiFillNoReservationCluster
MiInitializeNumaGraph
MiInsertTbFlushEntry
MiMoveDirtyBitsToPfns
MiProcessCrcList
MiSortMdlFrames
MiTerminateWsleCluster
MiZeroPage
MmFreeBootRegistry
MmUnmapViewInSystemCache
PipSortDeviceObjectList
PnpAllocateResources
PpmCheckComputeHeteroResponse
PpmInitPolicyConfiguration
PspBuildCreateProcessContext
RtlpDynamicLookasideRebalance
RtlpFcUpdateFeatureConfiguration
RtlpFcUpdateUsageTriggers
SLUpdateLicenseDataInternal
ST_STORE::StDmRegionEvict
SymCryptParallelHashProcess
VslInitializeSecureKernelCfg
sub_1403DC950