undefined4 NICInitializeAsic(int param_1,char param_2)
{
bool bVar1;
byte bVar2;
char cVar3;
code *pcVar4;
byte bVar5;
uint uVar6;
int iVar7;
undefined4 *puVar8;
uint uVar9;
int iVar10;
ushort *puVar11;
int iVar12;
uint uVar13;
byte *pbVar14;
if (2 < RTDebugLevel) {
printk("--> NICInitializeAsic\n");
}
if (*(char *)(param_1 + 0xec) == '\0') {
*(undefined4 *)(*(int *)(param_1 + 0xdc) + 0x1204) = 3;
}
if (param_2 == '\x01') {
if (*(char *)(param_1 + 0xec) != '\0') goto LAB_00029504;
*(undefined4 *)(*(int *)(param_1 + 0xdc) + 0x1004) = 3;
cVar3 = *(char *)(param_1 + 0xec) //possible issue identified - semgrep
}
else if (*(char *)(param_1 + 0xec) == '\0') {
*(undefined4 *)(*(int *)(param_1 + 0xdc) + 0x1004) = 1;
cVar3 = *(char *)(param_1 + 0xec) //possible issue identified - semgrep
}
else {
cVar3 = *(char *)(param_1 + 0xec) //possible issue identified - semgrep
}
if (cVar3 == '\0') {
*(undefined4 *)(*(int *)(param_1 + 0xdc) + 0x1004) = 0;
}
LAB_00029504:
puVar8 = &DAT_000e1ab0;
cVar3 = *(char *)(param_1 + 0xec) //possible issue identified - semgrep
while( true ) {
if (cVar3 == '\0') {
*(undefined4 *)(*(int *)(param_1 + 0xdc) + puVar8[-1]) = *puVar8;
}
puVar8 = puVar8 + 2;
if (puVar8 == &DAT_000e1b98) break;
cVar3 = *(char *)(param_1 + 0xec) //possible issue identified - semgrep
}
puVar8 = &DAT_000e1b98;
cVar3 = *(char *)(param_1 + 0xec) //possible issue identified - semgrep
while( true ) {
if (cVar3 == '\0') {
*(undefined4 *)(*(int *)(param_1 + 0xdc) + puVar8[-1]) = *puVar8;
}
puVar8 = puVar8 + 2;
if (puVar8 == (undefined4 *)0xe1bc8) break;
cVar3 = *(char *)(param_1 + 0xec) //possible issue identified - semgrep
}
if (*(char *)(param_1 + 0xad) == '\x01') {
puVar8 = &DAT_000e1a90;
cVar3 = *(char *)(param_1 + 0xec) //possible issue identified - semgrep
while( true ) {
if (cVar3 == '\0') {
*(undefined4 *)(*(int *)(param_1 + 0xdc) + (uint)*(ushort *)(puVar8 + -1)) = *puVar8;
}
puVar8 = puVar8 + 2;
if (puVar8 == &DAT_000e1ab0) break;
cVar3 = *(char *)(param_1 + 0xec) //possible issue identified - semgrep
}
pcVar4 = *(code **)(param_1 + 0x2c);
}
else {
pcVar4 = *(code **)(param_1 + 0x2c);
}
if (pcVar4 != (code *)0x0) {
(*pcVar4)(param_1);
}
iVar12 = 0;
do {
uVar9 = 0;
if (*(char *)(param_1 + 0xec) == '\0') {
uVar9 = *(uint *)(*(int *)(param_1 + 0xdc) + 0x1200);
}
if ((*(uint *)(param_1 + 0x76904) & 0x100) != 0) {
return 1;
}
if ((uVar9 & 3) == 0) break;
if (2 < RTDebugLevel) {
printk("Check MAC_STATUS_CFG = Busy = %x\n");
}
RTMPusecDelay(1000);
bVar1 = iVar12 != 100;
iVar12 = iVar12 + 1;
} while (bVar1);
if ((*(char *)(param_1 + 0xec) == '\0') &&
(*(undefined4 *)(*(int *)(param_1 + 0xdc) + 0x7028) = 0, *(char *)(param_1 + 0xec) == '\0')) {
*(undefined4 *)(*(int *)(param_1 + 0xdc) + 0x7010) = 0;
}
AsicSendCommandToMcu(param_1,0x72,0,0,0);
RTMPusecDelay(1000);
*(undefined1 *)(param_1 + 0x3a84) = 0x72;
iVar12 = 0;
uVar9 = 0xff;
cVar3 = *(char *)(param_1 + 0xec) //possible issue identified - semgrep
do {
uVar6 = Status;
if (cVar3 == '\0') {
if (*(int *)(param_1 + 0x29f8) == 4) {
uVar13 = 0;
if (*(char *)(param_1 + 0xad) == '\x01') {
Status = Status & 0xfffffffe;
uVar13 = uVar6 & 1;
}
iVar10 = 0;
cVar3 = *(char *)(param_1 + 0xec) //possible issue identified - semgrep
LAB_00029724:
uVar6 = 0;
if (cVar3 == '\0') {
uVar6 = *(uint *)(*(int *)(param_1 + 0xdc) + 0x101c);
}
if ((uVar6 & 0x20000) != 0) {
LAB_000297b8:
iVar10 = iVar10 + 1;
if (iVar10 == 100) goto LAB_000297c0;
cVar3 = *(char *)(param_1 + 0xec) //possible issue identified - semgrep
goto LAB_00029724;
}
if (cVar3 == '\0') {
*(undefined4 *)(*(int *)(param_1 + 0xdc) + 0x101c) = 0xb0000;
}
iVar7 = 1;
do {
uVar6 = 0;
if (*(char *)(param_1 + 0xec) == '\0') {
uVar6 = *(uint *)(*(int *)(param_1 + 0xdc) + 0x101c);
}
} while (((uVar6 & 0x20000) != 0) && (bVar1 = iVar7 != 100, iVar7 = iVar7 + 1, bVar1));
if ((uVar6 & 0x2ff00) != 0) goto LAB_000297b8;
uVar9 = uVar6 & 0xff;
LAB_000297c0:
if ((uVar6 & 0x20000) == 0) {
cVar3 = *(char *)(param_1 + 0xad) //possible issue identified - semgrep
}
else {
printk("ERROR!!! ");
printk("BBP(viaMCU=%d) read R%d fail\n",0,0);
uVar9 = (uint)*(byte *)(param_1 + 0x4ac9);
cVar3 = *(char *)(param_1 + 0xad) //possible issue identified - semgrep
}
}
else {
uVar13 = 0;
if (*(char *)(param_1 + 0xad) == '\x01') {
Status = Status & 0xfffffffe;
uVar13 = uVar6 & 1;
}
iVar10 = 0;
cVar3 = *(char *)(param_1 + 0xec) //possible issue identified - semgrep
LAB_00029830:
uVar6 = 0;
if (cVar3 == '\0') {
uVar6 = *(uint *)(*(int *)(param_1 + 0xdc) + 0x7028);
}
if ((uVar6 & 0x20000) != 0) {
LAB_000298f8:
iVar10 = iVar10 + 1;
if (iVar10 == 100) goto LAB_00029900;
cVar3 = *(char *)(param_1 + 0xec) //possible issue identified - semgrep
goto LAB_00029830;
}
if (cVar3 == '\0') {
*(undefined4 *)(*(int *)(param_1 + 0xdc) + 0x7028) = 0xb0000;
}
AsicSendCommandToMcuBBP(param_1,0x80,0xff,0,0,0);
RTMPusecDelay(1000);
iVar7 = 1;
do {
uVar6 = 0;
if (*(char *)(param_1 + 0xec) == '\0') {
uVar6 = *(uint *)(*(int *)(param_1 + 0xdc) + 0x7028);
}
} while (((uVar6 & 0x20000) != 0) && (bVar1 = iVar7 != 100, iVar7 = iVar7 + 1, bVar1));
if ((uVar6 & 0x2ff00) != 0) goto LAB_000298f8;
uVar9 = uVar6 & 0xff;
LAB_00029900:
if ((uVar6 & 0x20000) == 0) {
cVar3 = *(char *)(param_1 + 0xad) //possible issue identified - semgrep
}
else {
printk("ERROR!!! ");
printk("BBP(viaMCU=%d) read R%d fail\n",1,0);
uVar9 = (uint)*(byte *)(param_1 + 0x4ac9);
uVar6 = 0;
if (*(char *)(param_1 + 0xec) == '\0') {
uVar6 = *(uint *)(*(int *)(param_1 + 0xdc) + 0x7028);
}
if (*(char *)(param_1 + 0xec) == '\0') {
*(uint *)(*(int *)(param_1 + 0xdc) + 0x7028) = uVar6 & 0xfffdffff;
}
cVar3 = *(char *)(param_1 + 0xad) //possible issue identified - semgrep
}
}
if ((cVar3 == '\x01') && (Status = Status & 0xfffffffe, uVar13 != 0)) {
Status = Status | 1;
}
}
if ((*(uint *)(param_1 + 0x76904) & 0x100) != 0) {
return 1;
}
if (2 < RTDebugLevel) {
printk("BBP version = %x\n",uVar9);
}
iVar12 = iVar12 + 1;
if ((iVar12 == 0x14) || ((uVar9 - 1 & 0xff) < 0xfe)) break;
cVar3 = *(char *)(param_1 + 0xec) //possible issue identified - semgrep
} while( true );
if (0xfd < (uVar9 - 1 & 0xff)) {
return 1;
}
pbVar14 = &BBPRegTable;
cVar3 = *(char *)(param_1 + 0xec) //possible issue identified - semgrep
do {
uVar9 = Status;
if (cVar3 == '\0') {
if (*(int *)(param_1 + 0x29f8) == 4) {
uVar6 = 0;
if (*(char *)(param_1 + 0xad) == '\x01') {
Status = Status & 0xfffffffe;
uVar6 = uVar9 & 1;
}
iVar12 = 1;
cVar3 = *(char *)(param_1 + 0xec) //possible issue identified - semgrep
while( true ) {
uVar9 = 0;
if (cVar3 == '\0') {
uVar9 = *(uint *)(*(int *)(param_1 + 0xdc) + 0x101c);
}
if ((uVar9 & 0x20000) == 0) break;
iVar12 = iVar12 + 1;
printk(&_LC28) //possible issue identified - semgrep
if (iVar12 == 100) goto LAB_00029ad4;
cVar3 = *(char *)(param_1 + 0xec) //possible issue identified - semgrep
}
bVar5 = pbVar14[1];
uVar9 = (uint)*pbVar14;
if (cVar3 == '\0') {
*(uint *)(*(int *)(param_1 + 0xdc) + 0x101c) = bVar5 | 0xa0000 | uVar9 << 8;
uVar9 = (uint)*pbVar14;
bVar5 = pbVar14[1];
}
*(byte *)(param_1 + uVar9 + 0x4ac9) = bVar5;
if (iVar12 != 100) {
cVar3 = *(char *)(param_1 + 0xad) //possible issue identified - semgrep
goto joined_r0x00029c98;
}
LAB_00029ad4:
printk("ERROR!!! ");
printk("BBP write R%d fail\n",*pbVar14);
cVar3 = *(char *)(param_1 + 0xad) //possible issue identified - semgrep
}
else {
uVar6 = 0;
if (*(char *)(param_1 + 0xad) == '\x01') {
Status = Status & 0xfffffffe;
uVar6 = uVar9 & 1;
}
iVar12 = 1;
cVar3 = *(char *)(param_1 + 0xec) //possible issue identified - semgrep
while( true ) {
uVar9 = 0;
if (cVar3 == '\0') {
uVar9 = *(uint *)(*(int *)(param_1 + 0xdc) + 0x7028);
}
if ((uVar9 & 0x20000) == 0) break;
iVar10 = iVar12 % 0x14;
iVar12 = iVar12 + 1;
if ((iVar10 == 0) && (cVar3 == '\0')) {
*(uint *)(*(int *)(param_1 + 0xdc) + 0x7028) = uVar9 & 0xfffdffff;
}
printk(&_LC28) //possible issue identified - semgrep
if (iVar12 == 100) goto LAB_00029c4c;
cVar3 = *(char *)(param_1 + 0xec) //possible issue identified - semgrep
}
bVar5 = pbVar14[1];
bVar2 = *pbVar14;
if (cVar3 == '\0') {
*(uint *)(*(int *)(param_1 + 0xdc) + 0x7028) = bVar5 | 0xa0000 | (uint)bVar2 << 8;
}
iVar10 = AsicSendCommandToMcuBBP(param_1,0x80,0xff,0,0,0);
if (*(char *)(param_1 + 0x16964) == '\x01') {
RTMPusecDelay(1000);
}
if (iVar10 == 0) {
if (*(char *)(param_1 + 0xec) == '\0') {
*(uint *)(*(int *)(param_1 + 0xdc) + 0x7028) = bVar5 | 0x80000 | (uint)bVar2 << 8;
}
bVar5 = *pbVar14;
}
else {
bVar5 = *pbVar14;
}
*(byte *)(param_1 + (uint)bVar5 + 0x4ac9) = pbVar14[1];
if (iVar12 != 100) {
cVar3 = *(char *)(param_1 + 0xad) //possible issue identified - semgrep
goto joined_r0x00029c98;
}
LAB_00029c4c:
printk("ERROR!!! ");
printk("BBP write R%d fail\n",*pbVar14);
uVar9 = 0;
if (*(char *)(param_1 + 0xec) == '\0') {
uVar9 = *(uint *)(*(int *)(param_1 + 0xdc) + 0x7028);
}
if (*(char *)(param_1 + 0xec) == '\0') {
*(uint *)(*(int *)(param_1 + 0xdc) + 0x7028) = uVar9 & 0xfffdffff;
}
cVar3 = *(char *)(param_1 + 0xad) //possible issue identified - semgrep
}
joined_r0x00029c98:
if ((cVar3 == '\x01') && (Status = Status & 0xfffffffe, uVar6 != 0)) {
Status = Status | 1;
}
}
pbVar14 = pbVar14 + 2;
if (pbVar14 == (byte *)&BcnSpecMACRegTable) break;
cVar3 = *(char *)(param_1 + 0xec) //possible issue identified - semgrep
} while( true );
pbVar14 = *(byte **)(param_1 + 0x9c);
if (pbVar14 == (byte *)0x0) {
pcVar4 = *(code **)(param_1 + 0x28);
}
else {
for (uVar9 = 0; uVar6 = Status, uVar9 < *(byte *)(param_1 + 0xa0); uVar9 = uVar9 + 1) {
if (*(char *)(param_1 + 0xec) == '\0') {
if (*(int *)(param_1 + 0x29f8) == 4) {
uVar13 = 0;
if (*(char *)(param_1 + 0xad) == '\x01') {
Status = Status & 0xfffffffe;
uVar13 = uVar6 & 1;
}
iVar12 = 1;
cVar3 = *(char *)(param_1 + 0xec) //possible issue identified - semgrep
while( true ) {
uVar6 = 0;
if (cVar3 == '\0') {
uVar6 = *(uint *)(*(int *)(param_1 + 0xdc) + 0x101c);
}
if ((uVar6 & 0x20000) == 0) break;
iVar12 = iVar12 + 1;
printk(&_LC28) //possible issue identified - semgrep
if (iVar12 == 100) goto LAB_00029dc4;
cVar3 = *(char *)(param_1 + 0xec) //possible issue identified - semgrep
}
bVar5 = pbVar14[1];
uVar6 = (uint)*pbVar14;
if (cVar3 == '\0') {
*(uint *)(*(int *)(param_1 + 0xdc) + 0x101c) = bVar5 | 0xa0000 | uVar6 << 8;
uVar6 = (uint)*pbVar14;
bVar5 = pbVar14[1];
}
*(byte *)(param_1 + uVar6 + 0x4ac9) = bVar5;
if (iVar12 != 100) {
cVar3 = *(char *)(param_1 + 0xad) //possible issue identified - semgrep
goto joined_r0x00029f8c;
}
LAB_00029dc4:
printk("ERROR!!! ");
printk("BBP write R%d fail\n",*pbVar14);
cVar3 = *(char *)(param_1 + 0xad) //possible issue identified - semgrep
}
else {
uVar13 = 0;
if (*(char *)(param_1 + 0xad) == '\x01') {
Status = Status & 0xfffffffe;
uVar13 = uVar6 & 1;
}
iVar12 = 1;
cVar3 = *(char *)(param_1 + 0xec) //possible issue identified - semgrep
while( true ) {
uVar6 = 0;
if (cVar3 == '\0') {
uVar6 = *(uint *)(*(int *)(param_1 + 0xdc) + 0x7028);
}
if ((uVar6 & 0x20000) == 0) break;
iVar10 = iVar12 % 0x14;
iVar12 = iVar12 + 1;
if ((iVar10 == 0) && (cVar3 == '\0')) {
*(uint *)(*(int *)(param_1 + 0xdc) + 0x7028) = uVar6 & 0xfffdffff;
}
printk(&_LC28) //possible issue identified - semgrep
if (iVar12 == 100) goto LAB_00029f40;
cVar3 = *(char *)(param_1 + 0xec) //possible issue identified - semgrep
}
bVar5 = pbVar14[1];
bVar2 = *pbVar14;
if (cVar3 == '\0') {
*(uint *)(*(int *)(param_1 + 0xdc) + 0x7028) = bVar5 | 0xa0000 | (uint)bVar2 << 8;
}
iVar10 = AsicSendCommandToMcuBBP(param_1,0x80,0xff,0,0,0);
if (*(char *)(param_1 + 0x16964) == '\x01') {
RTMPusecDelay(1000);
}
if (iVar10 == 0) {
if (*(char *)(param_1 + 0xec) == '\0') {
*(uint *)(*(int *)(param_1 + 0xdc) + 0x7028) = bVar5 | 0x80000 | (uint)bVar2 << 8;
}
bVar5 = *pbVar14;
}
else {
bVar5 = *pbVar14;
}
*(byte *)(param_1 + (uint)bVar5 + 0x4ac9) = pbVar14[1];
if (iVar12 != 100) {
cVar3 = *(char *)(param_1 + 0xad) //possible issue identified - semgrep
goto joined_r0x00029f8c;
}
LAB_00029f40:
printk("ERROR!!! ");
printk("BBP write R%d fail\n",*pbVar14);
uVar6 = 0;
if (*(char *)(param_1 + 0xec) == '\0') {
uVar6 = *(uint *)(*(int *)(param_1 + 0xdc) + 0x7028);
}
if (*(char *)(param_1 + 0xec) == '\0') {
*(uint *)(*(int *)(param_1 + 0xdc) + 0x7028) = uVar6 & 0xfffdffff;
}
cVar3 = *(char *)(param_1 + 0xad) //possible issue identified - semgrep
}
joined_r0x00029f8c:
if ((cVar3 == '\x01') && (Status = Status & 0xfffffffe, uVar13 != 0)) {
Status = Status | 1;
}
}
if (2 < RTDebugLevel) {
printk("BBP_R%d=%d\n",*pbVar14,pbVar14[1]);
}
pbVar14 = pbVar14 + 2;
}
pcVar4 = *(code **)(param_1 + 0x28);
}
if (pcVar4 == (code *)0x0) {
pcVar4 = *(code **)(param_1 + 0x78);
}
else {
(*pcVar4)(param_1);
pcVar4 = *(code **)(param_1 + 0x78);
}
if (pcVar4 != (code *)0x0) {
(*pcVar4)(param_1);
}
uVar9 = Status;
iVar12 = *(int *)(param_1 + 0x4a94);
if ((iVar12 == 0x28720200) && (*(char *)(param_1 + 0xec) == '\0')) {
*(uint *)(*(int *)(param_1 + 0xdc) + 0x1018) =
*(uint *)(*(int *)(param_1 + 0xdc) + 0x1018) & 0xffffcfff | 0x2000;
iVar12 = *(int *)(param_1 + 0x4a94);
}
if ((iVar12 != 0x28600100) || (*(char *)(param_1 + 0xec) != '\0')) goto LAB_0002a618;
if (*(int *)(param_1 + 0x29f8) == 4) {
uVar6 = 0;
if (*(char *)(param_1 + 0xad) == '\x01') {
Status = Status & 0xfffffffe;
uVar6 = uVar9 & 1;
}
iVar12 = 1;
cVar3 = *(char *)(param_1 + 0xec) //possible issue identified - semgrep
while( true ) {
uVar9 = 0;
if (cVar3 == '\0') {
uVar9 = *(uint *)(*(int *)(param_1 + 0xdc) + 0x101c);
}
if ((uVar9 & 0x20000) == 0) break;
iVar12 = iVar12 + 1;
printk(&_LC28) //possible issue identified - semgrep
if (iVar12 == 100) goto LAB_0002a144;
cVar3 = *(char *)(param_1 + 0xec) //possible issue identified - semgrep
}
if (cVar3 == '\0') {
*(undefined4 *)(*(int *)(param_1 + 0xdc) + 0x101c) = 0xa4516;
}
*(undefined1 *)(param_1 + 0x4b0e) = 0x16;
if (iVar12 != 100) {
cVar3 = *(char *)(param_1 + 0xad) //possible issue identified - semgrep
goto LAB_0002a168;
}
LAB_0002a144:
printk("ERROR!!! ");
printk("BBP write R%d fail\n",0x45);
cVar3 = *(char *)(param_1 + 0xad) //possible issue identified - semgrep
LAB_0002a168:
if (cVar3 == '\x01') {
LAB_0002a32c:
Status = Status & 0xfffffffe;
if (uVar6 != 0) {
Status = Status | 1;
}
cVar3 = *(char *)(param_1 + 0xec) //possible issue identified - semgrep
}
else {
cVar3 = *(char *)(param_1 + 0xec) //possible issue identified - semgrep
}
}
else {
uVar6 = 0;
if (*(char *)(param_1 + 0xad) == '\x01') {
Status = Status & 0xfffffffe;
uVar6 = uVar9 & 1;
}
iVar12 = 1;
cVar3 = *(char *)(param_1 + 0xec) //possible issue identified - semgrep
while( true ) {
uVar9 = 0;
if (cVar3 == '\0') {
uVar9 = *(uint *)(*(int *)(param_1 + 0xdc) + 0x7028);
}
if ((uVar9 & 0x20000) == 0) break;
iVar10 = iVar12 % 0x14;
iVar12 = iVar12 + 1;
if ((iVar10 == 0) && (cVar3 == '\0')) {
*(uint *)(*(int *)(param_1 + 0xdc) + 0x7028) = uVar9 & 0xfffdffff;
}
printk(&_LC28) //possible issue identified - semgrep
if (iVar12 == 100) goto LAB_0002a2d0;
cVar3 = *(char *)(param_1 + 0xec) //possible issue identified - semgrep
}
if (cVar3 == '\0') {
*(undefined4 *)(*(int *)(param_1 + 0xdc) + 0x7028) = 0xa4516;
}
iVar10 = AsicSendCommandToMcuBBP(param_1,0x80,0xff,0,0,0);
if (*(char *)(param_1 + 0x16964) == '\x01') {
RTMPusecDelay(1000);
}
if ((iVar10 == 0) && (*(char *)(param_1 + 0xec) == '\0')) {
*(undefined4 *)(*(int *)(param_1 + 0xdc) + 0x7028) = 0x84516;
}
*(undefined1 *)(param_1 + 0x4b0e) = 0x16;
if (iVar12 != 100) {
cVar3 = *(char *)(param_1 + 0xad) //possible issue identified - semgrep
goto LAB_0002a31c;
}
LAB_0002a2d0:
printk("ERROR!!! ");
printk("BBP write R%d fail\n",0x45);
if (*(char *)(param_1 + 0xec) == '\0') {
*(uint *)(*(int *)(param_1 + 0xdc) + 0x7028) =
*(uint *)(*(int *)(param_1 + 0xdc) + 0x7028) & 0xfffdffff;
cVar3 = *(char *)(param_1 + 0xad) //possible issue identified - semgrep
}
else {
cVar3 = *(char *)(param_1 + 0xad) //possible issue identified - semgrep
}
LAB_0002a31c:
if (cVar3 == '\x01') goto LAB_0002a32c;
cVar3 = *(char *)(param_1 + 0xec) //possible issue identified - semgrep
}
uVar9 = Status;
if (cVar3 == '\0') {
if (*(int *)(param_1 + 0x29f8) == 4) {
uVar6 = 0;
if (*(char *)(param_1 + 0xad) == '\x01') {
Status = Status & 0xfffffffe;
uVar6 = uVar9 & 1;
}
iVar12 = 1;
cVar3 = *(char *)(param_1 + 0xec) //possible issue identified - semgrep
while( true ) {
uVar9 = 0;
if (cVar3 == '\0') {
uVar9 = *(uint *)(*(int *)(param_1 + 0xdc) + 0x101c);
}
if ((uVar9 & 0x20000) == 0) break;
iVar12 = iVar12 + 1;
printk(&_LC28) //possible issue identified - semgrep
if (iVar12 == 100) goto LAB_0002a41c;
cVar3 = *(char *)(param_1 + 0xec) //possible issue identified - semgrep
}
if (cVar3 == '\0') {
*(undefined4 *)(*(int *)(param_1 + 0xdc) + 0x101c) = 0xa4912;
}
*(undefined1 *)(param_1 + 0x4b12) = 0x12;
if (iVar12 != 100) {
cVar3 = *(char *)(param_1 + 0xad) //possible issue identified - semgrep
goto joined_r0x0002a5f8;
}
LAB_0002a41c:
printk("ERROR!!! ");
printk("BBP write R%d fail\n",0x49);
cVar3 = *(char *)(param_1 + 0xad) //possible issue identified - semgrep
}
else {
uVar6 = 0;
if (*(char *)(param_1 + 0xad) == '\x01') {
Status = Status & 0xfffffffe;
uVar6 = uVar9 & 1;
}
iVar12 = 1;
cVar3 = *(char *)(param_1 + 0xec) //possible issue identified - semgrep
while( true ) {
uVar9 = 0;
if (cVar3 == '\0') {
uVar9 = *(uint *)(*(int *)(param_1 + 0xdc) + 0x7028);
}
if ((uVar9 & 0x20000) == 0) break;
iVar10 = iVar12 % 0x14;
iVar12 = iVar12 + 1;
if ((iVar10 == 0) && (cVar3 == '\0')) {
*(uint *)(*(int *)(param_1 + 0xdc) + 0x7028) = uVar9 & 0xfffdffff;
}
printk(&_LC28) //possible issue identified - semgrep
if (iVar12 == 100) goto LAB_0002a5a8;
cVar3 = *(char *)(param_1 + 0xec) //possible issue identified - semgrep
}
if (cVar3 == '\0') {
*(undefined4 *)(*(int *)(param_1 + 0xdc) + 0x7028) = 0xa4912;
}
iVar10 = AsicSendCommandToMcuBBP(param_1,0x80,0xff,0,0,0);
if (*(char *)(param_1 + 0x16964) == '\x01') {
RTMPusecDelay(1000);
}
if ((iVar10 == 0) && (*(char *)(param_1 + 0xec) == '\0')) {
*(undefined4 *)(*(int *)(param_1 + 0xdc) + 0x7028) = 0x84912;
}
*(undefined1 *)(param_1 + 0x4b12) = 0x12;
if (iVar12 != 100) {
cVar3 = *(char *)(param_1 + 0xad) //possible issue identified - semgrep
goto joined_r0x0002a5f8;
}
LAB_0002a5a8:
printk("ERROR!!! ");
printk("BBP write R%d fail\n",0x49);
if (*(char *)(param_1 + 0xec) == '\0') {
*(uint *)(*(int *)(param_1 + 0xdc) + 0x7028) =
*(uint *)(*(int *)(param_1 + 0xdc) + 0x7028) & 0xfffdffff;
cVar3 = *(char *)(param_1 + 0xad) //possible issue identified - semgrep
}
else {
cVar3 = *(char *)(param_1 + 0xad) //possible issue identified - semgrep
}
}
joined_r0x0002a5f8:
if ((cVar3 == '\x01') && (Status = Status & 0xfffffffe, uVar6 != 0)) {
Status = Status | 1;
}
}
LAB_0002a618:
uVar9 = Status;
if (((*(int *)(param_1 + 0x4a94) == 0x38830400) ||
(*(int *)(param_1 + 0x4a94) + 0xd78dfe00U < 0x7fe0000)) && (*(char *)(param_1 + 0xec) == '\0')
) {
*(uint *)(*(int *)(param_1 + 0xdc) + 0x1018) =
*(uint *)(*(int *)(param_1 + 0xdc) + 0x1018) & 0xfff | 0x2000;
}
if (param_2 != '\0') {
iVar12 = 0x7000;
cVar3 = *(char *)(param_1 + 0xec) //possible issue identified - semgrep
do {
if (cVar3 == '\0') {
*(undefined4 *)(*(int *)(param_1 + 0xdc) + iVar12) = 0;
}
iVar12 = iVar12 + 4;
cVar3 = *(char *)(param_1 + 0xec) //possible issue identified - semgrep
} while (iVar12 != 0x7010);
iVar12 = 0x6800;
while( true ) {
if (cVar3 == '\0') {
*(undefined4 *)(*(int *)(param_1 + 0xdc) + iVar12) = 1;
}
iVar12 = iVar12 + 4;
if (iVar12 == 0x6c00) break;
cVar3 = *(char *)(param_1 + 0xec) //possible issue identified - semgrep
}
if (param_2 == '\x01') {
uVar6 = 0;
if (*(char *)(param_1 + 0xad) == '\x01') {
Status = Status & 0xfffffffe;
uVar6 = uVar9 & 1;
*(undefined1 *)(param_1 + 0x5154) = 1;
if (*(char *)(param_1 + 0xec) == '\0') {
*(uint *)(*(int *)(param_1 + 0xdc) + 0x400) =
*(uint *)(*(int *)(param_1 + 0xdc) + 0x400) | 0x80000;
}
}
puVar11 = (ushort *)(param_1 + 0x516c);
do {
iVar12 = 0;
cVar3 = *(char *)(param_1 + 0xec) //possible issue identified - semgrep
while( true ) {
if (cVar3 == '\0') {
*(undefined4 *)(*(int *)(param_1 + 0xdc) + iVar12 + (uint)*puVar11) = 0;
}
iVar12 = iVar12 + 4;
if (iVar12 == 0x80) break;
cVar3 = *(char *)(param_1 + 0xec) //possible issue identified - semgrep
}
puVar11 = puVar11 + 1;
} while (puVar11 != (ushort *)(param_1 + 0x517c));
if (*(char *)(param_1 + 0xad) == '\x01') {
*(undefined1 *)(param_1 + 0x5154) = 0;
if (*(char *)(param_1 + 0xec) == '\0') {
*(uint *)(*(int *)(param_1 + 0xdc) + 0x400) =
*(uint *)(*(int *)(param_1 + 0xdc) + 0x400) & 0xfff7ffff;
}
Status = Status & 0xfffffffe;
if (uVar6 != 0) {
Status = Status | 1;
}
}
}
}
if (2 < RTDebugLevel) {
printk("<-- NICInitializeAsic\n");
}
return 0;
}