AnFwpFadeAnimationTimer

VOID __stdcall AnFwpFadeAnimationTimer(KDPC *Dpc, PVOID Context, PVOID SystemArgument1, PVOID SystemArgument2){
  int v4; 
  unsigned __int64 v5; 
  _HHIVE **v6; 
  UINT64 *v7; 
  char v8; 
  char v9; 
  char v10; 
  unsigned int v11; 
  __int64 v12; 
  __int64 v13; 
  int v14; 
  __int64 v15; 
  __int64 v16; 
  UINT64 v17; 
  __int64 m; 
  int v19; 
  unsigned int v20; 
  unsigned int v21; 
  unsigned int v22; 
  int v23; 
  __int64 v24; 
  __int64 v25; 
  _HHIVE *n; 
  int v27; 
  unsigned int v28; 
  unsigned int v29; 
  unsigned int v30; 
  int v31; 
  UINT64 v32; 
  _CM_TRANS *v33; 
  __int64 v34; 
  __int64 v35; 
  UINT64 v36; 
  __int64 i; 
  int v38; 
  unsigned int v39; 
  __int64 v40; 
  __int64 v41; 
  _HHIVE *j; 
  int v43; 
  unsigned int v44; 
  __int64 v45; 
  __int64 v46; 
  _CM_KEY_HASH *k; 
  int v48; 
  unsigned int v49; 
  __int64 v50; 
  __int64 v51; 
  _CM_KEY_HASH *ii; 
  int v53; 
  unsigned int v54; 
  unsigned int v55; 
  unsigned int v56; 
  _HHIVE **Hive; 
  _CM_KEY_CONTROL_BLOCK *Cell; 
  _CM_KEY_CONTROL_BLOCK **ChildKcb; 
  _CM_KEY_CONTROL_BLOCK *VirtualKCB; 
  ChildKcb = 0i64;
  BgpFwAcquireLock((INT64)Dpc);
  if( byte_140CDAEA1 )
  {
    LogFwStat(1i64, 6i64, 0i64);
    LogFwStat(1i64, 4i64, 0i64);
    v4 = dword_140C10DF4;
    v5 = (unsigned int)(dword_140C13314 - dword_140C10DF4);
    v6 = qword_140C10E30;
    v7 = SubKeyCount;
    v8 = byte_140C10E00;
    v9 = byte_140C10E01;
    v10 = byte_140C10E02;
    ChildKcb = ::ChildKcb;
    Cell = (_CM_KEY_CONTROL_BLOCK *)::Cell;
    Hive = qword_140C10E30;
    VirtualKCB = (_CM_KEY_CONTROL_BLOCK *)SubKeyCount;
    v11 = 10 * (dword_140C10DF0 - dword_140C10DF0 / (unsigned int)v5);
    v14 = 0;
    if( BgpGetBitsPerPixel((PVOID)v5, (PVOID)(dword_140C10DF0 % (unsigned int)v5)) == 24 )
    {
      if( !v10 )
      {
        v34 = qword_140C10E38;
        v35 = 0i64;
        v36 = v7[3];
        for( i = *(_QWORD *)(qword_140C10E38 + 24);
              (unsigned int)v35 < *(_DWORD *)(v34 + 12);
              v35 = (unsigned int)(v35 + 1) )
        {
          v38 = *(unsigned __int8 *)(v35 + i);
          if( (_BYTE)v38 )
          {
            v39 = (v11 * v38) >> 10;
            *(_BYTE *)(v35 + v36) = v39;
            if( v39 )
              ++v14;
          }
        }
        v6 = Hive;
      }
      v23 = 0;
      if( !v8 )
      {
        v40 = *(_QWORD *)(v12 + 24);
        v41 = 0i64;
        for( j = v6[3]; (unsigned int)v41 < *(_DWORD *)(v12 + 12); v41 = (unsigned int)(v41 + 1) )
        {
          v43 = *(unsigned __int8 *)(v41 + v40);
          if( (_BYTE)v43 )
          {
            v44 = (v11 * v43) >> 10;
            *((_BYTE *)&j->Signature + v41) = v44;
            if( v44 )
              ++v23;
          }
        }
      }
      v31 = 0;
      if( !v9 )
      {
        v45 = 0i64;
        v46 = *(_QWORD *)(v13 + 24);
        for( k = Cell->KeyHash.NextHash; (unsigned int)v45 < *(_DWORD *)(v13 + 12); v45 = (unsigned int)(v45 + 1) )
        {
          v48 = *(unsigned __int8 *)(v45 + v46);
          if( (_BYTE)v48 )
          {
            v49 = (v11 * v48) >> 10;
            *((_BYTE *)&k->ConvKey.Hash + v45) = v49;
            if( v49 )
              ++v31;
          }
        }
      }
    }
    else
    {
      if( !v10 )
      {
        v15 = qword_140C10E38;
        v16 = 0i64;
        v17 = v7[3];
        for( m = *(_QWORD *)(qword_140C10E38 + 24);
              (unsigned int)v16 < *(_DWORD *)(v15 + 12);
              v16 = (unsigned int)(v16 + 4) )
        {
          if( *(_DWORD *)(v16 + m) )
          {
            v19 = v14 + 1;
            v20 = (v11 * *(unsigned __int8 *)(v16 + m)) >> 10;
            *(_BYTE *)(v16 + v17) = v20;
            if( !v20 )
              v19 = v14;
            v14 = v19 + 1;
            v21 = (v11 * *(unsigned __int8 *)((unsigned int)(v16 + 1) + m)) >> 10;
            *(_BYTE *)((unsigned int)(v16 + 1) + v17) = v21;
            if( !v21 )
              v14 = v19;
            v22 = (v11 * *(unsigned __int8 *)((unsigned int)(v16 + 2) + m)) >> 10;
            *(_BYTE *)((unsigned int)(v16 + 2) + v17) = v22;
            if( v22 )
              ++v14;
          }
        }
        v6 = Hive;
      }
      v23 = 0;
      if( !v8 )
      {
        v24 = *(_QWORD *)(v12 + 24);
        v25 = 0i64;
        for( n = v6[3]; (unsigned int)v25 < *(_DWORD *)(v12 + 12); v25 = (unsigned int)(v25 + 4) )
        {
          if( *(_DWORD *)(v25 + v24) )
          {
            v27 = v23 + 1;
            v28 = (v11 * *(unsigned __int8 *)(v25 + v24)) >> 10;
            *((_BYTE *)&n->Signature + v25) = v28;
            if( !v28 )
              v27 = v23;
            v23 = v27 + 1;
            v29 = (v11 * *(unsigned __int8 *)((unsigned int)(v25 + 1) + v24)) >> 10;
            *((_BYTE *)&n->Signature + (unsigned int)(v25 + 1)) = v29;
            if( !v29 )
              v23 = v27;
            v30 = (v11 * *(unsigned __int8 *)((unsigned int)(v25 + 2) + v24)) >> 10;
            *((_BYTE *)&n->Signature + (unsigned int)(v25 + 2)) = v30;
            if( v30 )
              ++v23;
          }
        }
      }
      v31 = 0;
      if( !v9 )
      {
        v50 = 0i64;
        v51 = *(_QWORD *)(v13 + 24);
        for( ii = Cell->KeyHash.NextHash; (unsigned int)v50 < *(_DWORD *)(v13 + 12); v50 = (unsigned int)(v50 + 4) )
        {
          if( *(_DWORD *)(v50 + v51) )
          {
            v53 = v31 + 1;
            v54 = (v11 * *(unsigned __int8 *)(v50 + v51)) >> 10;
            *((_BYTE *)&ii->ConvKey.Hash + v50) = v54;
            if( !v54 )
              v53 = v31;
            v31 = v53 + 1;
            v55 = (v11 * *(unsigned __int8 *)((unsigned int)(v50 + 1) + v51)) >> 10;
            *((_BYTE *)&ii->ConvKey.Hash + (unsigned int)(v50 + 1)) = v55;
            if( !v55 )
              v31 = v53;
            v56 = (v11 * *(unsigned __int8 *)((unsigned int)(v50 + 2) + v51)) >> 10;
            *((_BYTE *)&ii->ConvKey.Hash + (unsigned int)(v50 + 2)) = v56;
            if( v56 )
              ++v31;
          }
        }
      }
    }
    LogFwStat(0i64, 4i64, 0i64);
    LogFwStat(1i64, 3i64, 0i64);
    if( !v10 )
    {
      BgpGxDrawRectangle(
        VirtualKCB,
        (_CM_KEY_CONTROL_BLOCK *)&ChildKcb,
        v32,
        v33,
        Hive,
        &Cell->RefCount,
        ChildKcb,
        &VirtualKCB->RefCount);
      if( !v14 )
        v10 = 1;
    }
    if( !v8 )
    {
      if( !v4 && !v23
        || (BgpGxDrawRectangle(
              (_CM_KEY_CONTROL_BLOCK *)Hive,
              (_CM_KEY_CONTROL_BLOCK *)&OrigKCB,
              v32,
              v33,
              Hive,
              &Cell->RefCount,
              ChildKcb,
              &VirtualKCB->RefCount),
            !v23) )
      {
        v8 = 1;
      }
    }
    if( !v9 )
    {
      if( !v4 && !v31
        || (BgpGxDrawRectangle(
              Cell,
              (_CM_KEY_CONTROL_BLOCK *)&xmmword_140C10E48,
              v32,
              v33,
              Hive,
              &Cell->RefCount,
              ChildKcb,
              &VirtualKCB->RefCount),
            !v31) )
      {
        v9 = 1;
      }
    }
    LogFwStat(0i64, 3i64, 0i64);
    LogFwStat(0i64, 6i64, (LARGE_INTEGER *)&VirtualKCB);
    if( v14 || v31 || v23 )
    {
      byte_140C10E00 = v8;
      byte_140C10E01 = v9;
      dword_140C10DF0 = v11 / 0xA;
      dword_140C10DF4 = v4 + 1;
      byte_140C10E02 = v10;
    }
    else
    {
      byte_140CDAEA1 = 0;
      KeCancelTimer((PKTIMER)Timer);
      KeSetEvent(&stru_140CF2E80, 0);
    }
  }
  BgpFwReleaseLock();
}

Referenced by:

No references.