feat(huya): 🎯 ga IDA导出核心挖掘: 密钥槽5788=3DF88同款! 全链XTEA/deflate/编码器映射 (R29)
- 5788=5788:f15e78d2… 与 mfa 3DF88 相同 (turing 共享key!) - ga XTEA sub_1F1CC + 封套 1F918/1F9C8 + 解码 27DBC(inflate!) - b209202 a6==0→sub_23DF8编码器 / a6==1→27FF8解码器 - k209202 16B块: RiskDetectExt.ExtData schema + key=16B输入 - 请求密文密钥≠静态key (需编码器内部路径)
This commit is contained in:
@@ -1421,3 +1421,28 @@ full: 7c da | 11 | 69 c9 f5 28 9c 4d 46 | 95 6f 21 | 10 bb 80
|
|||||||
- 完整加密链已验证 (deflate→pad+len→XTEA@24D58!) = 纯代码铸造的可执行底座
|
- 完整加密链已验证 (deflate→pad+len→XTEA@24D58!) = 纯代码铸造的可执行底座
|
||||||
- **密钥派生 = ga 传输层内部 (k209202-16B块/0x24334 状态机!) — 需 turingga.so 的 IDA 导出**
|
- **密钥派生 = ga 传输层内部 (k209202-16B块/0x24334 状态机!) — 需 turingga.so 的 IDA 导出**
|
||||||
(同 mfa 方法论: 反编译 = 派生逻辑可读!)
|
(同 mfa 方法论: 反编译 = 派生逻辑可读!)
|
||||||
|
|
||||||
|
## §11.60 R29: 🎯 ga 全密钥/编码链映射 (IDA 导出到手!) (2026-08-29)
|
||||||
|
|
||||||
|
### ga 导出核心突破
|
||||||
|
1. **密钥槽: `&unk_5788` = f15e78d23033c2c4bac8a925677e863a — 与 mfa 3DF88 完全相同!!**
|
||||||
|
(turing 共享代码段常量 key!)
|
||||||
|
2. **ga XTEA 核心 = sub_1F1CC** (24D58 同款变体!) — 封套:
|
||||||
|
- 加密 sub_1F918 = [pad+4Blen] + sub_1F1CC(+n, key)
|
||||||
|
- 解密 sub_1F9C8 = sub_1F1CC(-n, key) + 尾字长度校验!
|
||||||
|
3. **解码链 sub_27DBC** = XTEA-dec + **sub_2E704 inflate** (全部确认!)
|
||||||
|
4. **b209202@0x20110 (SparseArray,[B,Map,I) JNI 分发**:
|
||||||
|
- a6==1 → sub_27FF8 = 解码 (27DBC + 5788!)
|
||||||
|
- a6==0 → **sub_23DF8 = 编码器** (sub_1BAD8 上下文 + sub_1AA64 喂入 + finalize!)
|
||||||
|
5. **k209202@0x219d8 16B 块链**: 16B→sub_19378对象(RiskDetectExt.ExtData schema!)
|
||||||
|
+ sub_24334 状态拷贝 + deflate(sub_2E904) + XTEA(sub_1F918, **key=16B输入!**)
|
||||||
|
6. sub_192B0: **"RiskDetectExt.ExtData" schema-string + sub_1A7A8("int32","string")!**
|
||||||
|
|
||||||
|
### harness
|
||||||
|
- ga 导入 127 槽补丁 (mprotect 0x48720 RELRO) + 直调 sub_1F1CC 5788 全偏移扫描
|
||||||
|
- **所有静态 5788/3DF88 解密 lencheck=False** → 请求密文密钥 ≠ 静态 key (进一步派生!)
|
||||||
|
|
||||||
|
### 下一步
|
||||||
|
1. sub_1BAD8/1AA64 (编码上下文!) — 请求密钥路径
|
||||||
|
2. b209202 a6=1 harness 全调用 (喂捕获密文 → 解码输出!)
|
||||||
|
3. 或: 版本字节 01/11 的密钥变体
|
||||||
|
|||||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,62 @@
|
|||||||
|
/*
|
||||||
|
* func-name: sub_10170
|
||||||
|
* func-address: 0x10170
|
||||||
|
* export-type: decompile
|
||||||
|
* callers: 0xff58
|
||||||
|
* callees: 0xf9f8, 0x2462c, 0x43f70, 0x440d0, 0x44120, 0x44160, 0x44170, 0x44180, 0x44190
|
||||||
|
*/
|
||||||
|
|
||||||
|
bool __fastcall sub_10170(char *a1, __int64 a2, __int64 a3, __int64 a4)
|
||||||
|
{
|
||||||
|
DIR *v6; // x21
|
||||||
|
int v7; // w8
|
||||||
|
bool v8; // zf
|
||||||
|
struct dirent *v9; // x0
|
||||||
|
const char *d_name; // x25
|
||||||
|
struct dirent *v11; // x24
|
||||||
|
int v12; // w8
|
||||||
|
bool v13; // zf
|
||||||
|
char name[4096]; // [xsp+8h] [xbp-1008h] BYREF
|
||||||
|
__int64 v16; // [xsp+1008h] [xbp-8h]
|
||||||
|
|
||||||
|
v16 = *(_QWORD *)(_ReadStatusReg(TPIDR_EL0) + 40);
|
||||||
|
*(_DWORD *)__errno(a1, a2, a3, a4) = 0;
|
||||||
|
v6 = opendir(a1);
|
||||||
|
if ( v6 )
|
||||||
|
{
|
||||||
|
v7 = *(_DWORD *)(a2 + 16);
|
||||||
|
if ( v7 != *(_DWORD *)a2 || !*(_BYTE *)(a2 + 12) )
|
||||||
|
{
|
||||||
|
v8 = v7 == *(_DWORD *)(a2 + 8) || v7 == *(_DWORD *)(a2 + 4);
|
||||||
|
if ( !v8 || !*(_BYTE *)(a2 + 13) )
|
||||||
|
{
|
||||||
|
do
|
||||||
|
{
|
||||||
|
v9 = readdir(v6);
|
||||||
|
if ( !v9 )
|
||||||
|
break;
|
||||||
|
d_name = v9->d_name;
|
||||||
|
v11 = v9;
|
||||||
|
if ( strcmp(v9->d_name, ".") && strcmp(d_name, "..") )
|
||||||
|
{
|
||||||
|
sub_2462C((int)name, 4096, a1);
|
||||||
|
if ( v11->d_type == 4 )
|
||||||
|
access(name, 4);
|
||||||
|
else
|
||||||
|
sub_F9F8(a2, name);
|
||||||
|
}
|
||||||
|
v12 = *(_DWORD *)(a2 + 16);
|
||||||
|
if ( v12 == *(_DWORD *)a2 )
|
||||||
|
{
|
||||||
|
if ( *(_BYTE *)(a2 + 12) )
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
v13 = v12 == *(_DWORD *)(a2 + 8) || v12 == *(_DWORD *)(a2 + 4);
|
||||||
|
}
|
||||||
|
while ( !v13 || !*(_BYTE *)(a2 + 13) );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
closedir(v6);
|
||||||
|
}
|
||||||
|
return v6 != nullptr;
|
||||||
|
}
|
||||||
@@ -0,0 +1,44 @@
|
|||||||
|
/*
|
||||||
|
* func-name: sub_102E8
|
||||||
|
* func-address: 0x102e8
|
||||||
|
* export-type: decompile
|
||||||
|
* callers: 0xff58
|
||||||
|
* callees: 0xc8a4, 0xca10, 0x24f90, 0x43f70
|
||||||
|
*/
|
||||||
|
|
||||||
|
__int64 sub_102E8()
|
||||||
|
{
|
||||||
|
char v0; // w19
|
||||||
|
__int64 v1; // x21
|
||||||
|
__int64 v4; // [xsp+0h] [xbp-70h] BYREF
|
||||||
|
_QWORD v5[13]; // [xsp+8h] [xbp-68h]
|
||||||
|
|
||||||
|
v5[12] = *(_QWORD *)(_ReadStatusReg(TPIDR_EL0) + 40);
|
||||||
|
sub_C8A4(&v4);
|
||||||
|
v5[0] = qword_50C00;
|
||||||
|
v5[1] = qword_50C08;
|
||||||
|
v5[2] = qword_50C10;
|
||||||
|
v5[3] = qword_50C18;
|
||||||
|
v5[4] = qword_50C20;
|
||||||
|
v5[5] = qword_50C28;
|
||||||
|
v5[6] = qword_50C30;
|
||||||
|
v5[7] = qword_50C38;
|
||||||
|
v5[8] = qword_50C40;
|
||||||
|
v5[9] = qword_50C48;
|
||||||
|
v5[10] = qword_50C50;
|
||||||
|
v5[11] = qword_50C58;
|
||||||
|
v0 = sub_24F90(qword_50C00, &v4, 0);
|
||||||
|
if ( (v0 & 1) == 0 )
|
||||||
|
{
|
||||||
|
v1 = 1;
|
||||||
|
do
|
||||||
|
{
|
||||||
|
v0 = sub_24F90(v5[v1], &v4, 0);
|
||||||
|
if ( (v0 & 1) != 0 )
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
while ( v1++ != 11 );
|
||||||
|
}
|
||||||
|
sub_CA10(&v4);
|
||||||
|
return v0 & 1;
|
||||||
|
}
|
||||||
@@ -0,0 +1,15 @@
|
|||||||
|
/*
|
||||||
|
* func-name: sub_10400
|
||||||
|
* func-address: 0x10400
|
||||||
|
* export-type: decompile
|
||||||
|
* callers: 0xff58
|
||||||
|
* callees: 0x25408, 0x44180
|
||||||
|
*/
|
||||||
|
|
||||||
|
bool __fastcall sub_10400(__int64 a1)
|
||||||
|
{
|
||||||
|
__int64 v1; // x0
|
||||||
|
|
||||||
|
v1 = sub_25408(a1);
|
||||||
|
return (int)v1 >= 1 && (int)sub_25408(v1) < 11 || access((const char *)qword_50A20, 0) == 0;
|
||||||
|
}
|
||||||
@@ -0,0 +1,19 @@
|
|||||||
|
/*
|
||||||
|
* func-name: sub_10448
|
||||||
|
* func-address: 0x10448
|
||||||
|
* export-type: decompile
|
||||||
|
* callers: 0xff58
|
||||||
|
* callees: 0x43f70, 0x43f80
|
||||||
|
*/
|
||||||
|
|
||||||
|
__int64 sub_10448(char *a1, __int64 a2, __int64 a3, __int64 a4, ...)
|
||||||
|
{
|
||||||
|
gcc_va_list arg; // [xsp+A0h] [xbp-50h] BYREF
|
||||||
|
gcc_va_list va; // [xsp+C8h] [xbp-28h] BYREF
|
||||||
|
__int64 v7; // [xsp+E8h] [xbp-8h]
|
||||||
|
|
||||||
|
va_start(va, a4);
|
||||||
|
v7 = *(_QWORD *)(_ReadStatusReg(TPIDR_EL0) + 40);
|
||||||
|
va_copy(arg, va);
|
||||||
|
return vsnprintf(a1, 8u, "%d", arg);
|
||||||
|
}
|
||||||
@@ -0,0 +1,66 @@
|
|||||||
|
/*
|
||||||
|
* func-name: sub_104E8
|
||||||
|
* func-address: 0x104e8
|
||||||
|
* export-type: decompile
|
||||||
|
* callers: 0x1101c, 0x211e8
|
||||||
|
* callees: 0xc8a4, 0xca10, 0x10704, 0x107b4, 0x10b88, 0x10c80, 0x10db0, 0x10e30, 0x10fe8, 0x1c640, 0x1ef8c, 0x2452c, 0x29334, 0x2e4e0, 0x3a4bc, 0x43f70, 0x44050, 0x44090, 0x44120, 0x441c0, 0x441d0
|
||||||
|
*/
|
||||||
|
|
||||||
|
__int64 __fastcall sub_104E8(_QWORD *a1, __int64 a2, __int64 a3)
|
||||||
|
{
|
||||||
|
__int64 v6; // x22
|
||||||
|
char *i; // x0
|
||||||
|
int v8; // w24
|
||||||
|
__int64 v9; // x0
|
||||||
|
__int64 v10; // x8
|
||||||
|
__int64 v11; // x0
|
||||||
|
__int64 v12; // x0
|
||||||
|
__int64 v13; // x21
|
||||||
|
char *v14; // x0
|
||||||
|
__int64 v16; // [xsp+8h] [xbp-28h] BYREF
|
||||||
|
char *s; // [xsp+10h] [xbp-20h] BYREF
|
||||||
|
char *save_ptr; // [xsp+18h] [xbp-18h] BYREF
|
||||||
|
char *v19[2]; // [xsp+20h] [xbp-10h] BYREF
|
||||||
|
|
||||||
|
v19[1] = *(char **)(_ReadStatusReg(TPIDR_EL0) + 40);
|
||||||
|
a1[3] = sub_2452C();
|
||||||
|
sub_C8A4(&s);
|
||||||
|
sub_2E4E0(a2, off_4D340[0], &s);
|
||||||
|
v6 = operator new[](0x18u);
|
||||||
|
v16 = v6;
|
||||||
|
*(_QWORD *)(v6 + 8) = v6;
|
||||||
|
*(_QWORD *)(v6 + 16) = v6;
|
||||||
|
sub_C8A4(v19);
|
||||||
|
if ( (sub_2E4E0(a2, off_4D518[0], v19) & 1) != 0 )
|
||||||
|
{
|
||||||
|
for ( i = strtok_r(v19[0], ",", &save_ptr); i; i = strtok_r(nullptr, ",", &save_ptr) )
|
||||||
|
{
|
||||||
|
v8 = strtol(i, nullptr, 10);
|
||||||
|
v9 = operator new(0x18u);
|
||||||
|
v10 = *(_QWORD *)(v6 + 8);
|
||||||
|
*(_DWORD *)v9 = v8;
|
||||||
|
*(_QWORD *)(v9 + 8) = v10;
|
||||||
|
*(_QWORD *)(v9 + 16) = v6;
|
||||||
|
*(_QWORD *)(v10 + 16) = v9;
|
||||||
|
*(_QWORD *)(v6 + 8) = v9;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
sub_CA10(v19);
|
||||||
|
sub_10704(a1[5], a2, a3, &s, &v16);
|
||||||
|
sub_C8A4(v19);
|
||||||
|
if ( (sub_2E4E0(a2, off_4D610[0], v19) & 1) != 0 && !strcmp(v19[0], "1") )
|
||||||
|
sub_107B4(a1[5], a2, a3, &s, &v16);
|
||||||
|
sub_10B88(a1[4], a2);
|
||||||
|
v11 = sub_10C80(a1[6]);
|
||||||
|
v12 = sub_10DB0(v11);
|
||||||
|
v13 = a1[9];
|
||||||
|
v14 = (char *)sub_1EF8C(v12);
|
||||||
|
sub_1C640(v13, 2, v14);
|
||||||
|
sub_29334(a1[11], a2);
|
||||||
|
sub_10E30(a1[8], a2);
|
||||||
|
sub_3A4BC(a1[8], a1[5], a1[3], a1[4], a1[6], a1[11]);
|
||||||
|
sub_1C640(a1[8], 4, s);
|
||||||
|
sub_CA10(v19);
|
||||||
|
sub_10FE8(&v16);
|
||||||
|
return sub_CA10(&s);
|
||||||
|
}
|
||||||
@@ -0,0 +1,24 @@
|
|||||||
|
/*
|
||||||
|
* func-name: sub_10704
|
||||||
|
* func-address: 0x10704
|
||||||
|
* export-type: decompile
|
||||||
|
* callers: 0x104e8
|
||||||
|
* callees: 0x11394, 0x11e0c, 0x11e88, 0x11f14, 0x2452c, 0x29b98
|
||||||
|
*/
|
||||||
|
|
||||||
|
__int64 __fastcall sub_10704(__int64 a1, __int64 a2, __int64 a3, __int64 a4, __int64 a5)
|
||||||
|
{
|
||||||
|
__int64 v10; // x0
|
||||||
|
__int64 v11; // x24
|
||||||
|
__int64 v12; // x0
|
||||||
|
__int64 v13; // x0
|
||||||
|
|
||||||
|
v10 = sub_11394(a1, a2, a3, a5, a4);
|
||||||
|
v11 = sub_2452C(v10);
|
||||||
|
v12 = sub_11E0C(a1);
|
||||||
|
v13 = sub_2452C(v12);
|
||||||
|
sub_29B98(a4, 20, v13 - v11);
|
||||||
|
sub_11E88(a1, a2);
|
||||||
|
sub_11F14(a1, a2);
|
||||||
|
return sub_11FA0(a1, a2, a3, a5, a4);
|
||||||
|
}
|
||||||
@@ -0,0 +1,126 @@
|
|||||||
|
/*
|
||||||
|
* func-name: sub_107B4
|
||||||
|
* func-address: 0x107b4
|
||||||
|
* export-type: decompile
|
||||||
|
* callers: 0x104e8
|
||||||
|
* callees: 0xc8a4, 0xca10, 0xca28, 0xcc84, 0xf5c4, 0x19de0, 0x1a0dc, 0x1a0e8, 0x1c640, 0x2452c, 0x24d70, 0x24f90, 0x25014, 0x25c2c, 0x29b98, 0x2e4e0, 0x425c4, 0x43f70, 0x44120
|
||||||
|
*/
|
||||||
|
|
||||||
|
__int64 __fastcall sub_107B4(int a1, __int64 a2, __int64 a3, __int64 a4, __int64 *a5)
|
||||||
|
{
|
||||||
|
__int64 v10; // x0
|
||||||
|
__int64 v11; // x0
|
||||||
|
__int64 v12; // x8
|
||||||
|
__int64 v13; // x24
|
||||||
|
__int64 v14; // x9
|
||||||
|
__int64 v15; // x25
|
||||||
|
char *v16; // x0
|
||||||
|
__int64 v17; // x0
|
||||||
|
__int64 v18; // x0
|
||||||
|
__int64 v19; // x9
|
||||||
|
__int64 v20; // x25
|
||||||
|
char *v21; // x0
|
||||||
|
__int64 v22; // x0
|
||||||
|
__int64 v23; // x0
|
||||||
|
__int64 v24; // x9
|
||||||
|
__int64 v25; // x25
|
||||||
|
char *v26; // x0
|
||||||
|
__int64 v27; // x0
|
||||||
|
__int64 v28; // x0
|
||||||
|
__int64 v29; // x9
|
||||||
|
__int64 v30; // x9
|
||||||
|
__int64 v32; // [xsp+8h] [xbp-18h] BYREF
|
||||||
|
char *s1[2]; // [xsp+10h] [xbp-10h] BYREF
|
||||||
|
|
||||||
|
s1[1] = *(char **)(_ReadStatusReg(TPIDR_EL0) + 40);
|
||||||
|
v10 = sub_C8A4(s1);
|
||||||
|
v11 = sub_1A0E8(v10);
|
||||||
|
v12 = *a5;
|
||||||
|
v13 = v11;
|
||||||
|
v32 = v11;
|
||||||
|
v14 = v12;
|
||||||
|
while ( 1 )
|
||||||
|
{
|
||||||
|
v14 = *(_QWORD *)(v14 + 16);
|
||||||
|
if ( v14 == v12 )
|
||||||
|
break;
|
||||||
|
if ( *(_DWORD *)v14 == 9 )
|
||||||
|
goto LABEL_6;
|
||||||
|
}
|
||||||
|
v15 = sub_2452C(v11);
|
||||||
|
sub_25014(v13);
|
||||||
|
v16 = (char *)sub_1A0DC(v13);
|
||||||
|
v17 = sub_1C640(a1, 9, v16);
|
||||||
|
v18 = sub_2452C(v17);
|
||||||
|
v11 = sub_29B98(a4, 9, v18 - v15);
|
||||||
|
v12 = *a5;
|
||||||
|
LABEL_6:
|
||||||
|
v19 = v12;
|
||||||
|
while ( 1 )
|
||||||
|
{
|
||||||
|
v19 = *(_QWORD *)(v19 + 16);
|
||||||
|
if ( v19 == v12 )
|
||||||
|
break;
|
||||||
|
if ( *(_DWORD *)v19 == 15 )
|
||||||
|
goto LABEL_11;
|
||||||
|
}
|
||||||
|
v20 = sub_2452C(v11);
|
||||||
|
sub_25C2C(a3, v13);
|
||||||
|
v21 = (char *)sub_1A0DC(v13);
|
||||||
|
v22 = sub_1C640(a1, 15, v21);
|
||||||
|
v23 = sub_2452C(v22);
|
||||||
|
v11 = sub_29B98(a4, 15, v23 - v20);
|
||||||
|
v12 = *a5;
|
||||||
|
LABEL_11:
|
||||||
|
v24 = v12;
|
||||||
|
while ( 1 )
|
||||||
|
{
|
||||||
|
v24 = *(_QWORD *)(v24 + 16);
|
||||||
|
if ( v24 == v12 )
|
||||||
|
break;
|
||||||
|
if ( *(_DWORD *)v24 == 16 )
|
||||||
|
goto LABEL_16;
|
||||||
|
}
|
||||||
|
v25 = sub_2452C(v11);
|
||||||
|
sub_F5C4(v13);
|
||||||
|
v26 = (char *)sub_1A0DC(v13);
|
||||||
|
v27 = sub_1C640(a1, 16, v26);
|
||||||
|
v28 = sub_2452C(v27);
|
||||||
|
sub_29B98(a4, 16, v28 - v25);
|
||||||
|
LABEL_16:
|
||||||
|
if ( (sub_2E4E0(a2, off_4D410[0], s1) & 1) != 0 )
|
||||||
|
sub_1C640(a1, 46, s1[0]);
|
||||||
|
v29 = *a5;
|
||||||
|
while ( 1 )
|
||||||
|
{
|
||||||
|
v29 = *(_QWORD *)(v29 + 16);
|
||||||
|
if ( v29 == *a5 )
|
||||||
|
break;
|
||||||
|
if ( *(_DWORD *)v29 == 51 )
|
||||||
|
goto LABEL_23;
|
||||||
|
}
|
||||||
|
sub_24F90(qword_50BE8, s1, &unk_534B);
|
||||||
|
sub_1C640(a1, 51, s1[0]);
|
||||||
|
LABEL_23:
|
||||||
|
if ( (sub_2E4E0(a2, off_4D508[0], s1) & 1) != 0 && !strcmp(s1[0], "1") && !(unsigned int)sub_425C4(a3, s1) )
|
||||||
|
sub_1C640(a1, 136, s1[0]);
|
||||||
|
if ( (sub_2E4E0(a2, off_4D598[0], s1) & 1) != 0 && sub_CA28(s1) )
|
||||||
|
sub_1C640(a1, 143, s1[0]);
|
||||||
|
if ( (sub_2E4E0(a2, off_4D5B0[0], s1) & 1) != 0 )
|
||||||
|
sub_1C640(a1, 144, s1[0]);
|
||||||
|
v30 = *a5;
|
||||||
|
while ( 1 )
|
||||||
|
{
|
||||||
|
v30 = *(_QWORD *)(v30 + 16);
|
||||||
|
if ( v30 == *a5 )
|
||||||
|
break;
|
||||||
|
if ( *(_DWORD *)v30 == 148 )
|
||||||
|
goto LABEL_39;
|
||||||
|
}
|
||||||
|
sub_CC84(s1);
|
||||||
|
if ( (sub_24D70(qword_50B20, s1) & 1) != 0 && sub_CA28(s1) )
|
||||||
|
sub_1C640(a1, 148, s1[0]);
|
||||||
|
LABEL_39:
|
||||||
|
sub_19DE0(&v32);
|
||||||
|
return sub_CA10(s1);
|
||||||
|
}
|
||||||
@@ -0,0 +1,43 @@
|
|||||||
|
/*
|
||||||
|
* func-name: sub_10B88
|
||||||
|
* func-address: 0x10b88
|
||||||
|
* export-type: decompile
|
||||||
|
* callers: 0x104e8
|
||||||
|
* callees: 0xc8a4, 0xca10, 0x13514, 0x1c408, 0x2e4e0, 0x43f70
|
||||||
|
*/
|
||||||
|
|
||||||
|
__int64 __fastcall sub_10B88(__int64 a1, __int64 a2)
|
||||||
|
{
|
||||||
|
__int64 v4; // x0
|
||||||
|
char *v5; // x1
|
||||||
|
int v6; // w1
|
||||||
|
int v7; // w2
|
||||||
|
int v8; // w4
|
||||||
|
int v9; // w5
|
||||||
|
int v10; // w6
|
||||||
|
int v11; // w7
|
||||||
|
char v13; // [xsp+0h] [xbp-30h]
|
||||||
|
int v14[2]; // [xsp+8h] [xbp-28h] BYREF
|
||||||
|
char s[8]; // [xsp+10h] [xbp-20h] BYREF
|
||||||
|
__int64 v16; // [xsp+18h] [xbp-18h]
|
||||||
|
int v17; // [xsp+20h] [xbp-10h]
|
||||||
|
__int64 v18; // [xsp+28h] [xbp-8h]
|
||||||
|
|
||||||
|
v18 = *(_QWORD *)(_ReadStatusReg(TPIDR_EL0) + 40);
|
||||||
|
*(_QWORD *)s = 0;
|
||||||
|
v16 = 0;
|
||||||
|
v4 = *(_QWORD *)(a1 + 32);
|
||||||
|
v17 = 0;
|
||||||
|
v5 = off_4D318[0];
|
||||||
|
*(_DWORD *)(a1 + 24) = 209202;
|
||||||
|
sub_1C408(v4, v5);
|
||||||
|
sub_1C408(*(_QWORD *)(a1 + 40), off_4D320[0]);
|
||||||
|
sub_C8A4(v14);
|
||||||
|
if ( (sub_2E4E0(a2, off_4D328[0], v14) & 1) != 0 )
|
||||||
|
sub_13514((int)s, v6, v7, "%s", v14[0], v9, v10, v11, v13);
|
||||||
|
else
|
||||||
|
sub_13514((int)s, v6, v7, "0", v8, v9, v10, v11, v13);
|
||||||
|
sub_1C408(*(_QWORD *)(a1 + 48), s);
|
||||||
|
*(_DWORD *)(a1 + 56) = 2;
|
||||||
|
return sub_CA10(v14);
|
||||||
|
}
|
||||||
@@ -0,0 +1,43 @@
|
|||||||
|
/*
|
||||||
|
* func-name: sub_10C80
|
||||||
|
* func-address: 0x10c80
|
||||||
|
* export-type: decompile
|
||||||
|
* callers: 0x104e8
|
||||||
|
* callees: 0xc8a4, 0xca10, 0xcfd0, 0x11238, 0x135b0, 0x13630, 0x1c408, 0x2cd74, 0x2d4cc, 0x2d724, 0x2fa94, 0x43f70
|
||||||
|
*/
|
||||||
|
|
||||||
|
__int64 __fastcall sub_10C80(__int64 a1, __int64 a2, __int64 a3)
|
||||||
|
{
|
||||||
|
__int64 v5; // x20
|
||||||
|
__int64 v6; // x20
|
||||||
|
int v8; // [xsp+Ch] [xbp-34h] BYREF
|
||||||
|
char *v9; // [xsp+10h] [xbp-30h] BYREF
|
||||||
|
char *s; // [xsp+18h] [xbp-28h] BYREF
|
||||||
|
_QWORD v11[4]; // [xsp+20h] [xbp-20h] BYREF
|
||||||
|
|
||||||
|
v11[3] = *(_QWORD *)(_ReadStatusReg(TPIDR_EL0) + 40);
|
||||||
|
v5 = sub_135B0();
|
||||||
|
sub_C8A4(&s);
|
||||||
|
if ( !(unsigned int)sub_11238(a3, (int)&s, (char *)qword_503B8) )
|
||||||
|
{
|
||||||
|
sub_1C408(*(_QWORD *)(a1 + 32), s);
|
||||||
|
sub_2FA94(v11, v5, a3, s, 0);
|
||||||
|
if ( (sub_2CD74(v11) & 1) != 0 )
|
||||||
|
{
|
||||||
|
sub_1C408(*(_QWORD *)(a1 + 24), "0");
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
sub_C8A4(&v9);
|
||||||
|
v6 = *(_QWORD *)(v5 + 240);
|
||||||
|
if ( v6 && !(unsigned int)sub_13630(v11, &v9, qword_50668) && !(unsigned int)sub_2D724(v11, &v8, v6) )
|
||||||
|
{
|
||||||
|
sub_CFD0((__int64 *)&v9, ",%d", v8);
|
||||||
|
sub_1C408(*(_QWORD *)(a1 + 24), v9);
|
||||||
|
}
|
||||||
|
sub_CA10(&v9);
|
||||||
|
}
|
||||||
|
sub_2D4CC(v11);
|
||||||
|
}
|
||||||
|
return sub_CA10(&s);
|
||||||
|
}
|
||||||
@@ -0,0 +1,21 @@
|
|||||||
|
/*
|
||||||
|
* func-name: sub_10DB0
|
||||||
|
* func-address: 0x10db0
|
||||||
|
* export-type: decompile
|
||||||
|
* callers: 0x104e8, 0x11fa0, 0x1daf8, 0x1fcb8, 0x20984, 0x21624, 0x21948, 0x21de4, 0x327f4
|
||||||
|
* callees: 0x138cc, 0x43f40, 0x441e0, 0x441f0
|
||||||
|
*/
|
||||||
|
|
||||||
|
void *sub_10DB0()
|
||||||
|
{
|
||||||
|
int v0; // w8
|
||||||
|
|
||||||
|
v0 = atomic_load((unsigned __int8 *)&byte_4FB78);
|
||||||
|
if ( ((v0 ^ 0xFE) & v0) == 0 && __cxa_guard_acquire((__guard *)&byte_4FB78) )
|
||||||
|
{
|
||||||
|
sub_138CC(&unk_4FAA0);
|
||||||
|
__cxa_atexit((void (*)(void *))sub_1DBC0, &unk_4FAA0, &off_48720);
|
||||||
|
__cxa_guard_release((__guard *)&byte_4FB78);
|
||||||
|
}
|
||||||
|
return &unk_4FAA0;
|
||||||
|
}
|
||||||
@@ -0,0 +1,42 @@
|
|||||||
|
/*
|
||||||
|
* func-name: sub_10E30
|
||||||
|
* func-address: 0x10e30
|
||||||
|
* export-type: decompile
|
||||||
|
* callers: 0x104e8
|
||||||
|
* callees: 0xc8a4, 0xca10, 0xce08, 0xcf74, 0xcfd0, 0x13d84, 0x1c640, 0x28a14, 0x28b80, 0x2e4e0, 0x43f70
|
||||||
|
*/
|
||||||
|
|
||||||
|
__int64 __fastcall sub_10E30(int a1, __int64 a2)
|
||||||
|
{
|
||||||
|
const void *v5; // [xsp+8h] [xbp-28h] BYREF
|
||||||
|
int v6; // [xsp+14h] [xbp-1Ch] BYREF
|
||||||
|
const void *v7; // [xsp+18h] [xbp-18h] BYREF
|
||||||
|
char *v8[2]; // [xsp+20h] [xbp-10h] BYREF
|
||||||
|
|
||||||
|
v8[1] = *(char **)(_ReadStatusReg(TPIDR_EL0) + 40);
|
||||||
|
sub_C8A4(v8);
|
||||||
|
if ( (sub_2E4E0(a2, off_4D4A8[0], v8) & 1) != 0 )
|
||||||
|
sub_1C640(a1, 3, v8[0]);
|
||||||
|
if ( (sub_2E4E0(a2, off_4D4C0[0], v8) & 1) != 0 )
|
||||||
|
sub_1C640(a1, 8, v8[0]);
|
||||||
|
if ( (sub_2E4E0(a2, off_4D4C8[0], v8) & 1) != 0 )
|
||||||
|
sub_1C640(a1, 9, v8[0]);
|
||||||
|
if ( (sub_28B80(v8) & 1) != 0 )
|
||||||
|
{
|
||||||
|
sub_CF74((__int64 *)v8, ",");
|
||||||
|
sub_C8A4(&v7);
|
||||||
|
if ( (sub_2E4E0(a2, off_4D588[0], &v7) & 1) != 0 )
|
||||||
|
sub_CE08((__int64 *)v8, &v7);
|
||||||
|
sub_CF74((__int64 *)v8, ",");
|
||||||
|
if ( (sub_13D84(&v6) & 1) != 0 )
|
||||||
|
sub_CFD0((__int64 *)v8, "%d", v6);
|
||||||
|
sub_CF74((__int64 *)v8, ",");
|
||||||
|
sub_C8A4(&v5);
|
||||||
|
if ( (sub_28A14(qword_50AB8, &v5) & 1) != 0 )
|
||||||
|
sub_CE08((__int64 *)v8, &v5);
|
||||||
|
sub_1C640(a1, 7, v8[0]);
|
||||||
|
sub_CA10(&v5);
|
||||||
|
sub_CA10(&v7);
|
||||||
|
}
|
||||||
|
return sub_CA10(v8);
|
||||||
|
}
|
||||||
@@ -0,0 +1,14 @@
|
|||||||
|
/*
|
||||||
|
* func-name: sub_10FE8
|
||||||
|
* func-address: 0x10fe8
|
||||||
|
* export-type: decompile
|
||||||
|
* callers: 0x104e8, 0x21de4
|
||||||
|
* callees: 0x13aa8
|
||||||
|
*/
|
||||||
|
|
||||||
|
void __fastcall sub_10FE8(void **a1)
|
||||||
|
{
|
||||||
|
sub_13AA8();
|
||||||
|
if ( *a1 )
|
||||||
|
operator delete[](*a1);
|
||||||
|
}
|
||||||
@@ -0,0 +1,63 @@
|
|||||||
|
/*
|
||||||
|
* func-name: sub_1101C
|
||||||
|
* func-address: 0x1101c
|
||||||
|
* export-type: decompile
|
||||||
|
* callers: 0x21bdc
|
||||||
|
* callees: 0xc8a4, 0xca10, 0x104e8, 0x11238, 0x1c440, 0x1c640, 0x2452c, 0x24f90, 0x2e4e0, 0x43f70, 0x441d0, 0x44200
|
||||||
|
*/
|
||||||
|
|
||||||
|
__int64 __fastcall sub_1101C(__int64 a1, __int64 a2, __int64 a3)
|
||||||
|
{
|
||||||
|
__int64 v6; // x0
|
||||||
|
__int64 v7; // x0
|
||||||
|
__int64 v8; // x0
|
||||||
|
char *v9; // x21
|
||||||
|
int v10; // w0
|
||||||
|
__int64 v11; // x8
|
||||||
|
char *s; // [xsp+8h] [xbp-18h] BYREF
|
||||||
|
char *nptr[2]; // [xsp+10h] [xbp-10h] BYREF
|
||||||
|
|
||||||
|
nptr[1] = *(char **)(_ReadStatusReg(TPIDR_EL0) + 40);
|
||||||
|
sub_C8A4(nptr);
|
||||||
|
v6 = sub_2E4E0(a2, off_4D600[0], nptr);
|
||||||
|
if ( (v6 & 1) != 0 )
|
||||||
|
v7 = strtol(nptr[0], nullptr, 10);
|
||||||
|
else
|
||||||
|
v7 = sub_2452C(v6);
|
||||||
|
*(_QWORD *)(a1 + 32) = v7;
|
||||||
|
sub_24F90(qword_50B98, nptr, &unk_534B);
|
||||||
|
sub_1C640(*(_QWORD *)(a1 + 24), 2, nptr[0]);
|
||||||
|
sub_24F90(qword_50B90, nptr, &unk_534B);
|
||||||
|
sub_1C640(*(_QWORD *)(a1 + 24), 1, nptr[0]);
|
||||||
|
if ( (sub_2E4E0(a2, off_4D328[0], nptr) & 1) != 0 )
|
||||||
|
sub_1C640(*(_QWORD *)(a1 + 24), 3, nptr[0]);
|
||||||
|
sub_C8A4(&s);
|
||||||
|
if ( !(unsigned int)sub_11238(a3, (int)&s, (char *)qword_503B8) )
|
||||||
|
sub_1C640(*(_QWORD *)(a1 + 24), 4, s);
|
||||||
|
if ( (sub_2E4E0(a2, off_4D5F8[0], nptr) & 1) != 0 )
|
||||||
|
*(_DWORD *)(a1 + 40) = atoi(nptr[0]);
|
||||||
|
if ( (sub_2E4E0(a2, off_4D5E8[0], nptr) & 1) != 0 )
|
||||||
|
{
|
||||||
|
v8 = *(_QWORD *)(a1 + 48);
|
||||||
|
LABEL_16:
|
||||||
|
sub_1C440(v8, nptr[0]);
|
||||||
|
goto LABEL_17;
|
||||||
|
}
|
||||||
|
sub_104E8(*(_QWORD **)(a1 + 56), a2, a3);
|
||||||
|
if ( (sub_2E4E0(a2, off_4D5F0[0], nptr) & 1) != 0 )
|
||||||
|
{
|
||||||
|
v9 = nptr[0];
|
||||||
|
v10 = atoi(nptr[0]);
|
||||||
|
v11 = *(_QWORD *)(a1 + 72);
|
||||||
|
*(_DWORD *)(a1 + 64) = v10;
|
||||||
|
sub_1C440(v11, v9);
|
||||||
|
}
|
||||||
|
if ( (sub_2E4E0(a2, off_4D608[0], nptr) & 1) != 0 )
|
||||||
|
{
|
||||||
|
v8 = *(_QWORD *)(a1 + 80);
|
||||||
|
goto LABEL_16;
|
||||||
|
}
|
||||||
|
LABEL_17:
|
||||||
|
sub_CA10(&s);
|
||||||
|
return sub_CA10(nptr);
|
||||||
|
}
|
||||||
@@ -0,0 +1,46 @@
|
|||||||
|
/*
|
||||||
|
* func-name: sub_11238
|
||||||
|
* func-address: 0x11238
|
||||||
|
* export-type: decompile
|
||||||
|
* callers: 0x10c80, 0x1101c, 0x1435c, 0x1dcd4, 0x20984, 0x21de4, 0x25220, 0x252cc, 0x25630, 0x25914, 0x2cba0, 0x2e22c, 0x3126c
|
||||||
|
* callees: 0xc8a4, 0xc8d8, 0xc8f8, 0xca10, 0xce08, 0xcf74, 0x2d104, 0x2d330, 0x2d534, 0x43f70, 0x43fc0
|
||||||
|
*/
|
||||||
|
|
||||||
|
__int64 __fastcall sub_11238(__int64 a1, __int64 a2, char *s)
|
||||||
|
{
|
||||||
|
unsigned int v6; // w21
|
||||||
|
const void *v8; // [xsp+8h] [xbp-38h] BYREF
|
||||||
|
const void *v9; // [xsp+10h] [xbp-30h] BYREF
|
||||||
|
__int64 v10; // [xsp+18h] [xbp-28h] BYREF
|
||||||
|
__int64 v11; // [xsp+20h] [xbp-20h] BYREF
|
||||||
|
__int64 v12; // [xsp+28h] [xbp-18h] BYREF
|
||||||
|
__int64 v13[2]; // [xsp+30h] [xbp-10h] BYREF
|
||||||
|
|
||||||
|
v13[1] = *(_QWORD *)(_ReadStatusReg(TPIDR_EL0) + 40);
|
||||||
|
if ( !strchr(s, 40) )
|
||||||
|
{
|
||||||
|
sub_C8F8(&v10, "(");
|
||||||
|
sub_C8A4(&v9);
|
||||||
|
sub_C8D8(&v11, &v10);
|
||||||
|
sub_CE08(&v11, &v9);
|
||||||
|
sub_C8D8(v13, &v11);
|
||||||
|
sub_CF74(v13, ")");
|
||||||
|
sub_C8F8(&v8, (char *)qword_50210);
|
||||||
|
sub_C8D8(&v12, v13);
|
||||||
|
sub_CE08(&v12, &v8);
|
||||||
|
sub_CA10(&v8);
|
||||||
|
sub_CA10(v13);
|
||||||
|
sub_CA10(&v11);
|
||||||
|
sub_CA10(&v9);
|
||||||
|
sub_CA10(&v10);
|
||||||
|
v6 = sub_2D330(a1, v13, s, v12);
|
||||||
|
sub_CA10(&v12);
|
||||||
|
if ( v6 )
|
||||||
|
return v6;
|
||||||
|
return (unsigned int)sub_2D104(a1, a2, v13[0], 0);
|
||||||
|
}
|
||||||
|
v6 = sub_2D534(a1, v13, s);
|
||||||
|
if ( !v6 )
|
||||||
|
return (unsigned int)sub_2D104(a1, a2, v13[0], 0);
|
||||||
|
return v6;
|
||||||
|
}
|
||||||
@@ -0,0 +1,357 @@
|
|||||||
|
/*
|
||||||
|
* func-name: sub_11394
|
||||||
|
* func-address: 0x11394
|
||||||
|
* export-type: decompile
|
||||||
|
* callers: 0x10704
|
||||||
|
* callees: 0xc8a4, 0xca10, 0xca28, 0xff58, 0x19de0, 0x1a0dc, 0x1a0e8, 0x1c640, 0x2452c, 0x247fc, 0x24af8, 0x24d80, 0x24f90, 0x259b4, 0x25afc, 0x26128, 0x29b98, 0x2c4f0, 0x2e4e0, 0x43f70, 0x44120
|
||||||
|
*/
|
||||||
|
|
||||||
|
__int64 __fastcall sub_11394(__int64 a1, __int64 a2, __int64 a3, __int64 *a4, __int64 a5)
|
||||||
|
{
|
||||||
|
int v9; // w19
|
||||||
|
__int64 v10; // x22
|
||||||
|
__int64 v11; // x25
|
||||||
|
__int64 v12; // x0
|
||||||
|
char v13; // w28
|
||||||
|
__int64 v14; // x26
|
||||||
|
__int64 v15; // x0
|
||||||
|
__int64 v16; // x0
|
||||||
|
char *v17; // x0
|
||||||
|
char *v18; // x0
|
||||||
|
__int64 v19; // x0
|
||||||
|
__int64 v20; // x8
|
||||||
|
__int64 v21; // x9
|
||||||
|
__int64 v22; // x25
|
||||||
|
__int64 v23; // x0
|
||||||
|
__int64 v24; // x0
|
||||||
|
char *v25; // x0
|
||||||
|
__int64 v26; // x9
|
||||||
|
__int64 v27; // x25
|
||||||
|
__int64 v28; // x0
|
||||||
|
__int64 v29; // x0
|
||||||
|
char *v30; // x0
|
||||||
|
__int64 v31; // x9
|
||||||
|
__int64 v32; // x9
|
||||||
|
__int64 v33; // x25
|
||||||
|
__int64 v34; // x0
|
||||||
|
__int64 v35; // x0
|
||||||
|
char *v36; // x0
|
||||||
|
__int64 v37; // x0
|
||||||
|
__int64 v38; // x9
|
||||||
|
__int64 v39; // x8
|
||||||
|
__int64 v40; // x9
|
||||||
|
__int64 v41; // x9
|
||||||
|
__int64 v42; // x25
|
||||||
|
__int64 v43; // x0
|
||||||
|
__int64 v44; // x0
|
||||||
|
__int64 v45; // x9
|
||||||
|
__int64 v46; // x0
|
||||||
|
_BOOL4 v47; // w24
|
||||||
|
__int64 v48; // x25
|
||||||
|
__int64 v49; // x0
|
||||||
|
__int64 v50; // x0
|
||||||
|
char *v51; // x0
|
||||||
|
__int64 v52; // x9
|
||||||
|
__int64 v53; // x24
|
||||||
|
__int64 v54; // x0
|
||||||
|
__int64 v55; // x0
|
||||||
|
__int64 v56; // x9
|
||||||
|
__int64 v57; // x24
|
||||||
|
__int64 v58; // x0
|
||||||
|
__int64 v59; // x0
|
||||||
|
char *v60; // x0
|
||||||
|
__int64 v61; // x9
|
||||||
|
__int64 v62; // x24
|
||||||
|
__int64 v63; // x0
|
||||||
|
__int64 v64; // x0
|
||||||
|
__int64 v65; // x9
|
||||||
|
__int64 v66; // x24
|
||||||
|
__int64 v67; // x0
|
||||||
|
__int64 v68; // x0
|
||||||
|
char *v69; // x0
|
||||||
|
__int64 v70; // x9
|
||||||
|
__int64 v71; // x24
|
||||||
|
__int64 v72; // x0
|
||||||
|
__int64 v73; // x0
|
||||||
|
char *v74; // x0
|
||||||
|
__int64 v75; // x9
|
||||||
|
__int64 v76; // x21
|
||||||
|
__int64 v77; // x0
|
||||||
|
__int64 v78; // x0
|
||||||
|
char *s1; // [xsp+8h] [xbp-38h] BYREF
|
||||||
|
char *v81; // [xsp+10h] [xbp-30h] BYREF
|
||||||
|
char *s; // [xsp+18h] [xbp-28h] BYREF
|
||||||
|
__int64 v83; // [xsp+20h] [xbp-20h] BYREF
|
||||||
|
_BYTE v84[8]; // [xsp+28h] [xbp-18h] BYREF
|
||||||
|
_QWORD v85[2]; // [xsp+30h] [xbp-10h] BYREF
|
||||||
|
|
||||||
|
v9 = a1;
|
||||||
|
v85[1] = *(_QWORD *)(_ReadStatusReg(TPIDR_EL0) + 40);
|
||||||
|
v10 = sub_1A0E8(a1);
|
||||||
|
v85[0] = v10;
|
||||||
|
v11 = sub_1A0E8(v10);
|
||||||
|
v83 = v11;
|
||||||
|
sub_C8A4(&s);
|
||||||
|
v12 = sub_2E4E0(a2, off_4D528[0], &s);
|
||||||
|
v13 = ~(_BYTE)v12;
|
||||||
|
v14 = sub_2452C(v12);
|
||||||
|
v15 = sub_FF58((__int64)v84, v10, v11, v13 & 1);
|
||||||
|
v16 = sub_2452C(v15);
|
||||||
|
sub_29B98(a5, 21, v16 - v14);
|
||||||
|
v17 = (char *)sub_1A0DC(v10);
|
||||||
|
sub_1C640(v9, 21, v17);
|
||||||
|
v18 = (char *)sub_1A0DC(v11);
|
||||||
|
sub_1C640(v9, 108, v18);
|
||||||
|
sub_19DE0(&v83);
|
||||||
|
v19 = sub_C8A4(&v81);
|
||||||
|
v20 = *a4;
|
||||||
|
v21 = *a4;
|
||||||
|
while ( 1 )
|
||||||
|
{
|
||||||
|
v21 = *(_QWORD *)(v21 + 16);
|
||||||
|
if ( v21 == v20 )
|
||||||
|
break;
|
||||||
|
if ( *(_DWORD *)v21 == 7 )
|
||||||
|
goto LABEL_6;
|
||||||
|
}
|
||||||
|
v22 = sub_2452C(v19);
|
||||||
|
v23 = sub_247FC(v10);
|
||||||
|
v24 = sub_2452C(v23);
|
||||||
|
sub_29B98(a5, 7, v24 - v22);
|
||||||
|
v25 = (char *)sub_1A0DC(v10);
|
||||||
|
v19 = sub_1C640(v9, 7, v25);
|
||||||
|
v20 = *a4;
|
||||||
|
LABEL_6:
|
||||||
|
v26 = v20;
|
||||||
|
while ( 1 )
|
||||||
|
{
|
||||||
|
v26 = *(_QWORD *)(v26 + 16);
|
||||||
|
if ( v26 == v20 )
|
||||||
|
break;
|
||||||
|
if ( *(_DWORD *)v26 == 10 )
|
||||||
|
goto LABEL_11;
|
||||||
|
}
|
||||||
|
v27 = sub_2452C(v19);
|
||||||
|
v28 = sub_259B4(v10);
|
||||||
|
v29 = sub_2452C(v28);
|
||||||
|
sub_29B98(a5, 10, v29 - v27);
|
||||||
|
v30 = (char *)sub_1A0DC(v10);
|
||||||
|
v19 = sub_1C640(v9, 10, v30);
|
||||||
|
v20 = *a4;
|
||||||
|
LABEL_11:
|
||||||
|
v31 = v20;
|
||||||
|
while ( 1 )
|
||||||
|
{
|
||||||
|
v31 = *(_QWORD *)(v31 + 16);
|
||||||
|
if ( v31 == v20 )
|
||||||
|
break;
|
||||||
|
if ( *(_DWORD *)v31 == 105 )
|
||||||
|
goto LABEL_18;
|
||||||
|
}
|
||||||
|
sub_C8A4(&s1);
|
||||||
|
if ( (sub_2E4E0(a2, off_4D3B0[0], &s1) & 1) != 0 )
|
||||||
|
sub_1C640(v9, 105, s1);
|
||||||
|
v19 = sub_CA10(&s1);
|
||||||
|
v20 = *a4;
|
||||||
|
LABEL_18:
|
||||||
|
v32 = v20;
|
||||||
|
while ( 1 )
|
||||||
|
{
|
||||||
|
v32 = *(_QWORD *)(v32 + 16);
|
||||||
|
if ( v32 == v20 )
|
||||||
|
break;
|
||||||
|
if ( *(_DWORD *)v32 == 14 )
|
||||||
|
goto LABEL_23;
|
||||||
|
}
|
||||||
|
v33 = sub_2452C(v19);
|
||||||
|
v34 = sub_25AFC(a3, v10);
|
||||||
|
v35 = sub_2452C(v34);
|
||||||
|
sub_29B98(a5, 14, v35 - v33);
|
||||||
|
v36 = (char *)sub_1A0DC(v10);
|
||||||
|
sub_1C640(v9, 14, v36);
|
||||||
|
LABEL_23:
|
||||||
|
if ( (sub_2E4E0(a2, off_4D390[0], &s) & 1) != 0 && sub_CA28(&s) )
|
||||||
|
sub_1C640(v9, 101, s);
|
||||||
|
v37 = sub_2E4E0(a2, off_4D490[0], &s);
|
||||||
|
if ( (v37 & 1) != 0 )
|
||||||
|
{
|
||||||
|
v37 = sub_CA28(&s);
|
||||||
|
if ( v37 )
|
||||||
|
v37 = sub_1C640(v9, 152, s);
|
||||||
|
}
|
||||||
|
v38 = *a4;
|
||||||
|
while ( 1 )
|
||||||
|
{
|
||||||
|
v38 = *(_QWORD *)(v38 + 16);
|
||||||
|
if ( v38 == *a4 )
|
||||||
|
break;
|
||||||
|
if ( *(_DWORD *)v38 == 103 )
|
||||||
|
goto LABEL_35;
|
||||||
|
}
|
||||||
|
v37 = sub_2E4E0(a2, off_4D3A0[0], &s);
|
||||||
|
if ( (v37 & 1) != 0 )
|
||||||
|
v37 = sub_1C640(v9, 103, s);
|
||||||
|
LABEL_35:
|
||||||
|
v39 = *a4;
|
||||||
|
v40 = *a4;
|
||||||
|
while ( 1 )
|
||||||
|
{
|
||||||
|
v40 = *(_QWORD *)(v40 + 16);
|
||||||
|
if ( v40 == v39 )
|
||||||
|
break;
|
||||||
|
if ( *(_DWORD *)v40 == 104 )
|
||||||
|
goto LABEL_42;
|
||||||
|
}
|
||||||
|
sub_C8A4(&s1);
|
||||||
|
if ( (sub_2E4E0(a2, off_4D3A8[0], &s1) & 1) != 0 )
|
||||||
|
sub_1C640(v9, 104, s1);
|
||||||
|
v37 = sub_CA10(&s1);
|
||||||
|
v39 = *a4;
|
||||||
|
LABEL_42:
|
||||||
|
v41 = v39;
|
||||||
|
while ( 1 )
|
||||||
|
{
|
||||||
|
v41 = *(_QWORD *)(v41 + 16);
|
||||||
|
if ( v41 == v39 )
|
||||||
|
break;
|
||||||
|
if ( *(_DWORD *)v41 == 33 )
|
||||||
|
goto LABEL_47;
|
||||||
|
}
|
||||||
|
v42 = sub_2452C(v37);
|
||||||
|
v43 = sub_24F90(qword_50BA8, &v81, &unk_534B);
|
||||||
|
v44 = sub_2452C(v43);
|
||||||
|
sub_29B98(a5, 33, v44 - v42);
|
||||||
|
v37 = sub_1C640(v9, 33, v81);
|
||||||
|
v39 = *a4;
|
||||||
|
LABEL_47:
|
||||||
|
v45 = v39;
|
||||||
|
while ( 1 )
|
||||||
|
{
|
||||||
|
v45 = *(_QWORD *)(v45 + 16);
|
||||||
|
if ( v45 == v39 )
|
||||||
|
break;
|
||||||
|
if ( *(_DWORD *)v45 == 11 )
|
||||||
|
goto LABEL_55;
|
||||||
|
}
|
||||||
|
sub_C8A4(&s1);
|
||||||
|
v46 = sub_2E4E0(a2, off_4D330[0], &s1);
|
||||||
|
if ( (v46 & 1) != 0 )
|
||||||
|
{
|
||||||
|
v46 = strcmp(s1, "1");
|
||||||
|
v47 = v46 == 0;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
v47 = 0;
|
||||||
|
}
|
||||||
|
v48 = sub_2452C(v46);
|
||||||
|
v49 = sub_2C4F0(v10, v47);
|
||||||
|
v50 = sub_2452C(v49);
|
||||||
|
sub_29B98(a5, 11, v50 - v48);
|
||||||
|
v51 = (char *)sub_1A0DC(v10);
|
||||||
|
sub_1C640(v9, 11, v51);
|
||||||
|
v37 = sub_CA10(&s1);
|
||||||
|
v39 = *a4;
|
||||||
|
LABEL_55:
|
||||||
|
v52 = v39;
|
||||||
|
while ( 1 )
|
||||||
|
{
|
||||||
|
v52 = *(_QWORD *)(v52 + 16);
|
||||||
|
if ( v52 == v39 )
|
||||||
|
break;
|
||||||
|
if ( *(_DWORD *)v52 == 24 )
|
||||||
|
goto LABEL_60;
|
||||||
|
}
|
||||||
|
v53 = sub_2452C(v37);
|
||||||
|
v54 = sub_24F90(qword_50B98, &v81, &unk_534B);
|
||||||
|
v55 = sub_2452C(v54);
|
||||||
|
sub_29B98(a5, 24, v55 - v53);
|
||||||
|
v37 = sub_1C640(v9, 24, v81);
|
||||||
|
v39 = *a4;
|
||||||
|
LABEL_60:
|
||||||
|
v56 = v39;
|
||||||
|
while ( 1 )
|
||||||
|
{
|
||||||
|
v56 = *(_QWORD *)(v56 + 16);
|
||||||
|
if ( v56 == v39 )
|
||||||
|
break;
|
||||||
|
if ( *(_DWORD *)v56 == 12 )
|
||||||
|
goto LABEL_65;
|
||||||
|
}
|
||||||
|
v57 = sub_2452C(v37);
|
||||||
|
v58 = sub_24AF8(v10);
|
||||||
|
v59 = sub_2452C(v58);
|
||||||
|
sub_29B98(a5, 12, v59 - v57);
|
||||||
|
v60 = (char *)sub_1A0DC(v10);
|
||||||
|
v37 = sub_1C640(v9, 12, v60);
|
||||||
|
v39 = *a4;
|
||||||
|
LABEL_65:
|
||||||
|
v61 = v39;
|
||||||
|
while ( 1 )
|
||||||
|
{
|
||||||
|
v61 = *(_QWORD *)(v61 + 16);
|
||||||
|
if ( v61 == v39 )
|
||||||
|
break;
|
||||||
|
if ( *(_DWORD *)v61 == 23 )
|
||||||
|
goto LABEL_70;
|
||||||
|
}
|
||||||
|
v62 = sub_2452C(v37);
|
||||||
|
v63 = sub_24F90(qword_50B90, &v81, &unk_534B);
|
||||||
|
v64 = sub_2452C(v63);
|
||||||
|
sub_29B98(a5, 23, v64 - v62);
|
||||||
|
v37 = sub_1C640(v9, 23, v81);
|
||||||
|
v39 = *a4;
|
||||||
|
LABEL_70:
|
||||||
|
v65 = v39;
|
||||||
|
while ( 1 )
|
||||||
|
{
|
||||||
|
v65 = *(_QWORD *)(v65 + 16);
|
||||||
|
if ( v65 == v39 )
|
||||||
|
break;
|
||||||
|
if ( *(_DWORD *)v65 == 8 )
|
||||||
|
goto LABEL_75;
|
||||||
|
}
|
||||||
|
v66 = sub_2452C(v37);
|
||||||
|
v67 = sub_24D80(v10);
|
||||||
|
v68 = sub_2452C(v67);
|
||||||
|
sub_29B98(a5, 8, v68 - v66);
|
||||||
|
v69 = (char *)sub_1A0DC(v10);
|
||||||
|
v37 = sub_1C640(v9, 8, v69);
|
||||||
|
v39 = *a4;
|
||||||
|
LABEL_75:
|
||||||
|
v70 = v39;
|
||||||
|
while ( 1 )
|
||||||
|
{
|
||||||
|
v70 = *(_QWORD *)(v70 + 16);
|
||||||
|
if ( v70 == v39 )
|
||||||
|
break;
|
||||||
|
if ( *(_DWORD *)v70 == 13 )
|
||||||
|
goto LABEL_80;
|
||||||
|
}
|
||||||
|
v71 = sub_2452C(v37);
|
||||||
|
v72 = sub_26128(a3, v10);
|
||||||
|
v73 = sub_2452C(v72);
|
||||||
|
sub_29B98(a5, 13, v73 - v71);
|
||||||
|
v74 = (char *)sub_1A0DC(v10);
|
||||||
|
v37 = sub_1C640(v9, 13, v74);
|
||||||
|
v39 = *a4;
|
||||||
|
LABEL_80:
|
||||||
|
v75 = v39;
|
||||||
|
while ( 1 )
|
||||||
|
{
|
||||||
|
v75 = *(_QWORD *)(v75 + 16);
|
||||||
|
if ( v75 == v39 )
|
||||||
|
break;
|
||||||
|
if ( *(_DWORD *)v75 == 25 )
|
||||||
|
goto LABEL_85;
|
||||||
|
}
|
||||||
|
v76 = sub_2452C(v37);
|
||||||
|
v77 = sub_24F90(qword_50BA0, &v81, &unk_534B);
|
||||||
|
v78 = sub_2452C(v77);
|
||||||
|
sub_29B98(a5, 25, v78 - v76);
|
||||||
|
sub_1C640(v9, 25, v81);
|
||||||
|
LABEL_85:
|
||||||
|
sub_19DE0(v85);
|
||||||
|
sub_CA10(&v81);
|
||||||
|
return sub_CA10(&s);
|
||||||
|
}
|
||||||
@@ -0,0 +1,23 @@
|
|||||||
|
/*
|
||||||
|
* func-name: sub_11E0C
|
||||||
|
* func-address: 0x11e0c
|
||||||
|
* export-type: decompile
|
||||||
|
* callers: 0x10704
|
||||||
|
* callees: 0x19de0, 0x1a0dc, 0x1a0e8, 0x1c640, 0x278e8, 0x43f70
|
||||||
|
*/
|
||||||
|
|
||||||
|
__int64 __fastcall sub_11E0C(__int64 a1)
|
||||||
|
{
|
||||||
|
int v1; // w19
|
||||||
|
__int64 v2; // x1
|
||||||
|
char *v3; // x0
|
||||||
|
_QWORD v5[2]; // [xsp+0h] [xbp-10h] BYREF
|
||||||
|
|
||||||
|
v1 = a1;
|
||||||
|
v5[1] = *(_QWORD *)(_ReadStatusReg(TPIDR_EL0) + 40);
|
||||||
|
v5[0] = sub_1A0E8(a1);
|
||||||
|
sub_278E8(v5[0], v2);
|
||||||
|
v3 = (char *)sub_1A0DC(v5[0]);
|
||||||
|
sub_1C640(v1, 20, v3);
|
||||||
|
return sub_19DE0(v5);
|
||||||
|
}
|
||||||
@@ -0,0 +1,18 @@
|
|||||||
|
/*
|
||||||
|
* func-name: sub_11E88
|
||||||
|
* func-address: 0x11e88
|
||||||
|
* export-type: decompile
|
||||||
|
* callers: 0x10704
|
||||||
|
* callees: 0xc8a4, 0xca10, 0x1c640, 0x2e4e0, 0x43f70
|
||||||
|
*/
|
||||||
|
|
||||||
|
__int64 __fastcall sub_11E88(int a1, __int64 a2)
|
||||||
|
{
|
||||||
|
char *s[2]; // [xsp+0h] [xbp-10h] BYREF
|
||||||
|
|
||||||
|
s[1] = *(char **)(_ReadStatusReg(TPIDR_EL0) + 40);
|
||||||
|
sub_C8A4(s);
|
||||||
|
if ( (sub_2E4E0(a2, off_4D388[0], s) & 1) != 0 )
|
||||||
|
sub_1C640(a1, 100, s[0]);
|
||||||
|
return sub_CA10(s);
|
||||||
|
}
|
||||||
@@ -0,0 +1,18 @@
|
|||||||
|
/*
|
||||||
|
* func-name: sub_11F14
|
||||||
|
* func-address: 0x11f14
|
||||||
|
* export-type: decompile
|
||||||
|
* callers: 0x10704
|
||||||
|
* callees: 0xc8a4, 0xca10, 0x1c640, 0x2e4e0, 0x43f70
|
||||||
|
*/
|
||||||
|
|
||||||
|
__int64 __fastcall sub_11F14(int a1, __int64 a2)
|
||||||
|
{
|
||||||
|
char *s[2]; // [xsp+0h] [xbp-10h] BYREF
|
||||||
|
|
||||||
|
s[1] = *(char **)(_ReadStatusReg(TPIDR_EL0) + 40);
|
||||||
|
sub_C8A4(s);
|
||||||
|
if ( (sub_2E4E0(a2, off_4D358[0], s) & 1) != 0 )
|
||||||
|
sub_1C640(a1, 22, s[0]);
|
||||||
|
return sub_CA10(s);
|
||||||
|
}
|
||||||
@@ -0,0 +1,433 @@
|
|||||||
|
/*
|
||||||
|
* func-name: sub_11FA0
|
||||||
|
* func-address: 0x11fa0
|
||||||
|
* export-type: decompile
|
||||||
|
* callers: 0x10704
|
||||||
|
* callees: 0xc8a4, 0xc8f8, 0xca10, 0xca28, 0xcc84, 0xd210, 0xd494, 0x10db0, 0x1300c, 0x13eb8, 0x1435c, 0x14edc, 0x14f84, 0x15150, 0x153b0, 0x15694, 0x15940, 0x19de0, 0x19e28, 0x1a0c8, 0x1a0dc, 0x1a0e8, 0x1c440, 0x1c640, 0x2452c, 0x2462c, 0x24f90, 0x27324, 0x299f0, 0x29b98, 0x2bbbc, 0x2e4e0, 0x43f70, 0x44120, 0x44150, 0x44160, 0x44170, 0x44190, 0x441b0, 0x44210
|
||||||
|
*/
|
||||||
|
|
||||||
|
__int64 __fastcall sub_11FA0(int a1, __int64 a2, __int64 a3, __int64 *a4, __int64 a5)
|
||||||
|
{
|
||||||
|
unsigned __int64 StatusReg; // x27
|
||||||
|
__int64 v11; // x0
|
||||||
|
__int64 v12; // x22
|
||||||
|
__int64 v13; // x0
|
||||||
|
__int64 v14; // x25
|
||||||
|
__int64 v15; // x0
|
||||||
|
__int64 v16; // x0
|
||||||
|
__int64 v17; // x0
|
||||||
|
__int64 v18; // x25
|
||||||
|
__int64 v19; // x0
|
||||||
|
__int64 v20; // x0
|
||||||
|
char **v21; // x0
|
||||||
|
__int64 v22; // x0
|
||||||
|
__int64 v23; // x9
|
||||||
|
__int64 v24; // x25
|
||||||
|
__int64 v25; // x0
|
||||||
|
char *v26; // x0
|
||||||
|
__int64 v27; // x0
|
||||||
|
__int64 v28; // x0
|
||||||
|
__int64 v29; // x8
|
||||||
|
__int64 v30; // x9
|
||||||
|
__int64 v31; // x25
|
||||||
|
__int64 v32; // x0
|
||||||
|
__int64 v33; // x0
|
||||||
|
__int64 v34; // x9
|
||||||
|
__int64 v35; // x25
|
||||||
|
DIR *v36; // x0
|
||||||
|
DIR *v37; // x26
|
||||||
|
struct dirent *v38; // x0
|
||||||
|
ssize_t v39; // x0
|
||||||
|
int v40; // w8
|
||||||
|
__int64 v41; // x9
|
||||||
|
int v42; // w8
|
||||||
|
__int64 i; // x27
|
||||||
|
__int64 v44; // x0
|
||||||
|
char *v45; // x0
|
||||||
|
__int64 v46; // x25
|
||||||
|
__int64 v47; // x0
|
||||||
|
char *v48; // x0
|
||||||
|
__int64 v49; // x0
|
||||||
|
__int64 v50; // x0
|
||||||
|
__int64 v51; // x8
|
||||||
|
__int64 v52; // x9
|
||||||
|
__int64 v53; // x0
|
||||||
|
__int64 v54; // x25
|
||||||
|
__int64 v55; // x0
|
||||||
|
__int64 v56; // x0
|
||||||
|
__int64 v57; // x9
|
||||||
|
__int64 v58; // x25
|
||||||
|
__int64 v59; // x0
|
||||||
|
__int64 v60; // x0
|
||||||
|
__int64 v61; // x9
|
||||||
|
__int64 v62; // x23
|
||||||
|
__int64 v63; // x0
|
||||||
|
__int64 v64; // x0
|
||||||
|
__int64 v65; // x23
|
||||||
|
__int64 v66; // x0
|
||||||
|
char *v67; // x0
|
||||||
|
__int64 v68; // x0
|
||||||
|
__int64 v69; // x0
|
||||||
|
__int64 v70; // x23
|
||||||
|
__int64 v71; // x0
|
||||||
|
char *v72; // x0
|
||||||
|
__int64 v73; // x0
|
||||||
|
__int64 v74; // x0
|
||||||
|
__int64 v75; // x23
|
||||||
|
__int64 v76; // x0
|
||||||
|
char *v77; // x0
|
||||||
|
__int64 v78; // x0
|
||||||
|
__int64 v79; // x0
|
||||||
|
__int64 v80; // x23
|
||||||
|
__int64 v81; // x0
|
||||||
|
__int64 v82; // x0
|
||||||
|
_BOOL4 v83; // w23
|
||||||
|
__int64 v84; // x0
|
||||||
|
__int64 v85; // x24
|
||||||
|
__int64 v86; // x0
|
||||||
|
char *v87; // x0
|
||||||
|
__int64 v88; // x0
|
||||||
|
unsigned __int64 v90; // [xsp+8h] [xbp-20C8h]
|
||||||
|
__uid_t v91; // [xsp+14h] [xbp-20BCh]
|
||||||
|
__int64 v92; // [xsp+18h] [xbp-20B8h]
|
||||||
|
char *v93; // [xsp+20h] [xbp-20B0h] BYREF
|
||||||
|
char *s; // [xsp+28h] [xbp-20A8h] BYREF
|
||||||
|
__int64 v95; // [xsp+30h] [xbp-20A0h] BYREF
|
||||||
|
char *s1; // [xsp+38h] [xbp-2098h] BYREF
|
||||||
|
__int128 v97; // [xsp+40h] [xbp-2090h] BYREF
|
||||||
|
__int128 v98; // [xsp+50h] [xbp-2080h]
|
||||||
|
__int128 v99; // [xsp+60h] [xbp-2070h]
|
||||||
|
__int128 v100; // [xsp+70h] [xbp-2060h]
|
||||||
|
__int128 v101; // [xsp+80h] [xbp-2050h]
|
||||||
|
__int128 v102; // [xsp+90h] [xbp-2040h]
|
||||||
|
__int128 v103; // [xsp+A0h] [xbp-2030h]
|
||||||
|
__int128 v104; // [xsp+B0h] [xbp-2020h]
|
||||||
|
char buf[4096]; // [xsp+C0h] [xbp-2010h] BYREF
|
||||||
|
char v106[4096]; // [xsp+10C0h] [xbp-1010h] BYREF
|
||||||
|
__int64 v107; // [xsp+20C0h] [xbp-10h]
|
||||||
|
|
||||||
|
StatusReg = _ReadStatusReg(TPIDR_EL0);
|
||||||
|
v107 = *(_QWORD *)(StatusReg + 40);
|
||||||
|
v11 = sub_C8A4(&s1);
|
||||||
|
v12 = sub_1A0E8(v11);
|
||||||
|
v95 = v12;
|
||||||
|
if ( (sub_2E4E0(a2, off_4D360[0], &s1) & 1) != 0 )
|
||||||
|
sub_1C640(a1, 28, s1);
|
||||||
|
if ( (sub_2E4E0(a2, off_4D398[0], &s1) & 1) != 0 )
|
||||||
|
sub_1C640(a1, 102, s1);
|
||||||
|
if ( (sub_2E4E0(a2, off_4D3B8[0], &s1) & 1) != 0 )
|
||||||
|
sub_1C640(a1, 106, s1);
|
||||||
|
if ( (sub_2E4E0(a2, off_4D3F8[0], &s1) & 1) != 0 )
|
||||||
|
sub_1C640(a1, 115, s1);
|
||||||
|
if ( (sub_2E4E0(a2, off_4D3C8[0], &s1) & 1) != 0 )
|
||||||
|
sub_1C640(a1, 114, s1);
|
||||||
|
if ( (sub_2E4E0(a2, off_4D380[0], &s1) & 1) != 0 )
|
||||||
|
sub_1C640(a1, 44, s1);
|
||||||
|
v13 = sub_C8A4(&s);
|
||||||
|
v14 = sub_2452C(v13);
|
||||||
|
v15 = sub_24F90(qword_50B88, &s, &unk_534B);
|
||||||
|
v16 = sub_2452C(v15);
|
||||||
|
sub_29B98(a5, 35, v16 - v14);
|
||||||
|
v17 = sub_1C640(a1, 35, s);
|
||||||
|
v18 = sub_2452C(v17);
|
||||||
|
v19 = sub_24F90(qword_50978, &s, &unk_534B);
|
||||||
|
v20 = sub_2452C(v19);
|
||||||
|
sub_29B98(a5, 42, v20 - v18);
|
||||||
|
sub_1C640(a1, 42, s);
|
||||||
|
if ( (sub_2E4E0(a2, off_4D3F0[0], &s1) & 1) != 0 )
|
||||||
|
sub_1C640(a1, 17, s1);
|
||||||
|
if ( (sub_2E4E0(a2, off_4D3C0[0], &s1) & 1) != 0 )
|
||||||
|
sub_1C640(a1, 107, s1);
|
||||||
|
if ( (sub_2E4E0(a2, off_4D428[0], &s1) & 1) != 0 )
|
||||||
|
sub_1C640(a1, 47, s1);
|
||||||
|
if ( (sub_2E4E0(a2, off_4D438[0], &s1) & 1) != 0 )
|
||||||
|
sub_1C640(a1, 49, s1);
|
||||||
|
if ( (sub_2E4E0(a2, off_4D430[0], &s1) & 1) != 0 )
|
||||||
|
sub_1C640(a1, 48, s1);
|
||||||
|
sub_CC84(&s1);
|
||||||
|
if ( (sub_2E4E0(a2, off_4D518[0], &s1) & 1) != 0 )
|
||||||
|
sub_1C640(a1, 200, s1);
|
||||||
|
if ( (sub_2E4E0(a2, off_4D400[0], &s1) & 1) != 0 )
|
||||||
|
sub_1C640(a1, 116, s1);
|
||||||
|
if ( (sub_2E4E0(a2, off_4D408[0], &s1) & 1) != 0 )
|
||||||
|
sub_1C640(a1, 117, s1);
|
||||||
|
if ( (sub_2E4E0(a2, off_4D420[0], &s1) & 1) != 0 && sub_CA28(&s1) )
|
||||||
|
sub_1C640(a1, 119, s1);
|
||||||
|
v21 = (char **)sub_10DB0();
|
||||||
|
sub_C8F8(&v93, v21[4]);
|
||||||
|
sub_D494(&v93);
|
||||||
|
sub_D210((const char **)&v93, "-");
|
||||||
|
sub_1C640(a1, 26, v93);
|
||||||
|
if ( (sub_2E4E0(a2, off_4D3E8[0], &s1) & 1) != 0 )
|
||||||
|
sub_1C640(a1, 45, s1);
|
||||||
|
if ( (sub_2E4E0(a2, off_4D418[0], &s1) & 1) != 0 )
|
||||||
|
sub_1C640(a1, 118, s1);
|
||||||
|
v22 = sub_2E4E0(a2, off_4D448[0], &s1);
|
||||||
|
if ( (v22 & 1) != 0 )
|
||||||
|
v22 = sub_1C640(a1, 120, s1);
|
||||||
|
v23 = *a4;
|
||||||
|
while ( 1 )
|
||||||
|
{
|
||||||
|
v23 = *(_QWORD *)(v23 + 16);
|
||||||
|
if ( v23 == *a4 )
|
||||||
|
break;
|
||||||
|
if ( *(_DWORD *)v23 == 121 )
|
||||||
|
goto LABEL_45;
|
||||||
|
}
|
||||||
|
v24 = sub_2452C(v22);
|
||||||
|
v25 = sub_2BBBC(v12);
|
||||||
|
if ( (v25 & 1) != 0 )
|
||||||
|
{
|
||||||
|
v26 = (char *)sub_1A0DC(v12);
|
||||||
|
v25 = sub_1C640(a1, 121, v26);
|
||||||
|
}
|
||||||
|
v27 = sub_2452C(v25);
|
||||||
|
sub_29B98(a5, 121, v27 - v24);
|
||||||
|
LABEL_45:
|
||||||
|
v28 = sub_2E4E0(a2, off_4D450[0], &s1);
|
||||||
|
if ( (v28 & 1) != 0 )
|
||||||
|
v28 = sub_1C640(a1, 122, s1);
|
||||||
|
v29 = *a4;
|
||||||
|
v30 = *a4;
|
||||||
|
while ( 1 )
|
||||||
|
{
|
||||||
|
v30 = *(_QWORD *)(v30 + 16);
|
||||||
|
if ( v30 == v29 )
|
||||||
|
break;
|
||||||
|
if ( *(_DWORD *)v30 == 135 )
|
||||||
|
goto LABEL_52;
|
||||||
|
}
|
||||||
|
v31 = sub_2452C(v28);
|
||||||
|
v32 = sub_1300C(&s1);
|
||||||
|
v33 = sub_2452C(v32);
|
||||||
|
sub_29B98(a5, 135, v33 - v31);
|
||||||
|
v28 = sub_1C640(a1, 135, s1);
|
||||||
|
v29 = *a4;
|
||||||
|
LABEL_52:
|
||||||
|
v34 = v29;
|
||||||
|
while ( 1 )
|
||||||
|
{
|
||||||
|
v34 = *(_QWORD *)(v34 + 16);
|
||||||
|
if ( v34 == v29 )
|
||||||
|
break;
|
||||||
|
if ( *(_DWORD *)v34 == 124 )
|
||||||
|
goto LABEL_81;
|
||||||
|
}
|
||||||
|
v35 = sub_2452C(v28);
|
||||||
|
sub_19E28(v12);
|
||||||
|
v36 = opendir((const char *)qword_50B10);
|
||||||
|
if ( v36 )
|
||||||
|
{
|
||||||
|
v37 = v36;
|
||||||
|
v91 = getuid();
|
||||||
|
v92 = 0;
|
||||||
|
while ( 1 )
|
||||||
|
{
|
||||||
|
v38 = readdir(v37);
|
||||||
|
if ( !v38 )
|
||||||
|
break;
|
||||||
|
if ( v38->d_type == 10 && (sub_2462C((int)v106, 4096, (char *)qword_50B10) & 0x80000000) == 0 )
|
||||||
|
{
|
||||||
|
v39 = readlink(v106, buf, 0x1000u);
|
||||||
|
if ( v39 < 1 )
|
||||||
|
goto LABEL_77;
|
||||||
|
v40 = (unsigned __int8)buf[0];
|
||||||
|
v41 = 4095;
|
||||||
|
if ( (unsigned __int64)v39 < 0xFFF )
|
||||||
|
v41 = v39;
|
||||||
|
buf[v41] = 0;
|
||||||
|
if ( v40 == 47 )
|
||||||
|
{
|
||||||
|
v103 = 0u;
|
||||||
|
v104 = 0u;
|
||||||
|
v101 = 0u;
|
||||||
|
v102 = 0u;
|
||||||
|
v99 = 0u;
|
||||||
|
v100 = 0u;
|
||||||
|
v97 = 0u;
|
||||||
|
v98 = 0u;
|
||||||
|
if ( stat(v106, (struct stat *)&v97)
|
||||||
|
|| (v42 = 2, (DWORD2(v98) % 0x186A0) >> 4 >= 0x271) && DWORD2(v98) % 0x186A0 != v91 )
|
||||||
|
{
|
||||||
|
v90 = StatusReg;
|
||||||
|
for ( i = 0; i != 4; ++i )
|
||||||
|
{
|
||||||
|
if ( (sub_27324(buf, off_48728[i]) & 1) != 0 )
|
||||||
|
{
|
||||||
|
StatusReg = v90;
|
||||||
|
goto LABEL_77;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
StatusReg = v90;
|
||||||
|
if ( !(unsigned int)sub_1A0C8(v12) )
|
||||||
|
sub_1C440(v12, ",");
|
||||||
|
sub_1C440(v12, buf);
|
||||||
|
if ( (unsigned __int64)++v92 <= 9 )
|
||||||
|
v42 = 0;
|
||||||
|
else
|
||||||
|
v42 = 3;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
LABEL_77:
|
||||||
|
v42 = 2;
|
||||||
|
}
|
||||||
|
if ( v42 == 3 )
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
v36 = (DIR *)closedir(v37);
|
||||||
|
}
|
||||||
|
v44 = sub_2452C(v36);
|
||||||
|
sub_29B98(a5, 124, v44 - v35);
|
||||||
|
v45 = (char *)sub_1A0DC(v12);
|
||||||
|
v28 = sub_1C640(a1, 124, v45);
|
||||||
|
LABEL_81:
|
||||||
|
v46 = sub_2452C(v28);
|
||||||
|
v47 = sub_15694(a2, v12);
|
||||||
|
if ( (v47 & 1) != 0 )
|
||||||
|
{
|
||||||
|
v48 = (char *)sub_1A0DC(v12);
|
||||||
|
v47 = sub_1C640(a1, 125, v48);
|
||||||
|
}
|
||||||
|
v49 = sub_2452C(v47);
|
||||||
|
sub_29B98(a5, 125, v49 - v46);
|
||||||
|
if ( (sub_2E4E0(a2, off_4D458[0], &s1) & 1) != 0 )
|
||||||
|
sub_1C640(a1, 126, s1);
|
||||||
|
v50 = sub_2E4E0(a2, off_4D370[0], &s1);
|
||||||
|
if ( (v50 & 1) != 0 )
|
||||||
|
{
|
||||||
|
v50 = sub_CA28(&s1);
|
||||||
|
if ( v50 )
|
||||||
|
v50 = sub_1C640(a1, 34, s1);
|
||||||
|
}
|
||||||
|
v51 = *a4;
|
||||||
|
v52 = *a4;
|
||||||
|
while ( 1 )
|
||||||
|
{
|
||||||
|
v52 = *(_QWORD *)(v52 + 16);
|
||||||
|
if ( v52 == v51 )
|
||||||
|
break;
|
||||||
|
if ( *(_DWORD *)v52 == 129 )
|
||||||
|
goto LABEL_95;
|
||||||
|
}
|
||||||
|
v53 = sub_CC84(&s1);
|
||||||
|
v54 = sub_2452C(v53);
|
||||||
|
v55 = sub_13EB8(1, &s1, 0);
|
||||||
|
if ( (v55 & 1) == 0 )
|
||||||
|
v55 = sub_13EB8(1, &s1, 1);
|
||||||
|
v56 = sub_2452C(v55);
|
||||||
|
sub_29B98(a5, 129, v56 - v54);
|
||||||
|
v50 = sub_1C640(a1, 129, s1);
|
||||||
|
v51 = *a4;
|
||||||
|
LABEL_95:
|
||||||
|
v57 = v51;
|
||||||
|
while ( 1 )
|
||||||
|
{
|
||||||
|
v57 = *(_QWORD *)(v57 + 16);
|
||||||
|
if ( v57 == v51 )
|
||||||
|
break;
|
||||||
|
if ( *(_DWORD *)v57 == 131 )
|
||||||
|
goto LABEL_102;
|
||||||
|
}
|
||||||
|
v58 = sub_2452C(v50);
|
||||||
|
v59 = sub_1435C(a3, &s1);
|
||||||
|
if ( (v59 & 1) != 0 )
|
||||||
|
v59 = sub_1C640(a1, 131, s1);
|
||||||
|
v60 = sub_2452C(v59);
|
||||||
|
v50 = sub_29B98(a5, 131, v60 - v58);
|
||||||
|
v51 = *a4;
|
||||||
|
LABEL_102:
|
||||||
|
v61 = v51;
|
||||||
|
while ( 1 )
|
||||||
|
{
|
||||||
|
v61 = *(_QWORD *)(v61 + 16);
|
||||||
|
if ( v61 == v51 )
|
||||||
|
break;
|
||||||
|
if ( *(_DWORD *)v61 == 134 )
|
||||||
|
goto LABEL_109;
|
||||||
|
}
|
||||||
|
v62 = sub_2452C(v50);
|
||||||
|
v63 = sub_14EDC();
|
||||||
|
if ( (v63 & 1) != 0 )
|
||||||
|
v63 = sub_1C640(a1, 134, "1");
|
||||||
|
v64 = sub_2452C(v63);
|
||||||
|
v50 = sub_29B98(a5, 134, v64 - v62);
|
||||||
|
LABEL_109:
|
||||||
|
v65 = sub_2452C(v50);
|
||||||
|
v66 = sub_14F84(a2, v12);
|
||||||
|
if ( (v66 & 1) != 0 )
|
||||||
|
{
|
||||||
|
v67 = (char *)sub_1A0DC(v12);
|
||||||
|
v66 = sub_1C640(a1, 132, v67);
|
||||||
|
}
|
||||||
|
v68 = sub_2452C(v66);
|
||||||
|
v69 = sub_29B98(a5, 132, v68 - v65);
|
||||||
|
v70 = sub_2452C(v69);
|
||||||
|
v71 = sub_15150(a2, v12);
|
||||||
|
if ( (v71 & 1) != 0 )
|
||||||
|
{
|
||||||
|
v72 = (char *)sub_1A0DC(v12);
|
||||||
|
v71 = sub_1C640(a1, 137, v72);
|
||||||
|
}
|
||||||
|
v73 = sub_2452C(v71);
|
||||||
|
v74 = sub_29B98(a5, 137, v73 - v70);
|
||||||
|
v75 = sub_2452C(v74);
|
||||||
|
v76 = sub_153B0(a2, v12);
|
||||||
|
if ( (v76 & 1) != 0 )
|
||||||
|
{
|
||||||
|
v77 = (char *)sub_1A0DC(v12);
|
||||||
|
v76 = sub_1C640(a1, 142, v77);
|
||||||
|
}
|
||||||
|
v78 = sub_2452C(v76);
|
||||||
|
sub_29B98(a5, 142, v78 - v75);
|
||||||
|
if ( (sub_2E4E0(a2, off_4D590[0], &s1) & 1) != 0 && sub_CA28(&s1) )
|
||||||
|
sub_1C640(a1, 133, s1);
|
||||||
|
if ( (sub_2E4E0(a2, off_4D5A0[0], &s1) & 1) != 0 )
|
||||||
|
sub_1C640(a1, 140, s1);
|
||||||
|
v79 = sub_2E4E0(a2, off_4D460[0], &s1);
|
||||||
|
if ( (v79 & 1) != 0 )
|
||||||
|
{
|
||||||
|
v79 = sub_CA28(&s1);
|
||||||
|
if ( v79 )
|
||||||
|
v79 = sub_1C640(a1, 138, s1);
|
||||||
|
}
|
||||||
|
v80 = sub_2452C(v79);
|
||||||
|
v81 = sub_299F0(&s1);
|
||||||
|
if ( (v81 & 1) != 0 )
|
||||||
|
v81 = sub_1C640(a1, 141, s1);
|
||||||
|
v82 = sub_2452C(v81);
|
||||||
|
sub_29B98(a5, 141, v82 - v80);
|
||||||
|
if ( (sub_2E4E0(a2, off_4D468[0], &s1) & 1) != 0 && sub_CA28(&s1) )
|
||||||
|
sub_1C640(a1, 145, s1);
|
||||||
|
if ( (sub_2E4E0(a2, off_4D470[0], &s1) & 1) != 0 && sub_CA28(&s1) )
|
||||||
|
sub_1C640(a1, 146, s1);
|
||||||
|
v83 = (sub_2E4E0(a2, off_4D5E0[0], &s1) & 1) != 0 && strcmp(s1, "1") == 0;
|
||||||
|
sub_CC84(&s1);
|
||||||
|
v84 = sub_2E4E0(a2, off_4D5B8[0], &s1);
|
||||||
|
if ( v83 || (v84 = sub_CA28(&s1)) != 0 )
|
||||||
|
{
|
||||||
|
v85 = sub_2452C(v84);
|
||||||
|
v86 = sub_15940(&s1, v12, v83);
|
||||||
|
if ( (v86 & 1) != 0 )
|
||||||
|
{
|
||||||
|
v87 = (char *)sub_1A0DC(v12);
|
||||||
|
v86 = sub_1C640(a1, 147, v87);
|
||||||
|
}
|
||||||
|
v88 = sub_2452C(v86);
|
||||||
|
sub_29B98(a5, 147, v88 - v85);
|
||||||
|
}
|
||||||
|
if ( (sub_2E4E0(a2, off_4D478[0], &s1) & 1) != 0 && sub_CA28(&s1) )
|
||||||
|
sub_1C640(a1, 149, s1);
|
||||||
|
if ( (sub_2E4E0(a2, off_4D480[0], &s1) & 1) != 0 && sub_CA28(&s1) )
|
||||||
|
sub_1C640(a1, 150, s1);
|
||||||
|
if ( (sub_2E4E0(a2, off_4D488[0], &s1) & 1) != 0 && sub_CA28(&s1) )
|
||||||
|
sub_1C640(a1, 151, s1);
|
||||||
|
if ( (sub_2E4E0(a2, off_4D498[0], &s1) & 1) != 0 && sub_CA28(&s1) )
|
||||||
|
sub_1C640(a1, 154, s1);
|
||||||
|
sub_19DE0(&v95);
|
||||||
|
sub_CA10(&v93);
|
||||||
|
sub_CA10(&s);
|
||||||
|
return sub_CA10(&s1);
|
||||||
|
}
|
||||||
@@ -0,0 +1,49 @@
|
|||||||
|
/*
|
||||||
|
* func-name: sub_1300C
|
||||||
|
* func-address: 0x1300c
|
||||||
|
* export-type: decompile
|
||||||
|
* callers: 0x11fa0, 0x21de4
|
||||||
|
* callees: 0xca28, 0xcc84, 0xcf74, 0xcfd0, 0x24a94, 0x2cd0c, 0x2d4cc, 0x4283c, 0x43f70
|
||||||
|
*/
|
||||||
|
|
||||||
|
__int64 __fastcall sub_1300C(__int64 *a1)
|
||||||
|
{
|
||||||
|
char v2; // w21
|
||||||
|
__int64 *v4; // [xsp+8h] [xbp-48h] BYREF
|
||||||
|
_BYTE v5[8]; // [xsp+10h] [xbp-40h] BYREF
|
||||||
|
_BYTE v6[40]; // [xsp+18h] [xbp-38h] BYREF
|
||||||
|
__int64 v7; // [xsp+40h] [xbp-10h]
|
||||||
|
__int64 v8; // [xsp+48h] [xbp-8h]
|
||||||
|
|
||||||
|
v8 = *(_QWORD *)(_ReadStatusReg(TPIDR_EL0) + 40);
|
||||||
|
sub_CC84(a1);
|
||||||
|
v5[0] = 0;
|
||||||
|
sub_2CD0C(v6);
|
||||||
|
v7 = 0;
|
||||||
|
v4 = a1;
|
||||||
|
v2 = sub_4283C(v5);
|
||||||
|
if ( (v2 & 1) != 0 )
|
||||||
|
{
|
||||||
|
sub_24A94(qword_50A90, &sub_1318C, &v4);
|
||||||
|
if ( (_DWORD)v7 )
|
||||||
|
{
|
||||||
|
if ( sub_CA28(a1) )
|
||||||
|
sub_CF74(a1, ",");
|
||||||
|
sub_CF74(a1, (char *)qword_50B28);
|
||||||
|
sub_CF74(a1, ":");
|
||||||
|
sub_CF74(a1, ":");
|
||||||
|
sub_CFD0(a1, "%u", v7);
|
||||||
|
}
|
||||||
|
if ( HIDWORD(v7) )
|
||||||
|
{
|
||||||
|
if ( sub_CA28(a1) )
|
||||||
|
sub_CF74(a1, ",");
|
||||||
|
sub_CF74(a1, (char *)qword_50B30);
|
||||||
|
sub_CF74(a1, ":");
|
||||||
|
sub_CF74(a1, ":");
|
||||||
|
sub_CFD0(a1, "%u", HIDWORD(v7));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
sub_2D4CC(v6);
|
||||||
|
return v2 & 1;
|
||||||
|
}
|
||||||
@@ -0,0 +1,129 @@
|
|||||||
|
/*
|
||||||
|
* func-name: sub_1318C
|
||||||
|
* func-address: 0x1318c
|
||||||
|
* export-type: decompile
|
||||||
|
* callers: 0x1300c
|
||||||
|
* callees: 0xc8a4, 0xc8f8, 0xca10, 0xca28, 0xce08, 0xcf74, 0xcfd0, 0xd210, 0x27324, 0x2cd74, 0x2d4cc, 0x2f78c, 0x428bc, 0x42954, 0x43f70, 0x44060, 0x44150, 0x44220, 0x44230, 0x44240
|
||||||
|
*/
|
||||||
|
|
||||||
|
__int64 __fastcall sub_1318C(const char *a1, __int64 a2, _QWORD **a3)
|
||||||
|
{
|
||||||
|
int v6; // w21
|
||||||
|
__int64 v7; // x20
|
||||||
|
size_t v8; // x0
|
||||||
|
__int64 v9; // x8
|
||||||
|
char *v10; // x9
|
||||||
|
int v11; // w10
|
||||||
|
char v12; // w10
|
||||||
|
const void *v13; // [xsp+0h] [xbp-25A0h] BYREF
|
||||||
|
const void *v14; // [xsp+8h] [xbp-2598h] BYREF
|
||||||
|
const void *v15; // [xsp+10h] [xbp-2590h] BYREF
|
||||||
|
__int64 v16; // [xsp+18h] [xbp-2588h] BYREF
|
||||||
|
_OWORD v17[8]; // [xsp+20h] [xbp-2580h] BYREF
|
||||||
|
int v18; // [xsp+A4h] [xbp-24FCh] BYREF
|
||||||
|
_QWORD v19[3]; // [xsp+A8h] [xbp-24F8h] BYREF
|
||||||
|
struct statfs buf; // [xsp+C0h] [xbp-24E0h] BYREF
|
||||||
|
char v21[1028]; // [xsp+13Ch] [xbp-2464h] BYREF
|
||||||
|
char v22[16]; // [xsp+540h] [xbp-2060h] BYREF
|
||||||
|
__int128 v23; // [xsp+550h] [xbp-2050h]
|
||||||
|
__int128 v24; // [xsp+560h] [xbp-2040h]
|
||||||
|
__int128 v25; // [xsp+570h] [xbp-2030h]
|
||||||
|
char v26; // [xsp+580h] [xbp-2020h]
|
||||||
|
char s[4100]; // [xsp+590h] [xbp-2010h] BYREF
|
||||||
|
char v28[4100]; // [xsp+1594h] [xbp-100Ch] BYREF
|
||||||
|
__int64 v29; // [xsp+2598h] [xbp-8h]
|
||||||
|
|
||||||
|
v29 = *(_QWORD *)(_ReadStatusReg(TPIDR_EL0) + 40);
|
||||||
|
if ( !a3 || !*a3 )
|
||||||
|
return 1;
|
||||||
|
v18 = 0;
|
||||||
|
memset(v28, 0, 0x1001u);
|
||||||
|
memset(s, 0, 0x1001u);
|
||||||
|
v26 = 0;
|
||||||
|
v25 = 0u;
|
||||||
|
v24 = 0u;
|
||||||
|
v23 = 0u;
|
||||||
|
*(_OWORD *)v22 = 0u;
|
||||||
|
memset(v21, 0, 0x401u);
|
||||||
|
if ( sscanf(a1, "%4096s %4096s %64s %1024s%n", s, v28, v22, v21, &v18) == 4 && v18 >= 1 )
|
||||||
|
{
|
||||||
|
if ( (sub_27324(s, qword_50B28) & 1) != 0 )
|
||||||
|
{
|
||||||
|
++*((_DWORD *)a3 + 14);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
if ( (sub_27324(s, qword_50B30) & 1) != 0 )
|
||||||
|
{
|
||||||
|
++*((_DWORD *)a3 + 15);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
memset(v17, 0, sizeof(v17));
|
||||||
|
v6 = stat(v28, (struct stat *)v17);
|
||||||
|
v7 = *(_QWORD *)&v17[0];
|
||||||
|
if ( !v6 && !*(_QWORD *)&v17[0] )
|
||||||
|
return 0;
|
||||||
|
memset(&buf, 0, sizeof(buf));
|
||||||
|
if ( !statfs(v28, &buf) && !buf.f_blocks )
|
||||||
|
return 0;
|
||||||
|
sub_C8A4(&v16);
|
||||||
|
if ( v6 )
|
||||||
|
sub_CFD0(&v16, "fsName:%s", s);
|
||||||
|
else
|
||||||
|
sub_CFD0(&v16, "dev:%lu", v7);
|
||||||
|
sub_2F78C(v19, v16);
|
||||||
|
if ( (sub_2CD74(v19) & 1) == 0 && (sub_42954(a3 + 1, v19) & 1) == 0 )
|
||||||
|
{
|
||||||
|
sub_428BC(a3 + 1, v19);
|
||||||
|
if ( sub_CA28(*a3) )
|
||||||
|
sub_CF74(*a3, ",");
|
||||||
|
sub_C8F8(&v15, s);
|
||||||
|
sub_D210((const char **)&v15, ",");
|
||||||
|
sub_D210((const char **)&v15, ":");
|
||||||
|
sub_CE08(*a3, &v15);
|
||||||
|
sub_CF74(*a3, ":");
|
||||||
|
sub_C8F8(&v14, v28);
|
||||||
|
sub_D210((const char **)&v14, ",");
|
||||||
|
sub_D210((const char **)&v14, ":");
|
||||||
|
sub_CE08(*a3, &v14);
|
||||||
|
sub_CF74(*a3, ":");
|
||||||
|
sub_C8F8(&v13, v22);
|
||||||
|
sub_D210((const char **)&v13, ",");
|
||||||
|
sub_D210((const char **)&v13, ":");
|
||||||
|
sub_CE08(*a3, &v13);
|
||||||
|
sub_CF74(*a3, ":");
|
||||||
|
v8 = __strlen_chk(v21, 0x401u);
|
||||||
|
if ( v8 )
|
||||||
|
{
|
||||||
|
v9 = 0;
|
||||||
|
v10 = v21;
|
||||||
|
while ( 1 )
|
||||||
|
{
|
||||||
|
v11 = (unsigned __int8)*v10;
|
||||||
|
if ( v11 == 44 )
|
||||||
|
break;
|
||||||
|
if ( v11 == 58 )
|
||||||
|
{
|
||||||
|
v12 = 35;
|
||||||
|
LABEL_27:
|
||||||
|
*v10 = v12;
|
||||||
|
}
|
||||||
|
++v9;
|
||||||
|
--v8;
|
||||||
|
++v10;
|
||||||
|
if ( !v8 )
|
||||||
|
goto LABEL_29;
|
||||||
|
}
|
||||||
|
v12 = 38;
|
||||||
|
goto LABEL_27;
|
||||||
|
}
|
||||||
|
LABEL_29:
|
||||||
|
sub_CF74(*a3, v21);
|
||||||
|
sub_CA10(&v13);
|
||||||
|
sub_CA10(&v14);
|
||||||
|
sub_CA10(&v15);
|
||||||
|
}
|
||||||
|
sub_2D4CC(v19);
|
||||||
|
sub_CA10(&v16);
|
||||||
|
}
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
@@ -0,0 +1,19 @@
|
|||||||
|
/*
|
||||||
|
* func-name: sub_13514
|
||||||
|
* func-address: 0x13514
|
||||||
|
* export-type: decompile
|
||||||
|
* callers: 0x10b88
|
||||||
|
* callees: 0x43f70, 0x43f80
|
||||||
|
*/
|
||||||
|
|
||||||
|
__int64 sub_13514(char *a1, __int64 a2, __int64 a3, char *format, ...)
|
||||||
|
{
|
||||||
|
gcc_va_list arg; // [xsp+A0h] [xbp-50h] BYREF
|
||||||
|
gcc_va_list va; // [xsp+C8h] [xbp-28h] BYREF
|
||||||
|
__int64 v7; // [xsp+E8h] [xbp-8h]
|
||||||
|
|
||||||
|
va_start(va, format);
|
||||||
|
v7 = *(_QWORD *)(_ReadStatusReg(TPIDR_EL0) + 40);
|
||||||
|
va_copy(arg, va);
|
||||||
|
return vsnprintf(a1, 0x14u, format, arg);
|
||||||
|
}
|
||||||
@@ -0,0 +1,21 @@
|
|||||||
|
/*
|
||||||
|
* func-name: sub_135B0
|
||||||
|
* func-address: 0x135b0
|
||||||
|
* export-type: decompile
|
||||||
|
* callers: 0x10c80, 0x1435c, 0x15f7c, 0x1ed3c, 0x1fcb8, 0x20110, 0x20574, 0x20688, 0x20984, 0x20fc4, 0x211e8, 0x21468, 0x21624, 0x21bdc, 0x21de4, 0x252cc, 0x25408, 0x25630, 0x2671c, 0x2822c, 0x28d98, 0x28fe8, 0x2958c, 0x29b9c, 0x2be88, 0x2c4f0, 0x2e460, 0x30c58, 0x3126c, 0x31efc, 0x32398, 0x32a84, 0x32b58, 0x32dd0, 0x42120, 0x425c4, 0x4283c, 0x429ec, 0x42d50, 0x43818, 0x43900
|
||||||
|
* callees: 0x2eb44, 0x43f40, 0x441e0, 0x441f0
|
||||||
|
*/
|
||||||
|
|
||||||
|
void *sub_135B0()
|
||||||
|
{
|
||||||
|
int v0; // w8
|
||||||
|
|
||||||
|
v0 = atomic_load((unsigned __int8 *)&byte_4FF68);
|
||||||
|
if ( ((v0 ^ 0xFE) & v0) == 0 && __cxa_guard_acquire((__guard *)&byte_4FF68) )
|
||||||
|
{
|
||||||
|
sub_2EB44(&unk_4FB80);
|
||||||
|
__cxa_atexit((void (*)(void *))sub_139C0, &unk_4FB80, &off_48720);
|
||||||
|
__cxa_guard_release((__guard *)&byte_4FF68);
|
||||||
|
}
|
||||||
|
return &unk_4FB80;
|
||||||
|
}
|
||||||
@@ -0,0 +1,22 @@
|
|||||||
|
/*
|
||||||
|
* func-name: sub_13630
|
||||||
|
* func-address: 0x13630
|
||||||
|
* export-type: decompile
|
||||||
|
* callers: 0x10c80, 0x20984, 0x21de4
|
||||||
|
* callees: 0xc8f8, 0xca10, 0x2d6b4, 0x2d948, 0x43f70
|
||||||
|
*/
|
||||||
|
|
||||||
|
__int64 __fastcall sub_13630(__int64 a1, __int64 a2, __int64 a3)
|
||||||
|
{
|
||||||
|
unsigned int v6; // w21
|
||||||
|
__int64 v8; // [xsp+8h] [xbp-18h] BYREF
|
||||||
|
_QWORD v9[2]; // [xsp+10h] [xbp-10h] BYREF
|
||||||
|
|
||||||
|
v9[1] = *(_QWORD *)(_ReadStatusReg(TPIDR_EL0) + 40);
|
||||||
|
sub_C8F8(&v8, (char *)qword_50210);
|
||||||
|
v6 = sub_2D948(a1, v9, a3, v8);
|
||||||
|
sub_CA10(&v8);
|
||||||
|
if ( !v6 )
|
||||||
|
return (unsigned int)sub_2D6B4(a1, a2, v9[0]);
|
||||||
|
return v6;
|
||||||
|
}
|
||||||
@@ -0,0 +1,87 @@
|
|||||||
|
/*
|
||||||
|
* func-name: sub_136D0
|
||||||
|
* func-address: 0x136d0
|
||||||
|
* export-type: decompile
|
||||||
|
* callers: 0x21468
|
||||||
|
* callees: 0xc8a4, 0xca10, 0x2671c, 0x2e4e0, 0x43f70, 0x44120, 0x441d0
|
||||||
|
*/
|
||||||
|
|
||||||
|
__int64 __fastcall sub_136D0(__int64 a1, int a2, int a3)
|
||||||
|
{
|
||||||
|
__int64 v6; // x23
|
||||||
|
unsigned int v7; // w22
|
||||||
|
int v8; // w0
|
||||||
|
int v9; // w4
|
||||||
|
unsigned int v10; // w19
|
||||||
|
int v11; // w0
|
||||||
|
int v12; // w1
|
||||||
|
int v13; // w2
|
||||||
|
char *s1; // [xsp+8h] [xbp-28h] BYREF
|
||||||
|
_BYTE v16[12]; // [xsp+10h] [xbp-20h] BYREF
|
||||||
|
char v17; // [xsp+1Ch] [xbp-14h] BYREF
|
||||||
|
const char *v18[2]; // [xsp+20h] [xbp-10h] BYREF
|
||||||
|
|
||||||
|
v18[1] = *(const char **)(_ReadStatusReg(TPIDR_EL0) + 40);
|
||||||
|
sub_C8A4(v18);
|
||||||
|
if ( (sub_2E4E0(a1, off_4D338[0], v18) & 1) != 0 )
|
||||||
|
{
|
||||||
|
v6 = strtol(v18[0], nullptr, 10);
|
||||||
|
sub_C8A4(&s1);
|
||||||
|
v7 = 1;
|
||||||
|
if ( (sub_2E4E0(a1, off_4D610[0], &s1) & 1) != 0 )
|
||||||
|
{
|
||||||
|
if ( !strcmp(s1, "1") )
|
||||||
|
v7 = 2;
|
||||||
|
else
|
||||||
|
v7 = 1;
|
||||||
|
}
|
||||||
|
if ( (sub_2E4E0(a1, off_4D618, &s1) & 1) != 0 )
|
||||||
|
{
|
||||||
|
v8 = strcmp(s1, "1");
|
||||||
|
if ( v8 )
|
||||||
|
v9 = 300;
|
||||||
|
else
|
||||||
|
v9 = 30;
|
||||||
|
if ( !v8 )
|
||||||
|
v7 = (~((v7 ^ 0xFFFFFFFE) & v7) & 0x5D | (v7 ^ 0xFFFFFFFE) & v7 & 0xFFFFFFA2)
|
||||||
|
^ (((~v7 & 0x33 | v7 & 0xFFFFFFCC) ^ 0xFFFFFFC9) & 0x5D | ((~v7 & 0x33 | v7 & 0xFFFFFFCC)
|
||||||
|
^ 0x7E)
|
||||||
|
& 0xFFFFFFA2)
|
||||||
|
| ~((~v7 & 0x33 | v7 & 0xFFFFFFCC) ^ 0xFFFFFFC9 | ~((v7 ^ 0xFFFFFFFE) & v7));
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
v9 = 300;
|
||||||
|
}
|
||||||
|
if ( v6 != 17 )
|
||||||
|
{
|
||||||
|
if ( v6 == 43 )
|
||||||
|
{
|
||||||
|
v11 = a2;
|
||||||
|
v12 = a1;
|
||||||
|
v13 = 2;
|
||||||
|
LABEL_20:
|
||||||
|
if ( (sub_2671C(v11, v12, v13, 0, v9, v7, a3, (int)&v17, (__int64)v16) & 1) != 0 )
|
||||||
|
v10 = 0;
|
||||||
|
else
|
||||||
|
v10 = -4001;
|
||||||
|
goto LABEL_24;
|
||||||
|
}
|
||||||
|
if ( v6 != 40 )
|
||||||
|
{
|
||||||
|
v10 = -4002;
|
||||||
|
LABEL_24:
|
||||||
|
sub_CA10(&s1);
|
||||||
|
goto LABEL_25;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
v11 = a2;
|
||||||
|
v12 = a1;
|
||||||
|
v13 = 3;
|
||||||
|
goto LABEL_20;
|
||||||
|
}
|
||||||
|
v10 = -4000;
|
||||||
|
LABEL_25:
|
||||||
|
sub_CA10(v18);
|
||||||
|
return v10;
|
||||||
|
}
|
||||||
@@ -0,0 +1,44 @@
|
|||||||
|
/*
|
||||||
|
* func-name: sub_138CC
|
||||||
|
* func-address: 0x138cc
|
||||||
|
* export-type: decompile
|
||||||
|
* callers: 0x10db0
|
||||||
|
* callees: 0xc8a4, 0x2cd0c, 0x43f70, 0x44090, 0x44250, 0x44260, 0x44270, 0x44280
|
||||||
|
*/
|
||||||
|
|
||||||
|
__n128 __fastcall sub_138CC(__int64 a1)
|
||||||
|
{
|
||||||
|
__int64 v2; // x0
|
||||||
|
__n128 result; // q0
|
||||||
|
pthread_mutexattr_t v4; // [xsp+0h] [xbp-10h] BYREF
|
||||||
|
__int64 v5; // [xsp+8h] [xbp-8h]
|
||||||
|
|
||||||
|
v5 = *(_QWORD *)(_ReadStatusReg(TPIDR_EL0) + 40);
|
||||||
|
*(_BYTE *)(a1 + 4) = 0;
|
||||||
|
sub_C8A4((_QWORD *)(a1 + 8));
|
||||||
|
sub_C8A4((_QWORD *)(a1 + 16));
|
||||||
|
sub_C8A4((_QWORD *)(a1 + 24));
|
||||||
|
sub_C8A4((_QWORD *)(a1 + 32));
|
||||||
|
sub_C8A4((_QWORD *)(a1 + 40));
|
||||||
|
v2 = operator new[](0x18u);
|
||||||
|
*(_QWORD *)(a1 + 48) = v2;
|
||||||
|
*(_QWORD *)(v2 + 8) = v2;
|
||||||
|
*(_QWORD *)(v2 + 16) = v2;
|
||||||
|
pthread_mutexattr_init(&v4);
|
||||||
|
pthread_mutexattr_settype(&v4, 1);
|
||||||
|
pthread_mutex_init((pthread_mutex_t *)(a1 + 56), &v4);
|
||||||
|
pthread_mutexattr_destroy(&v4);
|
||||||
|
pthread_mutexattr_init(&v4);
|
||||||
|
pthread_mutexattr_settype(&v4, 1);
|
||||||
|
pthread_mutex_init((pthread_mutex_t *)(a1 + 96), &v4);
|
||||||
|
pthread_mutexattr_destroy(&v4);
|
||||||
|
sub_2CD0C(a1 + 136);
|
||||||
|
result.n128_u64[0] = -1;
|
||||||
|
result.n128_u64[1] = -1;
|
||||||
|
*(_QWORD *)(a1 + 160) = 0;
|
||||||
|
*(_DWORD *)(a1 + 168) = 0;
|
||||||
|
*(_QWORD *)(a1 + 204) = -1;
|
||||||
|
*(__n128 *)(a1 + 172) = result;
|
||||||
|
*(__n128 *)(a1 + 188) = result;
|
||||||
|
return result;
|
||||||
|
}
|
||||||
@@ -0,0 +1,37 @@
|
|||||||
|
/*
|
||||||
|
* func-name: sub_139C0
|
||||||
|
* func-address: 0x139c0
|
||||||
|
* export-type: decompile
|
||||||
|
* callers: 0x135b0
|
||||||
|
* callees: 0xca10, 0x2d4cc
|
||||||
|
*/
|
||||||
|
|
||||||
|
__int64 __fastcall sub_139C0(__int64 a1)
|
||||||
|
{
|
||||||
|
sub_2D4CC(a1 + 968);
|
||||||
|
sub_2D4CC(a1 + 936);
|
||||||
|
sub_2D4CC(a1 + 904);
|
||||||
|
sub_2D4CC(a1 + 840);
|
||||||
|
sub_2D4CC(a1 + 808);
|
||||||
|
sub_2D4CC(a1 + 784);
|
||||||
|
sub_2D4CC(a1 + 760);
|
||||||
|
sub_2D4CC(a1 + 720);
|
||||||
|
sub_2D4CC(a1 + 672);
|
||||||
|
sub_2D4CC(a1 + 624);
|
||||||
|
sub_2D4CC(a1 + 600);
|
||||||
|
sub_2D4CC(a1 + 560);
|
||||||
|
sub_2D4CC(a1 + 496);
|
||||||
|
sub_2D4CC(a1 + 472);
|
||||||
|
sub_2D4CC(a1 + 440);
|
||||||
|
sub_2D4CC(a1 + 368);
|
||||||
|
sub_2D4CC(a1 + 328);
|
||||||
|
sub_2D4CC(a1 + 304);
|
||||||
|
sub_2D4CC(a1 + 272);
|
||||||
|
sub_2D4CC(a1 + 216);
|
||||||
|
sub_2D4CC(a1 + 176);
|
||||||
|
sub_CA10((_QWORD *)(a1 + 168));
|
||||||
|
sub_2D4CC(a1 + 96);
|
||||||
|
sub_2D4CC(a1 + 64);
|
||||||
|
sub_2D4CC(a1 + 24);
|
||||||
|
return sub_2D4CC(a1);
|
||||||
|
}
|
||||||
@@ -0,0 +1,29 @@
|
|||||||
|
/*
|
||||||
|
* func-name: sub_13AA8
|
||||||
|
* func-address: 0x13aa8
|
||||||
|
* export-type: decompile
|
||||||
|
* callers: 0x10fe8
|
||||||
|
* callees: 0x441a0
|
||||||
|
*/
|
||||||
|
|
||||||
|
_QWORD *__fastcall sub_13AA8(__int64 a1)
|
||||||
|
{
|
||||||
|
_QWORD *v1; // x20
|
||||||
|
_QWORD *result; // x0
|
||||||
|
|
||||||
|
v1 = *(_QWORD **)a1;
|
||||||
|
result = *(_QWORD **)(*(_QWORD *)a1 + 16LL);
|
||||||
|
if ( result != v1 )
|
||||||
|
{
|
||||||
|
do
|
||||||
|
{
|
||||||
|
v1 = (_QWORD *)result[2];
|
||||||
|
operator delete(result);
|
||||||
|
result = v1;
|
||||||
|
}
|
||||||
|
while ( v1 != *(_QWORD **)a1 );
|
||||||
|
}
|
||||||
|
v1[1] = v1;
|
||||||
|
v1[2] = v1;
|
||||||
|
return result;
|
||||||
|
}
|
||||||
@@ -0,0 +1,66 @@
|
|||||||
|
/*
|
||||||
|
* func-name: sub_13AF0
|
||||||
|
* func-address: 0x13af0
|
||||||
|
* export-type: decompile
|
||||||
|
* callers: 0x20688
|
||||||
|
* callees: 0xca10, 0xca28, 0x13c2c, 0x25914, 0x2cd0c, 0x2cd74, 0x2d4cc, 0x43f70, 0x44210, 0x44290
|
||||||
|
*/
|
||||||
|
|
||||||
|
bool __fastcall sub_13AF0(__int64 a1)
|
||||||
|
{
|
||||||
|
_BOOL4 v2; // w19
|
||||||
|
unsigned int v4; // w22
|
||||||
|
__int128 v5; // [xsp+0h] [xbp-B0h] BYREF
|
||||||
|
__int128 v6; // [xsp+10h] [xbp-A0h]
|
||||||
|
__int128 v7; // [xsp+20h] [xbp-90h]
|
||||||
|
__int128 v8; // [xsp+30h] [xbp-80h]
|
||||||
|
__int128 v9; // [xsp+40h] [xbp-70h]
|
||||||
|
__int128 v10; // [xsp+50h] [xbp-60h]
|
||||||
|
__int128 v11; // [xsp+60h] [xbp-50h]
|
||||||
|
__int128 v12; // [xsp+70h] [xbp-40h]
|
||||||
|
__int64 v13; // [xsp+88h] [xbp-28h] BYREF
|
||||||
|
_BYTE v14[24]; // [xsp+90h] [xbp-20h] BYREF
|
||||||
|
__int64 v15; // [xsp+A8h] [xbp-8h]
|
||||||
|
|
||||||
|
v15 = *(_QWORD *)(_ReadStatusReg(TPIDR_EL0) + 40);
|
||||||
|
if ( (sub_2CD74(a1) & 1) != 0 )
|
||||||
|
{
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
sub_2CD0C(v14);
|
||||||
|
if ( (unsigned int)sub_13C2C(a1, (int)v14, "getFilesDir()Ljava/io/File;") || (sub_2CD74(v14) & 1) != 0 )
|
||||||
|
{
|
||||||
|
v2 = 0;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
sub_25914(&v13, a1);
|
||||||
|
if ( sub_CA28(&v13) )
|
||||||
|
{
|
||||||
|
v11 = 0u;
|
||||||
|
v12 = 0u;
|
||||||
|
v9 = 0u;
|
||||||
|
v10 = 0u;
|
||||||
|
v7 = 0u;
|
||||||
|
v8 = 0u;
|
||||||
|
v5 = 0u;
|
||||||
|
v6 = 0u;
|
||||||
|
v2 = 0;
|
||||||
|
if ( !syscall(79, 4294967196LL, v13, &v5, 0) && DWORD2(v6) )
|
||||||
|
{
|
||||||
|
v4 = DWORD2(v6) % 0x186A0;
|
||||||
|
v2 = v4 != getuid() % 0x186A0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
v2 = 0;
|
||||||
|
}
|
||||||
|
sub_CA10(&v13);
|
||||||
|
}
|
||||||
|
sub_2D4CC(v14);
|
||||||
|
}
|
||||||
|
return v2;
|
||||||
|
}
|
||||||
@@ -0,0 +1,46 @@
|
|||||||
|
/*
|
||||||
|
* func-name: sub_13C2C
|
||||||
|
* func-address: 0x13c2c
|
||||||
|
* export-type: decompile
|
||||||
|
* callers: 0x13af0, 0x1435c, 0x252cc, 0x25914, 0x25afc, 0x43900
|
||||||
|
* callees: 0xc8a4, 0xc8d8, 0xc8f8, 0xca10, 0xce08, 0xcf74, 0x2d22c, 0x2d330, 0x2d534, 0x2e22c, 0x43f70, 0x43fc0
|
||||||
|
*/
|
||||||
|
|
||||||
|
__int64 __fastcall sub_13C2C(__int64 a1, __int64 a2, char *s)
|
||||||
|
{
|
||||||
|
unsigned int v6; // w21
|
||||||
|
const void *v8; // [xsp+8h] [xbp-38h] BYREF
|
||||||
|
const void *v9; // [xsp+10h] [xbp-30h] BYREF
|
||||||
|
__int64 v10; // [xsp+18h] [xbp-28h] BYREF
|
||||||
|
__int64 v11; // [xsp+20h] [xbp-20h] BYREF
|
||||||
|
__int64 v12; // [xsp+28h] [xbp-18h] BYREF
|
||||||
|
__int64 v13[2]; // [xsp+30h] [xbp-10h] BYREF
|
||||||
|
|
||||||
|
v13[1] = *(_QWORD *)(_ReadStatusReg(TPIDR_EL0) + 40);
|
||||||
|
if ( !strchr(s, 40) )
|
||||||
|
{
|
||||||
|
sub_C8F8(&v10, "(");
|
||||||
|
sub_C8A4(&v9);
|
||||||
|
sub_C8D8(&v11, &v10);
|
||||||
|
sub_CE08(&v11, &v9);
|
||||||
|
sub_C8D8(v13, &v11);
|
||||||
|
sub_CF74(v13, ")");
|
||||||
|
sub_2E22C(&v8, 0);
|
||||||
|
sub_C8D8(&v12, v13);
|
||||||
|
sub_CE08(&v12, &v8);
|
||||||
|
sub_CA10(&v8);
|
||||||
|
sub_CA10(v13);
|
||||||
|
sub_CA10(&v11);
|
||||||
|
sub_CA10(&v9);
|
||||||
|
sub_CA10(&v10);
|
||||||
|
v6 = sub_2D330(a1, v13, s, v12);
|
||||||
|
sub_CA10(&v12);
|
||||||
|
if ( v6 )
|
||||||
|
return v6;
|
||||||
|
return (unsigned int)sub_2D22C(a1, a2, v13[0], 0);
|
||||||
|
}
|
||||||
|
v6 = sub_2D534(a1, v13, s);
|
||||||
|
if ( !v6 )
|
||||||
|
return (unsigned int)sub_2D22C(a1, a2, v13[0], 0);
|
||||||
|
return v6;
|
||||||
|
}
|
||||||
@@ -0,0 +1,44 @@
|
|||||||
|
/*
|
||||||
|
* func-name: sub_13D84
|
||||||
|
* func-address: 0x13d84
|
||||||
|
* export-type: decompile
|
||||||
|
* callers: 0x10e30
|
||||||
|
* callees: 0xc8a4, 0xca10, 0xcf74, 0xd14c, 0x43f70, 0x44220, 0x44290
|
||||||
|
*/
|
||||||
|
|
||||||
|
bool __fastcall sub_13D84(__int64 a1)
|
||||||
|
{
|
||||||
|
unsigned int v2; // w20
|
||||||
|
__int64 v3; // x0
|
||||||
|
__int64 i; // x2
|
||||||
|
__int64 v5; // x0
|
||||||
|
_BOOL4 v6; // w19
|
||||||
|
__int64 v8; // [xsp+8h] [xbp-78h] BYREF
|
||||||
|
_OWORD v9[6]; // [xsp+10h] [xbp-70h] BYREF
|
||||||
|
int v10; // [xsp+70h] [xbp-10h]
|
||||||
|
__int64 v11; // [xsp+78h] [xbp-8h]
|
||||||
|
|
||||||
|
v11 = *(_QWORD *)(_ReadStatusReg(TPIDR_EL0) + 40);
|
||||||
|
v2 = syscall(56, 4294967196LL, qword_50B50, 0);
|
||||||
|
if ( (v2 & 0x80000000) != 0 )
|
||||||
|
{
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
v10 = 0;
|
||||||
|
memset(v9, 0, sizeof(v9));
|
||||||
|
sub_C8A4(&v8);
|
||||||
|
v3 = syscall(63, v2, v9, 100);
|
||||||
|
if ( v3 >= 1 )
|
||||||
|
{
|
||||||
|
for ( i = v3; i > 0; i = syscall(63, v2, v9, 100) )
|
||||||
|
((void (__fastcall *)(__int64 *, _OWORD *, __int64))loc_CFA8)(&v8, v9, i);
|
||||||
|
}
|
||||||
|
syscall(57, v2);
|
||||||
|
v5 = sub_D14C(&v8, (const char *)qword_50B58, 0);
|
||||||
|
v6 = (v5 & 0x8000000000000000LL) == 0 && sscanf((const char *)(v8 + v5), (const char *)qword_50B60, a1) != 0;
|
||||||
|
sub_CA10(&v8);
|
||||||
|
}
|
||||||
|
return v6;
|
||||||
|
}
|
||||||
@@ -0,0 +1,173 @@
|
|||||||
|
/*
|
||||||
|
* func-name: sub_13EB8
|
||||||
|
* func-address: 0x13eb8
|
||||||
|
* export-type: decompile
|
||||||
|
* callers: 0x11fa0, 0x219d8, 0x21de4
|
||||||
|
* callees: 0xc8d8, 0xc8f8, 0xca10, 0xca28, 0xcc84, 0xce08, 0xcf74, 0xcfd0, 0xd210, 0xda34, 0xda60, 0x14250, 0x142e8, 0x27324, 0x43f70, 0x43fc0, 0x44090, 0x44120, 0x442a0
|
||||||
|
*/
|
||||||
|
|
||||||
|
bool __fastcall sub_13EB8(char a1, __int64 *a2, unsigned int a3)
|
||||||
|
{
|
||||||
|
__int64 v6; // x0
|
||||||
|
int v7; // w20
|
||||||
|
_QWORD *v8; // x24
|
||||||
|
int v9; // w28
|
||||||
|
__int64 v10; // x0
|
||||||
|
int v11; // w8
|
||||||
|
int v12; // w9
|
||||||
|
unsigned __int16 *v13; // x8
|
||||||
|
int v14; // w9
|
||||||
|
const void *v15; // x1
|
||||||
|
int v16; // w0
|
||||||
|
__int64 v17; // x21
|
||||||
|
const char *v18; // x26
|
||||||
|
__int64 v19; // x22
|
||||||
|
int v20; // w8
|
||||||
|
const char *v21; // x0
|
||||||
|
_QWORD *v22; // x0
|
||||||
|
unsigned int v23; // w2
|
||||||
|
__int64 i; // x21
|
||||||
|
char v26; // [xsp+8h] [xbp-88h]
|
||||||
|
char v27; // [xsp+Ch] [xbp-84h]
|
||||||
|
__int64 v28; // [xsp+18h] [xbp-78h] BYREF
|
||||||
|
__int64 v29; // [xsp+20h] [xbp-70h] BYREF
|
||||||
|
int v30; // [xsp+28h] [xbp-68h]
|
||||||
|
int v31; // [xsp+2Ch] [xbp-64h]
|
||||||
|
const char *v32; // [xsp+30h] [xbp-60h] BYREF
|
||||||
|
__int64 v33; // [xsp+38h] [xbp-58h] BYREF
|
||||||
|
_QWORD *v34; // [xsp+40h] [xbp-50h] BYREF
|
||||||
|
__int64 v35; // [xsp+48h] [xbp-48h] BYREF
|
||||||
|
__int64 v36; // [xsp+50h] [xbp-40h] BYREF
|
||||||
|
char buf[48]; // [xsp+58h] [xbp-38h] BYREF
|
||||||
|
__int64 v38; // [xsp+88h] [xbp-8h]
|
||||||
|
|
||||||
|
v38 = *(_QWORD *)(_ReadStatusReg(TPIDR_EL0) + 40);
|
||||||
|
sub_CC84(a2);
|
||||||
|
v34 = nullptr;
|
||||||
|
v6 = operator new[](0x28u);
|
||||||
|
v33 = v6;
|
||||||
|
*(_QWORD *)(v6 + 24) = v6;
|
||||||
|
*(_QWORD *)(v6 + 32) = v6;
|
||||||
|
v7 = sub_DA60(a3, (char *)&v34);
|
||||||
|
if ( !v7 )
|
||||||
|
{
|
||||||
|
v8 = v34;
|
||||||
|
if ( v34 )
|
||||||
|
{
|
||||||
|
v26 = a1;
|
||||||
|
v27 = a3;
|
||||||
|
v9 = 0;
|
||||||
|
while ( 1 )
|
||||||
|
{
|
||||||
|
if ( !v8[3] )
|
||||||
|
goto LABEL_23;
|
||||||
|
if ( (v8[2] & 0x49) != 0x41 )
|
||||||
|
goto LABEL_23;
|
||||||
|
v10 = v8[1];
|
||||||
|
if ( !v10 )
|
||||||
|
goto LABEL_23;
|
||||||
|
if ( (sub_27324(v10, qword_507F0) & 1) != 0 )
|
||||||
|
break;
|
||||||
|
if ( ((*((_DWORD *)v8 + 4) ^ 0xFFFFFFEF) & (_DWORD)v8[2]) != 0 )
|
||||||
|
{
|
||||||
|
v11 = v9 & 2;
|
||||||
|
v12 = v9 ^ 2;
|
||||||
|
goto LABEL_11;
|
||||||
|
}
|
||||||
|
v21 = (const char *)v8[1];
|
||||||
|
if ( v21 && strchr(v21, 58) )
|
||||||
|
v9 = v9 & 4 | v9 ^ 4;
|
||||||
|
LABEL_12:
|
||||||
|
v13 = (unsigned __int16 *)v8[3];
|
||||||
|
if ( v13 )
|
||||||
|
{
|
||||||
|
v14 = *v13;
|
||||||
|
if ( v14 == 10 )
|
||||||
|
{
|
||||||
|
v15 = v13 + 4;
|
||||||
|
v16 = 10;
|
||||||
|
LABEL_17:
|
||||||
|
inet_ntop(v16, v15, buf, 0x2Eu);
|
||||||
|
sub_C8F8(&v32, (char *)v8[1]);
|
||||||
|
sub_D210(&v32, ",");
|
||||||
|
sub_D210(&v32, ";");
|
||||||
|
v18 = v32;
|
||||||
|
v17 = v33;
|
||||||
|
v19 = v33;
|
||||||
|
while ( 1 )
|
||||||
|
{
|
||||||
|
v19 = *(_QWORD *)(v19 + 32);
|
||||||
|
if ( v19 == v17 )
|
||||||
|
break;
|
||||||
|
if ( !strcmp(*(const char **)v19, v18) )
|
||||||
|
{
|
||||||
|
sub_CF74((__int64 *)(v19 + 8), ";");
|
||||||
|
sub_CF74((__int64 *)(v19 + 8), buf);
|
||||||
|
++*(_DWORD *)(v19 + 16);
|
||||||
|
goto LABEL_22;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
sub_C8D8(&v28, &v32);
|
||||||
|
sub_C8F8(&v29, buf);
|
||||||
|
v30 = 1;
|
||||||
|
v20 = *((_DWORD *)v8 + 4);
|
||||||
|
v35 = v33;
|
||||||
|
v31 = v20;
|
||||||
|
sub_142E8(&v36, &v33, &v35, &v28);
|
||||||
|
sub_CA10(&v29);
|
||||||
|
sub_CA10(&v28);
|
||||||
|
LABEL_22:
|
||||||
|
sub_CA10(&v32);
|
||||||
|
goto LABEL_23;
|
||||||
|
}
|
||||||
|
if ( v14 == 2 )
|
||||||
|
{
|
||||||
|
v15 = v13 + 2;
|
||||||
|
v16 = 2;
|
||||||
|
goto LABEL_17;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
LABEL_23:
|
||||||
|
v8 = (_QWORD *)*v8;
|
||||||
|
if ( !v8 )
|
||||||
|
{
|
||||||
|
a1 = v26;
|
||||||
|
LOBYTE(a3) = v27;
|
||||||
|
v22 = v34;
|
||||||
|
goto LABEL_29;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
v11 = v9 & 1;
|
||||||
|
v12 = v9 ^ 1;
|
||||||
|
LABEL_11:
|
||||||
|
v9 = v11 | v12;
|
||||||
|
goto LABEL_12;
|
||||||
|
}
|
||||||
|
v22 = nullptr;
|
||||||
|
v9 = 0;
|
||||||
|
LABEL_29:
|
||||||
|
sub_DA34(v22);
|
||||||
|
if ( (a1 & 1) != 0 )
|
||||||
|
{
|
||||||
|
if ( (a3 & 1) != 0 )
|
||||||
|
v23 = v9;
|
||||||
|
else
|
||||||
|
v23 = (~v9 & 0x2A318D49 | v9 & 0xD5CE72B6) ^ 0x2A318D41 | v9 & 8;
|
||||||
|
sub_CFD0(a2, "%u", v23);
|
||||||
|
}
|
||||||
|
for ( i = *(_QWORD *)(v33 + 32); i != v33; i = *(_QWORD *)(i + 32) )
|
||||||
|
{
|
||||||
|
if ( sub_CA28(a2) )
|
||||||
|
sub_CF74(a2, ",");
|
||||||
|
sub_CE08(a2, (const void **)i);
|
||||||
|
sub_CF74(a2, ";");
|
||||||
|
sub_CFD0(a2, "%u", *(_DWORD *)(i + 20));
|
||||||
|
sub_CF74(a2, ";");
|
||||||
|
sub_CFD0(a2, "%u", *(_DWORD *)(i + 16));
|
||||||
|
sub_CF74(a2, ";");
|
||||||
|
sub_CE08(a2, (const void **)(i + 8));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
sub_14250(&v33);
|
||||||
|
return v7 == 0;
|
||||||
|
}
|
||||||
@@ -0,0 +1,14 @@
|
|||||||
|
/*
|
||||||
|
* func-name: sub_14250
|
||||||
|
* func-address: 0x14250
|
||||||
|
* export-type: decompile
|
||||||
|
* callers: 0x13eb8
|
||||||
|
* callees: 0x14284
|
||||||
|
*/
|
||||||
|
|
||||||
|
void __fastcall sub_14250(void **a1)
|
||||||
|
{
|
||||||
|
sub_14284();
|
||||||
|
if ( *a1 )
|
||||||
|
operator delete[](*a1);
|
||||||
|
}
|
||||||
@@ -0,0 +1,30 @@
|
|||||||
|
/*
|
||||||
|
* func-name: sub_14284
|
||||||
|
* func-address: 0x14284
|
||||||
|
* export-type: decompile
|
||||||
|
* callers: 0x14250
|
||||||
|
* callees: 0xca10, 0x441a0
|
||||||
|
*/
|
||||||
|
|
||||||
|
void __fastcall sub_14284(__int64 a1)
|
||||||
|
{
|
||||||
|
_QWORD *v1; // x21
|
||||||
|
_QWORD *v2; // x20
|
||||||
|
|
||||||
|
v1 = *(_QWORD **)a1;
|
||||||
|
v2 = *(_QWORD **)(*(_QWORD *)a1 + 32LL);
|
||||||
|
if ( v2 != *(_QWORD **)a1 )
|
||||||
|
{
|
||||||
|
do
|
||||||
|
{
|
||||||
|
v1 = (_QWORD *)v2[4];
|
||||||
|
sub_CA10(v2 + 1);
|
||||||
|
sub_CA10(v2);
|
||||||
|
operator delete(v2);
|
||||||
|
v2 = v1;
|
||||||
|
}
|
||||||
|
while ( v1 != *(_QWORD **)a1 );
|
||||||
|
}
|
||||||
|
v1[3] = v1;
|
||||||
|
v1[4] = v1;
|
||||||
|
}
|
||||||
@@ -0,0 +1,32 @@
|
|||||||
|
/*
|
||||||
|
* func-name: sub_142E8
|
||||||
|
* func-address: 0x142e8
|
||||||
|
* export-type: decompile
|
||||||
|
* callers: 0x13eb8
|
||||||
|
* callees: 0xc8d8, 0x44050
|
||||||
|
*/
|
||||||
|
|
||||||
|
__int64 __usercall sub_142E8@<X0>(__int64 *a1@<X1>, _QWORD *a2@<X2>, _QWORD *a3@<X8>)
|
||||||
|
{
|
||||||
|
_QWORD *v6; // x22
|
||||||
|
__int64 result; // x0
|
||||||
|
__int64 v8; // x8
|
||||||
|
__int64 v9; // x9
|
||||||
|
__int64 v10; // x8
|
||||||
|
__int64 v11; // x8
|
||||||
|
|
||||||
|
v6 = (_QWORD *)operator new(0x28u);
|
||||||
|
sub_C8D8(v6, a2);
|
||||||
|
result = sub_C8D8(v6 + 1, a2 + 1);
|
||||||
|
v8 = a2[2];
|
||||||
|
*a3 = v6;
|
||||||
|
v9 = *a1;
|
||||||
|
v6[2] = v8;
|
||||||
|
v10 = *(_QWORD *)(v9 + 24);
|
||||||
|
v6[4] = v9;
|
||||||
|
v6[3] = v10;
|
||||||
|
v11 = *(_QWORD *)(v9 + 24);
|
||||||
|
*(_QWORD *)(v9 + 24) = v6;
|
||||||
|
*(_QWORD *)(v11 + 32) = v6;
|
||||||
|
return result;
|
||||||
|
}
|
||||||
@@ -0,0 +1,127 @@
|
|||||||
|
/*
|
||||||
|
* func-name: sub_1435C
|
||||||
|
* func-address: 0x1435c
|
||||||
|
* export-type: decompile
|
||||||
|
* callers: 0x11fa0
|
||||||
|
* callees: 0xc8a4, 0xca10, 0xca28, 0xcc84, 0xcf74, 0xcfd0, 0xd210, 0x11238, 0x135b0, 0x13c2c, 0x146c8, 0x14838, 0x14994, 0x14b14, 0x14bb4, 0x25408, 0x2cad8, 0x2cd0c, 0x2cd74, 0x2cdc0, 0x2d4cc, 0x2daa0, 0x43f70
|
||||||
|
*/
|
||||||
|
|
||||||
|
bool __fastcall sub_1435C(__int64 a1, __int64 *a2)
|
||||||
|
{
|
||||||
|
int v3; // w20
|
||||||
|
_BOOL4 v4; // w20
|
||||||
|
__int64 v6; // x0
|
||||||
|
__int64 v7; // x22
|
||||||
|
__int64 v8; // x21
|
||||||
|
int v9; // w0
|
||||||
|
int v10; // w23
|
||||||
|
int v11; // w0
|
||||||
|
unsigned int i; // w24
|
||||||
|
__int64 v13; // x0
|
||||||
|
unsigned __int64 v14; // [xsp+20h] [xbp-B0h] BYREF
|
||||||
|
__int64 v15; // [xsp+28h] [xbp-A8h] BYREF
|
||||||
|
__int64 v16; // [xsp+30h] [xbp-A0h] BYREF
|
||||||
|
const char *v17; // [xsp+38h] [xbp-98h] BYREF
|
||||||
|
const char *v18; // [xsp+40h] [xbp-90h] BYREF
|
||||||
|
_BYTE v19[24]; // [xsp+48h] [xbp-88h] BYREF
|
||||||
|
_BYTE v20[24]; // [xsp+60h] [xbp-70h] BYREF
|
||||||
|
_BYTE v21[24]; // [xsp+78h] [xbp-58h] BYREF
|
||||||
|
_QWORD v22[3]; // [xsp+90h] [xbp-40h] BYREF
|
||||||
|
_BYTE v23[24]; // [xsp+A8h] [xbp-28h] BYREF
|
||||||
|
__int64 v24; // [xsp+C0h] [xbp-10h]
|
||||||
|
|
||||||
|
v3 = a1;
|
||||||
|
v24 = *(_QWORD *)(_ReadStatusReg(TPIDR_EL0) + 40);
|
||||||
|
if ( (int)sub_25408(a1) >= 17 )
|
||||||
|
{
|
||||||
|
sub_135B0();
|
||||||
|
sub_2CD0C(v23);
|
||||||
|
if ( (unsigned int)sub_14BB4(v3, (int)v23, (char *)qword_503C8) || (sub_2CD74(v23) & 1) != 0 )
|
||||||
|
{
|
||||||
|
v4 = 0;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
sub_2CD0C(v22);
|
||||||
|
if ( (unsigned int)sub_13C2C((__int64)v23, (__int64)v22, (char *)qword_505B0)
|
||||||
|
|| (sub_2CD74(v22) & 1) != 0
|
||||||
|
|| (v6 = sub_2CAD8(),
|
||||||
|
v7 = v22[0],
|
||||||
|
v8 = v6,
|
||||||
|
v9 = (*(__int64 (__fastcall **)(__int64, _QWORD))(*(_QWORD *)v6 + 1368LL))(v6, v22[0]),
|
||||||
|
v9 < 1) )
|
||||||
|
{
|
||||||
|
v4 = 0;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
v10 = v9;
|
||||||
|
sub_2DAA0(v21, qword_50300);
|
||||||
|
sub_2CD0C(v20);
|
||||||
|
v11 = sub_146C8(v21, v20, &unk_534B);
|
||||||
|
v4 = v11 == 0;
|
||||||
|
if ( !v11 )
|
||||||
|
{
|
||||||
|
sub_CC84(a2);
|
||||||
|
sub_C8A4(&v18);
|
||||||
|
sub_C8A4(&v17);
|
||||||
|
for ( i = 0; i != v10; ++i )
|
||||||
|
{
|
||||||
|
v13 = (*(__int64 (__fastcall **)(__int64, __int64, _QWORD))(*(_QWORD *)v8 + 1384LL))(v8, v7, i);
|
||||||
|
sub_2CDC0(v19, v13, 0);
|
||||||
|
if ( (sub_2CD74(v19) & 1) == 0 )
|
||||||
|
{
|
||||||
|
v15 = 0;
|
||||||
|
v16 = 0;
|
||||||
|
v14 = 0;
|
||||||
|
sub_CC84(&v18);
|
||||||
|
sub_14838((int)v19, (int)&v16, (char *)qword_503D0);
|
||||||
|
sub_14838((int)v19, (int)&v15 + 4, (char *)qword_503D8);
|
||||||
|
sub_11238((__int64)v19, (__int64)&v17, (char *)qword_503E0);
|
||||||
|
if ( !(unsigned int)sub_14838((int)v19, (int)&v16 + 4, (char *)qword_503E8)
|
||||||
|
&& !(unsigned int)sub_14838((int)v19, (int)&v15, (char *)qword_503F0)
|
||||||
|
&& !(unsigned int)sub_11238((__int64)v19, (__int64)&v18, (char *)qword_503F8)
|
||||||
|
&& !(unsigned int)sub_14994((int)v19, (int)&unk_50058, (char *)qword_50400)
|
||||||
|
&& !(unsigned int)sub_14B14(v20, (char *)&v14 + 4, qword_50690)
|
||||||
|
&& !(unsigned int)sub_14B14(v20, &v14, qword_50698) )
|
||||||
|
{
|
||||||
|
if ( SHIDWORD(v14) > (int)v14 )
|
||||||
|
v14 = __PAIR64__(v14, HIDWORD(v14));
|
||||||
|
sub_D210(&v17, ",");
|
||||||
|
sub_D210(&v17, ";");
|
||||||
|
sub_D210(&v18, ",");
|
||||||
|
sub_D210(&v18, ";");
|
||||||
|
if ( sub_CA28(a2) )
|
||||||
|
sub_CF74(a2, ";");
|
||||||
|
sub_CFD0(
|
||||||
|
a2,
|
||||||
|
"%d,%d,%s,%dx%d,%d,%d,%d,%s",
|
||||||
|
(HIDWORD(v16) >> 3) & 1,
|
||||||
|
v15,
|
||||||
|
v18,
|
||||||
|
HIDWORD(v14),
|
||||||
|
v14,
|
||||||
|
HIDWORD(v16),
|
||||||
|
v16,
|
||||||
|
HIDWORD(v15),
|
||||||
|
v17);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
sub_2D4CC(v19);
|
||||||
|
}
|
||||||
|
sub_CA10(&v17);
|
||||||
|
sub_CA10(&v18);
|
||||||
|
}
|
||||||
|
sub_2D4CC(v20);
|
||||||
|
sub_2D4CC(v21);
|
||||||
|
}
|
||||||
|
sub_2D4CC(v22);
|
||||||
|
}
|
||||||
|
sub_2D4CC(v23);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
return v4;
|
||||||
|
}
|
||||||
@@ -0,0 +1,49 @@
|
|||||||
|
/*
|
||||||
|
* func-name: sub_146C8
|
||||||
|
* func-address: 0x146c8
|
||||||
|
* export-type: decompile
|
||||||
|
* callers: 0x1435c, 0x2822c, 0x30c58, 0x3126c, 0x31efc, 0x32398, 0x32dd0, 0x4283c, 0x429ec
|
||||||
|
* callees: 0xc8a4, 0xc8d8, 0xc8f8, 0xca10, 0xce08, 0xcf74, 0x2d438, 0x2e0d0, 0x43f70
|
||||||
|
*/
|
||||||
|
|
||||||
|
__int64 __fastcall sub_146C8(__int64 a1, __int64 a2, char *a3)
|
||||||
|
{
|
||||||
|
unsigned int v6; // w21
|
||||||
|
__int64 *v7; // x0
|
||||||
|
const void *v9; // [xsp+0h] [xbp-30h] BYREF
|
||||||
|
__int64 v10; // [xsp+8h] [xbp-28h] BYREF
|
||||||
|
__int64 v11; // [xsp+10h] [xbp-20h] BYREF
|
||||||
|
__int64 v12; // [xsp+18h] [xbp-18h] BYREF
|
||||||
|
_QWORD v13[2]; // [xsp+20h] [xbp-10h] BYREF
|
||||||
|
|
||||||
|
v13[1] = *(_QWORD *)(_ReadStatusReg(TPIDR_EL0) + 40);
|
||||||
|
if ( a3 )
|
||||||
|
{
|
||||||
|
sub_C8F8(&v10, "(");
|
||||||
|
sub_C8D8(&v11, &v10);
|
||||||
|
sub_CF74(&v11, a3);
|
||||||
|
sub_C8D8(&v12, &v11);
|
||||||
|
sub_CF74(&v12, ")V");
|
||||||
|
v6 = sub_2D438(a1, v13, "<init>", v12);
|
||||||
|
sub_CA10(&v12);
|
||||||
|
v7 = &v11;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
sub_C8F8(&v10, "(");
|
||||||
|
sub_C8A4(&v9);
|
||||||
|
sub_C8D8(&v11, &v10);
|
||||||
|
sub_CE08(&v11, &v9);
|
||||||
|
sub_C8D8(&v12, &v11);
|
||||||
|
sub_CF74(&v12, ")V");
|
||||||
|
v6 = sub_2D438(a1, v13, "<init>", v12);
|
||||||
|
sub_CA10(&v12);
|
||||||
|
sub_CA10(&v11);
|
||||||
|
v7 = (__int64 *)&v9;
|
||||||
|
}
|
||||||
|
sub_CA10(v7);
|
||||||
|
sub_CA10(&v10);
|
||||||
|
if ( !v6 )
|
||||||
|
return (unsigned int)sub_2E0D0(a1, a2, v13[0], 0);
|
||||||
|
return v6;
|
||||||
|
}
|
||||||
@@ -0,0 +1,46 @@
|
|||||||
|
/*
|
||||||
|
* func-name: sub_14838
|
||||||
|
* func-address: 0x14838
|
||||||
|
* export-type: decompile
|
||||||
|
* callers: 0x1435c
|
||||||
|
* callees: 0xc8a4, 0xc8d8, 0xc8f8, 0xca10, 0xce08, 0xcf74, 0x2d00c, 0x2d330, 0x2d534, 0x43f70, 0x43fc0
|
||||||
|
*/
|
||||||
|
|
||||||
|
__int64 __fastcall sub_14838(__int64 a1, __int64 a2, char *s)
|
||||||
|
{
|
||||||
|
unsigned int v6; // w21
|
||||||
|
const void *v8; // [xsp+8h] [xbp-38h] BYREF
|
||||||
|
const void *v9; // [xsp+10h] [xbp-30h] BYREF
|
||||||
|
__int64 v10; // [xsp+18h] [xbp-28h] BYREF
|
||||||
|
__int64 v11; // [xsp+20h] [xbp-20h] BYREF
|
||||||
|
__int64 v12; // [xsp+28h] [xbp-18h] BYREF
|
||||||
|
__int64 v13[2]; // [xsp+30h] [xbp-10h] BYREF
|
||||||
|
|
||||||
|
v13[1] = *(_QWORD *)(_ReadStatusReg(TPIDR_EL0) + 40);
|
||||||
|
if ( !strchr(s, 40) )
|
||||||
|
{
|
||||||
|
sub_C8F8(&v10, "(");
|
||||||
|
sub_C8A4(&v9);
|
||||||
|
sub_C8D8(&v11, &v10);
|
||||||
|
sub_CE08(&v11, &v9);
|
||||||
|
sub_C8D8(v13, &v11);
|
||||||
|
sub_CF74(v13, ")");
|
||||||
|
sub_C8F8(&v8, (char *)qword_501E0);
|
||||||
|
sub_C8D8(&v12, v13);
|
||||||
|
sub_CE08(&v12, &v8);
|
||||||
|
sub_CA10(&v8);
|
||||||
|
sub_CA10(v13);
|
||||||
|
sub_CA10(&v11);
|
||||||
|
sub_CA10(&v9);
|
||||||
|
sub_CA10(&v10);
|
||||||
|
v6 = sub_2D330(a1, v13, s, v12);
|
||||||
|
sub_CA10(&v12);
|
||||||
|
if ( v6 )
|
||||||
|
return v6;
|
||||||
|
return (unsigned int)sub_2D00C(a1, a2, v13[0], 0);
|
||||||
|
}
|
||||||
|
v6 = sub_2D534(a1, v13, s);
|
||||||
|
if ( !v6 )
|
||||||
|
return (unsigned int)sub_2D00C(a1, a2, v13[0], 0);
|
||||||
|
return v6;
|
||||||
|
}
|
||||||
@@ -0,0 +1,53 @@
|
|||||||
|
/*
|
||||||
|
* func-name: sub_14994
|
||||||
|
* func-address: 0x14994
|
||||||
|
* export-type: decompile
|
||||||
|
* callers: 0x1435c, 0x2822c, 0x42d50, 0x43900
|
||||||
|
* callees: 0xc8d8, 0xc8f8, 0xca10, 0xce08, 0xcf74, 0x14e60, 0x2cf1c, 0x2d330, 0x2d534, 0x2e3ac, 0x43f70, 0x43fc0
|
||||||
|
*/
|
||||||
|
|
||||||
|
__int64 __fastcall sub_14994(__int64 a1, __int64 a2, char *s, __int64 a4)
|
||||||
|
{
|
||||||
|
unsigned int v8; // w22
|
||||||
|
__int64 v9; // x22
|
||||||
|
const void *v11; // [xsp+8h] [xbp-38h] BYREF
|
||||||
|
const void *v12; // [xsp+10h] [xbp-30h] BYREF
|
||||||
|
__int64 v13; // [xsp+18h] [xbp-28h] BYREF
|
||||||
|
__int64 v14; // [xsp+20h] [xbp-20h] BYREF
|
||||||
|
__int64 v15; // [xsp+28h] [xbp-18h] BYREF
|
||||||
|
__int64 v16[2]; // [xsp+30h] [xbp-10h] BYREF
|
||||||
|
|
||||||
|
v16[1] = *(_QWORD *)(_ReadStatusReg(TPIDR_EL0) + 40);
|
||||||
|
if ( !strchr(s, 40) )
|
||||||
|
{
|
||||||
|
sub_C8F8(&v13, "(");
|
||||||
|
sub_14E60(&v12, a4);
|
||||||
|
sub_C8D8(&v14, &v13);
|
||||||
|
sub_CE08(&v14, &v12);
|
||||||
|
sub_C8D8(&v15, &v14);
|
||||||
|
sub_CF74(&v15, ")");
|
||||||
|
sub_C8F8(&v11, (char *)qword_501B8);
|
||||||
|
sub_C8D8(v16, &v15);
|
||||||
|
sub_CE08(v16, &v11);
|
||||||
|
sub_CA10(&v11);
|
||||||
|
sub_CA10(&v15);
|
||||||
|
sub_CA10(&v14);
|
||||||
|
sub_CA10(&v12);
|
||||||
|
sub_CA10(&v13);
|
||||||
|
v8 = sub_2D330(a1, &v15, s, v16[0]);
|
||||||
|
sub_CA10(v16);
|
||||||
|
if ( v8 )
|
||||||
|
return v8;
|
||||||
|
goto LABEL_3;
|
||||||
|
}
|
||||||
|
v8 = sub_2D534(a1, &v15, s);
|
||||||
|
if ( !v8 )
|
||||||
|
{
|
||||||
|
LABEL_3:
|
||||||
|
v9 = v15;
|
||||||
|
v16[0] = 0;
|
||||||
|
sub_2E3AC(v16, a4);
|
||||||
|
return (unsigned int)sub_2CF1C(a1, a2, v9, v16);
|
||||||
|
}
|
||||||
|
return v8;
|
||||||
|
}
|
||||||
@@ -0,0 +1,22 @@
|
|||||||
|
/*
|
||||||
|
* func-name: sub_14B14
|
||||||
|
* func-address: 0x14b14
|
||||||
|
* export-type: decompile
|
||||||
|
* callers: 0x1435c, 0x25afc, 0x2822c
|
||||||
|
* callees: 0xc8f8, 0xca10, 0x2d724, 0x2d948, 0x43f70
|
||||||
|
*/
|
||||||
|
|
||||||
|
__int64 __fastcall sub_14B14(__int64 a1, __int64 a2, __int64 a3)
|
||||||
|
{
|
||||||
|
unsigned int v6; // w21
|
||||||
|
__int64 v8; // [xsp+8h] [xbp-18h] BYREF
|
||||||
|
_QWORD v9[2]; // [xsp+10h] [xbp-10h] BYREF
|
||||||
|
|
||||||
|
v9[1] = *(_QWORD *)(_ReadStatusReg(TPIDR_EL0) + 40);
|
||||||
|
sub_C8F8(&v8, (char *)qword_501E0);
|
||||||
|
v6 = sub_2D948(a1, v9, a3, v8);
|
||||||
|
sub_CA10(&v8);
|
||||||
|
if ( !v6 )
|
||||||
|
return (unsigned int)sub_2D724(a1, a2, v9[0]);
|
||||||
|
return v6;
|
||||||
|
}
|
||||||
@@ -0,0 +1,46 @@
|
|||||||
|
/*
|
||||||
|
* func-name: sub_14BB4
|
||||||
|
* func-address: 0x14bb4
|
||||||
|
* export-type: decompile
|
||||||
|
* callers: 0x1435c, 0x3126c
|
||||||
|
* callees: 0xc8d8, 0xc8f8, 0xca10, 0xce08, 0xcf74, 0x14d1c, 0x14da0, 0x2d330, 0x2d534, 0x2e22c, 0x43f70, 0x43fc0
|
||||||
|
*/
|
||||||
|
|
||||||
|
__int64 __fastcall sub_14BB4(__int64 a1, __int64 a2, char *s, __int64 a4)
|
||||||
|
{
|
||||||
|
unsigned int v8; // w22
|
||||||
|
const void *v10; // [xsp+8h] [xbp-38h] BYREF
|
||||||
|
const void *v11; // [xsp+10h] [xbp-30h] BYREF
|
||||||
|
__int64 v12; // [xsp+18h] [xbp-28h] BYREF
|
||||||
|
__int64 v13; // [xsp+20h] [xbp-20h] BYREF
|
||||||
|
__int64 v14; // [xsp+28h] [xbp-18h] BYREF
|
||||||
|
__int64 v15[2]; // [xsp+30h] [xbp-10h] BYREF
|
||||||
|
|
||||||
|
v15[1] = *(_QWORD *)(_ReadStatusReg(TPIDR_EL0) + 40);
|
||||||
|
if ( !strchr(s, 40) )
|
||||||
|
{
|
||||||
|
sub_C8F8(&v12, "(");
|
||||||
|
sub_14D1C(&v11, a4);
|
||||||
|
sub_C8D8(&v13, &v12);
|
||||||
|
sub_CE08(&v13, &v11);
|
||||||
|
sub_C8D8(v15, &v13);
|
||||||
|
sub_CF74(v15, ")");
|
||||||
|
sub_2E22C(&v10, 0);
|
||||||
|
sub_C8D8(&v14, v15);
|
||||||
|
sub_CE08(&v14, &v10);
|
||||||
|
sub_CA10(&v10);
|
||||||
|
sub_CA10(v15);
|
||||||
|
sub_CA10(&v13);
|
||||||
|
sub_CA10(&v11);
|
||||||
|
sub_CA10(&v12);
|
||||||
|
v8 = sub_2D330(a1, v15, s, v14);
|
||||||
|
sub_CA10(&v14);
|
||||||
|
if ( v8 )
|
||||||
|
return v8;
|
||||||
|
return (unsigned int)sub_14DA0(a1, a2, v15[0], a4);
|
||||||
|
}
|
||||||
|
v8 = sub_2D534(a1, v15, s);
|
||||||
|
if ( !v8 )
|
||||||
|
return (unsigned int)sub_14DA0(a1, a2, v15[0], a4);
|
||||||
|
return v8;
|
||||||
|
}
|
||||||
@@ -0,0 +1,21 @@
|
|||||||
|
/*
|
||||||
|
* func-name: sub_14D1C
|
||||||
|
* func-address: 0x14d1c
|
||||||
|
* export-type: decompile
|
||||||
|
* callers: 0x14bb4
|
||||||
|
* callees: 0xc8a4, 0xc8d8, 0xc8f8, 0xca10, 0xce08, 0x43f70
|
||||||
|
*/
|
||||||
|
|
||||||
|
__int64 __usercall sub_14D1C@<X0>(__int64 *a1@<X8>)
|
||||||
|
{
|
||||||
|
const void *v3; // [xsp+8h] [xbp-18h] BYREF
|
||||||
|
_QWORD v4[2]; // [xsp+10h] [xbp-10h] BYREF
|
||||||
|
|
||||||
|
v4[1] = *(_QWORD *)(_ReadStatusReg(TPIDR_EL0) + 40);
|
||||||
|
sub_C8F8(v4, (char *)qword_50210);
|
||||||
|
sub_C8A4(&v3);
|
||||||
|
sub_C8D8(a1, v4);
|
||||||
|
sub_CE08(a1, &v3);
|
||||||
|
sub_CA10(&v3);
|
||||||
|
return sub_CA10(v4);
|
||||||
|
}
|
||||||
@@ -0,0 +1,18 @@
|
|||||||
|
/*
|
||||||
|
* func-name: sub_14DA0
|
||||||
|
* func-address: 0x14da0
|
||||||
|
* export-type: decompile
|
||||||
|
* callers: 0x14bb4
|
||||||
|
* callees: 0x14e24, 0x2d22c, 0x2e3b8, 0x43f70
|
||||||
|
*/
|
||||||
|
|
||||||
|
__int64 __fastcall sub_14DA0(__int64 a1, __int64 a2, __int64 a3, __int64 a4)
|
||||||
|
{
|
||||||
|
_QWORD v8[2]; // [xsp+0h] [xbp-10h] BYREF
|
||||||
|
|
||||||
|
v8[1] = *(_QWORD *)(_ReadStatusReg(TPIDR_EL0) + 40);
|
||||||
|
sub_14E24(v8, a4);
|
||||||
|
LODWORD(a3) = sub_2D22C(a1, a2, a3, v8);
|
||||||
|
sub_2E3B8(v8);
|
||||||
|
return (unsigned int)a3;
|
||||||
|
}
|
||||||
@@ -0,0 +1,19 @@
|
|||||||
|
/*
|
||||||
|
* func-name: sub_14E24
|
||||||
|
* func-address: 0x14e24
|
||||||
|
* export-type: decompile
|
||||||
|
* callers: 0x14da0
|
||||||
|
* callees: 0x2cad8
|
||||||
|
*/
|
||||||
|
|
||||||
|
__int64 __fastcall sub_14E24(__int64 *a1, _QWORD *a2)
|
||||||
|
{
|
||||||
|
__int64 v4; // x0
|
||||||
|
__int64 result; // x0
|
||||||
|
|
||||||
|
*a1 = 0;
|
||||||
|
v4 = sub_2CAD8();
|
||||||
|
result = (*(__int64 (__fastcall **)(__int64, _QWORD))(*(_QWORD *)v4 + 1336LL))(v4, *a2);
|
||||||
|
*a1 = result;
|
||||||
|
return result;
|
||||||
|
}
|
||||||
@@ -0,0 +1,21 @@
|
|||||||
|
/*
|
||||||
|
* func-name: sub_14E60
|
||||||
|
* func-address: 0x14e60
|
||||||
|
* export-type: decompile
|
||||||
|
* callers: 0x14994, 0x25fa8, 0x26270, 0x28590, 0x2a5dc, 0x2a8f8, 0x343ec
|
||||||
|
* callees: 0xc8a4, 0xc8d8, 0xca10, 0xce08, 0x2e22c, 0x43f70
|
||||||
|
*/
|
||||||
|
|
||||||
|
__int64 __usercall sub_14E60@<X0>(__int64 a1@<X0>, __int64 *a2@<X8>)
|
||||||
|
{
|
||||||
|
const void *v4; // [xsp+8h] [xbp-18h] BYREF
|
||||||
|
_QWORD v5[2]; // [xsp+10h] [xbp-10h] BYREF
|
||||||
|
|
||||||
|
v5[1] = *(_QWORD *)(_ReadStatusReg(TPIDR_EL0) + 40);
|
||||||
|
sub_2E22C(v5, a1);
|
||||||
|
sub_C8A4(&v4);
|
||||||
|
sub_C8D8(a2, v5);
|
||||||
|
sub_CE08(a2, &v4);
|
||||||
|
sub_CA10(&v4);
|
||||||
|
return sub_CA10(v5);
|
||||||
|
}
|
||||||
@@ -0,0 +1,18 @@
|
|||||||
|
/*
|
||||||
|
* func-name: sub_14EDC
|
||||||
|
* func-address: 0x14edc
|
||||||
|
* export-type: decompile
|
||||||
|
* callers: 0x11fa0
|
||||||
|
* callees: 0x43f70, 0x442b0
|
||||||
|
*/
|
||||||
|
|
||||||
|
bool sub_14EDC()
|
||||||
|
{
|
||||||
|
unsigned __int8 vec[4]; // [xsp+4h] [xbp-Ch] BYREF
|
||||||
|
__int64 v2; // [xsp+8h] [xbp-8h]
|
||||||
|
|
||||||
|
v2 = *(_QWORD *)(_ReadStatusReg(TPIDR_EL0) + 40);
|
||||||
|
vec[0] = 0;
|
||||||
|
mincore((void *)qword_4FF78, dword_4FF70, vec);
|
||||||
|
return vec[0] == 1;
|
||||||
|
}
|
||||||
@@ -0,0 +1,17 @@
|
|||||||
|
/*
|
||||||
|
* func-name: sub_14F44
|
||||||
|
* func-address: 0x14f44
|
||||||
|
* export-type: decompile
|
||||||
|
* callers: none
|
||||||
|
* callees: 0x44110, 0x442c0
|
||||||
|
*/
|
||||||
|
|
||||||
|
void *sub_14F44()
|
||||||
|
{
|
||||||
|
void *result; // x0
|
||||||
|
|
||||||
|
dword_4FF70 = getpagesize();
|
||||||
|
result = mmap(nullptr, dword_4FF70, 3, 34, -1, 0);
|
||||||
|
qword_4FF78 = (__int64)result;
|
||||||
|
return result;
|
||||||
|
}
|
||||||
@@ -0,0 +1,65 @@
|
|||||||
|
/*
|
||||||
|
* func-name: sub_14F84
|
||||||
|
* func-address: 0x14f84
|
||||||
|
* export-type: decompile
|
||||||
|
* callers: 0x11fa0
|
||||||
|
* callees: 0xc8a4, 0xc8f8, 0xca10, 0xca28, 0xcc84, 0xcf74, 0xcfd0, 0xd068, 0xd0a8, 0xf188, 0x19e28, 0x1a0c8, 0x1c440, 0x2cd74, 0x2d4cc, 0x2daa0, 0x2e4e0, 0x43f70, 0x441c0
|
||||||
|
*/
|
||||||
|
|
||||||
|
bool __fastcall sub_14F84(__int64 a1, __int64 a2)
|
||||||
|
{
|
||||||
|
char *v4; // x20
|
||||||
|
char *v5; // x0
|
||||||
|
char *v6; // x22
|
||||||
|
unsigned __int8 *v7; // x22
|
||||||
|
int v8; // w0
|
||||||
|
unsigned __int64 v9; // x22
|
||||||
|
_BOOL4 v10; // w19
|
||||||
|
unsigned __int8 *v12; // [xsp+0h] [xbp-40h] BYREF
|
||||||
|
char *s; // [xsp+8h] [xbp-38h] BYREF
|
||||||
|
char *save_ptr; // [xsp+10h] [xbp-30h] BYREF
|
||||||
|
const char *v15; // [xsp+18h] [xbp-28h] BYREF
|
||||||
|
_BYTE v16[24]; // [xsp+20h] [xbp-20h] BYREF
|
||||||
|
__int64 v17; // [xsp+38h] [xbp-8h]
|
||||||
|
|
||||||
|
v17 = *(_QWORD *)(_ReadStatusReg(TPIDR_EL0) + 40);
|
||||||
|
sub_C8A4(&v15);
|
||||||
|
sub_2E4E0(a1, off_4D578[0], &v15);
|
||||||
|
if ( sub_CA28(&v15) )
|
||||||
|
sub_CF74((__int64 *)&v15, ",");
|
||||||
|
sub_CF74((__int64 *)&v15, (char *)qword_503A0);
|
||||||
|
sub_19E28(a2);
|
||||||
|
sub_CA28(&v15);
|
||||||
|
v4 = (char *)sub_D068((__int64 *)&v15);
|
||||||
|
sub_C8A4(&s);
|
||||||
|
v5 = strtok_r(v4, ",", &save_ptr);
|
||||||
|
if ( v5 )
|
||||||
|
{
|
||||||
|
v6 = v5;
|
||||||
|
do
|
||||||
|
{
|
||||||
|
sub_2DAA0(v16, v6);
|
||||||
|
if ( (sub_2CD74(v16) & 1) == 0 )
|
||||||
|
{
|
||||||
|
sub_C8F8(&v12, v6);
|
||||||
|
v7 = v12;
|
||||||
|
v8 = sub_CA28(&v12);
|
||||||
|
v9 = sub_F188(v7, v8, 0);
|
||||||
|
if ( !(unsigned int)sub_1A0C8(a2) )
|
||||||
|
sub_1C440(a2, ",");
|
||||||
|
sub_CC84(&s);
|
||||||
|
sub_CFD0((__int64 *)&s, "%ld", v9);
|
||||||
|
sub_1C440(a2, s);
|
||||||
|
sub_CA10(&v12);
|
||||||
|
}
|
||||||
|
v6 = strtok_r(nullptr, ",", &save_ptr);
|
||||||
|
sub_2D4CC(v16);
|
||||||
|
}
|
||||||
|
while ( v6 );
|
||||||
|
}
|
||||||
|
sub_D0A8(&v15);
|
||||||
|
v10 = sub_1A0C8(a2) == 0;
|
||||||
|
sub_CA10(&s);
|
||||||
|
sub_CA10(&v15);
|
||||||
|
return v10;
|
||||||
|
}
|
||||||
@@ -0,0 +1,81 @@
|
|||||||
|
/*
|
||||||
|
* func-name: sub_15150
|
||||||
|
* func-address: 0x15150
|
||||||
|
* export-type: decompile
|
||||||
|
* callers: 0x11fa0
|
||||||
|
* callees: 0xc8a4, 0xc8f8, 0xca10, 0xca28, 0xcc84, 0xcf74, 0xcfd0, 0xd068, 0xd0a8, 0xd210, 0xf188, 0x19e28, 0x1a0c8, 0x1c440, 0x24f90, 0x2e4e0, 0x43f70, 0x441c0, 0x442d0
|
||||||
|
*/
|
||||||
|
|
||||||
|
bool __fastcall sub_15150(__int64 a1, __int64 a2)
|
||||||
|
{
|
||||||
|
char *v4; // x20
|
||||||
|
char *v5; // x0
|
||||||
|
char *v6; // x24
|
||||||
|
unsigned __int8 *v7; // x25
|
||||||
|
int v8; // w0
|
||||||
|
unsigned __int64 v9; // x25
|
||||||
|
__int64 v10; // x0
|
||||||
|
unsigned int *v11; // x24
|
||||||
|
unsigned int v12; // w8
|
||||||
|
_BOOL4 v13; // w19
|
||||||
|
unsigned __int8 *v15; // [xsp+0h] [xbp-30h] BYREF
|
||||||
|
char *v16; // [xsp+8h] [xbp-28h] BYREF
|
||||||
|
char *s; // [xsp+10h] [xbp-20h] BYREF
|
||||||
|
char *save_ptr; // [xsp+18h] [xbp-18h] BYREF
|
||||||
|
const char *v19[2]; // [xsp+20h] [xbp-10h] BYREF
|
||||||
|
|
||||||
|
v19[1] = *(const char **)(_ReadStatusReg(TPIDR_EL0) + 40);
|
||||||
|
sub_C8A4(v19);
|
||||||
|
sub_2E4E0(a1, off_4D580[0], v19);
|
||||||
|
if ( sub_CA28(v19) )
|
||||||
|
sub_CF74((__int64 *)v19, ",");
|
||||||
|
sub_CF74((__int64 *)v19, (char *)qword_50C78);
|
||||||
|
sub_19E28(a2);
|
||||||
|
sub_CA28(v19);
|
||||||
|
v4 = (char *)sub_D068((__int64 *)v19);
|
||||||
|
sub_C8A4(&s);
|
||||||
|
sub_C8A4(&v16);
|
||||||
|
v5 = strtok_r(v4, ",", &save_ptr);
|
||||||
|
if ( v5 )
|
||||||
|
{
|
||||||
|
v6 = v5;
|
||||||
|
do
|
||||||
|
{
|
||||||
|
if ( (sub_24F90(v6, &v16, 0) & 1) != 0 )
|
||||||
|
{
|
||||||
|
sub_C8F8(&v15, v6);
|
||||||
|
v7 = v15;
|
||||||
|
v8 = sub_CA28(&v15);
|
||||||
|
v9 = sub_F188(v7, v8, 0);
|
||||||
|
if ( !(unsigned int)sub_1A0C8(a2) )
|
||||||
|
sub_1C440(a2, ",");
|
||||||
|
sub_CC84(&s);
|
||||||
|
sub_CFD0((__int64 *)&s, "%ld", v9);
|
||||||
|
sub_1C440(a2, s);
|
||||||
|
sub_1C440(a2, ":");
|
||||||
|
sub_D210((const char **)&v16, ":");
|
||||||
|
sub_D210((const char **)&v16, ",");
|
||||||
|
sub_1C440(a2, v16);
|
||||||
|
sub_1C440(a2, ":");
|
||||||
|
v10 = __system_property_find(v6);
|
||||||
|
if ( v10 )
|
||||||
|
{
|
||||||
|
v11 = (unsigned int *)v10;
|
||||||
|
sub_CC84(&s);
|
||||||
|
v12 = atomic_load(v11);
|
||||||
|
sub_CFD0((__int64 *)&s, "%u", (v12 ^ 0xFF000000) & v12);
|
||||||
|
sub_1C440(a2, s);
|
||||||
|
}
|
||||||
|
sub_CA10(&v15);
|
||||||
|
}
|
||||||
|
v6 = strtok_r(nullptr, ",", &save_ptr);
|
||||||
|
}
|
||||||
|
while ( v6 );
|
||||||
|
}
|
||||||
|
sub_D0A8(v19);
|
||||||
|
v13 = sub_1A0C8(a2) == 0;
|
||||||
|
sub_CA10(&v16);
|
||||||
|
sub_CA10(&s);
|
||||||
|
sub_CA10(v19);
|
||||||
|
return v13;
|
||||||
|
}
|
||||||
@@ -0,0 +1,91 @@
|
|||||||
|
/*
|
||||||
|
* func-name: sub_153B0
|
||||||
|
* func-address: 0x153b0
|
||||||
|
* export-type: decompile
|
||||||
|
* callers: 0x11fa0
|
||||||
|
* callees: 0xc8a4, 0xc8f8, 0xca10, 0xca28, 0xcc84, 0xcf74, 0xcfd0, 0xd068, 0xd0a8, 0xd210, 0xf188, 0x19e28, 0x1a0c8, 0x1c440, 0x28fe8, 0x2be88, 0x2e4e0, 0x43f70, 0x44120, 0x441c0
|
||||||
|
*/
|
||||||
|
|
||||||
|
bool __fastcall sub_153B0(__int64 a1, __int64 a2)
|
||||||
|
{
|
||||||
|
char *v4; // x22
|
||||||
|
char *v5; // x0
|
||||||
|
char *v6; // x24
|
||||||
|
unsigned __int8 *v7; // x24
|
||||||
|
int v8; // w0
|
||||||
|
unsigned __int64 v9; // x24
|
||||||
|
_BOOL4 v10; // w19
|
||||||
|
unsigned __int8 *v12; // [xsp+8h] [xbp-38h] BYREF
|
||||||
|
char *v13; // [xsp+10h] [xbp-30h] BYREF
|
||||||
|
char *v14; // [xsp+18h] [xbp-28h] BYREF
|
||||||
|
char *s; // [xsp+20h] [xbp-20h] BYREF
|
||||||
|
char *save_ptr; // [xsp+28h] [xbp-18h] BYREF
|
||||||
|
const char *v17[2]; // [xsp+30h] [xbp-10h] BYREF
|
||||||
|
|
||||||
|
v17[1] = *(const char **)(_ReadStatusReg(TPIDR_EL0) + 40);
|
||||||
|
sub_C8A4(v17);
|
||||||
|
sub_2E4E0(a1, off_4D5A8[0], v17);
|
||||||
|
if ( sub_CA28(v17) )
|
||||||
|
sub_CF74((__int64 *)v17, ",");
|
||||||
|
sub_CF74((__int64 *)v17, (char *)qword_50B90);
|
||||||
|
sub_CF74((__int64 *)v17, ",");
|
||||||
|
sub_CF74((__int64 *)v17, (char *)qword_50978);
|
||||||
|
sub_19E28(a2);
|
||||||
|
sub_CA28(v17);
|
||||||
|
v4 = (char *)sub_D068((__int64 *)v17);
|
||||||
|
sub_C8A4(&s);
|
||||||
|
sub_C8A4(&v14);
|
||||||
|
sub_C8A4(&v13);
|
||||||
|
v5 = strtok_r(v4, ",", &save_ptr);
|
||||||
|
if ( v5 )
|
||||||
|
{
|
||||||
|
v6 = v5;
|
||||||
|
do
|
||||||
|
{
|
||||||
|
if ( (sub_2BE88(v6, &v14, 0, 0) & 1) != 0 && sub_CA28(&v14) )
|
||||||
|
{
|
||||||
|
if ( !strcmp((const char *)qword_50B98, v6) )
|
||||||
|
{
|
||||||
|
if ( (sub_2E4E0(a1, off_4D3D8[0], &v13) & 1) != 0 )
|
||||||
|
{
|
||||||
|
LABEL_11:
|
||||||
|
if ( sub_CA28(&v13) && strcmp(v14, v13) )
|
||||||
|
{
|
||||||
|
sub_C8F8(&v12, v6);
|
||||||
|
v7 = v12;
|
||||||
|
v8 = sub_CA28(&v12);
|
||||||
|
v9 = sub_F188(v7, v8, 0);
|
||||||
|
if ( !(unsigned int)sub_1A0C8(a2) )
|
||||||
|
sub_1C440(a2, ",");
|
||||||
|
sub_CC84(&s);
|
||||||
|
sub_CFD0((__int64 *)&s, "%ld", v9);
|
||||||
|
sub_1C440(a2, s);
|
||||||
|
sub_1C440(a2, ":");
|
||||||
|
sub_D210((const char **)&v14, ":");
|
||||||
|
sub_D210((const char **)&v14, ",");
|
||||||
|
sub_1C440(a2, v14);
|
||||||
|
sub_1C440(a2, ":");
|
||||||
|
sub_D210((const char **)&v13, ":");
|
||||||
|
sub_D210((const char **)&v13, ",");
|
||||||
|
sub_1C440(a2, v13);
|
||||||
|
sub_CA10(&v12);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if ( (sub_28FE8(v6, &v13) & 1) != 0 )
|
||||||
|
{
|
||||||
|
goto LABEL_11;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
v6 = strtok_r(nullptr, ",", &save_ptr);
|
||||||
|
}
|
||||||
|
while ( v6 );
|
||||||
|
}
|
||||||
|
sub_D0A8(v17);
|
||||||
|
v10 = sub_1A0C8(a2) == 0;
|
||||||
|
sub_CA10(&v13);
|
||||||
|
sub_CA10(&v14);
|
||||||
|
sub_CA10(&s);
|
||||||
|
sub_CA10(v17);
|
||||||
|
return v10;
|
||||||
|
}
|
||||||
@@ -0,0 +1,102 @@
|
|||||||
|
/*
|
||||||
|
* func-name: sub_15694
|
||||||
|
* func-address: 0x15694
|
||||||
|
* export-type: decompile
|
||||||
|
* callers: 0x11fa0, 0x21de4
|
||||||
|
* callees: 0xc8a4, 0xca10, 0xca28, 0xcc84, 0xcd24, 0xcfd0, 0xd068, 0xd0a8, 0xf188, 0x19e28, 0x1a0c8, 0x1c440, 0x2e4e0, 0x43f70, 0x440b0, 0x44180, 0x441c0
|
||||||
|
*/
|
||||||
|
|
||||||
|
__int64 __fastcall sub_15694(__int64 a1, __int64 a2)
|
||||||
|
{
|
||||||
|
char *v4; // x20
|
||||||
|
char *i; // x0
|
||||||
|
char *v6; // x26
|
||||||
|
char *v7; // x27
|
||||||
|
int v8; // w25
|
||||||
|
char *v9; // x1
|
||||||
|
unsigned __int8 *v10; // x27
|
||||||
|
int v11; // w0
|
||||||
|
unsigned __int64 v12; // x27
|
||||||
|
unsigned int v13; // w19
|
||||||
|
__int128 v15; // [xsp+10h] [xbp-C0h] BYREF
|
||||||
|
__int128 v16; // [xsp+20h] [xbp-B0h]
|
||||||
|
__int128 v17; // [xsp+30h] [xbp-A0h]
|
||||||
|
__int128 v18; // [xsp+40h] [xbp-90h]
|
||||||
|
__int128 v19; // [xsp+50h] [xbp-80h]
|
||||||
|
__int128 v20; // [xsp+60h] [xbp-70h]
|
||||||
|
__int128 v21; // [xsp+70h] [xbp-60h]
|
||||||
|
__int128 v22; // [xsp+80h] [xbp-50h]
|
||||||
|
char *v23; // [xsp+98h] [xbp-38h] BYREF
|
||||||
|
char *v24; // [xsp+A0h] [xbp-30h] BYREF
|
||||||
|
char *v25; // [xsp+A8h] [xbp-28h] BYREF
|
||||||
|
char *save_ptr; // [xsp+B0h] [xbp-20h] BYREF
|
||||||
|
const char *v27[3]; // [xsp+B8h] [xbp-18h] BYREF
|
||||||
|
|
||||||
|
v27[1] = *(const char **)(_ReadStatusReg(TPIDR_EL0) + 40);
|
||||||
|
sub_C8A4(v27);
|
||||||
|
if ( (sub_2E4E0(a1, off_4D560[0], v27) & 1) != 0 && sub_CA28(v27) )
|
||||||
|
{
|
||||||
|
sub_19E28(a2);
|
||||||
|
sub_CA28(v27);
|
||||||
|
v4 = (char *)sub_D068((__int64 *)v27);
|
||||||
|
sub_C8A4(&v24);
|
||||||
|
sub_C8A4(&v23);
|
||||||
|
for ( i = strtok_r(v4, ",", &save_ptr); i; i = strtok_r(nullptr, ",", &save_ptr) )
|
||||||
|
{
|
||||||
|
v6 = strtok_r(i, ";", &v25);
|
||||||
|
v7 = strtok_r(nullptr, ";", &v25);
|
||||||
|
if ( !access(v6, 0) )
|
||||||
|
{
|
||||||
|
if ( access(v6, 2) )
|
||||||
|
v8 = 1;
|
||||||
|
else
|
||||||
|
v8 = 3;
|
||||||
|
if ( v7 )
|
||||||
|
v9 = v7;
|
||||||
|
else
|
||||||
|
v9 = v6;
|
||||||
|
sub_CD24((__int64 *)&v23, v9);
|
||||||
|
v10 = (unsigned __int8 *)v23;
|
||||||
|
v11 = sub_CA28(&v23);
|
||||||
|
v12 = sub_F188(v10, v11, 0);
|
||||||
|
if ( !(unsigned int)sub_1A0C8(a2) )
|
||||||
|
sub_1C440(a2, ",");
|
||||||
|
sub_CC84(&v23);
|
||||||
|
v21 = 0u;
|
||||||
|
v22 = 0u;
|
||||||
|
v19 = 0u;
|
||||||
|
v20 = 0u;
|
||||||
|
v17 = 0u;
|
||||||
|
v18 = 0u;
|
||||||
|
v15 = 0u;
|
||||||
|
v16 = 0u;
|
||||||
|
if ( real_syscall(79, 4294967196LL, v6, &v15) )
|
||||||
|
v8 |= 4u;
|
||||||
|
else
|
||||||
|
sub_CFD0(
|
||||||
|
(__int64 *)&v23,
|
||||||
|
"%d_%lu_%ld_%d_%lu_%lu_%lu",
|
||||||
|
DWORD2(v16),
|
||||||
|
(_QWORD)v15,
|
||||||
|
(_QWORD)v18,
|
||||||
|
((unsigned int)v16 ^ 0xFFFFFE00) & (unsigned int)v16,
|
||||||
|
*((_QWORD *)&v15 + 1),
|
||||||
|
(__int64)v20 / 1000000 + 1000LL * *((_QWORD *)&v19 + 1),
|
||||||
|
(__int64)v21 / 1000000 + 1000LL * *((_QWORD *)&v20 + 1));
|
||||||
|
sub_CC84(&v24);
|
||||||
|
sub_CFD0((__int64 *)&v24, "%ld%s%u%s%s", v12, ":", v8, ":", v23);
|
||||||
|
sub_1C440(a2, v24);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
sub_D0A8(v27);
|
||||||
|
sub_CA10(&v23);
|
||||||
|
sub_CA10(&v24);
|
||||||
|
v13 = 1;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
v13 = 0;
|
||||||
|
}
|
||||||
|
sub_CA10(v27);
|
||||||
|
return v13;
|
||||||
|
}
|
||||||
@@ -0,0 +1,229 @@
|
|||||||
|
/*
|
||||||
|
* func-name: sub_15940
|
||||||
|
* func-address: 0x15940
|
||||||
|
* export-type: decompile
|
||||||
|
* callers: 0x11fa0
|
||||||
|
* callees: 0xc8a4, 0xc8f8, 0xca10, 0xca28, 0xcc84, 0xcfd0, 0xd068, 0xd0a8, 0xd210, 0x15f7c, 0x165d4, 0x16628, 0x169f0, 0x16c74, 0x16e34, 0x16e68, 0x19e28, 0x1a0c8, 0x1c440, 0x43f70, 0x44090, 0x441c0, 0x441d0, 0x442e0
|
||||||
|
*/
|
||||||
|
|
||||||
|
__int64 __fastcall sub_15940(__int64 *a1, __int64 a2, char a3)
|
||||||
|
{
|
||||||
|
__int64 v6; // x0
|
||||||
|
__int64 v7; // x0
|
||||||
|
char v8; // w23
|
||||||
|
__int64 v9; // x23
|
||||||
|
char *v10; // x0
|
||||||
|
char *v11; // x0
|
||||||
|
char *v12; // x26
|
||||||
|
char *v13; // x0
|
||||||
|
char *v14; // x0
|
||||||
|
unsigned __int64 v15; // x0
|
||||||
|
char *v16; // x26
|
||||||
|
char *v17; // x0
|
||||||
|
int v18; // w3
|
||||||
|
__int64 v19; // x21
|
||||||
|
__int64 v20; // x0
|
||||||
|
__int64 i; // x19
|
||||||
|
__int64 v22; // x0
|
||||||
|
__int64 v23; // x1
|
||||||
|
__int64 v24; // x2
|
||||||
|
__int64 v25; // x3
|
||||||
|
__int64 v26; // x4
|
||||||
|
int v27; // w26
|
||||||
|
char v29; // [xsp+2Ch] [xbp-F4h]
|
||||||
|
char *v30; // [xsp+38h] [xbp-E8h] BYREF
|
||||||
|
char *save_ptr; // [xsp+40h] [xbp-E0h] BYREF
|
||||||
|
__int64 v32; // [xsp+48h] [xbp-D8h] BYREF
|
||||||
|
_QWORD v33[2]; // [xsp+50h] [xbp-D0h] BYREF
|
||||||
|
__int128 v34; // [xsp+60h] [xbp-C0h]
|
||||||
|
__int128 v35; // [xsp+70h] [xbp-B0h]
|
||||||
|
__int128 v36; // [xsp+80h] [xbp-A0h]
|
||||||
|
__int64 v37; // [xsp+90h] [xbp-90h] BYREF
|
||||||
|
_QWORD v38[2]; // [xsp+98h] [xbp-88h] BYREF
|
||||||
|
char v39; // [xsp+A8h] [xbp-78h]
|
||||||
|
__int64 (__fastcall *v40)(__int64, __int64, __int64, __int64, __int64); // [xsp+B0h] [xbp-70h]
|
||||||
|
char v41; // [xsp+B8h] [xbp-68h]
|
||||||
|
int v42; // [xsp+B9h] [xbp-67h]
|
||||||
|
__int128 v43; // [xsp+C0h] [xbp-60h]
|
||||||
|
__int128 v44; // [xsp+D0h] [xbp-50h]
|
||||||
|
__int64 v45; // [xsp+E0h] [xbp-40h] BYREF
|
||||||
|
__int64 v46; // [xsp+E8h] [xbp-38h] BYREF
|
||||||
|
__int64 v47; // [xsp+F0h] [xbp-30h] BYREF
|
||||||
|
__int64 v48; // [xsp+F8h] [xbp-28h]
|
||||||
|
__int64 v49; // [xsp+100h] [xbp-20h] BYREF
|
||||||
|
char v50; // [xsp+108h] [xbp-18h]
|
||||||
|
char v51; // [xsp+10Ch] [xbp-14h]
|
||||||
|
__int64 v52; // [xsp+110h] [xbp-10h]
|
||||||
|
|
||||||
|
v52 = *(_QWORD *)(_ReadStatusReg(TPIDR_EL0) + 40);
|
||||||
|
sub_19E28(a2);
|
||||||
|
v6 = operator new[](0x50u);
|
||||||
|
v33[0] = v6;
|
||||||
|
*(_QWORD *)(v6 + 64) = v6;
|
||||||
|
*(_QWORD *)(v6 + 72) = v6;
|
||||||
|
v7 = operator new[](0x50u);
|
||||||
|
v33[1] = v7;
|
||||||
|
*(_QWORD *)(v7 + 64) = v7;
|
||||||
|
*(_QWORD *)(v7 + 72) = v7;
|
||||||
|
v34 = 0u;
|
||||||
|
v35 = 0u;
|
||||||
|
v36 = 0u;
|
||||||
|
v8 = sub_15F7C(v33);
|
||||||
|
if ( (v8 & 1) != 0 )
|
||||||
|
{
|
||||||
|
v29 = v8;
|
||||||
|
v9 = operator new[](0x90u);
|
||||||
|
v32 = v9;
|
||||||
|
*(_QWORD *)(v9 + 128) = v9;
|
||||||
|
*(_QWORD *)(v9 + 136) = v9;
|
||||||
|
sub_C8A4(&v37);
|
||||||
|
sub_C8A4(v38);
|
||||||
|
v39 = 0;
|
||||||
|
v40 = nullptr;
|
||||||
|
v41 = 0;
|
||||||
|
v42 = 0;
|
||||||
|
v43 = 0u;
|
||||||
|
v44 = 0u;
|
||||||
|
sub_C8A4(&v45);
|
||||||
|
sub_C8A4(&v46);
|
||||||
|
sub_C8A4(&v47);
|
||||||
|
v48 = 0;
|
||||||
|
sub_C8A4(&v49);
|
||||||
|
v50 = 0;
|
||||||
|
v51 = 0;
|
||||||
|
if ( sub_CA28(a1) )
|
||||||
|
{
|
||||||
|
sub_CA28(a1);
|
||||||
|
v10 = (char *)sub_D068(a1);
|
||||||
|
v11 = strtok_r(v10, ",", &save_ptr);
|
||||||
|
if ( v11 )
|
||||||
|
{
|
||||||
|
v12 = v11;
|
||||||
|
do
|
||||||
|
{
|
||||||
|
sub_165D4(&v37);
|
||||||
|
v13 = strtok_r(v12, ":", &v30);
|
||||||
|
v50 = strtol(v13, nullptr, 10);
|
||||||
|
v48 = 0;
|
||||||
|
if ( (unsigned __int8)*v30 < 0x31u
|
||||||
|
|| (unsigned __int8)v30[1] > 0x38u
|
||||||
|
|| (v14 = strtok_r(nullptr, ":", &v30), v15 = strtoul(v14, nullptr, 10), v15 - 513 <= 0xFFFFFFFFFFFFFDFFLL) )
|
||||||
|
{
|
||||||
|
v15 = 8;
|
||||||
|
}
|
||||||
|
v48 = v15;
|
||||||
|
v16 = strtok_r(nullptr, ":", &v30);
|
||||||
|
v17 = strtok_r(nullptr, ":", &v30);
|
||||||
|
if ( v50 == 1 )
|
||||||
|
{
|
||||||
|
v18 = 0;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if ( v50 != 2 )
|
||||||
|
{
|
||||||
|
if ( v50 == 3 )
|
||||||
|
sub_16628(v33, v16, v17, &v37, &v32);
|
||||||
|
goto LABEL_16;
|
||||||
|
}
|
||||||
|
v18 = 1;
|
||||||
|
}
|
||||||
|
sub_169F0((int)v33, (int)v16, (int)v17, v18, (int)&v37);
|
||||||
|
LABEL_16:
|
||||||
|
v12 = strtok_r(nullptr, ",", &save_ptr);
|
||||||
|
}
|
||||||
|
while ( v12 );
|
||||||
|
}
|
||||||
|
sub_D0A8((const char **)a1);
|
||||||
|
}
|
||||||
|
if ( (a3 & 1) != 0 )
|
||||||
|
{
|
||||||
|
sub_165D4(&v37);
|
||||||
|
v50 = 3;
|
||||||
|
v51 = v51 & 1 | v51 ^ 1;
|
||||||
|
v48 = 12;
|
||||||
|
sub_C8F8(&save_ptr, (char *)qword_50CF0);
|
||||||
|
v19 = qword_50CE8;
|
||||||
|
sub_CA28(&save_ptr);
|
||||||
|
v20 = sub_D068((__int64 *)&save_ptr);
|
||||||
|
sub_16628(v33, v19, v20, &v37, &v32);
|
||||||
|
sub_CA10(&save_ptr);
|
||||||
|
}
|
||||||
|
sub_16C74(v33, &v32);
|
||||||
|
sub_1C440(a2, "1");
|
||||||
|
sub_C8A4(&save_ptr);
|
||||||
|
for ( i = *(_QWORD *)(v9 + 136); i != v9; i = *(_QWORD *)(i + 136) )
|
||||||
|
{
|
||||||
|
if ( *(_BYTE *)(i + 24) )
|
||||||
|
{
|
||||||
|
if ( !(unsigned int)sub_1A0C8(a2) )
|
||||||
|
sub_1C440(a2, ",");
|
||||||
|
sub_CC84(&save_ptr);
|
||||||
|
sub_CFD0((__int64 *)&save_ptr, "%ld", *(_QWORD *)(i + 16));
|
||||||
|
sub_1C440(a2, save_ptr);
|
||||||
|
sub_1C440(a2, ":");
|
||||||
|
sub_CC84(&save_ptr);
|
||||||
|
sub_CFD0((__int64 *)&save_ptr, "%lx", *(_QWORD *)(i + 32));
|
||||||
|
sub_1C440(a2, save_ptr);
|
||||||
|
sub_1C440(a2, ":");
|
||||||
|
sub_D210((const char **)(i + 80), ",");
|
||||||
|
sub_D210((const char **)(i + 80), ":");
|
||||||
|
sub_1C440(a2, *(char **)(i + 80));
|
||||||
|
sub_1C440(a2, ":");
|
||||||
|
sub_1C440(a2, *(char **)(i + 88));
|
||||||
|
sub_1C440(a2, ":");
|
||||||
|
sub_1C440(a2, (char *)(i + 40));
|
||||||
|
sub_1C440(a2, ":");
|
||||||
|
sub_CC84(&save_ptr);
|
||||||
|
sub_CFD0((__int64 *)&save_ptr, "%ju", *(_QWORD *)(i + 48));
|
||||||
|
sub_1C440(a2, save_ptr);
|
||||||
|
sub_1C440(a2, ":");
|
||||||
|
sub_CC84(&save_ptr);
|
||||||
|
sub_CFD0((__int64 *)&save_ptr, "%ju", *(_QWORD *)(i + 56));
|
||||||
|
sub_1C440(a2, save_ptr);
|
||||||
|
if ( *(_BYTE *)(i + 120) == 3 )
|
||||||
|
{
|
||||||
|
sub_1C440(a2, ":");
|
||||||
|
sub_CC84(&save_ptr);
|
||||||
|
sub_CFD0((__int64 *)&save_ptr, "%u", *(unsigned __int16 *)(i + 122));
|
||||||
|
sub_1C440(a2, save_ptr);
|
||||||
|
sub_1C440(a2, ":");
|
||||||
|
sub_1C440(a2, *(char **)(i + 112));
|
||||||
|
sub_1C440(a2, ":");
|
||||||
|
sub_CC84(&save_ptr);
|
||||||
|
sub_CFD0((__int64 *)&save_ptr, "%ju", *(_QWORD *)(i + 64));
|
||||||
|
sub_1C440(a2, save_ptr);
|
||||||
|
sub_1C440(a2, ":");
|
||||||
|
sub_CC84(&save_ptr);
|
||||||
|
sub_CFD0((__int64 *)&save_ptr, "%ju", *(_QWORD *)(i + 72));
|
||||||
|
sub_1C440(a2, save_ptr);
|
||||||
|
sub_1C440(a2, ":");
|
||||||
|
sub_1C440(a2, *(char **)(i + 96));
|
||||||
|
sub_1C440(a2, ":");
|
||||||
|
if ( (*(unsigned __int8 *)(i + 124) ^ 1 | 0xFE) != 0xFF )
|
||||||
|
{
|
||||||
|
v22 = sub_CA28((_QWORD *)(i + 88));
|
||||||
|
if ( v22 )
|
||||||
|
v27 = v40(v22, v23, v24, v25, v26) & 1;
|
||||||
|
else
|
||||||
|
v27 = 2;
|
||||||
|
sub_CC84(&save_ptr);
|
||||||
|
sub_CFD0((__int64 *)&save_ptr, "%u", v27);
|
||||||
|
sub_1C440(a2, save_ptr);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
sub_CA10(&save_ptr);
|
||||||
|
sub_CA10(&v49);
|
||||||
|
sub_CA10(&v47);
|
||||||
|
sub_CA10(&v46);
|
||||||
|
sub_CA10(&v45);
|
||||||
|
sub_CA10(v38);
|
||||||
|
sub_CA10(&v37);
|
||||||
|
sub_16E34(&v32);
|
||||||
|
v8 = v29;
|
||||||
|
}
|
||||||
|
sub_16E68(v33);
|
||||||
|
return v8 & 1;
|
||||||
|
}
|
||||||
@@ -0,0 +1,249 @@
|
|||||||
|
/*
|
||||||
|
* func-name: sub_15F7C
|
||||||
|
* func-address: 0x15f7c
|
||||||
|
* export-type: decompile
|
||||||
|
* callers: 0x15940
|
||||||
|
* callees: 0xc8a4, 0xca10, 0xca28, 0xcd24, 0x135b0, 0x16eac, 0x16f34, 0x17040, 0x25408, 0x2cad8, 0x2cc98, 0x2cd0c, 0x2cd74, 0x2cdc0, 0x2d22c, 0x2d438, 0x2d4cc, 0x2d724, 0x2d9cc, 0x2daa0, 0x43f70, 0x44060, 0x440b0, 0x44120, 0x44220, 0x442f0, 0x44300, 0x44310, 0x44320
|
||||||
|
*/
|
||||||
|
|
||||||
|
bool __fastcall sub_15F7C(_QWORD *a1)
|
||||||
|
{
|
||||||
|
int v2; // w20
|
||||||
|
__int64 v3; // x0
|
||||||
|
char *v4; // x1
|
||||||
|
__int64 v5; // x0
|
||||||
|
int v6; // w22
|
||||||
|
int v7; // w23
|
||||||
|
void *v8; // x21
|
||||||
|
__int64 v10; // x21
|
||||||
|
__int64 v11; // x0
|
||||||
|
__int64 v12; // x0
|
||||||
|
__int64 v13; // x0
|
||||||
|
__int64 v14; // x0
|
||||||
|
__int64 v15; // x0
|
||||||
|
__int64 v16; // x0
|
||||||
|
__int64 v17; // x21
|
||||||
|
__int64 v18; // x0
|
||||||
|
int v19; // w0
|
||||||
|
FILE *v20; // x0
|
||||||
|
FILE *v21; // x20
|
||||||
|
char *v22; // x0
|
||||||
|
__int64 v23; // x8
|
||||||
|
unsigned __int64 v24; // x8
|
||||||
|
unsigned __int64 v25; // x9
|
||||||
|
__int64 v26; // [xsp+18h] [xbp-1128h]
|
||||||
|
_BYTE v27[8]; // [xsp+28h] [xbp-1118h] BYREF
|
||||||
|
_BYTE v28[8]; // [xsp+30h] [xbp-1110h] BYREF
|
||||||
|
__int64 v29; // [xsp+38h] [xbp-1108h] BYREF
|
||||||
|
__int64 v30; // [xsp+40h] [xbp-1100h] BYREF
|
||||||
|
_QWORD v31[3]; // [xsp+48h] [xbp-10F8h] BYREF
|
||||||
|
__int64 v32; // [xsp+60h] [xbp-10E0h] BYREF
|
||||||
|
__int64 v33; // [xsp+68h] [xbp-10D8h] BYREF
|
||||||
|
__int16 v34; // [xsp+70h] [xbp-10D0h] BYREF
|
||||||
|
char *s2; // [xsp+78h] [xbp-10C8h] BYREF
|
||||||
|
char v36; // [xsp+80h] [xbp-10C0h]
|
||||||
|
_DWORD v37[6]; // [xsp+88h] [xbp-10B8h] BYREF
|
||||||
|
_BYTE v38[24]; // [xsp+A0h] [xbp-10A0h] BYREF
|
||||||
|
_BYTE v39[24]; // [xsp+B8h] [xbp-1088h] BYREF
|
||||||
|
_QWORD v40[3]; // [xsp+D0h] [xbp-1070h] BYREF
|
||||||
|
_BYTE v41[24]; // [xsp+E8h] [xbp-1058h] BYREF
|
||||||
|
_QWORD v42[3]; // [xsp+100h] [xbp-1040h] BYREF
|
||||||
|
_BYTE v43[24]; // [xsp+118h] [xbp-1028h] BYREF
|
||||||
|
_QWORD s[514]; // [xsp+130h] [xbp-1010h] BYREF
|
||||||
|
|
||||||
|
s[512] = *(_QWORD *)(_ReadStatusReg(TPIDR_EL0) + 40);
|
||||||
|
v2 = sub_25408(a1);
|
||||||
|
if ( v2 < 26 )
|
||||||
|
{
|
||||||
|
v5 = sub_2CC98("java/lang/reflect/AbstractMethod");
|
||||||
|
a1[2] = v5;
|
||||||
|
if ( v5 )
|
||||||
|
{
|
||||||
|
sub_C8A4(&v30);
|
||||||
|
if ( v2 <= 22 )
|
||||||
|
{
|
||||||
|
sub_CD24(&v30, "java/lang/reflect/ArtMethod");
|
||||||
|
sub_2DAA0(v43, v30);
|
||||||
|
v6 = 0;
|
||||||
|
goto LABEL_11;
|
||||||
|
}
|
||||||
|
v4 = "java/lang/reflect/AbstractMethod";
|
||||||
|
LABEL_7:
|
||||||
|
sub_CD24(&v30, v4);
|
||||||
|
sub_2DAA0(v43, v30);
|
||||||
|
sub_2D9CC(v43, a1 + 3, "artMethod", "J");
|
||||||
|
if ( !a1[3] )
|
||||||
|
goto LABEL_15;
|
||||||
|
v6 = 1;
|
||||||
|
LABEL_11:
|
||||||
|
v8 = sub_135B0();
|
||||||
|
if ( (sub_2CD74(v8) & 1) == 0 )
|
||||||
|
{
|
||||||
|
v29 = 0;
|
||||||
|
sub_2D438(v8, &v29, "getDeclaredConstructors", "()[Ljava/lang/reflect/Constructor;");
|
||||||
|
if ( v29 )
|
||||||
|
{
|
||||||
|
sub_2DAA0(v42, "java/lang/Throwable");
|
||||||
|
if ( (sub_2CD74(v42) & 1) != 0 )
|
||||||
|
{
|
||||||
|
v7 = 2;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
sub_2CDC0(v41, v42[0], 1);
|
||||||
|
sub_2CD0C(v40);
|
||||||
|
if ( (unsigned int)sub_2D22C(v41, v40, v29, 0)
|
||||||
|
|| (v10 = v40[0]) == 0
|
||||||
|
|| (v11 = ((__int64 (*)(void))sub_2CAD8)(),
|
||||||
|
(*(int (__fastcall **)(__int64, __int64))(*(_QWORD *)v11 + 1368LL))(v11, v10) < 2) )
|
||||||
|
{
|
||||||
|
v7 = 2;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
v12 = ((__int64 (*)(void))sub_2CAD8)();
|
||||||
|
v13 = (*(__int64 (__fastcall **)(__int64, __int64, _QWORD))(*(_QWORD *)v12 + 1384LL))(v12, v10, 0);
|
||||||
|
v14 = sub_2CDC0(v39, v13, 1);
|
||||||
|
v15 = sub_2CAD8(v14);
|
||||||
|
v16 = (*(__int64 (__fastcall **)(__int64, __int64, __int64))(*(_QWORD *)v15 + 1384LL))(v15, v10, 1);
|
||||||
|
sub_2CDC0(v38, v16, 1);
|
||||||
|
v17 = sub_16EAC(a1, v39);
|
||||||
|
v18 = sub_16EAC(a1, v38);
|
||||||
|
v7 = 2;
|
||||||
|
if ( (v17 == 0) == (v18 == 0) && v17 | v18 )
|
||||||
|
{
|
||||||
|
a1[4] = v18 - v17;
|
||||||
|
a1[5] = v18 - v17 - 8;
|
||||||
|
if ( v6 )
|
||||||
|
{
|
||||||
|
if ( !(unsigned int)sub_2D9CC(v43, s, "accessFlags", "I") && !(unsigned int)sub_2D724(v39, v31, s[0]) )
|
||||||
|
{
|
||||||
|
v24 = a1[4];
|
||||||
|
if ( v24 )
|
||||||
|
{
|
||||||
|
v25 = 0;
|
||||||
|
while ( *(_DWORD *)(v17 + v25) != LODWORD(v31[0]) )
|
||||||
|
{
|
||||||
|
v25 += 4LL;
|
||||||
|
if ( v25 >= v24 )
|
||||||
|
goto LABEL_29;
|
||||||
|
}
|
||||||
|
a1[6] = v25;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
LABEL_29:
|
||||||
|
if ( !a1[6] )
|
||||||
|
a1[6] = 4;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
sub_2DAA0(v31, "java/lang/reflect/ArtField");
|
||||||
|
sub_2DAA0(v37, "java/lang/reflect/Field");
|
||||||
|
if ( (sub_2CD74(v37) & 1) == 0 )
|
||||||
|
sub_2D9CC(v37, v28, "artField", "Ljava/lang/reflect/ArtField;");
|
||||||
|
if ( (sub_2CD74(v31) & 1) == 0 )
|
||||||
|
sub_2D9CC(v31, v27, "offset", "I");
|
||||||
|
s[0] = v43;
|
||||||
|
s[1] = a1;
|
||||||
|
s[2] = v28;
|
||||||
|
s[3] = v27;
|
||||||
|
a1[6] = (int)sub_16F34(s, "accessFlags", "I");
|
||||||
|
if ( v2 == 21 )
|
||||||
|
{
|
||||||
|
a1[5] = (int)sub_16F34(s, "entryPointFromQuickCompiledCode", "J");
|
||||||
|
a1[7] = (int)sub_16F34(s, "entryPointFromInterpreter", "J");
|
||||||
|
}
|
||||||
|
sub_2D4CC(v37);
|
||||||
|
sub_2D4CC(v31);
|
||||||
|
}
|
||||||
|
v19 = real_syscall(56, 4294967196LL, qword_50B18, 0);
|
||||||
|
if ( v19 >= 1 && (v20 = fdopen(v19, "r")) != nullptr )
|
||||||
|
{
|
||||||
|
v21 = v20;
|
||||||
|
memset(s, 0, 0x1000u);
|
||||||
|
memset(v31, 0, 21);
|
||||||
|
v32 = 0;
|
||||||
|
v33 = 0;
|
||||||
|
v34 = 0;
|
||||||
|
sub_C8A4(&s2);
|
||||||
|
v36 = 0;
|
||||||
|
while ( fgets((char *)s, 4096, v21) )
|
||||||
|
{
|
||||||
|
v22 = __strchr_chk((const char *)s, 10, 0x1000u);
|
||||||
|
if ( v22 )
|
||||||
|
*v22 = 0;
|
||||||
|
v37[0] = 0;
|
||||||
|
if ( sscanf(
|
||||||
|
(const char *)s,
|
||||||
|
"%lx-%lx %4c %llx %hhx:%hhx %ld %n",
|
||||||
|
v31,
|
||||||
|
&v31[1],
|
||||||
|
&v31[2],
|
||||||
|
&v32,
|
||||||
|
&v34,
|
||||||
|
(char *)&v34 + 1,
|
||||||
|
&v33,
|
||||||
|
v37) >= 7
|
||||||
|
&& BYTE3(v31[2]) == 112
|
||||||
|
&& (LOBYTE(v31[2]) == 114 || BYTE2(v31[2]) == 120) )
|
||||||
|
{
|
||||||
|
sub_CD24((__int64 *)&s2, (char *)s + v37[0]);
|
||||||
|
if ( sub_CA28(&s2) && *s2 == 47 && !v32 && v33 )
|
||||||
|
sub_17040(a1 + 1, v31);
|
||||||
|
if ( BYTE2(v31[2]) == 120 )
|
||||||
|
{
|
||||||
|
sub_17040(a1, v31);
|
||||||
|
if ( sub_CA28(&s2) )
|
||||||
|
{
|
||||||
|
v23 = a1[1];
|
||||||
|
if ( *(_QWORD *)(v23 + 72) != v23 )
|
||||||
|
{
|
||||||
|
v26 = *(_QWORD *)(v23 + 64);
|
||||||
|
if ( !strcmp(*(const char **)(v26 + 48), s2) )
|
||||||
|
*(_BYTE *)(v26 + 56) = 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
fclose(v21);
|
||||||
|
sub_CA10(&s2);
|
||||||
|
v7 = 1;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
v7 = 2;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
sub_2D4CC(v38);
|
||||||
|
sub_2D4CC(v39);
|
||||||
|
}
|
||||||
|
sub_2D4CC(v40);
|
||||||
|
sub_2D4CC(v41);
|
||||||
|
}
|
||||||
|
sub_2D4CC(v42);
|
||||||
|
goto LABEL_20;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
LABEL_15:
|
||||||
|
v7 = 2;
|
||||||
|
LABEL_20:
|
||||||
|
sub_2D4CC(v43);
|
||||||
|
sub_CA10(&v30);
|
||||||
|
return v7 != 2;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
v3 = sub_2CC98("java/lang/reflect/Executable");
|
||||||
|
a1[2] = v3;
|
||||||
|
if ( v3 )
|
||||||
|
{
|
||||||
|
sub_C8A4(&v30);
|
||||||
|
v4 = "java/lang/reflect/Executable";
|
||||||
|
goto LABEL_7;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
v7 = 2;
|
||||||
|
return v7 != 2;
|
||||||
|
}
|
||||||
@@ -0,0 +1,23 @@
|
|||||||
|
/*
|
||||||
|
* func-name: sub_165D4
|
||||||
|
* func-address: 0x165d4
|
||||||
|
* export-type: decompile
|
||||||
|
* callers: 0x15940
|
||||||
|
* callees: 0xcc84
|
||||||
|
*/
|
||||||
|
|
||||||
|
__int64 __fastcall sub_165D4(__int64 a1)
|
||||||
|
{
|
||||||
|
__int64 result; // x0
|
||||||
|
|
||||||
|
*(_BYTE *)(a1 + 24) = 0;
|
||||||
|
*(_QWORD *)(a1 + 32) = 0;
|
||||||
|
sub_CC84((_QWORD *)a1);
|
||||||
|
sub_CC84((_QWORD *)(a1 + 8));
|
||||||
|
sub_CC84((_QWORD *)(a1 + 80));
|
||||||
|
sub_CC84((_QWORD *)(a1 + 88));
|
||||||
|
sub_CC84((_QWORD *)(a1 + 96));
|
||||||
|
result = sub_CC84((_QWORD *)(a1 + 112));
|
||||||
|
*(_WORD *)(a1 + 122) = 0;
|
||||||
|
return result;
|
||||||
|
}
|
||||||
@@ -0,0 +1,184 @@
|
|||||||
|
/*
|
||||||
|
* func-name: sub_16628
|
||||||
|
* func-address: 0x16628
|
||||||
|
* export-type: decompile
|
||||||
|
* callers: 0x15940
|
||||||
|
* callees: 0xc8a4, 0xc8d8, 0xca10, 0xca28, 0xcc84, 0xccd0, 0xcd24, 0xce08, 0xcf74, 0xe7a0, 0xed30, 0xee70, 0xf188, 0x171dc, 0x174d4, 0x25408, 0x27358, 0x43f70, 0x44050, 0x44120, 0x441a0, 0x441c0, 0x44330
|
||||||
|
*/
|
||||||
|
|
||||||
|
__int64 __fastcall sub_16628(__int64 result, char *a2, char *a3, __int64 a4, __int64 *a5)
|
||||||
|
{
|
||||||
|
__int64 v7; // x23
|
||||||
|
__int64 v10; // x0
|
||||||
|
__int64 *v11; // x8
|
||||||
|
__int64 *v12; // x24
|
||||||
|
const char *v13; // x0
|
||||||
|
__int64 v14; // x8
|
||||||
|
__int64 *v15; // x25
|
||||||
|
__int64 v16; // x8
|
||||||
|
__int64 v17; // x9
|
||||||
|
__int64 v18; // x11
|
||||||
|
unsigned __int64 *v19; // x12
|
||||||
|
unsigned __int64 v20; // x10
|
||||||
|
__int64 v21; // x24
|
||||||
|
int v22; // w8
|
||||||
|
char *v23; // x0
|
||||||
|
char *v24; // x25
|
||||||
|
unsigned __int8 *v25; // x25
|
||||||
|
int v26; // w0
|
||||||
|
__int64 v27; // x27
|
||||||
|
__int64 v28; // x25
|
||||||
|
unsigned __int8 *v29; // [xsp+8h] [xbp-C8h] BYREF
|
||||||
|
__int64 v30; // [xsp+10h] [xbp-C0h] BYREF
|
||||||
|
__int64 v31; // [xsp+18h] [xbp-B8h] BYREF
|
||||||
|
char *save_ptr; // [xsp+20h] [xbp-B0h] BYREF
|
||||||
|
size_t v33; // [xsp+28h] [xbp-A8h] BYREF
|
||||||
|
__int64 v34; // [xsp+30h] [xbp-A0h]
|
||||||
|
__int64 v35; // [xsp+38h] [xbp-98h]
|
||||||
|
__int16 v36; // [xsp+40h] [xbp-90h]
|
||||||
|
__int128 v37; // [xsp+48h] [xbp-88h]
|
||||||
|
__int128 v38; // [xsp+58h] [xbp-78h]
|
||||||
|
__int128 v39; // [xsp+68h] [xbp-68h]
|
||||||
|
__int64 v40; // [xsp+78h] [xbp-58h] BYREF
|
||||||
|
__int128 v41; // [xsp+80h] [xbp-50h]
|
||||||
|
__int64 v42; // [xsp+90h] [xbp-40h] BYREF
|
||||||
|
__int64 v43; // [xsp+98h] [xbp-38h] BYREF
|
||||||
|
__int64 v44; // [xsp+A0h] [xbp-30h] BYREF
|
||||||
|
_QWORD data[5]; // [xsp+A8h] [xbp-28h] BYREF
|
||||||
|
|
||||||
|
data[4] = *(_QWORD *)(_ReadStatusReg(TPIDR_EL0) + 40);
|
||||||
|
if ( !a2 || (a3 == nullptr) != (*a2 == 0) || a3 == nullptr && *a2 == 0 || !*a3 )
|
||||||
|
return result;
|
||||||
|
v7 = result;
|
||||||
|
v43 = 0;
|
||||||
|
v44 = 0;
|
||||||
|
v10 = sub_C8A4(&v42);
|
||||||
|
data[0] = a2;
|
||||||
|
data[1] = &v44;
|
||||||
|
data[2] = &v43;
|
||||||
|
data[3] = &v42;
|
||||||
|
if ( &dl_iterate_phdr && (int)sub_25408(v10) >= 23 )
|
||||||
|
dl_iterate_phdr((int (*)(struct dl_phdr_info *, size_t, void *))sub_170B0, data);
|
||||||
|
if ( v44 )
|
||||||
|
{
|
||||||
|
LABEL_27:
|
||||||
|
v21 = v42;
|
||||||
|
v34 = 0;
|
||||||
|
v35 = 0;
|
||||||
|
v33 = 0;
|
||||||
|
v36 = 0;
|
||||||
|
v37 = 0u;
|
||||||
|
v38 = 0u;
|
||||||
|
v39 = 0u;
|
||||||
|
sub_C8A4(&v40);
|
||||||
|
v41 = 0u;
|
||||||
|
sub_E7A0((__int64)&v33, v21);
|
||||||
|
if ( v34 )
|
||||||
|
{
|
||||||
|
v22 = *(unsigned __int16 *)(v34 + 18);
|
||||||
|
*(_WORD *)(a4 + 122) = v22;
|
||||||
|
if ( v22 )
|
||||||
|
{
|
||||||
|
sub_CCD0((_QWORD *)(a4 + 112), &v40);
|
||||||
|
*(_OWORD *)(a4 + 64) = v41;
|
||||||
|
sub_CD24((__int64 *)a4, a2);
|
||||||
|
v23 = strtok_r(a3, "#", &save_ptr);
|
||||||
|
if ( v23 )
|
||||||
|
{
|
||||||
|
v24 = v23;
|
||||||
|
do
|
||||||
|
{
|
||||||
|
v30 = 0;
|
||||||
|
v31 = 0;
|
||||||
|
if ( (sub_EE70((__int64)&v33, v43, v24, &v31, &v30) & 1) != 0 && v31 )
|
||||||
|
{
|
||||||
|
sub_CC84((_QWORD *)(a4 + 96));
|
||||||
|
if ( v30 )
|
||||||
|
sub_171DC(v30, *(_QWORD *)(a4 + 104), a4 + 96);
|
||||||
|
*(_QWORD *)(a4 + 32) = v31;
|
||||||
|
sub_CD24((__int64 *)(a4 + 8), v24);
|
||||||
|
sub_C8D8(&v29, (_QWORD *)a4);
|
||||||
|
sub_CF74((__int64 *)&v29, ":");
|
||||||
|
sub_CE08((__int64 *)&v29, (const void **)(a4 + 8));
|
||||||
|
v25 = v29;
|
||||||
|
v26 = sub_CA28(&v29);
|
||||||
|
*(_QWORD *)(a4 + 16) = sub_F188(v25, v26, 0);
|
||||||
|
v27 = *a5;
|
||||||
|
v28 = operator new(0x90u);
|
||||||
|
sub_174D4(v28, a4);
|
||||||
|
*(_QWORD *)(v28 + 136) = v27;
|
||||||
|
*(_QWORD *)(v28 + 128) = *(_QWORD *)(v27 + 128);
|
||||||
|
*(_QWORD *)(*(_QWORD *)(v27 + 128) + 136LL) = v28;
|
||||||
|
*(_QWORD *)(v27 + 128) = v28;
|
||||||
|
sub_CA10(&v29);
|
||||||
|
}
|
||||||
|
v24 = strtok_r(nullptr, "#", &save_ptr);
|
||||||
|
}
|
||||||
|
while ( v24 );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
*(_WORD *)(a4 + 122) = 0;
|
||||||
|
}
|
||||||
|
sub_ED30(&v33);
|
||||||
|
return sub_CA10(&v42);
|
||||||
|
}
|
||||||
|
v11 = *(__int64 **)(v7 + 8);
|
||||||
|
v12 = (__int64 *)v11[9];
|
||||||
|
while ( v12 != v11 )
|
||||||
|
{
|
||||||
|
if ( !*((_BYTE *)v12 + 56) )
|
||||||
|
{
|
||||||
|
v14 = v12[8];
|
||||||
|
v15 = (__int64 *)v12[9];
|
||||||
|
*(_QWORD *)(v14 + 72) = v15;
|
||||||
|
v15[8] = v14;
|
||||||
|
sub_CA10(v12 + 6);
|
||||||
|
operator delete(v12);
|
||||||
|
v12 = v15;
|
||||||
|
goto LABEL_24;
|
||||||
|
}
|
||||||
|
v13 = (const char *)v12[6];
|
||||||
|
if ( *a2 == 47 )
|
||||||
|
{
|
||||||
|
if ( strcmp(v13, a2) )
|
||||||
|
goto LABEL_24;
|
||||||
|
}
|
||||||
|
else if ( (sub_27358(v13, a2) & 1) == 0 )
|
||||||
|
{
|
||||||
|
goto LABEL_24;
|
||||||
|
}
|
||||||
|
v16 = *v12;
|
||||||
|
v17 = *(unsigned __int16 *)(*v12 + 56);
|
||||||
|
if ( *(_WORD *)(*v12 + 56) )
|
||||||
|
{
|
||||||
|
v18 = 0;
|
||||||
|
v19 = (unsigned __int64 *)(*(_QWORD *)(v16 + 32) + v16 + 16);
|
||||||
|
v20 = -1;
|
||||||
|
do
|
||||||
|
{
|
||||||
|
if ( *((_DWORD *)v19 - 4) == 1 && v20 > *v19 )
|
||||||
|
v20 = *v19;
|
||||||
|
++v18;
|
||||||
|
--v17;
|
||||||
|
v19 += 7;
|
||||||
|
}
|
||||||
|
while ( v17 );
|
||||||
|
if ( v20 != -1 )
|
||||||
|
{
|
||||||
|
v43 = v16 - v20;
|
||||||
|
v44 = v16;
|
||||||
|
sub_CCD0(&v42, v12 + 6);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
LABEL_24:
|
||||||
|
v12 = (__int64 *)v12[9];
|
||||||
|
v11 = *(__int64 **)(v7 + 8);
|
||||||
|
}
|
||||||
|
if ( v44 )
|
||||||
|
goto LABEL_27;
|
||||||
|
return sub_CA10(&v42);
|
||||||
|
}
|
||||||
@@ -0,0 +1,117 @@
|
|||||||
|
/*
|
||||||
|
* func-name: sub_169F0
|
||||||
|
* func-address: 0x169f0
|
||||||
|
* export-type: decompile
|
||||||
|
* callers: 0x15940
|
||||||
|
* callees: 0xc8d8, 0xca10, 0xca28, 0xcd24, 0xce08, 0xcf74, 0xf188, 0x174d4, 0x2cad8, 0x2cd74, 0x2cdc0, 0x2d4cc, 0x2d5b0, 0x2d790, 0x2daa0, 0x2dc10, 0x43f70, 0x44050, 0x441c0
|
||||||
|
*/
|
||||||
|
|
||||||
|
_QWORD *__fastcall sub_169F0(_QWORD *result, char *a2, char *a3, char a4, __int64 *a5, __int64 *a6)
|
||||||
|
{
|
||||||
|
_QWORD *v6; // x22
|
||||||
|
char *v12; // x0
|
||||||
|
char *v13; // x27
|
||||||
|
__int64 v14; // x0
|
||||||
|
__int64 v15; // x0
|
||||||
|
__int64 v16; // x0
|
||||||
|
__int64 v17; // x0
|
||||||
|
__int64 v18; // x0
|
||||||
|
__int64 v19; // x0
|
||||||
|
__int64 v20; // x0
|
||||||
|
__int64 v21; // x28
|
||||||
|
unsigned __int8 *v22; // x27
|
||||||
|
int v23; // w0
|
||||||
|
__int64 v24; // x28
|
||||||
|
__int64 v25; // x27
|
||||||
|
__int64 v26; // [xsp+8h] [xbp-68h] BYREF
|
||||||
|
char *save_ptr; // [xsp+10h] [xbp-60h] BYREF
|
||||||
|
__int64 v28; // [xsp+18h] [xbp-58h] BYREF
|
||||||
|
__int64 v29[3]; // [xsp+20h] [xbp-50h] BYREF
|
||||||
|
_QWORD v30[3]; // [xsp+38h] [xbp-38h] BYREF
|
||||||
|
_QWORD v31[4]; // [xsp+50h] [xbp-20h] BYREF
|
||||||
|
|
||||||
|
v31[3] = *(_QWORD *)(_ReadStatusReg(TPIDR_EL0) + 40);
|
||||||
|
if ( (unsigned __int64)a2 | (unsigned __int64)a3 && (a2 == nullptr) == (a3 == nullptr) )
|
||||||
|
{
|
||||||
|
v6 = result;
|
||||||
|
sub_CD24(a5, a2);
|
||||||
|
sub_2DAA0(v31, a2);
|
||||||
|
if ( (sub_2CD74(v31) & 1) == 0 )
|
||||||
|
{
|
||||||
|
v12 = strtok_r(a3, "#", &save_ptr);
|
||||||
|
if ( v12 )
|
||||||
|
{
|
||||||
|
v13 = v12;
|
||||||
|
do
|
||||||
|
{
|
||||||
|
v26 = 0;
|
||||||
|
if ( (a4 & 1) != 0 )
|
||||||
|
v14 = sub_2DC10((int)v31, (int)&v26, v13);
|
||||||
|
else
|
||||||
|
v14 = sub_2D5B0((int)v31, (int)&v26, v13);
|
||||||
|
if ( !v26 )
|
||||||
|
goto LABEL_20;
|
||||||
|
v15 = sub_2CAD8(v14);
|
||||||
|
v16 = (*(__int64 (__fastcall **)(__int64, _QWORD, __int64, _QWORD))(*(_QWORD *)v15 + 72LL))(
|
||||||
|
v15,
|
||||||
|
v31[0],
|
||||||
|
v26,
|
||||||
|
a4 & 1);
|
||||||
|
sub_2CDC0(v30, v16, 0);
|
||||||
|
v17 = sub_2CD74(v30);
|
||||||
|
if ( (v17 & 1) == 0 )
|
||||||
|
{
|
||||||
|
v18 = sub_2CAD8(v17);
|
||||||
|
if ( (*(unsigned __int8 (__fastcall **)(__int64, _QWORD, _QWORD))(*(_QWORD *)v18 + 256LL))(
|
||||||
|
v18,
|
||||||
|
v30[0],
|
||||||
|
v6[2]) )
|
||||||
|
{
|
||||||
|
v19 = sub_2CDC0(v29, v30[0], 0);
|
||||||
|
if ( !v6[3] )
|
||||||
|
{
|
||||||
|
v20 = sub_2CAD8(v19);
|
||||||
|
v21 = (*(__int64 (__fastcall **)(__int64, __int64))(*(_QWORD *)v20 + 56LL))(v20, v29[0]);
|
||||||
|
goto LABEL_17;
|
||||||
|
}
|
||||||
|
if ( !(unsigned int)sub_2D790(v29, &v28) )
|
||||||
|
{
|
||||||
|
v21 = v28;
|
||||||
|
LABEL_17:
|
||||||
|
sub_2D4CC(v29);
|
||||||
|
if ( v21 )
|
||||||
|
{
|
||||||
|
a5[4] = *(_QWORD *)(v6[5] + v21);
|
||||||
|
sub_CD24(a5 + 1, v13);
|
||||||
|
sub_C8D8(v29, a5);
|
||||||
|
sub_CF74(v29, ":");
|
||||||
|
sub_CE08(v29, (const void **)a5 + 1);
|
||||||
|
v22 = (unsigned __int8 *)v29[0];
|
||||||
|
v23 = sub_CA28(v29);
|
||||||
|
a5[2] = sub_F188(v22, v23, 0);
|
||||||
|
v24 = *a6;
|
||||||
|
v25 = operator new(0x90u);
|
||||||
|
sub_174D4(v25, a5);
|
||||||
|
*(_QWORD *)(v25 + 136) = v24;
|
||||||
|
*(_QWORD *)(v25 + 128) = *(_QWORD *)(v24 + 128);
|
||||||
|
*(_QWORD *)(*(_QWORD *)(v24 + 128) + 136LL) = v25;
|
||||||
|
*(_QWORD *)(v24 + 128) = v25;
|
||||||
|
sub_CA10(v29);
|
||||||
|
}
|
||||||
|
goto LABEL_19;
|
||||||
|
}
|
||||||
|
sub_2D4CC(v29);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
LABEL_19:
|
||||||
|
sub_2D4CC(v30);
|
||||||
|
LABEL_20:
|
||||||
|
v13 = strtok_r(nullptr, "#", &save_ptr);
|
||||||
|
}
|
||||||
|
while ( v13 );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return (_QWORD *)sub_2D4CC(v31);
|
||||||
|
}
|
||||||
|
return result;
|
||||||
|
}
|
||||||
@@ -0,0 +1,84 @@
|
|||||||
|
/*
|
||||||
|
* func-name: sub_16C74
|
||||||
|
* func-address: 0x16c74
|
||||||
|
* export-type: decompile
|
||||||
|
* callers: 0x15940
|
||||||
|
* callees: 0xccd0, 0x171dc
|
||||||
|
*/
|
||||||
|
|
||||||
|
__int64 __fastcall sub_16C74(__int64 result, __int64 *a2)
|
||||||
|
{
|
||||||
|
__int64 v2; // x8
|
||||||
|
__int64 v4; // x9
|
||||||
|
__int64 v5; // x22
|
||||||
|
__int64 v6; // x23
|
||||||
|
__int64 i; // x26
|
||||||
|
unsigned __int64 v8; // x9
|
||||||
|
int v9; // w9
|
||||||
|
__int64 v10; // x0
|
||||||
|
unsigned __int64 v11; // x1
|
||||||
|
unsigned __int64 v12; // x8
|
||||||
|
__int64 v13; // x8
|
||||||
|
unsigned __int64 v14; // x9
|
||||||
|
_QWORD *v15; // [xsp+8h] [xbp-8h]
|
||||||
|
|
||||||
|
v2 = *a2;
|
||||||
|
v15 = (_QWORD *)result;
|
||||||
|
v4 = *(_QWORD *)(*a2 + 136);
|
||||||
|
if ( v4 == *a2 )
|
||||||
|
{
|
||||||
|
v5 = 0;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
v5 = 0;
|
||||||
|
do
|
||||||
|
{
|
||||||
|
v4 = *(_QWORD *)(v4 + 136);
|
||||||
|
++v5;
|
||||||
|
}
|
||||||
|
while ( v4 != v2 );
|
||||||
|
}
|
||||||
|
v6 = *(_QWORD *)(*(_QWORD *)result + 72LL);
|
||||||
|
if ( v6 != *(_QWORD *)result )
|
||||||
|
{
|
||||||
|
do
|
||||||
|
{
|
||||||
|
for ( i = *(_QWORD *)(v2 + 136); i != v2; i = *(_QWORD *)(i + 136) )
|
||||||
|
{
|
||||||
|
if ( !*(_BYTE *)(i + 24) )
|
||||||
|
{
|
||||||
|
v8 = *(_QWORD *)(i + 32);
|
||||||
|
if ( *(_QWORD *)v6 <= v8 && v8 < *(_QWORD *)(v6 + 8) )
|
||||||
|
{
|
||||||
|
v9 = *(_DWORD *)(v6 + 16);
|
||||||
|
v10 = *(_QWORD *)(i + 32);
|
||||||
|
*(_BYTE *)(i + 44) = *(_BYTE *)(v6 + 20);
|
||||||
|
v11 = *(_QWORD *)(i + 104);
|
||||||
|
*(_DWORD *)(i + 40) = v9;
|
||||||
|
v12 = *(_QWORD *)(v6 + 8) - v10;
|
||||||
|
if ( v12 < v11 )
|
||||||
|
{
|
||||||
|
v11 = *(_QWORD *)(v6 + 8) - v10;
|
||||||
|
*(_QWORD *)(i + 104) = v12;
|
||||||
|
}
|
||||||
|
sub_171DC(v10, v11, i + 88);
|
||||||
|
result = sub_CCD0((_QWORD *)(i + 80), (_QWORD *)(v6 + 48));
|
||||||
|
--v5;
|
||||||
|
*(_QWORD *)(i + 56) = *(_QWORD *)(v6 + 32);
|
||||||
|
v13 = *(unsigned __int16 *)(v6 + 40);
|
||||||
|
*(_BYTE *)(i + 24) = 1;
|
||||||
|
v14 = bswap64(v13 << 48);
|
||||||
|
v2 = *a2;
|
||||||
|
*(_QWORD *)(i + 48) = v14;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if ( !v5 )
|
||||||
|
break;
|
||||||
|
v6 = *(_QWORD *)(v6 + 72);
|
||||||
|
}
|
||||||
|
while ( v6 != *v15 );
|
||||||
|
}
|
||||||
|
return result;
|
||||||
|
}
|
||||||
@@ -0,0 +1,14 @@
|
|||||||
|
/*
|
||||||
|
* func-name: sub_16E34
|
||||||
|
* func-address: 0x16e34
|
||||||
|
* export-type: decompile
|
||||||
|
* callers: 0x15940
|
||||||
|
* callees: 0x17430
|
||||||
|
*/
|
||||||
|
|
||||||
|
void __fastcall sub_16E34(void **a1)
|
||||||
|
{
|
||||||
|
sub_17430();
|
||||||
|
if ( *a1 )
|
||||||
|
operator delete[](*a1);
|
||||||
|
}
|
||||||
@@ -0,0 +1,20 @@
|
|||||||
|
/*
|
||||||
|
* func-name: sub_16E68
|
||||||
|
* func-address: 0x16e68
|
||||||
|
* export-type: decompile
|
||||||
|
* callers: 0x15940
|
||||||
|
* callees: 0x172fc, 0x2cad8
|
||||||
|
*/
|
||||||
|
|
||||||
|
__int64 __fastcall sub_16E68(__int64 a1)
|
||||||
|
{
|
||||||
|
__int64 v2; // x0
|
||||||
|
|
||||||
|
if ( *(_QWORD *)(a1 + 16) )
|
||||||
|
{
|
||||||
|
v2 = sub_2CAD8(a1);
|
||||||
|
(*(void (__fastcall **)(__int64, _QWORD))(*(_QWORD *)v2 + 176LL))(v2, *(_QWORD *)(a1 + 16));
|
||||||
|
}
|
||||||
|
sub_172FC(a1 + 8);
|
||||||
|
return sub_172FC(a1);
|
||||||
|
}
|
||||||
@@ -0,0 +1,27 @@
|
|||||||
|
/*
|
||||||
|
* func-name: sub_16EAC
|
||||||
|
* func-address: 0x16eac
|
||||||
|
* export-type: decompile
|
||||||
|
* callers: 0x15f7c
|
||||||
|
* callees: 0x2cad8, 0x2d790, 0x43f70
|
||||||
|
*/
|
||||||
|
|
||||||
|
__int64 __fastcall sub_16EAC(__int64 a1, _QWORD *a2)
|
||||||
|
{
|
||||||
|
__int64 v4; // x0
|
||||||
|
_QWORD v5[2]; // [xsp+0h] [xbp-10h] BYREF
|
||||||
|
|
||||||
|
v5[1] = *(_QWORD *)(_ReadStatusReg(TPIDR_EL0) + 40);
|
||||||
|
if ( *(_QWORD *)(a1 + 24) )
|
||||||
|
{
|
||||||
|
if ( (unsigned int)sub_2D790(a2, v5) )
|
||||||
|
return 0;
|
||||||
|
else
|
||||||
|
return v5[0];
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
v4 = sub_2CAD8(a1);
|
||||||
|
return (*(__int64 (__fastcall **)(__int64, _QWORD))(*(_QWORD *)v4 + 56LL))(v4, *a2);
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,60 @@
|
|||||||
|
/*
|
||||||
|
* func-name: sub_16F34
|
||||||
|
* func-address: 0x16f34
|
||||||
|
* export-type: decompile
|
||||||
|
* callers: 0x15f7c
|
||||||
|
* callees: 0x2cad8, 0x2cd0c, 0x2cd74, 0x2cdc0, 0x2d4cc, 0x2d724, 0x2d7fc, 0x2d9cc, 0x43f70
|
||||||
|
*/
|
||||||
|
|
||||||
|
__int64 __fastcall sub_16F34(__int64 a1, __int64 a2, __int64 a3)
|
||||||
|
{
|
||||||
|
__int64 v4; // x20
|
||||||
|
__int64 v5; // x0
|
||||||
|
unsigned int v6; // w20
|
||||||
|
__int64 v7; // x0
|
||||||
|
__int64 v8; // x0
|
||||||
|
unsigned int v10; // [xsp+Ch] [xbp-44h] BYREF
|
||||||
|
__int64 v11; // [xsp+10h] [xbp-40h] BYREF
|
||||||
|
_BYTE v12[24]; // [xsp+18h] [xbp-38h] BYREF
|
||||||
|
_BYTE v13[24]; // [xsp+30h] [xbp-20h] BYREF
|
||||||
|
__int64 v14; // [xsp+48h] [xbp-8h]
|
||||||
|
|
||||||
|
v14 = *(_QWORD *)(_ReadStatusReg(TPIDR_EL0) + 40);
|
||||||
|
v4 = *(_QWORD *)(a1 + 8);
|
||||||
|
v5 = sub_2D9CC(*(_QWORD *)a1, &v11, a2, a3);
|
||||||
|
if ( (_DWORD)v5 )
|
||||||
|
{
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
v7 = sub_2CAD8(v5);
|
||||||
|
v8 = (*(__int64 (__fastcall **)(__int64, _QWORD, __int64, _QWORD))(*(_QWORD *)v7 + 96LL))(
|
||||||
|
v7,
|
||||||
|
*(_QWORD *)(v4 + 16),
|
||||||
|
v11,
|
||||||
|
0);
|
||||||
|
sub_2CDC0(v13, v8, 1);
|
||||||
|
v6 = 0;
|
||||||
|
if ( (sub_2CD74(v13) & 1) == 0 )
|
||||||
|
{
|
||||||
|
sub_2CD0C(v12);
|
||||||
|
sub_2D7FC(v13, v12, **(_QWORD **)(a1 + 16));
|
||||||
|
if ( (sub_2CD74(v12) & 1) != 0 )
|
||||||
|
{
|
||||||
|
v6 = 0;
|
||||||
|
}
|
||||||
|
else if ( (unsigned int)sub_2D724(v12, &v10, **(_QWORD **)(a1 + 24)) )
|
||||||
|
{
|
||||||
|
v6 = 0;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
v6 = v10;
|
||||||
|
}
|
||||||
|
sub_2D4CC(v12);
|
||||||
|
}
|
||||||
|
sub_2D4CC(v13);
|
||||||
|
}
|
||||||
|
return v6;
|
||||||
|
}
|
||||||
@@ -0,0 +1,39 @@
|
|||||||
|
/*
|
||||||
|
* func-name: sub_17040
|
||||||
|
* func-address: 0x17040
|
||||||
|
* export-type: decompile
|
||||||
|
* callers: 0x15f7c
|
||||||
|
* callees: 0xc8d8, 0x44050
|
||||||
|
*/
|
||||||
|
|
||||||
|
__int64 __fastcall sub_17040(__int64 *a1, __int64 a2)
|
||||||
|
{
|
||||||
|
__int64 v2; // x21
|
||||||
|
__int64 v4; // x0
|
||||||
|
__int128 v5; // q1
|
||||||
|
__int64 v6; // x20
|
||||||
|
__int128 v7; // q2
|
||||||
|
__int64 result; // x0
|
||||||
|
__int64 v9; // x8
|
||||||
|
char v10; // w9
|
||||||
|
__int64 v11; // x8
|
||||||
|
|
||||||
|
v2 = *a1;
|
||||||
|
v4 = operator new(0x50u);
|
||||||
|
v5 = *(_OWORD *)(a2 + 16);
|
||||||
|
v6 = v4;
|
||||||
|
v7 = *(_OWORD *)(a2 + 26);
|
||||||
|
*(_OWORD *)v4 = *(_OWORD *)a2;
|
||||||
|
*(_OWORD *)(v4 + 16) = v5;
|
||||||
|
*(_OWORD *)(v4 + 26) = v7;
|
||||||
|
result = sub_C8D8((_QWORD *)(v4 + 48), (_QWORD *)(a2 + 48));
|
||||||
|
v9 = *(_QWORD *)(v2 + 64);
|
||||||
|
*(_QWORD *)(v6 + 72) = v2;
|
||||||
|
v10 = *(_BYTE *)(a2 + 56);
|
||||||
|
*(_QWORD *)(v6 + 64) = v9;
|
||||||
|
v11 = *(_QWORD *)(v2 + 64);
|
||||||
|
*(_BYTE *)(v6 + 56) = v10;
|
||||||
|
*(_QWORD *)(v2 + 64) = v6;
|
||||||
|
*(_QWORD *)(v11 + 72) = v6;
|
||||||
|
return result;
|
||||||
|
}
|
||||||
@@ -0,0 +1,79 @@
|
|||||||
|
/*
|
||||||
|
* func-name: sub_170B0
|
||||||
|
* func-address: 0x170b0
|
||||||
|
* export-type: decompile
|
||||||
|
* callers: 0x16628
|
||||||
|
* callees: 0xcd24, 0x27358, 0x44120, 0x442c0
|
||||||
|
*/
|
||||||
|
|
||||||
|
const char *__fastcall sub_170B0(__int64 *a1, __int64 a2, __int64 a3)
|
||||||
|
{
|
||||||
|
const char *result; // x0
|
||||||
|
__int64 v5; // x23
|
||||||
|
unsigned int v6; // w24
|
||||||
|
const char *v7; // x1
|
||||||
|
_QWORD *v8; // x21
|
||||||
|
__int64 *v9; // x20
|
||||||
|
_QWORD *v10; // x22
|
||||||
|
__int64 v11; // x8
|
||||||
|
__int64 v12; // x9
|
||||||
|
unsigned __int64 *v13; // x10
|
||||||
|
unsigned __int64 v14; // x23
|
||||||
|
char *v15; // x1
|
||||||
|
__int64 v16; // x19
|
||||||
|
|
||||||
|
if ( !*a1 )
|
||||||
|
return nullptr;
|
||||||
|
result = (const char *)a1[1];
|
||||||
|
if ( !result )
|
||||||
|
return result;
|
||||||
|
if ( *result != 47 )
|
||||||
|
return nullptr;
|
||||||
|
v5 = a1[2];
|
||||||
|
if ( !v5 )
|
||||||
|
return nullptr;
|
||||||
|
v6 = *((unsigned __int16 *)a1 + 12);
|
||||||
|
if ( !*((_WORD *)a1 + 12) )
|
||||||
|
return nullptr;
|
||||||
|
v7 = *(const char **)a3;
|
||||||
|
v8 = *(_QWORD **)(a3 + 8);
|
||||||
|
v10 = *(_QWORD **)(a3 + 16);
|
||||||
|
v9 = *(__int64 **)(a3 + 24);
|
||||||
|
if ( **(_BYTE **)a3 == 47 )
|
||||||
|
{
|
||||||
|
if ( strcmp(result, v7) )
|
||||||
|
return nullptr;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if ( (sub_27358(result, v7) & 1) == 0 )
|
||||||
|
return nullptr;
|
||||||
|
v6 = *((unsigned __int16 *)a1 + 12);
|
||||||
|
if ( !*((_WORD *)a1 + 12) )
|
||||||
|
return nullptr;
|
||||||
|
v5 = a1[2];
|
||||||
|
}
|
||||||
|
v11 = 0;
|
||||||
|
v12 = v6;
|
||||||
|
v13 = (unsigned __int64 *)(v5 + 16);
|
||||||
|
v14 = -1;
|
||||||
|
do
|
||||||
|
{
|
||||||
|
if ( *((_DWORD *)v13 - 4) == 1 && v14 > *v13 )
|
||||||
|
v14 = *v13;
|
||||||
|
++v11;
|
||||||
|
--v12;
|
||||||
|
v13 += 7;
|
||||||
|
}
|
||||||
|
while ( v12 );
|
||||||
|
if ( v14 != -1 )
|
||||||
|
{
|
||||||
|
v15 = (char *)a1[1];
|
||||||
|
*v10 = *a1;
|
||||||
|
sub_CD24(v9, v15);
|
||||||
|
v16 = *a1;
|
||||||
|
*v8 = (v14 & ~(-getpagesize() ^ v14)) + v16;
|
||||||
|
return (_BYTE *)(&dword_0 + 1);
|
||||||
|
}
|
||||||
|
return nullptr;
|
||||||
|
}
|
||||||
@@ -0,0 +1,57 @@
|
|||||||
|
/*
|
||||||
|
* func-name: sub_171DC
|
||||||
|
* func-address: 0x171dc
|
||||||
|
* export-type: decompile
|
||||||
|
* callers: 0x16628, 0x16c74
|
||||||
|
* callees: 0xcc84, 0xd068, 0xd0a8, 0x1738c, 0x43f70, 0x44040, 0x44340, 0x44350, 0x44360
|
||||||
|
*/
|
||||||
|
|
||||||
|
__int64 __fastcall sub_171DC(const void *a1, size_t a2, __int64 *a3)
|
||||||
|
{
|
||||||
|
__int64 result; // x0
|
||||||
|
__int64 v7; // x21
|
||||||
|
__int64 v8; // x0
|
||||||
|
__int64 v9; // x22
|
||||||
|
int v10; // w24
|
||||||
|
__int64 v11; // x25
|
||||||
|
__int16 buf; // [xsp+Ch] [xbp-14h] BYREF
|
||||||
|
int pipedes[2]; // [xsp+10h] [xbp-10h] BYREF
|
||||||
|
__int64 v14; // [xsp+18h] [xbp-8h]
|
||||||
|
|
||||||
|
v14 = *(_QWORD *)(_ReadStatusReg(TPIDR_EL0) + 40);
|
||||||
|
result = pipe2(pipedes, 2048);
|
||||||
|
if ( (_DWORD)result != -1 )
|
||||||
|
{
|
||||||
|
if ( write(pipedes[1], a1, a2) == a2 )
|
||||||
|
{
|
||||||
|
v7 = 2 * a2;
|
||||||
|
buf = 0;
|
||||||
|
v8 = sub_D068(a3);
|
||||||
|
if ( a2 )
|
||||||
|
{
|
||||||
|
v9 = v8;
|
||||||
|
v10 = 0;
|
||||||
|
v11 = 0;
|
||||||
|
while ( read(pipedes[0], &buf, 1u) == 1 )
|
||||||
|
{
|
||||||
|
sub_1738C(v9 + v10, -1);
|
||||||
|
++v11;
|
||||||
|
--a2;
|
||||||
|
v10 += 2;
|
||||||
|
if ( !a2 )
|
||||||
|
goto LABEL_7;
|
||||||
|
}
|
||||||
|
((void (__fastcall *)(__int64 *, __int64))loc_D0D4)(a3, v7);
|
||||||
|
sub_CC84(a3);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
LABEL_7:
|
||||||
|
((void (__fastcall *)(__int64 *, __int64))loc_D0D4)(a3, v7);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
close(pipedes[0]);
|
||||||
|
return close(pipedes[1]);
|
||||||
|
}
|
||||||
|
return result;
|
||||||
|
}
|
||||||
@@ -0,0 +1,14 @@
|
|||||||
|
/*
|
||||||
|
* func-name: sub_172FC
|
||||||
|
* func-address: 0x172fc
|
||||||
|
* export-type: decompile
|
||||||
|
* callers: 0x16e68
|
||||||
|
* callees: 0x17330
|
||||||
|
*/
|
||||||
|
|
||||||
|
void __fastcall sub_172FC(void **a1)
|
||||||
|
{
|
||||||
|
sub_17330();
|
||||||
|
if ( *a1 )
|
||||||
|
operator delete[](*a1);
|
||||||
|
}
|
||||||
@@ -0,0 +1,29 @@
|
|||||||
|
/*
|
||||||
|
* func-name: sub_17330
|
||||||
|
* func-address: 0x17330
|
||||||
|
* export-type: decompile
|
||||||
|
* callers: 0x172fc
|
||||||
|
* callees: 0xca10, 0x441a0
|
||||||
|
*/
|
||||||
|
|
||||||
|
void __fastcall sub_17330(__int64 a1)
|
||||||
|
{
|
||||||
|
_QWORD *v1; // x21
|
||||||
|
_QWORD *v2; // x20
|
||||||
|
|
||||||
|
v1 = *(_QWORD **)a1;
|
||||||
|
v2 = *(_QWORD **)(*(_QWORD *)a1 + 72LL);
|
||||||
|
if ( v2 != *(_QWORD **)a1 )
|
||||||
|
{
|
||||||
|
do
|
||||||
|
{
|
||||||
|
v1 = (_QWORD *)v2[9];
|
||||||
|
sub_CA10(v2 + 6);
|
||||||
|
operator delete(v2);
|
||||||
|
v2 = v1;
|
||||||
|
}
|
||||||
|
while ( v1 != *(_QWORD **)a1 );
|
||||||
|
}
|
||||||
|
v1[8] = v1;
|
||||||
|
v1[9] = v1;
|
||||||
|
}
|
||||||
@@ -0,0 +1,19 @@
|
|||||||
|
/*
|
||||||
|
* func-name: sub_1738C
|
||||||
|
* func-address: 0x1738c
|
||||||
|
* export-type: decompile
|
||||||
|
* callers: 0x171dc
|
||||||
|
* callees: 0x43f70, 0x44140
|
||||||
|
*/
|
||||||
|
|
||||||
|
__int64 sub_1738C(__int64 a1, __int64 a2, __int64 a3, ...)
|
||||||
|
{
|
||||||
|
gcc_va_list va1; // [xsp+B0h] [xbp-50h] BYREF
|
||||||
|
gcc_va_list va; // [xsp+D8h] [xbp-28h] BYREF
|
||||||
|
__int64 v6; // [xsp+F8h] [xbp-8h]
|
||||||
|
|
||||||
|
va_start(va, a3);
|
||||||
|
v6 = *(_QWORD *)(_ReadStatusReg(TPIDR_EL0) + 40);
|
||||||
|
va_copy(va1, va);
|
||||||
|
return __vsprintf_chk(a1, 0, a2, "%02X", (unsigned int)va1);
|
||||||
|
}
|
||||||
@@ -0,0 +1,29 @@
|
|||||||
|
/*
|
||||||
|
* func-name: sub_17430
|
||||||
|
* func-address: 0x17430
|
||||||
|
* export-type: decompile
|
||||||
|
* callers: 0x16e34
|
||||||
|
* callees: 0x1748c, 0x441a0
|
||||||
|
*/
|
||||||
|
|
||||||
|
void __fastcall sub_17430(__int64 a1)
|
||||||
|
{
|
||||||
|
_QWORD *v1; // x21
|
||||||
|
_QWORD *v2; // x20
|
||||||
|
|
||||||
|
v1 = *(_QWORD **)a1;
|
||||||
|
v2 = *(_QWORD **)(*(_QWORD *)a1 + 136LL);
|
||||||
|
if ( v2 != *(_QWORD **)a1 )
|
||||||
|
{
|
||||||
|
do
|
||||||
|
{
|
||||||
|
v1 = (_QWORD *)v2[17];
|
||||||
|
sub_1748C(v2);
|
||||||
|
operator delete(v2);
|
||||||
|
v2 = v1;
|
||||||
|
}
|
||||||
|
while ( v1 != *(_QWORD **)a1 );
|
||||||
|
}
|
||||||
|
v1[16] = v1;
|
||||||
|
v1[17] = v1;
|
||||||
|
}
|
||||||
@@ -0,0 +1,17 @@
|
|||||||
|
/*
|
||||||
|
* func-name: sub_1748C
|
||||||
|
* func-address: 0x1748c
|
||||||
|
* export-type: decompile
|
||||||
|
* callers: 0x17430
|
||||||
|
* callees: 0xca10
|
||||||
|
*/
|
||||||
|
|
||||||
|
__int64 __fastcall sub_1748C(_QWORD *a1)
|
||||||
|
{
|
||||||
|
sub_CA10(a1 + 14);
|
||||||
|
sub_CA10(a1 + 12);
|
||||||
|
sub_CA10(a1 + 11);
|
||||||
|
sub_CA10(a1 + 10);
|
||||||
|
sub_CA10(a1 + 1);
|
||||||
|
return sub_CA10(a1);
|
||||||
|
}
|
||||||
@@ -0,0 +1,35 @@
|
|||||||
|
/*
|
||||||
|
* func-name: sub_174D4
|
||||||
|
* func-address: 0x174d4
|
||||||
|
* export-type: decompile
|
||||||
|
* callers: 0x16628, 0x169f0
|
||||||
|
* callees: 0xc8d8
|
||||||
|
*/
|
||||||
|
|
||||||
|
__int64 __fastcall sub_174D4(__int64 a1, __int64 a2)
|
||||||
|
{
|
||||||
|
__int128 v4; // q1
|
||||||
|
__int128 v5; // q2
|
||||||
|
__int128 v6; // q3
|
||||||
|
__int64 result; // x0
|
||||||
|
int v8; // w9
|
||||||
|
|
||||||
|
sub_C8D8((_QWORD *)a1, (_QWORD *)a2);
|
||||||
|
sub_C8D8((_QWORD *)(a1 + 8), (_QWORD *)(a2 + 8));
|
||||||
|
v4 = *(_OWORD *)(a2 + 64);
|
||||||
|
v5 = *(_OWORD *)(a2 + 16);
|
||||||
|
v6 = *(_OWORD *)(a2 + 32);
|
||||||
|
*(_OWORD *)(a1 + 48) = *(_OWORD *)(a2 + 48);
|
||||||
|
*(_OWORD *)(a1 + 64) = v4;
|
||||||
|
*(_OWORD *)(a1 + 16) = v5;
|
||||||
|
*(_OWORD *)(a1 + 32) = v6;
|
||||||
|
sub_C8D8((_QWORD *)(a1 + 80), (_QWORD *)(a2 + 80));
|
||||||
|
sub_C8D8((_QWORD *)(a1 + 88), (_QWORD *)(a2 + 88));
|
||||||
|
sub_C8D8((_QWORD *)(a1 + 96), (_QWORD *)(a2 + 96));
|
||||||
|
*(_QWORD *)(a1 + 104) = *(_QWORD *)(a2 + 104);
|
||||||
|
result = sub_C8D8((_QWORD *)(a1 + 112), (_QWORD *)(a2 + 112));
|
||||||
|
v8 = *(_DWORD *)(a2 + 120);
|
||||||
|
*(_BYTE *)(a1 + 124) = *(_BYTE *)(a2 + 124);
|
||||||
|
*(_DWORD *)(a1 + 120) = v8;
|
||||||
|
return result;
|
||||||
|
}
|
||||||
@@ -0,0 +1,12 @@
|
|||||||
|
/*
|
||||||
|
* func-name: sub_1755C
|
||||||
|
* func-address: 0x1755c
|
||||||
|
* export-type: decompile
|
||||||
|
* callers: 0x175e0
|
||||||
|
* callees: none
|
||||||
|
*/
|
||||||
|
|
||||||
|
__int64 __fastcall sub_1755C(__int64 a1, __int64 a2)
|
||||||
|
{
|
||||||
|
return sub_1C050(a2, *(_QWORD *)(a1 + 24), 0);
|
||||||
|
}
|
||||||
@@ -0,0 +1,12 @@
|
|||||||
|
/*
|
||||||
|
* func-name: sub_17570
|
||||||
|
* func-address: 0x17570
|
||||||
|
* export-type: decompile
|
||||||
|
* callers: 0x175e0
|
||||||
|
* callees: none
|
||||||
|
*/
|
||||||
|
|
||||||
|
__int64 __fastcall sub_17570(__int64 a1, __int64 a2)
|
||||||
|
{
|
||||||
|
return sub_1B6B8(a2, *(_QWORD *)(a1 + 24), 0, 1);
|
||||||
|
}
|
||||||
@@ -0,0 +1,22 @@
|
|||||||
|
/*
|
||||||
|
* func-name: sub_17588
|
||||||
|
* func-address: 0x17588
|
||||||
|
* export-type: decompile
|
||||||
|
* callers: 0x175e0, 0x1dcd4, 0x1ea24
|
||||||
|
* callees: 0x1a508, 0x43fe0
|
||||||
|
*/
|
||||||
|
|
||||||
|
void __fastcall sub_17588(void ***a1)
|
||||||
|
{
|
||||||
|
void **v2; // x0
|
||||||
|
|
||||||
|
v2 = *a1;
|
||||||
|
if ( v2[3] )
|
||||||
|
{
|
||||||
|
sub_1A508(v2 + 3);
|
||||||
|
v2 = *a1;
|
||||||
|
}
|
||||||
|
if ( !*v2 || (free(*v2), (v2 = *a1) != nullptr) )
|
||||||
|
free(v2);
|
||||||
|
*a1 = nullptr;
|
||||||
|
}
|
||||||
@@ -0,0 +1,35 @@
|
|||||||
|
/*
|
||||||
|
* func-name: sub_175E0
|
||||||
|
* func-address: 0x175e0
|
||||||
|
* export-type: decompile
|
||||||
|
* callers: 0x17694
|
||||||
|
* callees: 0x17588, 0x1a7a8, 0x43f70, 0x44370
|
||||||
|
*/
|
||||||
|
|
||||||
|
__int64 __fastcall sub_175E0(__int64 a1)
|
||||||
|
{
|
||||||
|
__int64 v2; // x0
|
||||||
|
_WORD *v3; // x9
|
||||||
|
int *v4; // x8
|
||||||
|
void **v6[2]; // [xsp+0h] [xbp-10h] BYREF
|
||||||
|
|
||||||
|
v6[1] = *(void ***)(_ReadStatusReg(TPIDR_EL0) + 40);
|
||||||
|
v6[0] = (void **)a1;
|
||||||
|
*(_QWORD *)a1 = calloc(1u, 2u);
|
||||||
|
*(_QWORD *)(a1 + 8) = sub_1755C;
|
||||||
|
*(_QWORD *)(a1 + 16) = sub_17570;
|
||||||
|
v2 = sub_1A7A8("string", "string");
|
||||||
|
v3 = *(_WORD **)a1;
|
||||||
|
*(_QWORD *)(a1 + 24) = v2;
|
||||||
|
if ( v3 && v2 )
|
||||||
|
{
|
||||||
|
v4 = &dword_574C;
|
||||||
|
*v3 = 116;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
sub_17588(v6);
|
||||||
|
v4 = &dword_5754;
|
||||||
|
}
|
||||||
|
return (unsigned int)*v4;
|
||||||
|
}
|
||||||
@@ -0,0 +1,24 @@
|
|||||||
|
/*
|
||||||
|
* func-name: sub_17694
|
||||||
|
* func-address: 0x17694
|
||||||
|
* export-type: decompile
|
||||||
|
* callers: 0x1dcd4, 0x1ea24
|
||||||
|
* callees: 0x175e0, 0x44370
|
||||||
|
*/
|
||||||
|
|
||||||
|
void *sub_17694()
|
||||||
|
{
|
||||||
|
void *result; // x0
|
||||||
|
void *v1; // x19
|
||||||
|
|
||||||
|
result = calloc(1u, 0x20u);
|
||||||
|
if ( result )
|
||||||
|
{
|
||||||
|
v1 = result;
|
||||||
|
if ( (unsigned int)sub_175E0((__int64)result) )
|
||||||
|
return nullptr;
|
||||||
|
else
|
||||||
|
return v1;
|
||||||
|
}
|
||||||
|
return result;
|
||||||
|
}
|
||||||
@@ -0,0 +1,57 @@
|
|||||||
|
/*
|
||||||
|
* func-name: sub_176D8
|
||||||
|
* func-address: 0x176d8
|
||||||
|
* export-type: decompile
|
||||||
|
* callers: 0x17ac4
|
||||||
|
* callees: 0x1a0bc, 0x1a0dc, 0x1a76c, 0x1be18, 0x1bf5c, 0x1c050, 0x1c27c, 0x44380
|
||||||
|
*/
|
||||||
|
|
||||||
|
__int64 __fastcall sub_176D8(_QWORD *a1, __int64 a2)
|
||||||
|
{
|
||||||
|
unsigned int v4; // w22
|
||||||
|
__int64 result; // x0
|
||||||
|
const char *v6; // x23
|
||||||
|
unsigned int v7; // w0
|
||||||
|
const char *v8; // x22
|
||||||
|
unsigned int v9; // w0
|
||||||
|
|
||||||
|
v4 = sub_1BE18(a2, a1[3], 0);
|
||||||
|
if ( v4 )
|
||||||
|
return v4;
|
||||||
|
result = sub_1C27C(a2, a1[4], 1);
|
||||||
|
if ( !(_DWORD)result )
|
||||||
|
{
|
||||||
|
result = sub_1C050(a2, a1[5], 2);
|
||||||
|
if ( !(_DWORD)result )
|
||||||
|
{
|
||||||
|
result = sub_1C27C(a2, a1[6], 3);
|
||||||
|
if ( !(_DWORD)result )
|
||||||
|
{
|
||||||
|
if ( !(unsigned int)sub_1A0BC(a1[7])
|
||||||
|
&& (v6 = (const char *)sub_1A0DC(a1[7]), v7 = sub_1A0BC(a1[7]), !strncmp(v6, (const char *)&unk_534B, v7))
|
||||||
|
|| (result = sub_1BF5C(a2, a1[7], 4), !(_DWORD)result) )
|
||||||
|
{
|
||||||
|
if ( (unsigned int)sub_1A76C(a1[8]) )
|
||||||
|
v4 = sub_1C050(a2, a1[8], 5);
|
||||||
|
if ( (unsigned int)sub_1A76C(a1[9]) )
|
||||||
|
v4 = sub_1C050(a2, a1[9], 6);
|
||||||
|
result = v4;
|
||||||
|
if ( !v4 )
|
||||||
|
{
|
||||||
|
if ( !(unsigned int)sub_1A0BC(a1[10]) )
|
||||||
|
{
|
||||||
|
v8 = (const char *)sub_1A0DC(a1[10]);
|
||||||
|
v9 = sub_1A0BC(a1[10]);
|
||||||
|
if ( !strncmp(v8, (const char *)&unk_534B, v9) )
|
||||||
|
return sub_1C27C(a2, a1[11], 8);
|
||||||
|
}
|
||||||
|
result = sub_1BF5C(a2, a1[10], 7);
|
||||||
|
if ( !(_DWORD)result )
|
||||||
|
return sub_1C27C(a2, a1[11], 8);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return result;
|
||||||
|
}
|
||||||
@@ -0,0 +1,45 @@
|
|||||||
|
/*
|
||||||
|
* func-name: sub_1788C
|
||||||
|
* func-address: 0x1788c
|
||||||
|
* export-type: decompile
|
||||||
|
* callers: 0x17ac4
|
||||||
|
* callees: 0x1b2dc, 0x1b4f4, 0x1b6b8, 0x1b9c8
|
||||||
|
*/
|
||||||
|
|
||||||
|
__int64 __fastcall sub_1788C(_QWORD *a1, __int64 a2)
|
||||||
|
{
|
||||||
|
__int64 result; // x0
|
||||||
|
|
||||||
|
result = sub_1B2DC(a2, a1 + 3, 0, 1);
|
||||||
|
if ( !(_DWORD)result )
|
||||||
|
{
|
||||||
|
result = sub_1B9C8(a2, a1[4], 1, 1);
|
||||||
|
if ( !(_DWORD)result )
|
||||||
|
{
|
||||||
|
result = sub_1B6B8(a2, a1[5], 2, 1);
|
||||||
|
if ( !(_DWORD)result )
|
||||||
|
{
|
||||||
|
result = sub_1B9C8(a2, a1[6], 3, 1);
|
||||||
|
if ( !(_DWORD)result )
|
||||||
|
{
|
||||||
|
result = sub_1B4F4(a2, a1[7], 4, 0);
|
||||||
|
if ( !(_DWORD)result )
|
||||||
|
{
|
||||||
|
result = sub_1B6B8(a2, a1[8], 5, 0);
|
||||||
|
if ( !(_DWORD)result )
|
||||||
|
{
|
||||||
|
result = sub_1B6B8(a2, a1[9], 6, 0);
|
||||||
|
if ( !(_DWORD)result )
|
||||||
|
{
|
||||||
|
result = sub_1B4F4(a2, a1[10], 7, 0);
|
||||||
|
if ( !(_DWORD)result )
|
||||||
|
return sub_1B9C8(a2, a1[11], 8, 0);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return result;
|
||||||
|
}
|
||||||
@@ -0,0 +1,57 @@
|
|||||||
|
/*
|
||||||
|
* func-name: sub_179C4
|
||||||
|
* func-address: 0x179c4
|
||||||
|
* export-type: decompile
|
||||||
|
* callers: 0x17ac4, 0x211e8, 0x43560
|
||||||
|
* callees: 0x17f70, 0x183dc, 0x18674, 0x19de0, 0x1a508, 0x43fe0
|
||||||
|
*/
|
||||||
|
|
||||||
|
void __fastcall sub_179C4(void ***a1)
|
||||||
|
{
|
||||||
|
void **v2; // x0
|
||||||
|
|
||||||
|
v2 = *a1;
|
||||||
|
if ( v2[4] )
|
||||||
|
{
|
||||||
|
sub_183DC(v2 + 4);
|
||||||
|
v2 = *a1;
|
||||||
|
}
|
||||||
|
if ( v2[5] )
|
||||||
|
{
|
||||||
|
sub_1A508(v2 + 5);
|
||||||
|
v2 = *a1;
|
||||||
|
}
|
||||||
|
if ( v2[6] )
|
||||||
|
{
|
||||||
|
sub_18674(v2 + 6);
|
||||||
|
v2 = *a1;
|
||||||
|
}
|
||||||
|
if ( v2[7] )
|
||||||
|
{
|
||||||
|
sub_19DE0(v2 + 7);
|
||||||
|
v2 = *a1;
|
||||||
|
}
|
||||||
|
if ( v2[8] )
|
||||||
|
{
|
||||||
|
sub_1A508(v2 + 8);
|
||||||
|
v2 = *a1;
|
||||||
|
}
|
||||||
|
if ( v2[9] )
|
||||||
|
{
|
||||||
|
sub_1A508(v2 + 9);
|
||||||
|
v2 = *a1;
|
||||||
|
}
|
||||||
|
if ( v2[10] )
|
||||||
|
{
|
||||||
|
sub_19DE0(v2 + 10);
|
||||||
|
v2 = *a1;
|
||||||
|
}
|
||||||
|
if ( v2[11] )
|
||||||
|
{
|
||||||
|
sub_17F70(v2 + 11);
|
||||||
|
v2 = *a1;
|
||||||
|
}
|
||||||
|
if ( !*v2 || (free(*v2), (v2 = *a1) != nullptr) )
|
||||||
|
free(v2);
|
||||||
|
*a1 = nullptr;
|
||||||
|
}
|
||||||
@@ -0,0 +1,65 @@
|
|||||||
|
/*
|
||||||
|
* func-name: sub_17AC4
|
||||||
|
* func-address: 0x17ac4
|
||||||
|
* export-type: decompile
|
||||||
|
* callers: 0x17c20
|
||||||
|
* callees: 0x179c4, 0x1821c, 0x18570, 0x187cc, 0x19f0c, 0x1a0e8, 0x1a7a8, 0x43f70, 0x44370
|
||||||
|
*/
|
||||||
|
|
||||||
|
__int64 __fastcall sub_17AC4(__int64 a1)
|
||||||
|
{
|
||||||
|
void *v2; // x0
|
||||||
|
__int64 v3; // x1
|
||||||
|
__int64 v4; // x0
|
||||||
|
__int64 v5; // x1
|
||||||
|
__int64 v6; // x0
|
||||||
|
__int64 v7; // x0
|
||||||
|
__int64 v8; // x0
|
||||||
|
__int64 v9; // x1
|
||||||
|
__int64 v10; // x0
|
||||||
|
_WORD *v11; // x8
|
||||||
|
int *v12; // x8
|
||||||
|
void **v14[2]; // [xsp+0h] [xbp-10h] BYREF
|
||||||
|
|
||||||
|
v14[1] = *(void ***)(_ReadStatusReg(TPIDR_EL0) + 40);
|
||||||
|
v14[0] = (void **)a1;
|
||||||
|
v2 = calloc(1u, 2u);
|
||||||
|
*(_QWORD *)(a1 + 16) = sub_1788C;
|
||||||
|
*(_QWORD *)(a1 + 24) = 0;
|
||||||
|
*(_QWORD *)a1 = v2;
|
||||||
|
*(_QWORD *)(a1 + 8) = sub_176D8;
|
||||||
|
*(_QWORD *)(a1 + 32) = sub_18570(v2, v3);
|
||||||
|
v4 = sub_1A7A8("int32", "string");
|
||||||
|
*(_QWORD *)(a1 + 40) = v4;
|
||||||
|
v6 = sub_187CC(v4, v5);
|
||||||
|
*(_QWORD *)(a1 + 48) = v6;
|
||||||
|
*(_QWORD *)(a1 + 56) = sub_1A0E8(v6);
|
||||||
|
*(_QWORD *)(a1 + 64) = sub_1A7A8("int32", "string");
|
||||||
|
v7 = sub_1A7A8("int32", "string");
|
||||||
|
*(_QWORD *)(a1 + 72) = v7;
|
||||||
|
v8 = sub_1A0E8(v7);
|
||||||
|
*(_QWORD *)(a1 + 80) = v8;
|
||||||
|
v10 = sub_1821C(v8, v9);
|
||||||
|
v11 = *(_WORD **)a1;
|
||||||
|
*(_QWORD *)(a1 + 88) = v10;
|
||||||
|
if ( v11
|
||||||
|
&& *(_QWORD *)(a1 + 32)
|
||||||
|
&& *(_QWORD *)(a1 + 40)
|
||||||
|
&& *(_QWORD *)(a1 + 48)
|
||||||
|
&& *(_QWORD *)(a1 + 56)
|
||||||
|
&& *(_QWORD *)(a1 + 64)
|
||||||
|
&& *(_QWORD *)(a1 + 72)
|
||||||
|
&& *(_QWORD *)(a1 + 80)
|
||||||
|
&& v10 )
|
||||||
|
{
|
||||||
|
*v11 = 114;
|
||||||
|
sub_19F0C(*(_QWORD *)(a1 + 56), &unk_534B, 0);
|
||||||
|
v12 = &dword_574C;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
sub_179C4(v14);
|
||||||
|
v12 = &dword_5754;
|
||||||
|
}
|
||||||
|
return (unsigned int)*v12;
|
||||||
|
}
|
||||||
@@ -0,0 +1,24 @@
|
|||||||
|
/*
|
||||||
|
* func-name: sub_17C20
|
||||||
|
* func-address: 0x17c20
|
||||||
|
* export-type: decompile
|
||||||
|
* callers: 0x211e8, 0x43618
|
||||||
|
* callees: 0x17ac4, 0x44370
|
||||||
|
*/
|
||||||
|
|
||||||
|
void *sub_17C20()
|
||||||
|
{
|
||||||
|
void *result; // x0
|
||||||
|
void *v1; // x19
|
||||||
|
|
||||||
|
result = calloc(1u, 0x60u);
|
||||||
|
if ( result )
|
||||||
|
{
|
||||||
|
v1 = result;
|
||||||
|
if ( (unsigned int)sub_17AC4((__int64)result) )
|
||||||
|
return nullptr;
|
||||||
|
else
|
||||||
|
return v1;
|
||||||
|
}
|
||||||
|
return result;
|
||||||
|
}
|
||||||
@@ -0,0 +1,66 @@
|
|||||||
|
/*
|
||||||
|
* func-name: sub_17C64
|
||||||
|
* func-address: 0x17c64
|
||||||
|
* export-type: decompile
|
||||||
|
* callers: 0x18070
|
||||||
|
* callees: 0x1a0bc, 0x1a0dc, 0x1a76c, 0x1bd78, 0x1bf5c, 0x44380
|
||||||
|
*/
|
||||||
|
|
||||||
|
__int64 __fastcall sub_17C64(__int64 a1, __int64 a2)
|
||||||
|
{
|
||||||
|
unsigned int v4; // w21
|
||||||
|
const char *v5; // x22
|
||||||
|
unsigned int v6; // w0
|
||||||
|
__int64 result; // x0
|
||||||
|
const char *v8; // x22
|
||||||
|
unsigned int v9; // w0
|
||||||
|
const char *v10; // x22
|
||||||
|
unsigned int v11; // w0
|
||||||
|
int v12; // w8
|
||||||
|
|
||||||
|
v4 = sub_1BF5C(a2, *(_QWORD *)(a1 + 24), 0);
|
||||||
|
if ( v4 )
|
||||||
|
return v4;
|
||||||
|
if ( !(unsigned int)sub_1A0BC(*(_QWORD *)(a1 + 32))
|
||||||
|
&& (v5 = (const char *)sub_1A0DC(*(_QWORD *)(a1 + 32)),
|
||||||
|
v6 = sub_1A0BC(*(_QWORD *)(a1 + 32)),
|
||||||
|
!strncmp(v5, (const char *)&unk_534B, v6))
|
||||||
|
|| (result = sub_1BF5C(a2, *(_QWORD *)(a1 + 32), 1), !(_DWORD)result) )
|
||||||
|
{
|
||||||
|
result = sub_1BF5C(a2, *(_QWORD *)(a1 + 40), 2);
|
||||||
|
if ( !(_DWORD)result )
|
||||||
|
{
|
||||||
|
result = sub_1BD78(a2, *(unsigned int *)(a1 + 48), 3);
|
||||||
|
if ( !(_DWORD)result )
|
||||||
|
{
|
||||||
|
result = sub_1BF5C(a2, *(_QWORD *)(a1 + 56), 4);
|
||||||
|
if ( !(_DWORD)result )
|
||||||
|
{
|
||||||
|
result = sub_1BF5C(a2, *(_QWORD *)(a1 + 64), 5);
|
||||||
|
if ( !(_DWORD)result )
|
||||||
|
{
|
||||||
|
if ( !(unsigned int)sub_1A0BC(*(_QWORD *)(a1 + 72))
|
||||||
|
&& (v8 = (const char *)sub_1A0DC(*(_QWORD *)(a1 + 72)),
|
||||||
|
v9 = sub_1A0BC(*(_QWORD *)(a1 + 72)),
|
||||||
|
!strncmp(v8, (const char *)&unk_534B, v9))
|
||||||
|
|| (result = sub_1BF5C(a2, *(_QWORD *)(a1 + 72), 6), !(_DWORD)result) )
|
||||||
|
{
|
||||||
|
if ( !(unsigned int)sub_1A0BC(*(_QWORD *)(a1 + 80))
|
||||||
|
&& (v10 = (const char *)sub_1A0DC(*(_QWORD *)(a1 + 80)),
|
||||||
|
v11 = sub_1A0BC(*(_QWORD *)(a1 + 80)),
|
||||||
|
!strncmp(v10, (const char *)&unk_534B, v11))
|
||||||
|
|| (result = sub_1BF5C(a2, *(_QWORD *)(a1 + 80), 7), !(_DWORD)result) )
|
||||||
|
{
|
||||||
|
v12 = sub_1A76C(*(_QWORD *)(a1 + 88));
|
||||||
|
result = 0;
|
||||||
|
if ( v12 )
|
||||||
|
return sub_1C050(a2, *(_QWORD *)(a1 + 88), 8);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return result;
|
||||||
|
}
|
||||||
@@ -0,0 +1,45 @@
|
|||||||
|
/*
|
||||||
|
* func-name: sub_17E38
|
||||||
|
* func-address: 0x17e38
|
||||||
|
* export-type: decompile
|
||||||
|
* callers: 0x18070
|
||||||
|
* callees: 0x1af14, 0x1b4f4
|
||||||
|
*/
|
||||||
|
|
||||||
|
__int64 __fastcall sub_17E38(_QWORD *a1, __int64 a2)
|
||||||
|
{
|
||||||
|
__int64 result; // x0
|
||||||
|
|
||||||
|
result = sub_1B4F4(a2, a1[3], 0, 1);
|
||||||
|
if ( !(_DWORD)result )
|
||||||
|
{
|
||||||
|
result = sub_1B4F4(a2, a1[4], 1, 0);
|
||||||
|
if ( !(_DWORD)result )
|
||||||
|
{
|
||||||
|
result = sub_1B4F4(a2, a1[5], 2, 1);
|
||||||
|
if ( !(_DWORD)result )
|
||||||
|
{
|
||||||
|
result = sub_1AF14(a2, a1 + 6, 3, 1);
|
||||||
|
if ( !(_DWORD)result )
|
||||||
|
{
|
||||||
|
result = sub_1B4F4(a2, a1[7], 4, 1);
|
||||||
|
if ( !(_DWORD)result )
|
||||||
|
{
|
||||||
|
result = sub_1B4F4(a2, a1[8], 5, 1);
|
||||||
|
if ( !(_DWORD)result )
|
||||||
|
{
|
||||||
|
result = sub_1B4F4(a2, a1[9], 6, 0);
|
||||||
|
if ( !(_DWORD)result )
|
||||||
|
{
|
||||||
|
result = sub_1B4F4(a2, a1[10], 7, 0);
|
||||||
|
if ( !(_DWORD)result )
|
||||||
|
return sub_1B6B8(a2, a1[11], 8, 0);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return result;
|
||||||
|
}
|
||||||
@@ -0,0 +1,57 @@
|
|||||||
|
/*
|
||||||
|
* func-name: sub_17F70
|
||||||
|
* func-address: 0x17f70
|
||||||
|
* export-type: decompile
|
||||||
|
* callers: 0x179c4, 0x18070, 0x18acc, 0x19028
|
||||||
|
* callees: 0x19de0, 0x1a508, 0x43fe0
|
||||||
|
*/
|
||||||
|
|
||||||
|
void __fastcall sub_17F70(void ***a1)
|
||||||
|
{
|
||||||
|
void **v2; // x0
|
||||||
|
|
||||||
|
v2 = *a1;
|
||||||
|
if ( v2[3] )
|
||||||
|
{
|
||||||
|
sub_19DE0(v2 + 3);
|
||||||
|
v2 = *a1;
|
||||||
|
}
|
||||||
|
if ( v2[4] )
|
||||||
|
{
|
||||||
|
sub_19DE0(v2 + 4);
|
||||||
|
v2 = *a1;
|
||||||
|
}
|
||||||
|
if ( v2[5] )
|
||||||
|
{
|
||||||
|
sub_19DE0(v2 + 5);
|
||||||
|
v2 = *a1;
|
||||||
|
}
|
||||||
|
if ( v2[7] )
|
||||||
|
{
|
||||||
|
sub_19DE0(v2 + 7);
|
||||||
|
v2 = *a1;
|
||||||
|
}
|
||||||
|
if ( v2[8] )
|
||||||
|
{
|
||||||
|
sub_19DE0(v2 + 8);
|
||||||
|
v2 = *a1;
|
||||||
|
}
|
||||||
|
if ( v2[9] )
|
||||||
|
{
|
||||||
|
sub_19DE0(v2 + 9);
|
||||||
|
v2 = *a1;
|
||||||
|
}
|
||||||
|
if ( v2[10] )
|
||||||
|
{
|
||||||
|
sub_19DE0(v2 + 10);
|
||||||
|
v2 = *a1;
|
||||||
|
}
|
||||||
|
if ( v2[11] )
|
||||||
|
{
|
||||||
|
sub_1A508(v2 + 11);
|
||||||
|
v2 = *a1;
|
||||||
|
}
|
||||||
|
if ( !*v2 || (free(*v2), (v2 = *a1) != nullptr) )
|
||||||
|
free(v2);
|
||||||
|
*a1 = nullptr;
|
||||||
|
}
|
||||||
@@ -0,0 +1,72 @@
|
|||||||
|
/*
|
||||||
|
* func-name: sub_18070
|
||||||
|
* func-address: 0x18070
|
||||||
|
* export-type: decompile
|
||||||
|
* callers: 0x1821c
|
||||||
|
* callees: 0x17f70, 0x19f0c, 0x1a0e8, 0x1a7a8, 0x43f70, 0x44370
|
||||||
|
*/
|
||||||
|
|
||||||
|
__int64 __fastcall sub_18070(__int64 a1)
|
||||||
|
{
|
||||||
|
void *v2; // x0
|
||||||
|
__int64 v3; // x0
|
||||||
|
__int64 v4; // x0
|
||||||
|
__int64 v5; // x0
|
||||||
|
__int64 v6; // x0
|
||||||
|
__int64 v7; // x0
|
||||||
|
__int64 v8; // x0
|
||||||
|
__int64 v9; // x0
|
||||||
|
_WORD *v10; // x8
|
||||||
|
int *v11; // x8
|
||||||
|
void **v13[2]; // [xsp+0h] [xbp-10h] BYREF
|
||||||
|
|
||||||
|
v13[1] = *(void ***)(_ReadStatusReg(TPIDR_EL0) + 40);
|
||||||
|
v13[0] = (void **)a1;
|
||||||
|
v2 = calloc(1u, 2u);
|
||||||
|
*(_QWORD *)a1 = v2;
|
||||||
|
*(_QWORD *)(a1 + 8) = sub_17C64;
|
||||||
|
*(_QWORD *)(a1 + 16) = sub_17E38;
|
||||||
|
v3 = sub_1A0E8(v2);
|
||||||
|
*(_QWORD *)(a1 + 24) = v3;
|
||||||
|
v4 = sub_1A0E8(v3);
|
||||||
|
*(_QWORD *)(a1 + 32) = v4;
|
||||||
|
v5 = sub_1A0E8(v4);
|
||||||
|
*(_DWORD *)(a1 + 48) = 0;
|
||||||
|
*(_QWORD *)(a1 + 40) = v5;
|
||||||
|
v6 = sub_1A0E8(v5);
|
||||||
|
*(_QWORD *)(a1 + 56) = v6;
|
||||||
|
v7 = sub_1A0E8(v6);
|
||||||
|
*(_QWORD *)(a1 + 64) = v7;
|
||||||
|
v8 = sub_1A0E8(v7);
|
||||||
|
*(_QWORD *)(a1 + 72) = v8;
|
||||||
|
*(_QWORD *)(a1 + 80) = sub_1A0E8(v8);
|
||||||
|
v9 = sub_1A7A8("int32", "string");
|
||||||
|
v10 = *(_WORD **)a1;
|
||||||
|
*(_QWORD *)(a1 + 88) = v9;
|
||||||
|
if ( v10
|
||||||
|
&& *(_QWORD *)(a1 + 24)
|
||||||
|
&& *(_QWORD *)(a1 + 32)
|
||||||
|
&& *(_QWORD *)(a1 + 40)
|
||||||
|
&& *(_QWORD *)(a1 + 56)
|
||||||
|
&& *(_QWORD *)(a1 + 64)
|
||||||
|
&& *(_QWORD *)(a1 + 72)
|
||||||
|
&& *(_QWORD *)(a1 + 80)
|
||||||
|
&& v9 )
|
||||||
|
{
|
||||||
|
*v10 = 97;
|
||||||
|
sub_19F0C(*(_QWORD *)(a1 + 24), &unk_534B, 0);
|
||||||
|
sub_19F0C(*(_QWORD *)(a1 + 32), &unk_534B, 0);
|
||||||
|
sub_19F0C(*(_QWORD *)(a1 + 40), &unk_534B, 0);
|
||||||
|
sub_19F0C(*(_QWORD *)(a1 + 56), &unk_534B, 0);
|
||||||
|
sub_19F0C(*(_QWORD *)(a1 + 64), &unk_534B, 0);
|
||||||
|
sub_19F0C(*(_QWORD *)(a1 + 72), &unk_534B, 0);
|
||||||
|
sub_19F0C(*(_QWORD *)(a1 + 80), &unk_534B, 0);
|
||||||
|
v11 = &dword_574C;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
sub_17F70(v13);
|
||||||
|
v11 = &dword_5754;
|
||||||
|
}
|
||||||
|
return (unsigned int)*v11;
|
||||||
|
}
|
||||||
@@ -0,0 +1,24 @@
|
|||||||
|
/*
|
||||||
|
* func-name: sub_1821C
|
||||||
|
* func-address: 0x1821c
|
||||||
|
* export-type: decompile
|
||||||
|
* callers: 0x17ac4, 0x18bcc, 0x190c8
|
||||||
|
* callees: 0x18070, 0x44370
|
||||||
|
*/
|
||||||
|
|
||||||
|
void *sub_1821C()
|
||||||
|
{
|
||||||
|
void *result; // x0
|
||||||
|
void *v1; // x19
|
||||||
|
|
||||||
|
result = calloc(1u, 0x60u);
|
||||||
|
if ( result )
|
||||||
|
{
|
||||||
|
v1 = result;
|
||||||
|
if ( (unsigned int)sub_18070((__int64)result) )
|
||||||
|
return nullptr;
|
||||||
|
else
|
||||||
|
return v1;
|
||||||
|
}
|
||||||
|
return result;
|
||||||
|
}
|
||||||
@@ -0,0 +1,29 @@
|
|||||||
|
/*
|
||||||
|
* func-name: sub_18260
|
||||||
|
* func-address: 0x18260
|
||||||
|
* export-type: decompile
|
||||||
|
* callers: 0x18464
|
||||||
|
* callees: 0x1bd78, 0x1bf5c
|
||||||
|
*/
|
||||||
|
|
||||||
|
__int64 __fastcall sub_18260(__int64 a1, __int64 a2)
|
||||||
|
{
|
||||||
|
__int64 result; // x0
|
||||||
|
|
||||||
|
result = sub_1BD78(a2, *(unsigned int *)(a1 + 24), 0);
|
||||||
|
if ( !(_DWORD)result )
|
||||||
|
{
|
||||||
|
result = sub_1BF5C(a2, *(_QWORD *)(a1 + 32), 1);
|
||||||
|
if ( !(_DWORD)result )
|
||||||
|
{
|
||||||
|
result = sub_1BF5C(a2, *(_QWORD *)(a1 + 40), 2);
|
||||||
|
if ( !(_DWORD)result )
|
||||||
|
{
|
||||||
|
result = sub_1BF5C(a2, *(_QWORD *)(a1 + 48), 3);
|
||||||
|
if ( !(_DWORD)result )
|
||||||
|
return sub_1BD78(a2, *(unsigned int *)(a1 + 56), 4);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return result;
|
||||||
|
}
|
||||||
@@ -0,0 +1,29 @@
|
|||||||
|
/*
|
||||||
|
* func-name: sub_18314
|
||||||
|
* func-address: 0x18314
|
||||||
|
* export-type: decompile
|
||||||
|
* callers: 0x18464
|
||||||
|
* callees: 0x1af14, 0x1b4f4
|
||||||
|
*/
|
||||||
|
|
||||||
|
__int64 __fastcall sub_18314(_QWORD *a1, __int64 a2)
|
||||||
|
{
|
||||||
|
__int64 result; // x0
|
||||||
|
|
||||||
|
result = sub_1AF14(a2, a1 + 3, 0, 1);
|
||||||
|
if ( !(_DWORD)result )
|
||||||
|
{
|
||||||
|
result = sub_1B4F4(a2, a1[4], 1, 1);
|
||||||
|
if ( !(_DWORD)result )
|
||||||
|
{
|
||||||
|
result = sub_1B4F4(a2, a1[5], 2, 1);
|
||||||
|
if ( !(_DWORD)result )
|
||||||
|
{
|
||||||
|
result = sub_1B4F4(a2, a1[6], 3, 1);
|
||||||
|
if ( !(_DWORD)result )
|
||||||
|
return sub_1AF14(a2, a1 + 7, 4, 1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return result;
|
||||||
|
}
|
||||||
@@ -0,0 +1,32 @@
|
|||||||
|
/*
|
||||||
|
* func-name: sub_183DC
|
||||||
|
* func-address: 0x183dc
|
||||||
|
* export-type: decompile
|
||||||
|
* callers: 0x179c4, 0x18464, 0x18acc
|
||||||
|
* callees: 0x19de0, 0x43fe0
|
||||||
|
*/
|
||||||
|
|
||||||
|
void __fastcall sub_183DC(void ***a1)
|
||||||
|
{
|
||||||
|
void **v2; // x0
|
||||||
|
|
||||||
|
v2 = *a1;
|
||||||
|
if ( v2[4] )
|
||||||
|
{
|
||||||
|
sub_19DE0(v2 + 4);
|
||||||
|
v2 = *a1;
|
||||||
|
}
|
||||||
|
if ( v2[5] )
|
||||||
|
{
|
||||||
|
sub_19DE0(v2 + 5);
|
||||||
|
v2 = *a1;
|
||||||
|
}
|
||||||
|
if ( v2[6] )
|
||||||
|
{
|
||||||
|
sub_19DE0(v2 + 6);
|
||||||
|
v2 = *a1;
|
||||||
|
}
|
||||||
|
if ( !*v2 || (free(*v2), (v2 = *a1) != nullptr) )
|
||||||
|
free(v2);
|
||||||
|
*a1 = nullptr;
|
||||||
|
}
|
||||||
@@ -0,0 +1,47 @@
|
|||||||
|
/*
|
||||||
|
* func-name: sub_18464
|
||||||
|
* func-address: 0x18464
|
||||||
|
* export-type: decompile
|
||||||
|
* callers: 0x18570
|
||||||
|
* callees: 0x183dc, 0x19f0c, 0x1a0e8, 0x43f70, 0x44370
|
||||||
|
*/
|
||||||
|
|
||||||
|
__int64 __fastcall sub_18464(__int64 a1)
|
||||||
|
{
|
||||||
|
void *v2; // x0
|
||||||
|
__int64 v3; // x0
|
||||||
|
__int64 v4; // x0
|
||||||
|
__int64 v5; // x0
|
||||||
|
_WORD *v6; // x8
|
||||||
|
int *v7; // x8
|
||||||
|
void **v9[2]; // [xsp+0h] [xbp-10h] BYREF
|
||||||
|
|
||||||
|
v9[1] = *(void ***)(_ReadStatusReg(TPIDR_EL0) + 40);
|
||||||
|
v9[0] = (void **)a1;
|
||||||
|
v2 = calloc(1u, 2u);
|
||||||
|
*(_DWORD *)(a1 + 24) = 0;
|
||||||
|
*(_QWORD *)a1 = v2;
|
||||||
|
*(_QWORD *)(a1 + 8) = sub_18260;
|
||||||
|
*(_QWORD *)(a1 + 16) = sub_18314;
|
||||||
|
v3 = sub_1A0E8(v2);
|
||||||
|
*(_QWORD *)(a1 + 32) = v3;
|
||||||
|
v4 = sub_1A0E8(v3);
|
||||||
|
*(_QWORD *)(a1 + 40) = v4;
|
||||||
|
v5 = sub_1A0E8(v4);
|
||||||
|
v6 = *(_WORD **)a1;
|
||||||
|
*(_QWORD *)(a1 + 48) = v5;
|
||||||
|
if ( v6 && *(_QWORD *)(a1 + 32) && *(_QWORD *)(a1 + 40) && v5 )
|
||||||
|
{
|
||||||
|
*v6 = 98;
|
||||||
|
sub_19F0C(*(_QWORD *)(a1 + 32), &unk_534B, 0);
|
||||||
|
sub_19F0C(*(_QWORD *)(a1 + 40), &unk_534B, 0);
|
||||||
|
sub_19F0C(*(_QWORD *)(a1 + 48), &unk_534B, 0);
|
||||||
|
v7 = &dword_574C;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
sub_183DC(v9);
|
||||||
|
v7 = &dword_5754;
|
||||||
|
}
|
||||||
|
return (unsigned int)*v7;
|
||||||
|
}
|
||||||
@@ -0,0 +1,24 @@
|
|||||||
|
/*
|
||||||
|
* func-name: sub_18570
|
||||||
|
* func-address: 0x18570
|
||||||
|
* export-type: decompile
|
||||||
|
* callers: 0x17ac4, 0x18bcc
|
||||||
|
* callees: 0x18464, 0x44370
|
||||||
|
*/
|
||||||
|
|
||||||
|
void *sub_18570()
|
||||||
|
{
|
||||||
|
void *result; // x0
|
||||||
|
void *v1; // x19
|
||||||
|
|
||||||
|
result = calloc(1u, 0x40u);
|
||||||
|
if ( result )
|
||||||
|
{
|
||||||
|
v1 = result;
|
||||||
|
if ( (unsigned int)sub_18464((__int64)result) )
|
||||||
|
return nullptr;
|
||||||
|
else
|
||||||
|
return v1;
|
||||||
|
}
|
||||||
|
return result;
|
||||||
|
}
|
||||||
@@ -0,0 +1,17 @@
|
|||||||
|
/*
|
||||||
|
* func-name: sub_185B4
|
||||||
|
* func-address: 0x185b4
|
||||||
|
* export-type: decompile
|
||||||
|
* callers: 0x186e4
|
||||||
|
* callees: 0x1bf5c
|
||||||
|
*/
|
||||||
|
|
||||||
|
__int64 __fastcall sub_185B4(__int64 a1, __int64 a2)
|
||||||
|
{
|
||||||
|
__int64 result; // x0
|
||||||
|
|
||||||
|
result = sub_1BF5C(a2, *(_QWORD *)(a1 + 24), 0);
|
||||||
|
if ( !(_DWORD)result )
|
||||||
|
return sub_1BF5C(a2, *(_QWORD *)(a1 + 32), 1);
|
||||||
|
return result;
|
||||||
|
}
|
||||||
@@ -0,0 +1,17 @@
|
|||||||
|
/*
|
||||||
|
* func-name: sub_18610
|
||||||
|
* func-address: 0x18610
|
||||||
|
* export-type: decompile
|
||||||
|
* callers: 0x186e4
|
||||||
|
* callees: 0x1b4f4
|
||||||
|
*/
|
||||||
|
|
||||||
|
__int64 __fastcall sub_18610(__int64 a1, __int64 a2)
|
||||||
|
{
|
||||||
|
__int64 result; // x0
|
||||||
|
|
||||||
|
result = sub_1B4F4(a2, *(_QWORD *)(a1 + 24), 0, 1);
|
||||||
|
if ( !(_DWORD)result )
|
||||||
|
return sub_1B4F4(a2, *(_QWORD *)(a1 + 32), 1, 1);
|
||||||
|
return result;
|
||||||
|
}
|
||||||
@@ -0,0 +1,27 @@
|
|||||||
|
/*
|
||||||
|
* func-name: sub_18674
|
||||||
|
* func-address: 0x18674
|
||||||
|
* export-type: decompile
|
||||||
|
* callers: 0x179c4, 0x186e4, 0x18acc
|
||||||
|
* callees: 0x19de0, 0x43fe0
|
||||||
|
*/
|
||||||
|
|
||||||
|
void __fastcall sub_18674(void ***a1)
|
||||||
|
{
|
||||||
|
void **v2; // x0
|
||||||
|
|
||||||
|
v2 = *a1;
|
||||||
|
if ( v2[3] )
|
||||||
|
{
|
||||||
|
sub_19DE0(v2 + 3);
|
||||||
|
v2 = *a1;
|
||||||
|
}
|
||||||
|
if ( v2[4] )
|
||||||
|
{
|
||||||
|
sub_19DE0(v2 + 4);
|
||||||
|
v2 = *a1;
|
||||||
|
}
|
||||||
|
if ( !*v2 || (free(*v2), (v2 = *a1) != nullptr) )
|
||||||
|
free(v2);
|
||||||
|
*a1 = nullptr;
|
||||||
|
}
|
||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user