HalpInterruptUpdateLinesPostSwap
INT64 __fastcall HalpInterruptUpdateLinesPostSwap(INT64 a1, INT64 a2, INT64 a3, _DWORD *a4, _DWORD *a5){
int v5;
int v7;
int v8;
__int64 v10;
__int64 i;
__int64 v12;
__int64 v13;
int v14;
int v15;
int v16;
int v17;
int v18;
int v19;
int v20;
bool v21;
v5 = 0;
v7 = a3;
v8 = a2;
if( *(_DWORD *)(a1 + 24) - *(_DWORD *)(a1 + 20) > 0 )
{
v10 = 0i64;
for( i = 0i64; ; i += 56i64 )
{
v12 = *(_QWORD *)(a1 + 40);
v13 = *(_QWORD *)(a1 + 48);
v14 = *(_DWORD *)(i + v12 + 24);
if( v14 != 4 )
goto LABEL_6;
if( *(_DWORD *)(i + v12 + 32) == v8 )
break;
LABEL_11:
if( *a4 == 6 && v14 == 6 )
{
v18 = a4[2];
if( *(_BYTE *)(v10 + v13 + 2) )
{
if( *(_DWORD *)(v10 + v13 + 4) == v18 && (*(_DWORD *)(v10 + v13 + 8) & a4[3]) != 0 )
{
*(_DWORD *)(i + v12 + 36) |= a5[3];
v20 = ~a4[3];
v21 = (v20 & *(_DWORD *)(v10 + v13 + 8)) == 0;
*(_DWORD *)(v10 + v13 + 8) &= v20;
if( v21 )
*(_BYTE *)(v10 + v13 + 2) = 0;
}
}
else if( v18 == *(_DWORD *)(i + v12 + 32) )
{
if( v18 == a5[2] )
{
*(_DWORD *)(i + v12 + 36) &= ~a4[3];
*(_DWORD *)(i + v12 + 36) |= a5[3];
}
else
{
*(_BYTE *)(v10 + v13 + 2) = 1;
*(_DWORD *)(v10 + v13 + 4) = *(_DWORD *)(i + v12 + 32);
v19 = *(_DWORD *)(i + v12 + 36) & ~a4[3];
*(_DWORD *)(v10 + v13 + 8) = v19;
*(_BYTE *)(v10 + v13 + 2) &= -(v19 != 0);
*(_DWORD *)(i + v12 + 32) = a5[2];
*(_DWORD *)(i + v12 + 36) = a5[3];
}
}
}
++v5;
v10 += 16i64;
if( v5 >= *(_DWORD *)(a1 + 24) - *(_DWORD *)(a1 + 20) )
return 0i64;
}
*(_DWORD *)(i + v12 + 32) = v7;
LABEL_6:
if( v14 == 5 && *a4 == 5 )
{
v15 = *(_DWORD *)(i + v12 + 32);
v16 = a4[2];
if( (v16 & v15) != 0 )
{
v17 = v15 & ~v16;
*(_DWORD *)(i + v12 + 32) = v17;
if( *a5 == 5 )
*(_DWORD *)(i + v12 + 32) = v17 | a5[2];
}
}
goto LABEL_11;
}
return 0i64;
}Referenced by:
HalpInterruptSwapProcessorIdentifiers