本帖最后由 风子09 于 2024-5-26 20:44 编辑
[Java] 纯文本查看 复制代码
unsigned __int8 *__fastcall start(__int64 a1, __int64 a2)
{
__int64 v2; // x0
unsigned int v3; // w1
__int64 v4; // x2
_DWORD *v5; // x3
__int64 v6; // x2
unsigned __int8 *v7; // x5
unsigned __int64 v8; // x1
int StatusReg; // w3
__int64 v10; // x4
unsigned __int64 i; // x2
char v16; // w3
unsigned __int64 j; // x0
char v19; // t1
char *v20; // x0
_BYTE *v21; // x2
unsigned __int8 *v22; // x0
unsigned int v23; // w1
__int64 v24; // x2
int v25; // t1
__int64 v26; // x0
_BYTE *v27; // x2
unsigned int v28; // w5
int v29; // w1
int v30; // w1
int v31; // w1
__int64 v32; // [xsp+0h] [xbp-30h]
__int64 v33; // [xsp+8h] [xbp-28h]
_DWORD *v34; // [xsp+10h] [xbp-20h]
v2 = ((__int64 (__fastcall *)(__int64, __int64))loc_A4C48)(a1, a2);
v32 = v2 + v3;
v33 = v4;
v34 = v5;
while ( 1 )
{
while ( 1 )
{
v20 = (char *)sub_A4A20(v2);
if ( !_CF )
break;
v19 = *v20;
v2 = (__int64)(v20 + 1);
*v21 = v19;
}
v22 = (unsigned __int8 *)sub_A4A38(v20);
if ( v23 >= 3 )
{
v25 = *v22++;
if ( (v25 | ((v23 - 3) << 8)) == -1 )
break;
}
v26 = sub_A4A20(v22);
v2 = sub_A4A20(v26);
v30 = v29 + _CF + v29;
if ( !v30 )
{
v2 = sub_A4A38(v2);
v30 = v31 + 2;
}
if ( v28 < 0xFFFFF300 )
++v30;
do
{
_CF = v30-- != 0;
*v27 = v27[v28];
++v27;
}
while ( _CF );
}
v6 = v24 - v33;
*v34 = v6;
v7 = &v22[-v32];
v8 = v33 + v6;
StatusReg = _ReadStatusReg(ARM64_SYSREG(3, 3, 0, 0, 1));
if ( (StatusReg & 0x10000000) == 0 )
{
v10 = -4LL << (BYTE2(StatusReg) & 0xF);
for ( i = v33 & v10; v8 > i; i -= v10 )
__asm { SYS #3, c7, c11, #1, X2 }
}
__dsb(0xBu);
if ( (StatusReg & 0x20000000) == 0 )
{
v16 = StatusReg & 0xF;
for ( j = v33 & (-4LL << v16); v8 > j; j -= -4LL << v16 )
__asm { SYS #3, c7, c5, #1, X0 }
}
__dsb(0xBu);
__isb(0xFu);
return v7;
} |