PfpLogPageAccess
unsigned __int64 *__fastcall PfpLogPageAccess(__int64 a1, _DWORD *a2, _BYTE *a3, __int64 a4, int a5){
__int64 v5;
__int16 v6;
unsigned __int16 v10;
unsigned __int64 v11;
unsigned __int64 v12;
char v13;
__int64 v14;
__int64 v15;
unsigned __int64 v16;
int v17;
__int64 v18;
unsigned __int64 v19;
char v20;
__int64 v21;
__int64 v22;
__int64 v23;
unsigned __int64 v24;
unsigned __int64 v25;
int v26;
__int64 v27;
int v28;
__int64 v29;
unsigned __int64 *result;
__int64 v31;
unsigned __int64 v32;
unsigned __int64 v33;
unsigned __int64 v34;
__int64 v35;
unsigned __int64 v36;
unsigned __int64 v37;
__int64 v38;
unsigned int v39;
__int64 v40;
__int64 v41;
__int64 v42;
unsigned int v43;
unsigned int v44;
__int64 v45;
unsigned __int64 v46;
__int16 v47;
unsigned int v48;
unsigned int v49;
__int64 v50;
unsigned int v51;
__int64 v52;
unsigned __int64 v53;
unsigned __int64 v54;
__int16 v55;
unsigned int v56;
__int16 v57;
unsigned int v58;
v5 = 0i64;
v6 = -1;
v57 = -1;
if( (*a2 & 0x1FF) == 0 )
goto LABEL_9;
v10 = 0;
v11 = *(_QWORD *)(a4 - 8i64 * (*a2 & 0x1FF));
v12 = v11 & 0xFFFFFFFFFFFFFFFCui64;
v13 = 0;
while( 1 )
{
v14 = *(&stru_140C4DB30 + 965);
v15 = *(unsigned int *)(*(&stru_140C4DB30 + 965) + 16i64);
v16 = (*(&stru_140C4DB30 + 965) + 47i64) & 0xFFFFFFFFFFFFFFF8ui64;
if( *(_QWORD *)(v16 + 40 * v15) != v12 )
{
v54 = v11 & 0xFFFFFFFFFFFFFFFCui64;
v15 = (HIBYTE(v54)
+ 37
* (BYTE6(v54)
+ 37
* (BYTE5(v54)
+ 37
* (BYTE4(v54)
+ 37 * (BYTE3(v54) + 37 * (BYTE2(v54) + 37 * (BYTE1(v54) + 37 * ((unsigned __int8)v12 + 11623883)))))))) & (unsigned int)(*(_DWORD *)(*(&stru_140C4DB30 + 965) + 32i64) - 1);
v38 = *(_QWORD *)(v16 + 40 * v15);
if( v38 != v12 )
{
if( v38 )
{
v42 = (unsigned int)(v15 + 1);
v43 = 0;
v44 = *(_DWORD *)(*(&stru_140C4DB30 + 965) + 32i64);
v58 = 0;
while( (unsigned int)v42 >= v44 )
{
LABEL_42:
++v43;
v42 = 0i64;
v58 = v43;
v44 = (HIBYTE(v54)
+ 37
* (BYTE6(v54)
+ 37
* (BYTE5(v54)
+ 37
* (BYTE4(v54)
+ 37 * (BYTE3(v54) + 37 * (BYTE2(v54) + 37 * (BYTE1(v54) + 37 * ((unsigned __int8)v12 + 11623883)))))))) & (*(_DWORD *)(*(&stru_140C4DB30 + 965) + 32i64) - 1);
if( v43 >= 2 )
{
v10 = -1;
goto LABEL_55;
}
}
while( 1 )
{
v45 = *(_QWORD *)(v16 + 40 * v42);
if( v45 == v12 )
{
*(_DWORD *)(*(&stru_140C4DB30 + 965) + 16i64) = v42;
LOWORD(v15) = v42;
goto LABEL_4;
}
if( !v45 )
break;
v42 = (unsigned int)(v42 + 1);
if( (unsigned int)v42 >= v44 )
{
v43 = v58;
goto LABEL_42;
}
}
*(_DWORD *)(*(&stru_140C4DB30 + 965) + 16i64) = v42;
v10 = v42;
}
else
{
*(_DWORD *)(*(&stru_140C4DB30 + 965) + 16i64) = v15;
v10 = v15;
}
goto LABEL_55;
}
*(_DWORD *)(*(&stru_140C4DB30 + 965) + 16i64) = v15;
}
LABEL_4:
if( (_WORD)v15 != 0xFFFF )
goto LABEL_5;
LABEL_55:
v51 = *(_DWORD *)(v14 + 28);
if( v51 < 3 * (*(_DWORD *)(v14 + 32) >> 2) )
break;
if( PfTReplaceCurrentBuffer((PFP_BUFFER_MANAGER *)&stru_140C4DB30 + 1924) == -1073741823 )
return 0i64;
}
v13 = 1;
*(_DWORD *)(v14 + 28) = v51 + 1;
LOWORD(v15) = v10;
*(_QWORD *)(v16 + 40i64 * v10) = v12;
LABEL_5:
if( !v14 )
return 0i64;
v57 = v15 + *(_WORD *)(v14 + 36);
if( v13 )
{
v46 = v16 + 40i64 * (unsigned __int16)v15;
v47 = *(_WORD *)(v46 + 16);
*(_QWORD *)(v46 + 8) = (16 * v11) | *(_DWORD *)(v46 + 8) & 8 | 4;
*(_WORD *)(v46 + 16) = v47 & 0xFFF0 | (v11 >> 60);
}
v5 = 0i64;
LABEL_9:
v17 = a5;
if( a1 >= 0 )
{
if( !a5 )
{
if( !a1 )
goto LABEL_18;
v5 = 1i64;
v26 = (a1 & 0x7FFFFFFF) - 1;
LABEL_19:
v27 = *(&stru_140C4DB30 + 960);
v28 = ((*a3 & 3) == 2) + 1;
if( (unsigned int)(v28 + *(_DWORD *)(*(&stru_140C4DB30 + 960) + 16i64)) > *(_DWORD *)(*(&stru_140C4DB30 + 960)
+ 20i64) )
{
while( PfTReplaceCurrentBuffer((PFP_BUFFER_MANAGER *)&stru_140C4DB30 + 1914) != -1073741823 )
{
v27 = *(&stru_140C4DB30 + 960);
if( (unsigned int)(v28 + *(_DWORD *)(*(&stru_140C4DB30 + 960) + 16i64)) <= *(_DWORD *)(*(&stru_140C4DB30 + 960)
+ 20i64) )
goto LABEL_20;
}
return 0i64;
}
else
{
LABEL_20:
v29 = *(unsigned int *)(v27 + 16);
*(_DWORD *)(v27 + 16) = v28 + v29;
result = (unsigned __int64 *)(16 * v29 + ((v27 + 31) & 0xFFFFFFFFFFFFFFF8ui64));
if( (*a3 & 3) == 2 )
{
*(_OWORD *)result = *(_OWORD *)a3;
*result = *result & 0xFFFFFFFFFFFFF003ui64 | 8;
result += 2;
}
v31 = *result;
if( (*a2 & 0x1FF) != 0 )
{
v32 = v31 & 0xFFFFFFFFFFFFFFFCui64;
*result = v32;
v33 = ((unsigned __int8)v32 ^ (unsigned __int8)((unsigned __int64)(unsigned int)*a2 >> 7)) & 4 ^ v32;
*result = v33;
v34 = ((unsigned __int8)v33 ^ (unsigned __int8)((unsigned __int64)(unsigned int)*a2 >> 7)) & 8 ^ v33;
*result = v34;
v35 = v34 & 0xF | (16i64 * (unsigned int)(*(_QWORD *)a2 >> 12));
*((_WORD *)result + 5) = v6;
*result = v35;
*((_WORD *)result + 4) = v57;
}
else
{
v36 = v31 & 0xFFFFFFFFFFFFFFFCui64 | 1;
*result = v36;
v37 = (8 * v5) | (((unsigned __int8)v36 ^ (unsigned __int8)((unsigned __int64)(unsigned int)*a2 >> 7)) & 4 ^ v36) & 0xFFFFFFFFFFFFFFE7ui64;
*result = v37;
*result = *(_QWORD *)a2 ^ (*a2 ^ (unsigned int)v37) & 0xFFF;
if( v5 == 2 )
*((_WORD *)result + 5) = v6;
else
*((_DWORD *)result + 2) = v26;
}
}
return result;
}
}
else if( !a5 )
{
v18 = (*(_QWORD *)(a1 + 1088) ^ *(_QWORD *)(a1 + 1128)) & 0x1FFFFFFFFFFFFFFFi64;
goto LABEL_12;
}
v18 = a1;
LABEL_12:
v55 = 0;
v19 = v18 & 0xFFFFFFFFFFFFFFFCui64 | 1;
v20 = 0;
v21 = 4 * (v19 & 3) + 16;
while( 2 )
{
v22 = *(&stru_140C4DB30 + 965);
v23 = *(unsigned int *)(v21 + *(&stru_140C4DB30 + 965));
v24 = (*(&stru_140C4DB30 + 965) + 47i64) & 0xFFFFFFFFFFFFFFF8ui64;
if( *(_QWORD *)(v24 + 40 * v23) == v19 )
{
LABEL_14:
if( (_WORD)v23 != 0xFFFF )
goto LABEL_15;
LOWORD(v40) = v55;
}
else
{
v39 = *(_DWORD *)(*(&stru_140C4DB30 + 965) + 32i64);
v40 = (HIBYTE(v19)
+ 37
* (BYTE6(v19)
+ 37
* (BYTE5(v19)
+ 37
* (BYTE4(v19)
+ 37 * (BYTE3(v19) + 37 * (BYTE2(v19) + 37 * (BYTE1(v19) + 37 * ((unsigned __int8)v19 + 11623883)))))))) & (v39 - 1);
v41 = *(_QWORD *)(v24 + 40 * v40);
if( v41 == v19 )
{
*(_DWORD *)(v21 + *(&stru_140C4DB30 + 965)) = v40;
LOWORD(v23) = (HIBYTE(v19)
+ 37
* (BYTE6(v19)
+ 37
* (BYTE5(v19)
+ 37
* (BYTE4(v19)
+ 37
* (BYTE3(v19) + 37 * (BYTE2(v19) + 37 * (BYTE1(v19) + 37 * ((unsigned __int8)v19 + 24011)))))))) & (v39 - 1);
goto LABEL_14;
}
if( v41 )
{
v48 = v40 + 1;
v49 = 0;
v17 = a5;
v56 = 0;
while( v48 >= v39 )
{
LABEL_52:
++v49;
v48 = 0;
v56 = v49;
v39 = v40;
if( v49 >= 2 )
{
LOWORD(v40) = -1;
goto LABEL_65;
}
}
while( 1 )
{
v50 = *(_QWORD *)(v24 + 40i64 * v48);
if( v50 == v19 )
{
*(_DWORD *)(v21 + *(&stru_140C4DB30 + 965)) = v48;
LOWORD(v23) = v48;
goto LABEL_14;
}
if( !v50 )
break;
if( ++v48 >= v39 )
{
v49 = v56;
goto LABEL_52;
}
}
*(_DWORD *)(v21 + *(&stru_140C4DB30 + 965)) = v48;
LOWORD(v40) = v48;
}
else
{
*(_DWORD *)(v21 + *(&stru_140C4DB30 + 965)) = v40;
}
LABEL_65:
v55 = v40;
}
LODWORD(v23) = *(_DWORD *)(v22 + 28);
if( (unsigned int)v23 >= 3 * (*(_DWORD *)(v22 + 32) >> 2) )
{
if( PfTReplaceCurrentBuffer((PFP_BUFFER_MANAGER *)&stru_140C4DB30 + 1924) == -1073741823 )
return 0i64;
continue;
}
break;
}
v20 = 1;
*(_DWORD *)(v22 + 28) = v23 + 1;
*(_QWORD *)(v24 + 40i64 * (unsigned __int16)v40) = v19;
LOWORD(v23) = v40;
LABEL_15:
if( v22 )
{
v5 = 2i64;
v6 = v23 + *(_WORD *)(v22 + 36);
v25 = v24 + 40i64 * (unsigned __int16)v23;
if( v20 || (*(_BYTE *)(v25 + 8) & 4) != 0 )
{
v52 = *(_QWORD *)(v25 + 8);
if( v17 )
{
*(_QWORD *)(v25 + 8) = v52 & 0xFFFFFFFFFFFFFFF8ui64 | 5;
}
else
{
v53 = v52 & 0xFFFFFFFFFFFFFFF8ui64 | 1;
*(_QWORD *)(v25 + 8) = v53;
*(_QWORD *)(v25 + 8) = v53 & 7 | (8i64 * (*(_QWORD *)(a1 + 1088) ^ *(_QWORD *)(a1 + 1128)));
*(_DWORD *)(v25 + 28) = *(_DWORD *)(a1 + 1524);
*(_DWORD *)(v25 + 24) = *(_DWORD *)(a1 + 1088);
*(_QWORD *)(v25 + 16) = a1;
}
}
LABEL_18:
v26 = 0;
goto LABEL_19;
}
return 0i64;
}Referenced by:
PfpCopyEvent
PfpFlushBuffers