Diff
checker
文本
文本
图像
文档
Excel
文件夹
Legal
Enterprise
桌面版
定价
登录
下载 Diffchecker 桌面版
比较文本
查找两个文本文件之间的差异
工具
历史
实时编辑器
隐藏空白更改
折叠未更改行
关闭换行
视图
拆分
统一
比对精度
智能
单词
字符
文本样式
更改外观
语法高亮
选择语法
忽略
文本转换
转到第一个差异
编辑输入
Diffchecker Desktop
运行Diffchecker最安全的方式。获取Diffchecker桌面应用:您的差异永远不会离开您的电脑!
获取桌面版
Untitled diff
创建于
8年前
差异永不过期
清除
导出
分享
解释
35 删除
行
总计
删除
字符
总计
删除
要继续使用此功能,请升级到
Diff
checker
Pro
查看价格
213 行
全部复制
38 添加
行
总计
添加
字符
总计
添加
要继续使用此功能,请升级到
Diff
checker
Pro
查看价格
215 行
全部复制
__int64 __usercall si_pmu_set_lpoclk@<rax>(char a1@<al>, __int64 a2@<rdi>, __int64 a3@<rsi>, char a4)
__int64 __usercall si_pmu_set_lpoclk@<rax>(char a1@<al>, __int64 a2@<rdi>, __int64 a3@<rsi>, char a4)
{
{
__int64 v4; // rbx
__int64 v4; // rbx
__int64 v5; // r14
__int64 v5; // r14
__int64 result; // rax
__int64 result; // rax
int v7; // er13
int v7; // er13
int v8; // er15
int v8; // er15
bool v9; // zf
bool v9; // zf
__int64 v10; // r15
__int64 v10; // r15
__int64 v11; // rsi
__int64 v11; // rsi
int v12; // ecx
int v12; // ecx
__int64 v13; // r15
__int64 v13; // r15
__int64 v14; // rsi
__int64 v14; // rsi
__int64 v15; // rax
__int64 v15; // rax
__int64 v16; // rax
__int64 v16; // rax
unsigned int v17; // ebx
unsigned int v17; // ebx
__int64 v18; // rsi
__int64 v18; // rsi
__int64 v19; // rdi
__int64 v19; // rdi
__int64 v20; // rax
__int64 v20; // rax
__int64 v21; // rax
__int64 v21; // rax
int v22; // eax
int v22; // eax
__int64 v23; // rsi
__int64 v23; // rsi
__int64 v24; // rdi
__int64 v24; // rdi
__int64 v25; // rax
__int64 v25; // rax
unsigned int v26; // ebx
unsigned int v26; // ebx
__int64 v27; // rsi
__int64 v27; // rsi
__int64 v28; // rdi
__int64 v28; // rdi
__int64 v29; // rax
__int64 v29; // rax
复制
已复制
复制
已复制
int v3
0
; // eax
char v30; // ST00_1
signed __int64 v3
1
; // rdx
int v3
1
; // eax
__int64 v3
2
; // rax
signed __int64 v3
2
; // rdx
unsigned int v3
3
; // ebx
__int64 v3
3
; // rax
__int64 v3
4
; // rsi
unsigned int v3
4
; // ebx
__int64 v3
5
; // rdi
__int64 v3
5
; // rsi
__int64 v3
6
; // rax
__int64 v3
6
; // rdi
char v3
7
; // [rsp-8h] [rbp-30h]
__int64 v3
7
; // rax
char v3
8
; // [rsp-8h] [rbp-30h]
复制
已复制
复制
已复制
v3
7
= a1;
v3
8
= a1;
v4 = a3;
v4 = a3;
v5 = a2;
v5 = a2;
result = getintvar(*(_QWORD *)(a2 + 184), "boardflags3");
result = getintvar(*(_QWORD *)(a2 + 184), "boardflags3");
if ( (_DWORD)result )
if ( (_DWORD)result )
{
{
v7 = getintvar(*(_QWORD *)(a2 + 184), "boardflags3");
v7 = getintvar(*(_QWORD *)(a2 + 184), "boardflags3");
v8 = getintvar(*(_QWORD *)(a2 + 184), "boardflags3");
v8 = getintvar(*(_QWORD *)(a2 + 184), "boardflags3");
result = getintvar(*(_QWORD *)(a2 + 184), "boardflags3");
result = getintvar(*(_QWORD *)(a2 + 184), "boardflags3");
if ( v7 & 0x8000000 )
if ( v7 & 0x8000000 )
{
{
v12 = *(_DWORD *)(a2 + 60);
v12 = *(_DWORD *)(a2 + 60);
if ( v12 != 43602 && v12 != 43462 )
if ( v12 != 43602 && v12 != 43462 )
{
{
si_pmu_chipcontrol(a2, 0LL, 0x200000LL, 0x200000LL);
si_pmu_chipcontrol(a2, 0LL, 0x200000LL, 0x200000LL);
si_gci_chipcontrol(a2, 6LL, 2LL, 2LL);
si_gci_chipcontrol(a2, 6LL, 2LL, 2LL);
}
}
else
else
{
{
si_pmu_chipcontrol(a2, 2LL, 0x40000000LL, ~(32 * (_DWORD)result) & 0x40000000);
si_pmu_chipcontrol(a2, 2LL, 0x40000000LL, ~(32 * (_DWORD)result) & 0x40000000);
}
}
v13 = a3;
v13 = a3;
if ( *(_DWORD *)(a2 + 20) >= 35 && *(_BYTE *)(a2 + 28) & 0x40 )
if ( *(_DWORD *)(a2 + 20) >= 35 && *(_BYTE *)(a2 + 28) & 0x40 )
v14 = (unsigned int)si_findcoreidx(a2, 2087LL, 0LL);
v14 = (unsigned int)si_findcoreidx(a2, 2087LL, 0LL);
else
else
v14 = 0LL;
v14 = 0LL;
v15 = si_corereg_addr(a2, v14, 1544LL);
v15 = si_corereg_addr(a2, v14, 1544LL);
v16 = read_bpt_reg(v4, v15, 4LL);
v16 = read_bpt_reg(v4, v15, 4LL);
if ( !(v16 & 0x100) )
if ( !(v16 & 0x100) )
{
{
v17 = 0;
v17 = 0;
do
do
{
{
IODelay(1000LL);
IODelay(1000LL);
if ( *(_DWORD *)(v5 + 20) >= 35 && *(_BYTE *)(v5 + 28) & 0x40 )
if ( *(_DWORD *)(v5 + 20) >= 35 && *(_BYTE *)(v5 + 28) & 0x40 )
{
{
v19 = v5;
v19 = v5;
v18 = (unsigned int)si_findcoreidx(v5, 2087LL, 0LL);
v18 = (unsigned int)si_findcoreidx(v5, 2087LL, 0LL);
}
}
else
else
{
{
v18 = 0LL;
v18 = 0LL;
v19 = v5;
v19 = v5;
}
}
v20 = si_corereg_addr(v19, v18, 1544LL);
v20 = si_corereg_addr(v19, v18, 1544LL);
v21 = read_bpt_reg(v13, v20, 4LL);
v21 = read_bpt_reg(v13, v20, 4LL);
++v17;
++v17;
}
}
while ( !(v21 & 0x100) && v17 < 0x3E8 );
while ( !(v21 & 0x100) && v17 < 0x3E8 );
if ( v17 >= 0x3E8 )
if ( v17 >= 0x3E8 )
{
{
osl_wificc_logDebug((unsigned __int64)"External LPO is not available\n");
osl_wificc_logDebug((unsigned __int64)"External LPO is not available\n");
return osl_printf("External LPO is not available\n", a4);
return osl_printf("External LPO is not available\n", a4);
}
}
}
}
IODelay(1000LL);
IODelay(1000LL);
v22 = *(_DWORD *)(v5 + 60);
v22 = *(_DWORD *)(v5 + 60);
if ( v22 != 43602 && v22 != 43462 )
if ( v22 != 43602 && v22 != 43462 )
{
{
si_gci_chipcontrol(v5, 6LL, 8LL, 8LL);
si_gci_chipcontrol(v5, 6LL, 8LL, 8LL);
si_gci_chipcontrol(v5, 6LL, 4LL, 0LL);
si_gci_chipcontrol(v5, 6LL, 4LL, 0LL);
IODelay(1000LL);
IODelay(1000LL);
if ( *(_DWORD *)(v5 + 20) >= 35 && *(_BYTE *)(v5 + 28) & 0x40 )
if ( *(_DWORD *)(v5 + 20) >= 35 && *(_BYTE *)(v5 + 28) & 0x40 )
{
{
v24 = v5;
v24 = v5;
v23 = (unsigned int)si_findcoreidx(v5, 2087LL, 0LL);
v23 = (unsigned int)si_findcoreidx(v5, 2087LL, 0LL);
}
}
else
else
{
{
v23 = 0LL;
v23 = 0LL;
v24 = v5;
v24 = v5;
}
}
v25 = si_corereg_addr(v24, v23, 1536LL);
v25 = si_corereg_addr(v24, v23, 1536LL);
if ( read_bpt_reg(v13, v25, 4LL) & 1 )
if ( read_bpt_reg(v13, v25, 4LL) & 1 )
{
{
v26 = 0;
v26 = 0;
do
do
{
{
IODelay(1000LL);
IODelay(1000LL);
if ( *(_DWORD *)(v5 + 20) >= 35 && *(_BYTE *)(v5 + 28) & 0x40 )
if ( *(_DWORD *)(v5 + 20) >= 35 && *(_BYTE *)(v5 + 28) & 0x40 )
{
{
v28 = v5;
v28 = v5;
v27 = (unsigned int)si_findcoreidx(v5, 2087LL, 0LL);
v27 = (unsigned int)si_findcoreidx(v5, 2087LL, 0LL);
}
}
else
else
{
{
v27 = 0LL;
v27 = 0LL;
v28 = v5;
v28 = v5;
}
}
v29 = si_corereg_addr(v28, v27, 1536LL);
v29 = si_corereg_addr(v28, v27, 1536LL);
++v26;
++v26;
}
}
while ( read_bpt_reg(v13, v29, 4LL) & 1 && v26 < 0x3E8 );
while ( read_bpt_reg(v13, v29, 4LL) & 1 && v26 < 0x3E8 );
if ( v26 >= 0x3E8 )
if ( v26 >= 0x3E8 )
{
{
osl_wificc_logDebug((unsigned __int64)"External LPO is not set\n");
osl_wificc_logDebug((unsigned __int64)"External LPO is not set\n");
复制
已复制
复制
已复制
osl_printf("External LPO is not set\n", v3
7
);
osl_printf("External LPO is not set\n", v3
8);
v3
0
= *(_DWORD *)(v5 + 60);
osl_panic("32KHz LPO Clock not running", v30
);
if ( v3
0
== 43602 || v3
0
== 43462 )
v3
1
= *(_DWORD *)(v5 + 60);
if ( v3
1
== 43602 || v3
1
== 43462 )
return si_pmu_chipcontrol(v5, 2LL, 0x80000LL, 0LL);
return si_pmu_chipcontrol(v5, 2LL, 0x80000LL, 0LL);
复制
已复制
复制
已复制
v3
1
= 8LL;
v3
2
= 8LL;
return si_gci_chipcontrol(v5, 6LL, v3
1
, 0LL);
return si_gci_chipcontrol(v5, 6LL, v3
2
, 0LL);
}
}
}
}
}
}
else
else
{
{
si_pmu_chipcontrol(v5, 2LL, 0x80000LL, 0x80000LL);
si_pmu_chipcontrol(v5, 2LL, 0x80000LL, 0x80000LL);
}
}
result = *(unsigned int *)(v5 + 60);
result = *(unsigned int *)(v5 + 60);
if ( (_DWORD)result != 43462 && (_DWORD)result != 43602 )
if ( (_DWORD)result != 43462 && (_DWORD)result != 43602 )
{
{
si_pmu_chipcontrol(v5, 0LL, 0x100000LL, 0LL);
si_pmu_chipcontrol(v5, 0LL, 0x100000LL, 0LL);
复制
已复制
复制
已复制
v3
1
= 1LL;
v3
2
= 1LL;
return si_gci_chipcontrol(v5, 6LL, v3
1
, 0LL);
return si_gci_chipcontrol(v5, 6LL, v3
2
, 0LL);
}
}
}
}
else
else
{
{
v9 = (v8 & 0x4000000) == 0;
v9 = (v8 & 0x4000000) == 0;
v10 = a3;
v10 = a3;
if ( !v9 )
if ( !v9 )
{
{
result = *(unsigned int *)(a2 + 60);
result = *(unsigned int *)(a2 + 60);
if ( (_DWORD)result != 43462 && (_DWORD)result != 43602 )
if ( (_DWORD)result != 43462 && (_DWORD)result != 43602 )
{
{
si_pmu_chipcontrol(a2, 0LL, 0x100000LL, 0x100000LL);
si_pmu_chipcontrol(a2, 0LL, 0x100000LL, 0x100000LL);
si_gci_chipcontrol(a2, 6LL, 1LL, 1LL);
si_gci_chipcontrol(a2, 6LL, 1LL, 1LL);
IODelay(1000LL);
IODelay(1000LL);
si_gci_chipcontrol(a2, 6LL, 4LL, 4LL);
si_gci_chipcontrol(a2, 6LL, 4LL, 4LL);
si_gci_chipcontrol(a2, 6LL, 8LL, 0LL);
si_gci_chipcontrol(a2, 6LL, 8LL, 0LL);
IODelay(1000LL);
IODelay(1000LL);
if ( *(_DWORD *)(a2 + 20) >= 35 && *(_BYTE *)(a2 + 28) & 0x40 )
if ( *(_DWORD *)(a2 + 20) >= 35 && *(_BYTE *)(a2 + 28) & 0x40 )
v11 = (unsigned int)si_findcoreidx(a2, 2087LL, 0LL);
v11 = (unsigned int)si_findcoreidx(a2, 2087LL, 0LL);
else
else
v11 = 0LL;
v11 = 0LL;
复制
已复制
复制
已复制
v3
2
= si_corereg_addr(a2, v11, 1536LL);
v3
3
= si_corereg_addr(a2, v11, 1536LL);
if ( read_bpt_reg(v4, v3
2
, 4LL) & 1 )
if ( read_bpt_reg(v4, v3
3
, 4LL) & 1 )
goto LABEL_66;
goto LABEL_66;
复制
已复制
复制
已复制
v3
3
= 0;
v3
4
= 0;
do
do
{
{
IODelay(1000LL);
IODelay(1000LL);
if ( *(_DWORD *)(v5 + 20) >= 35 && *(_BYTE *)(v5 + 28) & 0x40 )
if ( *(_DWORD *)(v5 + 20) >= 35 && *(_BYTE *)(v5 + 28) & 0x40 )
{
{
复制
已复制
复制
已复制
v3
5
= v5;
v3
6
= v5;
v3
4
= (unsigned int)si_findcoreidx(v5, 2087LL, 0LL);
v3
5
= (unsigned int)si_findcoreidx(v5, 2087LL, 0LL);
}
}
else
else
{
{
复制
已复制
复制
已复制
v3
4
= 0LL;
v3
5
= 0LL;
v3
5
= v5;
v3
6
= v5;
}
}
复制
已复制
复制
已复制
v3
6
= si_corereg_addr(v3
5
, v3
4
, 1536LL);
v3
7
= si_corereg_addr(v3
6
, v3
5
, 1536LL);
++v3
3
;
++v3
4
;
}
}
复制
已复制
复制
已复制
while ( !(read_bpt_reg(v10, v3
6
, 4LL) & 1) && v3
3
< 0x3E8 );
while ( !(read_bpt_reg(v10, v3
7
, 4LL) & 1) && v3
4
< 0x3E8 );
if ( v3
3
< 0x3E8 )
if ( v3
4
< 0x3E8 )
{
{
LABEL_66:
LABEL_66:
si_pmu_chipcontrol(v5, 0LL, 0x200000LL, 0LL);
si_pmu_chipcontrol(v5, 0LL, 0x200000LL, 0LL);
复制
已复制
复制
已复制
v3
1
= 2LL;
v3
2
= 2LL;
}
}
else
else
{
{
osl_wificc_logDebug((unsigned __int64)"Internal LPO is not set\n");
osl_wificc_logDebug((unsigned __int64)"Internal LPO is not set\n");
复制
已复制
复制
已复制
osl_printf("Internal LPO is not set\n", v3
7
);
osl_printf("Internal LPO is not set\n", v3
8
);
v3
1
= 4LL;
v3
2
= 4LL;
}
}
复制
已复制
复制
已复制
return si_gci_chipcontrol(v5, 6LL, v3
1
, 0LL);
return si_gci_chipcontrol(v5, 6LL, v3
2
, 0LL);
}
}
}
}
}
}
}
}
return result;
return result;
}
}
已保存差异
原始文本
打开文件
__int64 __usercall si_pmu_set_lpoclk@<rax>(char a1@<al>, __int64 a2@<rdi>, __int64 a3@<rsi>, char a4) { __int64 v4; // rbx __int64 v5; // r14 __int64 result; // rax int v7; // er13 int v8; // er15 bool v9; // zf __int64 v10; // r15 __int64 v11; // rsi int v12; // ecx __int64 v13; // r15 __int64 v14; // rsi __int64 v15; // rax __int64 v16; // rax unsigned int v17; // ebx __int64 v18; // rsi __int64 v19; // rdi __int64 v20; // rax __int64 v21; // rax int v22; // eax __int64 v23; // rsi __int64 v24; // rdi __int64 v25; // rax unsigned int v26; // ebx __int64 v27; // rsi __int64 v28; // rdi __int64 v29; // rax int v30; // eax signed __int64 v31; // rdx __int64 v32; // rax unsigned int v33; // ebx __int64 v34; // rsi __int64 v35; // rdi __int64 v36; // rax char v37; // [rsp-8h] [rbp-30h] v37 = a1; v4 = a3; v5 = a2; result = getintvar(*(_QWORD *)(a2 + 184), "boardflags3"); if ( (_DWORD)result ) { v7 = getintvar(*(_QWORD *)(a2 + 184), "boardflags3"); v8 = getintvar(*(_QWORD *)(a2 + 184), "boardflags3"); result = getintvar(*(_QWORD *)(a2 + 184), "boardflags3"); if ( v7 & 0x8000000 ) { v12 = *(_DWORD *)(a2 + 60); if ( v12 != 43602 && v12 != 43462 ) { si_pmu_chipcontrol(a2, 0LL, 0x200000LL, 0x200000LL); si_gci_chipcontrol(a2, 6LL, 2LL, 2LL); } else { si_pmu_chipcontrol(a2, 2LL, 0x40000000LL, ~(32 * (_DWORD)result) & 0x40000000); } v13 = a3; if ( *(_DWORD *)(a2 + 20) >= 35 && *(_BYTE *)(a2 + 28) & 0x40 ) v14 = (unsigned int)si_findcoreidx(a2, 2087LL, 0LL); else v14 = 0LL; v15 = si_corereg_addr(a2, v14, 1544LL); v16 = read_bpt_reg(v4, v15, 4LL); if ( !(v16 & 0x100) ) { v17 = 0; do { IODelay(1000LL); if ( *(_DWORD *)(v5 + 20) >= 35 && *(_BYTE *)(v5 + 28) & 0x40 ) { v19 = v5; v18 = (unsigned int)si_findcoreidx(v5, 2087LL, 0LL); } else { v18 = 0LL; v19 = v5; } v20 = si_corereg_addr(v19, v18, 1544LL); v21 = read_bpt_reg(v13, v20, 4LL); ++v17; } while ( !(v21 & 0x100) && v17 < 0x3E8 ); if ( v17 >= 0x3E8 ) { osl_wificc_logDebug((unsigned __int64)"External LPO is not available\n"); return osl_printf("External LPO is not available\n", a4); } } IODelay(1000LL); v22 = *(_DWORD *)(v5 + 60); if ( v22 != 43602 && v22 != 43462 ) { si_gci_chipcontrol(v5, 6LL, 8LL, 8LL); si_gci_chipcontrol(v5, 6LL, 4LL, 0LL); IODelay(1000LL); if ( *(_DWORD *)(v5 + 20) >= 35 && *(_BYTE *)(v5 + 28) & 0x40 ) { v24 = v5; v23 = (unsigned int)si_findcoreidx(v5, 2087LL, 0LL); } else { v23 = 0LL; v24 = v5; } v25 = si_corereg_addr(v24, v23, 1536LL); if ( read_bpt_reg(v13, v25, 4LL) & 1 ) { v26 = 0; do { IODelay(1000LL); if ( *(_DWORD *)(v5 + 20) >= 35 && *(_BYTE *)(v5 + 28) & 0x40 ) { v28 = v5; v27 = (unsigned int)si_findcoreidx(v5, 2087LL, 0LL); } else { v27 = 0LL; v28 = v5; } v29 = si_corereg_addr(v28, v27, 1536LL); ++v26; } while ( read_bpt_reg(v13, v29, 4LL) & 1 && v26 < 0x3E8 ); if ( v26 >= 0x3E8 ) { osl_wificc_logDebug((unsigned __int64)"External LPO is not set\n"); osl_printf("External LPO is not set\n", v37); v30 = *(_DWORD *)(v5 + 60); if ( v30 == 43602 || v30 == 43462 ) return si_pmu_chipcontrol(v5, 2LL, 0x80000LL, 0LL); v31 = 8LL; return si_gci_chipcontrol(v5, 6LL, v31, 0LL); } } } else { si_pmu_chipcontrol(v5, 2LL, 0x80000LL, 0x80000LL); } result = *(unsigned int *)(v5 + 60); if ( (_DWORD)result != 43462 && (_DWORD)result != 43602 ) { si_pmu_chipcontrol(v5, 0LL, 0x100000LL, 0LL); v31 = 1LL; return si_gci_chipcontrol(v5, 6LL, v31, 0LL); } } else { v9 = (v8 & 0x4000000) == 0; v10 = a3; if ( !v9 ) { result = *(unsigned int *)(a2 + 60); if ( (_DWORD)result != 43462 && (_DWORD)result != 43602 ) { si_pmu_chipcontrol(a2, 0LL, 0x100000LL, 0x100000LL); si_gci_chipcontrol(a2, 6LL, 1LL, 1LL); IODelay(1000LL); si_gci_chipcontrol(a2, 6LL, 4LL, 4LL); si_gci_chipcontrol(a2, 6LL, 8LL, 0LL); IODelay(1000LL); if ( *(_DWORD *)(a2 + 20) >= 35 && *(_BYTE *)(a2 + 28) & 0x40 ) v11 = (unsigned int)si_findcoreidx(a2, 2087LL, 0LL); else v11 = 0LL; v32 = si_corereg_addr(a2, v11, 1536LL); if ( read_bpt_reg(v4, v32, 4LL) & 1 ) goto LABEL_66; v33 = 0; do { IODelay(1000LL); if ( *(_DWORD *)(v5 + 20) >= 35 && *(_BYTE *)(v5 + 28) & 0x40 ) { v35 = v5; v34 = (unsigned int)si_findcoreidx(v5, 2087LL, 0LL); } else { v34 = 0LL; v35 = v5; } v36 = si_corereg_addr(v35, v34, 1536LL); ++v33; } while ( !(read_bpt_reg(v10, v36, 4LL) & 1) && v33 < 0x3E8 ); if ( v33 < 0x3E8 ) { LABEL_66: si_pmu_chipcontrol(v5, 0LL, 0x200000LL, 0LL); v31 = 2LL; } else { osl_wificc_logDebug((unsigned __int64)"Internal LPO is not set\n"); osl_printf("Internal LPO is not set\n", v37); v31 = 4LL; } return si_gci_chipcontrol(v5, 6LL, v31, 0LL); } } } } return result; }
更改后文本
打开文件
__int64 __usercall si_pmu_set_lpoclk@<rax>(char a1@<al>, __int64 a2@<rdi>, __int64 a3@<rsi>, char a4) { __int64 v4; // rbx __int64 v5; // r14 __int64 result; // rax int v7; // er13 int v8; // er15 bool v9; // zf __int64 v10; // r15 __int64 v11; // rsi int v12; // ecx __int64 v13; // r15 __int64 v14; // rsi __int64 v15; // rax __int64 v16; // rax unsigned int v17; // ebx __int64 v18; // rsi __int64 v19; // rdi __int64 v20; // rax __int64 v21; // rax int v22; // eax __int64 v23; // rsi __int64 v24; // rdi __int64 v25; // rax unsigned int v26; // ebx __int64 v27; // rsi __int64 v28; // rdi __int64 v29; // rax char v30; // ST00_1 int v31; // eax signed __int64 v32; // rdx __int64 v33; // rax unsigned int v34; // ebx __int64 v35; // rsi __int64 v36; // rdi __int64 v37; // rax char v38; // [rsp-8h] [rbp-30h] v38 = a1; v4 = a3; v5 = a2; result = getintvar(*(_QWORD *)(a2 + 184), "boardflags3"); if ( (_DWORD)result ) { v7 = getintvar(*(_QWORD *)(a2 + 184), "boardflags3"); v8 = getintvar(*(_QWORD *)(a2 + 184), "boardflags3"); result = getintvar(*(_QWORD *)(a2 + 184), "boardflags3"); if ( v7 & 0x8000000 ) { v12 = *(_DWORD *)(a2 + 60); if ( v12 != 43602 && v12 != 43462 ) { si_pmu_chipcontrol(a2, 0LL, 0x200000LL, 0x200000LL); si_gci_chipcontrol(a2, 6LL, 2LL, 2LL); } else { si_pmu_chipcontrol(a2, 2LL, 0x40000000LL, ~(32 * (_DWORD)result) & 0x40000000); } v13 = a3; if ( *(_DWORD *)(a2 + 20) >= 35 && *(_BYTE *)(a2 + 28) & 0x40 ) v14 = (unsigned int)si_findcoreidx(a2, 2087LL, 0LL); else v14 = 0LL; v15 = si_corereg_addr(a2, v14, 1544LL); v16 = read_bpt_reg(v4, v15, 4LL); if ( !(v16 & 0x100) ) { v17 = 0; do { IODelay(1000LL); if ( *(_DWORD *)(v5 + 20) >= 35 && *(_BYTE *)(v5 + 28) & 0x40 ) { v19 = v5; v18 = (unsigned int)si_findcoreidx(v5, 2087LL, 0LL); } else { v18 = 0LL; v19 = v5; } v20 = si_corereg_addr(v19, v18, 1544LL); v21 = read_bpt_reg(v13, v20, 4LL); ++v17; } while ( !(v21 & 0x100) && v17 < 0x3E8 ); if ( v17 >= 0x3E8 ) { osl_wificc_logDebug((unsigned __int64)"External LPO is not available\n"); return osl_printf("External LPO is not available\n", a4); } } IODelay(1000LL); v22 = *(_DWORD *)(v5 + 60); if ( v22 != 43602 && v22 != 43462 ) { si_gci_chipcontrol(v5, 6LL, 8LL, 8LL); si_gci_chipcontrol(v5, 6LL, 4LL, 0LL); IODelay(1000LL); if ( *(_DWORD *)(v5 + 20) >= 35 && *(_BYTE *)(v5 + 28) & 0x40 ) { v24 = v5; v23 = (unsigned int)si_findcoreidx(v5, 2087LL, 0LL); } else { v23 = 0LL; v24 = v5; } v25 = si_corereg_addr(v24, v23, 1536LL); if ( read_bpt_reg(v13, v25, 4LL) & 1 ) { v26 = 0; do { IODelay(1000LL); if ( *(_DWORD *)(v5 + 20) >= 35 && *(_BYTE *)(v5 + 28) & 0x40 ) { v28 = v5; v27 = (unsigned int)si_findcoreidx(v5, 2087LL, 0LL); } else { v27 = 0LL; v28 = v5; } v29 = si_corereg_addr(v28, v27, 1536LL); ++v26; } while ( read_bpt_reg(v13, v29, 4LL) & 1 && v26 < 0x3E8 ); if ( v26 >= 0x3E8 ) { osl_wificc_logDebug((unsigned __int64)"External LPO is not set\n"); osl_printf("External LPO is not set\n", v38); osl_panic("32KHz LPO Clock not running", v30); v31 = *(_DWORD *)(v5 + 60); if ( v31 == 43602 || v31 == 43462 ) return si_pmu_chipcontrol(v5, 2LL, 0x80000LL, 0LL); v32 = 8LL; return si_gci_chipcontrol(v5, 6LL, v32, 0LL); } } } else { si_pmu_chipcontrol(v5, 2LL, 0x80000LL, 0x80000LL); } result = *(unsigned int *)(v5 + 60); if ( (_DWORD)result != 43462 && (_DWORD)result != 43602 ) { si_pmu_chipcontrol(v5, 0LL, 0x100000LL, 0LL); v32 = 1LL; return si_gci_chipcontrol(v5, 6LL, v32, 0LL); } } else { v9 = (v8 & 0x4000000) == 0; v10 = a3; if ( !v9 ) { result = *(unsigned int *)(a2 + 60); if ( (_DWORD)result != 43462 && (_DWORD)result != 43602 ) { si_pmu_chipcontrol(a2, 0LL, 0x100000LL, 0x100000LL); si_gci_chipcontrol(a2, 6LL, 1LL, 1LL); IODelay(1000LL); si_gci_chipcontrol(a2, 6LL, 4LL, 4LL); si_gci_chipcontrol(a2, 6LL, 8LL, 0LL); IODelay(1000LL); if ( *(_DWORD *)(a2 + 20) >= 35 && *(_BYTE *)(a2 + 28) & 0x40 ) v11 = (unsigned int)si_findcoreidx(a2, 2087LL, 0LL); else v11 = 0LL; v33 = si_corereg_addr(a2, v11, 1536LL); if ( read_bpt_reg(v4, v33, 4LL) & 1 ) goto LABEL_66; v34 = 0; do { IODelay(1000LL); if ( *(_DWORD *)(v5 + 20) >= 35 && *(_BYTE *)(v5 + 28) & 0x40 ) { v36 = v5; v35 = (unsigned int)si_findcoreidx(v5, 2087LL, 0LL); } else { v35 = 0LL; v36 = v5; } v37 = si_corereg_addr(v36, v35, 1536LL); ++v34; } while ( !(read_bpt_reg(v10, v37, 4LL) & 1) && v34 < 0x3E8 ); if ( v34 < 0x3E8 ) { LABEL_66: si_pmu_chipcontrol(v5, 0LL, 0x200000LL, 0LL); v32 = 2LL; } else { osl_wificc_logDebug((unsigned __int64)"Internal LPO is not set\n"); osl_printf("Internal LPO is not set\n", v38); v32 = 4LL; } return si_gci_chipcontrol(v5, 6LL, v32, 0LL); } } } } return result; }
查找差异