/* WARNING: Removing unreachable block (ram,0x000a79b4) */
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
undefined4 ATESTART(undefined4 *param_1)
{
byte bVar1;
char cVar2;
byte bVar3;
char cVar4;
uint uVar5;
int iVar6;
int iVar7;
uint uVar8;
undefined4 *puVar9;
byte *pbVar10;
undefined4 *puVar11;
byte *pbVar12;
cVar4 = *(char *)(param_1 + 0x12f5) //possible issue identified - semgrep
if (2 < RTDebugLevel) {
printk("ATE : ===> %s\n","ATESTART");
}
bVar1 = *(byte *)(param_1 + 0x1da83);
*(undefined1 *)(param_1 + 0x1da83) = 0;
if (bVar1 == 0x80) {
AsicSwitchChannel(param_1,*(undefined1 *)(param_1 + 0x5a7b),0);
AsicLockChannel(param_1,*(undefined1 *)(param_1 + 0x5a7b));
cVar2 = *(char *)(param_1 + 0x3b) //possible issue identified - semgrep
}
else {
cVar2 = *(char *)(param_1 + 0x3b) //possible issue identified - semgrep
}
if (cVar2 == '\0') {
*(uint *)(param_1[0x37] + 0x1004) = *(uint *)(param_1[0x37] + 0x1004) & 0xfffffff7;
cVar2 = *(char *)(param_1 + 0x3b) //possible issue identified - semgrep
}
else {
cVar2 = *(char *)(param_1 + 0x3b) //possible issue identified - semgrep
}
if (cVar2 == '\0') {
*(uint *)(param_1[0x37] + 0x1404) = *(uint *)(param_1[0x37] + 0x1404) & 0xfffffffe;
cVar2 = *(char *)(param_1 + 0x3b) //possible issue identified - semgrep
}
else {
cVar2 = *(char *)(param_1 + 0x3b) //possible issue identified - semgrep
}
if (cVar2 == '\0') {
*(uint *)(param_1[0x37] + 0x1004) = *(uint *)(param_1[0x37] + 0x1004) & 0xffffffef;
}
if (bVar1 == 9) {
if ((*(char *)(param_1 + 0x3b) == '\0') &&
(*(uint *)(param_1[0x37] + 0x1004) = *(uint *)(param_1[0x37] + 0x1004) | 2,
*(char *)(param_1 + 0x3b) == '\0')) {
*(uint *)(param_1[0x37] + 0x1004) = *(uint *)(param_1[0x37] + 0x1004) & 0xfffffffd;
}
pbVar10 = &restore_BBP;
pbVar12 = (byte *)((int)param_1 + 0x4ac9);
uVar8 = 0;
do {
iVar6 = 0;
do {
uVar5 = 0;
if (*(char *)(param_1 + 0x3b) == '\0') {
uVar5 = *(uint *)(param_1[0x37] + 0x101c);
}
if ((uVar5 & 0x20000) == 0) {
bVar3 = *pbVar10;
if (*(char *)(param_1 + 0x3b) == '\0') {
*(uint *)(param_1[0x37] + 0x101c) = bVar3 | 0xa0000 | (uVar8 & 0xff) << 8;
bVar3 = *pbVar10;
}
*pbVar12 = bVar3;
if (iVar6 != 100) goto LAB_000a6c3c;
break;
}
iVar6 = iVar6 + 1;
} while (iVar6 != 100);
if (RTDebugLevel != 0) {
printk("BBP write R%d fail\n",uVar8);
}
LAB_000a6c3c:
uVar8 = uVar8 + 1;
pbVar10 = pbVar10 + 1;
pbVar12 = pbVar12 + 1;
} while (uVar8 != 0xa8);
*(char *)(param_1 + 0x12f5) = cVar4;
iVar6 = 0;
cVar4 = *(char *)(param_1 + 0x3b) //possible issue identified - semgrep
do {
uVar8 = 0;
if (cVar4 == '\0') {
uVar8 = *(uint *)(param_1[0x37] + 0x101c);
}
if ((uVar8 & 0x20000) == 0) {
if (cVar4 == '\0') {
*(undefined4 *)(param_1[0x37] + 0x101c) = 0xb1600;
}
iVar7 = 1;
while( true ) {
uVar8 = 0;
if (*(char *)(param_1 + 0x3b) == '\0') {
uVar8 = *(uint *)(param_1[0x37] + 0x101c);
}
if (((uVar8 & 0x20000) == 0) || (iVar7 == 100)) break;
iVar7 = iVar7 + 1;
}
if ((uVar8 & 0x2ff00) == 0x1600) goto LAB_000a6d0c;
}
iVar6 = iVar6 + 1;
if (iVar6 == 100) goto LAB_000a6d0c;
cVar4 = *(char *)(param_1 + 0x3b) //possible issue identified - semgrep
} while( true );
}
if (bVar1 == 0x11) {
if ((*(char *)(param_1 + 0x3b) == '\0') &&
(*(uint *)(param_1[0x37] + 0x1004) = *(uint *)(param_1[0x37] + 0x1004) | 2,
*(char *)(param_1 + 0x3b) == '\0')) {
*(uint *)(param_1[0x37] + 0x1004) = *(uint *)(param_1[0x37] + 0x1004) & 0xfffffffd;
}
pbVar10 = &restore_BBP;
pbVar12 = (byte *)((int)param_1 + 0x4ac9);
uVar8 = 0;
do {
iVar6 = 0;
do {
uVar5 = 0;
if (*(char *)(param_1 + 0x3b) == '\0') {
uVar5 = *(uint *)(param_1[0x37] + 0x101c);
}
if ((uVar5 & 0x20000) == 0) {
bVar3 = *pbVar10;
if (*(char *)(param_1 + 0x3b) == '\0') {
*(uint *)(param_1[0x37] + 0x101c) = bVar3 | 0xa0000 | (uVar8 & 0xff) << 8;
bVar3 = *pbVar10;
}
*pbVar12 = bVar3;
if (iVar6 != 100) goto LAB_000a6ef0;
break;
}
iVar6 = iVar6 + 1;
} while (iVar6 != 100);
if (RTDebugLevel != 0) {
printk("BBP write R%d fail\n",uVar8);
}
LAB_000a6ef0:
uVar8 = uVar8 + 1;
pbVar10 = pbVar10 + 1;
pbVar12 = pbVar12 + 1;
} while (uVar8 != 0xa8);
*(char *)(param_1 + 0x12f5) = cVar4;
iVar6 = 0;
cVar4 = *(char *)(param_1 + 0x3b) //possible issue identified - semgrep
while( true ) {
uVar8 = 0;
if (cVar4 == '\0') {
uVar8 = *(uint *)(param_1[0x37] + 0x101c);
}
if ((uVar8 & 0x20000) == 0) {
if (cVar4 == '\0') {
*(undefined4 *)(param_1[0x37] + 0x101c) = 0xb1600;
}
iVar7 = 1;
while( true ) {
uVar8 = 0;
if (*(char *)(param_1 + 0x3b) == '\0') {
uVar8 = *(uint *)(param_1[0x37] + 0x101c);
}
if (((uVar8 & 0x20000) == 0) || (iVar7 == 100)) break;
iVar7 = iVar7 + 1;
}
if ((uVar8 & 0x2ff00) == 0x1600) {
uVar5 = uVar8 & 0xff;
goto LAB_000a6fc4;
}
}
iVar6 = iVar6 + 1;
if (iVar6 == 100) break;
cVar4 = *(char *)(param_1 + 0x3b) //possible issue identified - semgrep
}
uVar5 = 0;
LAB_000a6fc4:
if ((int)(uVar8 << 0xe) < 0) {
if (RTDebugLevel == 0) {
bVar3 = *(byte *)((int)param_1 + 0x4adf);
}
else {
printk("BBP read R%d fail\n",0x16);
bVar3 = *(byte *)((int)param_1 + 0x4adf);
}
uVar5 = (uint)bVar3;
cVar4 = *(char *)(param_1 + 0x3b) //possible issue identified - semgrep
}
else {
cVar4 = *(char *)(param_1 + 0x3b) //possible issue identified - semgrep
}
uVar5 = uVar5 & 0x7f;
iVar6 = 0;
do {
uVar8 = 0;
if (cVar4 == '\0') {
uVar8 = *(uint *)(param_1[0x37] + 0x101c);
}
if ((uVar8 & 0x20000) == 0) {
if (cVar4 == '\0') {
*(uint *)(param_1[0x37] + 0x101c) = uVar5 | 0xa1600;
}
*(char *)((int)param_1 + 0x4adf) = (char)uVar5;
if (iVar6 != 100) goto LAB_000a70a8;
break;
}
iVar6 = iVar6 + 1;
} while (iVar6 != 100);
if (RTDebugLevel != 0) {
printk("BBP write R%d fail\n",0x16);
}
LAB_000a70a8:
iVar6 = 0;
cVar4 = *(char *)(param_1 + 0x3b) //possible issue identified - semgrep
LAB_000a70c4:
uVar8 = 0;
if (cVar4 == '\0') {
uVar8 = *(uint *)(param_1[0x37] + 0x101c);
}
if ((uVar8 & 0x20000) == 0) {
if (cVar4 == '\0') {
*(undefined4 *)(param_1[0x37] + 0x101c) = 0xb1800;
}
iVar7 = 1;
while( true ) {
uVar8 = 0;
if (*(char *)(param_1 + 0x3b) == '\0') {
uVar8 = *(uint *)(param_1[0x37] + 0x101c);
}
if (((uVar8 & 0x20000) == 0) || (iVar7 == 100)) break;
iVar7 = iVar7 + 1;
}
if ((uVar8 & 0x2ff00) == 0x1800) {
uVar5 = uVar8 & 0xff;
LAB_000a7158:
if ((int)(uVar8 << 0xe) < 0) {
if (RTDebugLevel == 0) {
bVar3 = *(byte *)((int)param_1 + 0x4ae1);
}
else {
printk("BBP read R%d fail\n",0x18);
bVar3 = *(byte *)((int)param_1 + 0x4ae1);
}
uVar5 = (uint)bVar3;
cVar4 = *(char *)(param_1 + 0x3b) //possible issue identified - semgrep
}
else {
cVar4 = *(char *)(param_1 + 0x3b) //possible issue identified - semgrep
}
iVar6 = 0;
do {
uVar8 = 0;
if (cVar4 == '\0') {
uVar8 = *(uint *)(param_1[0x37] + 0x101c);
}
if ((uVar8 & 0x20000) == 0) {
if (cVar4 == '\0') {
*(uint *)(param_1[0x37] + 0x101c) = uVar5 & 0xfe | 0xa1800;
}
*(char *)((int)param_1 + 0x4ae1) = (char)(uVar5 & 0xfe);
if (iVar6 != 100) goto LAB_000a7238;
break;
}
iVar6 = iVar6 + 1;
} while (iVar6 != 100);
if (RTDebugLevel != 0) {
printk("BBP write R%d fail\n",0x18);
}
LAB_000a7238:
BbpSoftReset(param_1);
if (*(char *)(param_1 + 0x3b) == '\0') {
*(undefined4 *)(param_1[0x37] + 0x1328) = Default_TX_PIN_CFG;
}
goto LAB_000a77d4;
}
}
iVar6 = iVar6 + 1;
if (iVar6 == 100) goto LAB_000a7158;
cVar4 = *(char *)(param_1 + 0x3b) //possible issue identified - semgrep
goto LAB_000a70c4;
}
if ((bVar1 & 1) == 0) {
if (bVar1 != 0x80) goto LAB_000a77d4;
}
else if (bVar1 == 5) {
if ((*(char *)(param_1 + 0x3b) == '\0') &&
(*(uint *)(param_1[0x37] + 0x1004) = *(uint *)(param_1[0x37] + 0x1004) | 2,
*(char *)(param_1 + 0x3b) == '\0')) {
*(uint *)(param_1[0x37] + 0x1004) = *(uint *)(param_1[0x37] + 0x1004) & 0xfffffffd;
}
pbVar10 = &restore_BBP;
pbVar12 = (byte *)((int)param_1 + 0x4ac9);
uVar8 = 0;
do {
iVar6 = 0;
do {
uVar5 = 0;
if (*(char *)(param_1 + 0x3b) == '\0') {
uVar5 = *(uint *)(param_1[0x37] + 0x101c);
}
if ((uVar5 & 0x20000) == 0) {
bVar3 = *pbVar10;
if (*(char *)(param_1 + 0x3b) == '\0') {
*(uint *)(param_1[0x37] + 0x101c) = bVar3 | 0xa0000 | (uVar8 & 0xff) << 8;
bVar3 = *pbVar10;
}
*pbVar12 = bVar3;
if (iVar6 != 100) goto LAB_000a7390;
break;
}
iVar6 = iVar6 + 1;
} while (iVar6 != 100);
if (RTDebugLevel != 0) {
printk("BBP write R%d fail\n",uVar8);
}
LAB_000a7390:
uVar8 = uVar8 + 1;
pbVar10 = pbVar10 + 1;
pbVar12 = pbVar12 + 1;
} while (uVar8 != 0xa8);
*(char *)(param_1 + 0x12f5) = cVar4;
if ((param_1[0x12a5] == 0x28720200) && (cVar4 == '\x05')) {
iVar6 = 0;
do {
uVar8 = 0;
if (*(char *)(param_1 + 0x3b) == '\0') {
uVar8 = *(uint *)(param_1[0x37] + 0x101c);
}
if ((uVar8 & 0x20000) == 0) {
if (*(char *)(param_1 + 0x3b) == '\0') {
*(undefined4 *)(param_1[0x37] + 0x101c) = 0xa4238;
}
*(undefined1 *)((int)param_1 + 0x4b0b) = 0x38;
if (iVar6 != 100) {
cVar4 = *(char *)(param_1 + 0x3b) //possible issue identified - semgrep
goto LAB_000a747c;
}
break;
}
iVar6 = iVar6 + 1;
} while (iVar6 != 100);
if (RTDebugLevel == 0) {
cVar4 = *(char *)(param_1 + 0x3b) //possible issue identified - semgrep
}
else {
printk("BBP write R%d fail\n",0x42);
cVar4 = *(char *)(param_1 + 0x3b) //possible issue identified - semgrep
}
LAB_000a747c:
iVar6 = 0;
do {
uVar8 = 0;
if (cVar4 == '\0') {
uVar8 = *(uint *)(param_1[0x37] + 0x101c);
}
if ((uVar8 & 0x20000) == 0) {
if (cVar4 == '\0') {
*(undefined4 *)(param_1[0x37] + 0x101c) = 0xa5262;
}
*(undefined1 *)((int)param_1 + 0x4b1b) = 0x62;
if (iVar6 != 100) goto LAB_000a752c;
break;
}
iVar6 = iVar6 + 1;
} while (iVar6 != 100);
if (RTDebugLevel != 0) {
printk("BBP write R%d fail\n",0x52);
}
}
LAB_000a752c:
iVar6 = 0;
cVar4 = *(char *)(param_1 + 0x3b) //possible issue identified - semgrep
while( true ) {
uVar8 = 0;
if (cVar4 == '\0') {
uVar8 = *(uint *)(param_1[0x37] + 0x101c);
}
if ((uVar8 & 0x20000) == 0) {
if (cVar4 == '\0') {
*(undefined4 *)(param_1[0x37] + 0x101c) = 0xb1600;
}
iVar7 = 1;
while( true ) {
uVar8 = 0;
if (*(char *)(param_1 + 0x3b) == '\0') {
uVar8 = *(uint *)(param_1[0x37] + 0x101c);
}
if (((uVar8 & 0x20000) == 0) || (iVar7 == 100)) break;
iVar7 = iVar7 + 1;
}
if ((uVar8 & 0x2ff00) == 0x1600) {
uVar5 = uVar8 & 0xff;
goto LAB_000a75e0;
}
}
iVar6 = iVar6 + 1;
if (iVar6 == 100) break;
cVar4 = *(char *)(param_1 + 0x3b) //possible issue identified - semgrep
}
uVar5 = 0;
LAB_000a75e0:
if ((int)(uVar8 << 0xe) < 0) {
if (RTDebugLevel == 0) {
bVar3 = *(byte *)((int)param_1 + 0x4adf);
}
else {
printk("BBP read R%d fail\n",0x16);
bVar3 = *(byte *)((int)param_1 + 0x4adf);
}
uVar5 = (uint)bVar3;
cVar4 = *(char *)(param_1 + 0x3b) //possible issue identified - semgrep
}
else {
cVar4 = *(char *)(param_1 + 0x3b) //possible issue identified - semgrep
}
iVar6 = 0;
do {
uVar8 = 0;
if (cVar4 == '\0') {
uVar8 = *(uint *)(param_1[0x37] + 0x101c);
}
if ((uVar8 & 0x20000) == 0) {
if (cVar4 == '\0') {
*(uint *)(param_1[0x37] + 0x101c) = uVar5 & 0x7f | 0xa1600;
}
*(char *)((int)param_1 + 0x4adf) = (char)(uVar5 & 0x7f);
if (iVar6 != 100) goto LAB_000a76c0;
break;
}
iVar6 = iVar6 + 1;
} while (iVar6 != 100);
if (RTDebugLevel != 0) {
printk("BBP write R%d fail\n",0x16);
}
LAB_000a76c0:
BbpSoftReset(param_1);
if (*(char *)(param_1 + 0x3b) == '\0') {
*(undefined4 *)(param_1[0x37] + 0x1328) = Default_TX_PIN_CFG;
}
}
RtmpDmaEnable(param_1,0);
puVar9 = (undefined4 *)param_1[0x61];
puVar11 = param_1;
while( true ) {
bVar3 = *(byte *)((int)puVar9 + 7);
*(byte *)((int)puVar9 + 7) = bVar3 & 0x7f;
iVar6 = puVar11[99];
if (iVar6 != 0) {
linux_pci_unmap_single
(*(undefined4 *)*param_1,*puVar9,
(bVar3 & 0x3f) << 8 | (uint)*(byte *)((int)puVar9 + 6),0xff00);
RTMPFreeNdisPacket(param_1,iVar6);
}
iVar6 = puVar11[100];
puVar11[99] = 0;
if (iVar6 != 0) {
linux_pci_unmap_single
(*(undefined4 *)*param_1,puVar9[2],
(*(byte *)((int)puVar9 + 5) & 0x3f) << 8 | (uint)*(byte *)(puVar9 + 1),0xff00);
RTMPFreeNdisPacket(param_1,iVar6);
}
puVar11[100] = 0;
if (puVar11 + 8 == param_1 + 0x200) break;
puVar9 = (undefined4 *)puVar11[0x69];
puVar11 = puVar11 + 8;
}
RtmpDmaEnable(param_1,1);
goto LAB_000a77d4;
LAB_000a6d0c:
if ((int)(uVar8 << 0xe) < 0) {
if (RTDebugLevel == 0) {
cVar4 = *(char *)(param_1 + 0x3b) //possible issue identified - semgrep
}
else {
printk("BBP read R%d fail\n",0x16);
cVar4 = *(char *)(param_1 + 0x3b) //possible issue identified - semgrep
}
}
else {
cVar4 = *(char *)(param_1 + 0x3b) //possible issue identified - semgrep
}
iVar6 = 0;
do {
uVar8 = 0;
if (cVar4 == '\0') {
uVar8 = *(uint *)(param_1[0x37] + 0x101c);
}
if ((uVar8 & 0x20000) == 0) {
if (cVar4 == '\0') {
*(undefined4 *)(param_1[0x37] + 0x101c) = 0xa1600;
}
*(undefined1 *)((int)param_1 + 0x4adf) = 0;
if (iVar6 != 100) goto LAB_000a77d4;
break;
}
iVar6 = iVar6 + 1;
} while (iVar6 != 100);
if (RTDebugLevel != 0) {
printk("BBP write R%d fail\n",0x16);
}
LAB_000a77d4:
param_1[0x1da93] = 200;
*(undefined1 *)(param_1 + 0x1dac0) = 0;
*(undefined1 *)(param_1 + 0x1da98) = 0;
*(undefined1 *)((int)param_1 + 0x76a61) = 0;
*(undefined1 *)((int)param_1 + 0x76a62) = 0;
*(undefined1 *)((int)param_1 + 0x76a63) = 0;
*(undefined1 *)(param_1 + 0x1da99) = 0;
*(undefined1 *)((int)param_1 + 0x76a65) = 0;
*(undefined1 *)((int)param_1 + 0x76a66) = 0;
*(undefined1 *)((int)param_1 + 0x76a67) = 0;
*(undefined2 *)(param_1 + 0x1da9a) = 0;
*(undefined2 *)((int)param_1 + 0x76a6a) = 0;
*(undefined2 *)(param_1 + 0x1da9b) = 0;
param_1[0x1da9c] = 0;
*(undefined1 *)((int)param_1 + 0x76a52) = 0;
*(undefined1 *)((int)param_1 + 0x76a53) = 0;
*(undefined2 *)((int)param_1 + 0x76aba) = 0;
param_1[0x1dab1] = 0;
param_1[0x1dab2] = 0;
param_1[0x1dab3] = 0;
param_1[0x1dab4] = 0;
param_1[0x1dab5] = 0;
param_1[0x1dab6] = 0;
param_1[0x1dab7] = 0;
param_1[0x1dab8] = 0;
param_1[0x1dab9] = 0;
param_1[0x1daba] = 0;
param_1[0x1dabb] = 0;
param_1[0x1dabc] = 0;
param_1[0x1dabd] = 0;
param_1[0x1dabe] = 0;
param_1[0x1dabf] = 0;
param_1[0x1da91] = 0;
BbpSoftReset(param_1);
iVar6 = *(int *)(param_1[1] + 0x194);
if (_kill_pid << 0xf < 0) {
*(uint *)(iVar6 + 8) = *(uint *)(iVar6 + 8) & 0xfffffffe | 1;
}
else {
uVar8 = Status & 1;
*(uint *)(iVar6 + 8) = *(uint *)(iVar6 + 8) | 1;
Status = Status & 0xfffffffe;
if (uVar8 != 0) {
Status = Status | 1;
}
}
if (bVar1 == 0x80) {
ATEAPStop(param_1);
}
RTMPExitLEDMode(param_1);
if ((*(char *)(param_1 + 0x3b) == '\0') &&
(*(uint *)(param_1[0x37] + 0x1004) = *(uint *)(param_1[0x37] + 0x1004) & 0xfffffffb,
*(char *)(param_1 + 0x3b) == '\0')) {
*(uint *)(param_1[0x37] + 0x1004) = *(uint *)(param_1[0x37] + 0x1004) & 0xfffffff7;
}
if (2 < RTDebugLevel) {
printk("ATE : <=== %s\n","ATESTART");
}
return 0;
}