__b8
__int64 __fastcall __b8(__int64 a1, __int64 rdx0){
unsigned __int128 a2;
int v3;
__int64 v5;
unsigned int v6;
__int64 v7;
__int64 v8;
unsigned __int64 v9;
__int64 *v10;
unsigned __int64 v11;
__int64 v12;
__int64 v13;
__int64 v14;
__int64 v15;
int v16;
unsigned __int64 v17;
__int64 v18;
void *retaddr;
*((_QWORD *)&a2 + 1) = rdx0;
*(_QWORD *)&a2 = &retaddr;
v3 = *(_DWORD *)(a1 + 2448);
if( (v3 & 0x40000000) == 0 )
{
v5 = 0i64;
while( 1 )
{
v6 = *(_DWORD *)(a1 + 2452);
*(_QWORD *)&a2 = DWORD2(a2) != 0;
if( (_DWORD)a2 == ((v6 >> 21) & 1) || (v3 & 2) == 0 )
break;
v7 = *(unsigned int *)(a1 + 2604);
v8 = *(_QWORD *)(a1 + 2072);
v9 = (unsigned __int64)(unsigned int)(*(_DWORD *)(a1 + 2020) - v7) >> 3;
v10 = (__int64 *)(a1 + v7);
v11 = a1 + v7 + 8 * v9;
if( DWORD2(a2) )
{
v17 = __rdtsc();
a2 = (__ROR8__(v17, 3) ^ v17) * (unsigned __int128)0x7010008004002001ui64;
v18 = a2 ^ *((_QWORD *)&a2 + 1);
*(_QWORD *)(a1 + 2608) = a2 ^ *((_QWORD *)&a2 + 1);
if( (unsigned __int64)v10 > v11 )
v9 = 0i64;
if( v9 )
{
do
{
++v5;
*(_QWORD *)&a2 = v18 ^ *v10;
*((_QWORD *)&a2 + 1) = v8 ^ *v10;
*v10 = a2;
v18 = (*((_QWORD *)&a2 + 1) + __ROR8__(v18, v18 & 0x3F)) ^ 0xEFFi64;
++v10;
}
while( v5 != v9 );
v6 = *(_DWORD *)(a1 + 2452);
}
*(_QWORD *)(a1 + 2616) = v18;
*(_DWORD *)(a1 + 2452) = v6 | 0x200000;
return a2;
}
v12 = *(_QWORD *)(a1 + 2608);
v13 = 0i64;
if( (unsigned __int64)v10 > v11 )
v9 = 0i64;
if( v9 )
{
do
{
*v10 ^= v12;
++v13;
v14 = *v10++;
v12 = ((v8 ^ v14) + __ROR8__(v12, v12 & 0x3F)) ^ 0xEFF;
}
while( v13 != v9 );
v6 = *(_DWORD *)(a1 + 2452);
}
*(_DWORD *)(a1 + 2452) = v6 & 0xFFDFFFFF;
if( v12 != *(_QWORD *)(a1 + 2616) )
{
v15 = *(_QWORD *)(a1 + 1424);
v16 = *(_DWORD *)(a1 + 2020);
*(_QWORD *)v15 = a1;
*(_DWORD *)(v15 + 16) = v16;
*(_QWORD *)&a2 = *(unsigned int *)(a1 + 2296);
if( !(_DWORD)a2 )
{
*(_QWORD *)(*(_QWORD *)(a1 + 1424) + 24i64) = v12 ^ *(_QWORD *)(a1 + 2616);
*(_QWORD *)&a2 = *(unsigned int *)(a1 + 2296);
if( !(_DWORD)a2 )
{
*(_QWORD *)(a1 + 2312) = 0i64;
*(_QWORD *)&a2 = a1 - 0x5C5FC0A76E374B18i64;
*(_QWORD *)(a1 + 2320) = 256i64;
*(_QWORD *)(a1 + 2304) = a1 - 0x5C5FC0A76E374B18i64;
DWORD2(a2) = 0;
*(_QWORD *)(a1 + 2328) = v12;
*(_DWORD *)(a1 + 2296) = 1;
v3 = *(_DWORD *)(a1 + 2448);
if( (v3 & 0x40000000) == 0 )
continue;
}
}
}
return a2;
}
}
return a2;
}Referenced by:
Argument1
KiSwInterruptDispatch
sub_1403E93BC
sub_1403EA328
sub_140A0C0FC
sub_140A0E098
sub_140A0FD10
sub_140A10830
sub_140A10EF0
sub_140A1BFE4