Diff
checker
Testo
Testo
Immagini
Documenti
Excel
Cartelle
Legal
Enterprise
Applicazione per desktop
Prezzi
Accedi
Scarica Diffchecker Desktop
Confronta il testo
Trova la differenza tra due file di testo
Strumenti
Cronologia
Editor live
Nascondi spazi bianchi
Comprimi invariate
Senza a capo
Layout
Diviso
Unificato
Livello di dettaglio
Intelligente
Parola
Carattere
Stili testo
Modifica aspetto
Evidenziazione sintassi
Scegli sintassi
Ignora
Trasforma testo
Vai alla prima modifica
Modifica input
Diffchecker Desktop
Il modo più sicuro per usare Diffchecker. Ottieni l'app Diffchecker Desktop: i tuoi diff non lasciano mai il tuo computer!
Ottieni Desktop
Untitled diff
Creato
8 anni fa
Il diff non scade mai
Eliminare
Esporta
Condividere
Spiegare
35 rimozioni
Linee
Totale
Rimosso
Caratteri
Totale
Rimosso
Per continuare a utilizzare questa funzione, aggiorna a
Diff
checker
Pro
Visualizza prezzi
213 linee
Copia tutti
38 aggiunte
Linee
Totale
Aggiunto
Caratteri
Totale
Aggiunto
Per continuare a utilizzare questa funzione, aggiorna a
Diff
checker
Pro
Visualizza prezzi
215 linee
Copia tutti
__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
Copia
Copiato
Copia
Copiato
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]
Copia
Copiato
Copia
Copiato
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");
Copia
Copiato
Copia
Copiato
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);
Copia
Copiato
Copia
Copiato
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);
Copia
Copiato
Copia
Copiato
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;
Copia
Copiato
Copia
Copiato
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;
Copia
Copiato
Copia
Copiato
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 )
{
{
Copia
Copiato
Copia
Copiato
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
{
{
Copia
Copiato
Copia
Copiato
v3
4
= 0LL;
v3
5
= 0LL;
v3
5
= v5;
v3
6
= v5;
}
}
Copia
Copiato
Copia
Copiato
v3
6
= si_corereg_addr(v3
5
, v3
4
, 1536LL);
v3
7
= si_corereg_addr(v3
6
, v3
5
, 1536LL);
++v3
3
;
++v3
4
;
}
}
Copia
Copiato
Copia
Copiato
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);
Copia
Copiato
Copia
Copiato
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");
Copia
Copiato
Copia
Copiato
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;
}
}
Copia
Copiato
Copia
Copiato
return si_gci_chipcontrol(v5, 6LL, v3
1
, 0LL);
return si_gci_chipcontrol(v5, 6LL, v3
2
, 0LL);
}
}
}
}
}
}
}
}
return result;
return result;
}
}
Diff salvati
Testo originale
Apri file
__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; }
Testo modificato
Apri file
__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; }
Trovare la differenza