SleepstudyHelperCreateBlockerData

VOID __stdcall SleepstudyHelperCreateBlockerData(CHAR a1, INT64 a2){
  unsigned int v2; 
  __int64 v3; 
  unsigned int v4; 
  __int64 v5; 
  __int64 v7; 
  char *v8; 
  unsigned int v9; 
  _QWORD *v10; 
  unsigned int v11; 
  size_t v12; 
  char *v13; 
  __int128 v14; 
  __int64 v15; 
  _QWORD *v16; 
  _QWORD *v17; 

  v4 = v2;
  v5 = v3;
  v7 = a1;
  v8 = 0i64;
  if( a1 && v2 && v3 && v17 )
  {
    v9 = 0;
    v10 = (_QWORD *)(v3 + 24);
    while( *(v10 - 2) && *((_WORD *)v10 - 12) && *v10 )
    {
      ++v9;
      v10 += 4;
      if( v9 >= v2 )
      {
        v11 = 32 * v2;
        if( 32 * (unsigned __int64)v2 > 0xFFFFFFFF )
          return;
        if( v11 + 48 < v11 )
          return;
        v12 = v11 + 48;
        LODWORD(v13) = SSHSupportAllocateNonPaged(v11 + 48, *(_DWORD *)(v7 + 24));
        v8 = v13;
        if( !v13 )
          return;
        memset(v13, 0i64, v12);
        v14 = *(_OWORD *)a2;
        *((_QWORD *)v8 + 2) = v7;
        *(_OWORD *)(v8 + 24) = v14;
        *((_QWORD *)v8 + 1) = v8;
        *(_QWORD *)v8 = v8;
        *((_DWORD *)v8 + 10) = 0;
        if( !v4 )
        {
LABEL_19:
          ExAcquirePushLockExclusiveEx((_EX_PUSH_LOCK *)(v7 + 16), 0i64);
          v16 = *(_QWORD **)(v7 + 64);
          if( *v16 != v7 + 56 )
            __fastfail(3u);
          *((_QWORD *)v8 + 1) = v16;
          *(_QWORD *)v8 = v7 + 56;
          *v16 = v8;
          *(_QWORD *)(v7 + 64) = v8;
          SSHSupportReleasePushLockExclusive(v7 + 16);
          *v17 = v8;
          return;
        }
        v15 = 0i64;
        while( SshpCopyDataEntry(
                  *(_DWORD *)(v7 + 24),
                  (PCUNICODE_STRING)(32 * v15 + v5),
                  (PUNICODE_STRING)&v8[32 * v15 + 48]) >= 0 )
        {
          v15 = (unsigned int)(*((_DWORD *)v8 + 10) + 1);
          *((_DWORD *)v8 + 10) = v15;
          if( (unsigned int)v15 >= v4 )
            goto LABEL_19;
        }
        goto LABEL_23;
      }
    }
  }
  else
  {
LABEL_23:
    if( v8 )
      SshpFreeDataEntry(v8);
  }
}

Referenced by:

No references.