undefined4 TXCONT(undefined4 *param_1)
{
char cVar1;
byte bVar2;
bool bVar3;
undefined1 uVar4;
uint uVar5;
undefined4 *puVar6;
uint uVar7;
undefined4 uVar8;
uint uVar9;
int iVar10;
int iVar11;
undefined1 *puVar12;
undefined1 *puVar13;
if (2 < RTDebugLevel) {
printk("ATE : ===> %s\n","TXCONT");
}
if (*(char *)((int)param_1 + 0x76a52) == '\x01') {
if (*(char *)(param_1 + 0x3b) == '\0') {
*(uint *)(param_1[0x37] + 0x1004) = *(uint *)(param_1[0x37] + 0x1004) & 0xffffffeb;
}
iVar11 = 0;
cVar1 = *(char *)(param_1 + 0x3b) //possible issue identified - semgrep
while( true ) {
uVar5 = 0;
if (cVar1 == '\0') {
uVar5 = *(uint *)(param_1[0x37] + 0x101c);
}
if ((uVar5 & 0x20000) == 0) {
if (cVar1 == '\0') {
*(undefined4 *)(param_1[0x37] + 0x101c) = 0xb1600;
}
iVar10 = 1;
while( true ) {
uVar5 = 0;
if (*(char *)(param_1 + 0x3b) == '\0') {
uVar5 = *(uint *)(param_1[0x37] + 0x101c);
}
if (((uVar5 & 0x20000) == 0) || (iVar10 == 100)) break;
iVar10 = iVar10 + 1;
}
if ((uVar5 & 0x2ff00) == 0x1600) {
uVar9 = uVar5 & 0xff;
goto LAB_000a5b24;
}
}
iVar11 = iVar11 + 1;
if (iVar11 == 100) break;
cVar1 = *(char *)(param_1 + 0x3b) //possible issue identified - semgrep
}
uVar9 = 0;
LAB_000a5b24:
if ((int)(uVar5 << 0xe) < 0) {
if (RTDebugLevel == 0) {
bVar2 = *(byte *)((int)param_1 + 0x4adf);
}
else {
printk("BBP read R%d fail\n",0x16);
bVar2 = *(byte *)((int)param_1 + 0x4adf);
}
uVar9 = (uint)bVar2;
cVar1 = *(char *)(param_1 + 0x3b) //possible issue identified - semgrep
}
else {
cVar1 = *(char *)(param_1 + 0x3b) //possible issue identified - semgrep
}
uVar9 = uVar9 & 0x7f;
iVar11 = 0;
do {
uVar5 = 0;
if (cVar1 == '\0') {
uVar5 = *(uint *)(param_1[0x37] + 0x101c);
}
if ((uVar5 & 0x20000) == 0) {
if (cVar1 == '\0') {
*(uint *)(param_1[0x37] + 0x101c) = uVar9 | 0xa1600;
}
*(char *)((int)param_1 + 0x4adf) = (char)uVar9;
if (iVar11 != 100) goto LAB_000a5c40;
break;
}
iVar11 = iVar11 + 1;
} while (iVar11 != 100);
if (RTDebugLevel != 0) {
printk("BBP write R%d fail\n",0x16);
}
}
else if (*(char *)(param_1 + 0x3b) == '\0') {
uVar9 = 0;
Default_TX_PIN_CFG = *(undefined4 *)(param_1[0x37] + 0x1328);
}
else {
Default_TX_PIN_CFG = 0;
uVar9 = 0;
}
LAB_000a5c40:
puVar6 = (undefined4 *)&restore_BBP;
restore_BBP = 0;
while (puVar6 = (undefined4 *)((int)puVar6 + 1), puVar6 != &Default_TX_PIN_CFG) {
*(undefined1 *)puVar6 = 0;
}
puVar12 = &restore_BBP;
puVar13 = (undefined1 *)((int)param_1 + 0x4ac9);
uVar5 = 0;
do {
iVar11 = 0;
cVar1 = *(char *)(param_1 + 0x3b) //possible issue identified - semgrep
LAB_000a5c84:
uVar7 = 0;
if (cVar1 == '\0') {
uVar7 = *(uint *)(param_1[0x37] + 0x101c);
}
if ((uVar7 & 0x20000) != 0) {
LAB_000a5d1c:
iVar11 = iVar11 + 1;
if (iVar11 == 100) goto LAB_000a5d24;
cVar1 = *(char *)(param_1 + 0x3b) //possible issue identified - semgrep
goto LAB_000a5c84;
}
if (cVar1 == '\0') {
*(uint *)(param_1[0x37] + 0x101c) = (uVar5 & 0xff) << 8 | 0xb0000;
}
iVar10 = 1;
while( true ) {
uVar7 = 0;
if (*(char *)(param_1 + 0x3b) == '\0') {
uVar7 = *(uint *)(param_1[0x37] + 0x101c);
}
if (((uVar7 & 0x20000) == 0) || (iVar10 == 100)) break;
iVar10 = iVar10 + 1;
}
if (((uVar7 & 0x20000) != 0) || ((uVar7 << 0x10) >> 0x18 != uVar5)) goto LAB_000a5d1c;
*puVar12 = (char)uVar7;
LAB_000a5d24:
if ((uVar7 & 0x20000) != 0) {
if (RTDebugLevel == 0) {
uVar4 = *puVar13;
}
else {
printk("BBP read R%d fail\n",uVar5);
uVar4 = *puVar13;
}
*puVar12 = uVar4;
}
uVar5 = uVar5 + 1;
puVar13 = puVar13 + 1;
puVar12 = puVar12 + 1;
} while (uVar5 != 0xa8);
param_1[0x1da90] = 0x32;
*(undefined1 *)(param_1 + 0x1da83) = 5;
if ((param_1[0x12a5] == 0x28720200) &&
(((*(char *)(param_1 + 0x12f5) == '\x05' || ((param_1[0x12fd] & 0xf0) == 0x20)) ||
(*(char *)(param_1 + 0x12f5) == '\v')))) {
BbpSoftReset(param_1);
}
RtmpDmaEnable(param_1,0);
if (*(char *)(param_1 + 0x3b) == '\0') {
param_1[0x261] = *(undefined4 *)(param_1[0x37] + 0x1000);
param_1[0x261] = *(undefined4 *)(param_1[0x37] + 0x23c);
}
else {
param_1[0x261] = 0;
}
uVar8 = param_1[0x261];
param_1[0x262] = uVar8;
param_1[0x260] = uVar8;
if (*(char *)(param_1 + 0x3b) == '\0') {
*(undefined4 *)(param_1[0x37] + 0x238) = uVar8;
}
param_1[0x1da91] = 0;
SetJapanFilter(param_1);
uVar5 = 0;
do {
bVar3 = (uint)param_1[0x1da90] <= uVar5;
uVar5 = uVar5 + 1;
if (bVar3) {
uVar8 = param_1[0x260];
goto LAB_000a5f6c;
}
iVar11 = param_1[0x260];
iVar10 = param_1[iVar11 * 8 + 99];
puVar6 = (undefined4 *)param_1[(iVar11 + 0xc) * 8 + 1];
if (iVar10 != 0) {
linux_pci_unmap_single
(*(undefined4 *)*param_1,*puVar6,
(*(byte *)((int)puVar6 + 7) & 0x3f) << 8 | (uint)*(byte *)((int)puVar6 + 6),0xff00)
;
RTMPFreeNdisPacket(param_1,iVar10);
}
iVar10 = param_1[iVar11 * 8 + 100];
param_1[iVar11 * 8 + 99] = 0;
if (iVar10 != 0) {
linux_pci_unmap_single
(*(undefined4 *)*param_1,puVar6[2],
(*(byte *)((int)puVar6 + 5) & 0x3f) << 8 | (uint)*(byte *)(puVar6 + 1),0xff00);
RTMPFreeNdisPacket(param_1,iVar10);
}
param_1[iVar11 * 8 + 100] = 0;
iVar11 = ATESetUpFrame(param_1,iVar11);
if (iVar11 != 0) {
return 1;
}
param_1[0x260] = param_1[0x260] + 1 & 0x3f;
} while (uVar5 != 0x3f);
uVar8 = param_1[0x260];
LAB_000a5f6c:
ATESetUpFrame(param_1,uVar8);
if ((*(char *)(param_1 + 0x3b) == '\0') &&
(*(uint *)(param_1[0x37] + 0x1004) = *(uint *)(param_1[0x37] + 0x1004) | 4,
*(char *)(param_1 + 0x3b) == '\0')) {
*(uint *)(param_1[0x37] + 0x1004) = *(uint *)(param_1[0x37] + 0x1004) & 0xfffffff7;
}
RtmpDmaEnable(param_1,1);
if (*(char *)((int)param_1 + 0x76a52) == '\x01') {
*(undefined1 *)(param_1 + 0x1dac0) = 1;
}
if (*(char *)(param_1 + 0x3b) == '\0') {
*(undefined4 *)(param_1[0x37] + 0x238) = param_1[0x260];
}
RtmpOsMsDelay(5);
if (*(byte *)(param_1 + 0x1da8e) < 0xe) {
if (*(char *)(param_1 + 0x3b) != '\0') goto LAB_000a6058;
iVar11 = param_1[0x37];
uVar8 = 0x80c00a0;
}
else {
if (*(char *)(param_1 + 0x3b) != '\0') goto LAB_000a6058;
iVar11 = param_1[0x37];
uVar8 = 0x40c0050;
}
*(undefined4 *)(iVar11 + 0x1328) = uVar8;
LAB_000a6058:
iVar11 = 0;
cVar1 = *(char *)(param_1 + 0x3b) //possible issue identified - semgrep
LAB_000a6094:
uVar5 = 0;
if (cVar1 == '\0') {
uVar5 = *(uint *)(param_1[0x37] + 0x101c);
}
if ((uVar5 & 0x20000) == 0) {
if (cVar1 == '\0') {
*(undefined4 *)(param_1[0x37] + 0x101c) = 0xb1600;
}
iVar10 = 1;
while( true ) {
uVar5 = 0;
if (*(char *)(param_1 + 0x3b) == '\0') {
uVar5 = *(uint *)(param_1[0x37] + 0x101c);
}
if (((uVar5 & 0x20000) == 0) || (iVar10 == 100)) break;
iVar10 = iVar10 + 1;
}
if ((uVar5 & 0x2ff00) == 0x1600) {
uVar9 = uVar5 & 0xff;
LAB_000a6128:
if ((int)(uVar5 << 0xe) < 0) {
if (RTDebugLevel == 0) {
bVar2 = *(byte *)((int)param_1 + 0x4adf);
}
else {
printk("BBP read R%d fail\n",0x16);
bVar2 = *(byte *)((int)param_1 + 0x4adf);
}
uVar9 = (uint)bVar2;
cVar1 = *(char *)(param_1 + 0x3b) //possible issue identified - semgrep
}
else {
cVar1 = *(char *)(param_1 + 0x3b) //possible issue identified - semgrep
}
iVar11 = 0;
while( true ) {
uVar5 = 0;
if (cVar1 == '\0') {
uVar5 = *(uint *)(param_1[0x37] + 0x101c);
}
if ((uVar5 & 0x20000) == 0) break;
iVar11 = iVar11 + 1;
if (iVar11 == 100) {
LAB_000a61e0:
if (RTDebugLevel != 0) {
printk("BBP write R%d fail\n",0x16);
}
LAB_000a6208:
if (2 < RTDebugLevel) {
printk("ATE : <=== %s\n","TXCONT");
}
return 0;
}
}
if (cVar1 == '\0') {
*(uint *)(param_1[0x37] + 0x101c) = uVar9 | 0xa1680;
}
*(byte *)((int)param_1 + 0x4adf) = (byte)uVar9 | 0x80;
if (iVar11 != 100) goto LAB_000a6208;
goto LAB_000a61e0;
}
}
iVar11 = iVar11 + 1;
if (iVar11 == 100) goto LAB_000a6128;
cVar1 = *(char *)(param_1 + 0x3b) //possible issue identified - semgrep
goto LAB_000a6094;
}