Diff
checker
Text
Text
Bilder
Dokumente
Excel
Ordner
Legal
Enterprise
Desktop-App
Preise
Einloggen
Diffchecker Desktop herunterladen
Texte vergleichen
Finde den Unterschied zwischen zwei Textdateien
Werkzeuge
Verlauf
Live-Editor
Leerzeichen ausblenden
Gleiches ausblenden
Zeilenumbruch aus
Ansicht
Zweispaltig
Einspaltig
Vergleichsgenauigkeit
Intelligent
Wort
Zeichen
Textstile
Darstellung ändern
Syntaxhervorhebung
Syntax auswählen
Ignorieren
Text umwandeln
Zur ersten Änderung
Eingabe bearbeiten
Diffchecker Desktop
Der sicherste Weg, Diffchecker zu nutzen. Hol dir die Desktop-App: Deine Diffs verlassen nie deinen Computer!
Desktop holen
Untitled diff
Erstellt
vor 8 Jahren
Diff läuft nie ab
Löschen
Exportieren
Teilen
Erklären
35 Entfernungen
Zeilen
Gesamt
Entfernt
Zeichen
Gesamt
Entfernt
Um diese Funktion weiterhin zu nutzen, aktualisiere auf
Diff
checker
Pro
Preise anzeigen
213 Zeilen
Kopieren
38 Hinzufügungen
Zeilen
Gesamt
Hinzugefügt
Zeichen
Gesamt
Hinzugefügt
Um diese Funktion weiterhin zu nutzen, aktualisiere auf
Diff
checker
Pro
Preise anzeigen
215 Zeilen
Kopieren
__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
Kopieren
Kopiert
Kopieren
Kopiert
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]
Kopieren
Kopiert
Kopieren
Kopiert
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");
Kopieren
Kopiert
Kopieren
Kopiert
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);
Kopieren
Kopiert
Kopieren
Kopiert
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);
Kopieren
Kopiert
Kopieren
Kopiert
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;
Kopieren
Kopiert
Kopieren
Kopiert
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;
Kopieren
Kopiert
Kopieren
Kopiert
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 )
{
{
Kopieren
Kopiert
Kopieren
Kopiert
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
{
{
Kopieren
Kopiert
Kopieren
Kopiert
v3
4
= 0LL;
v3
5
= 0LL;
v3
5
= v5;
v3
6
= v5;
}
}
Kopieren
Kopiert
Kopieren
Kopiert
v3
6
= si_corereg_addr(v3
5
, v3
4
, 1536LL);
v3
7
= si_corereg_addr(v3
6
, v3
5
, 1536LL);
++v3
3
;
++v3
4
;
}
}
Kopieren
Kopiert
Kopieren
Kopiert
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);
Kopieren
Kopiert
Kopieren
Kopiert
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");
Kopieren
Kopiert
Kopieren
Kopiert
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;
}
}
Kopieren
Kopiert
Kopieren
Kopiert
return si_gci_chipcontrol(v5, 6LL, v3
1
, 0LL);
return si_gci_chipcontrol(v5, 6LL, v3
2
, 0LL);
}
}
}
}
}
}
}
}
return result;
return result;
}
}
Gespeicherte Diffs
Originaltext
Datei öffnen
__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; }
Bearbeitung
Datei öffnen
__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; }
Unterschied finden