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.