undefined4 DO_RACFG_CMD_TX_START(int param_1,undefined4 param_2,int param_3)
{
char cVar1;
byte bVar2;
uint uVar3;
int iVar4;
char *pcVar5;
uint uVar6;
undefined4 uVar7;
int iVar8;
if (*(char *)(param_1 + 0x76b00) != '\0') {
if ((*(byte *)(param_1 + 0x76a0c) & 1) != 0) {
uVar7 = 2;
if (2 < RTDebugLevel) {
printk("Ate Tx is already running, to run next Tx, you must stop it first\n");
uVar7 = 2;
}
goto LAB_000aab10;
}
if ((*(byte *)(param_1 + 0x76a0c) & 1) == 0) {
iVar8 = 0;
while ((iVar8 = iVar8 + 1, iVar8 != 0xb && (*(char *)(param_1 + 0x76b00) != '\0'))) {
RtmpOsMsDelay(5);
}
*(undefined1 *)(param_1 + 0x76a52) = 0;
*(undefined1 *)(param_1 + 0x76b00) = 0;
*(undefined4 *)(param_1 + 0x76a44) = 0;
}
}
if ((*(byte *)(param_1 + 0x76a0c) & 1) == 0) {
cVar1 = *(char *)(param_3 + 9) //possible issue identified - semgrep
}
else {
TXSTOP(param_1);
cVar1 = *(char *)(param_3 + 9) //possible issue identified - semgrep
}
if (*(char *)(param_3 + 8) != '\0' || cVar1 != '\0') {
memmove((void *)(param_1 + 0x76a13),(void *)(param_3 + 0x10),0x10) //possible issue identified - semgrep
memmove((void *)(param_1 + 0x76a40),(void *)(param_3 + 0x20),4) //possible issue identified - semgrep
uVar3 = *(uint *)(param_1 + 0x76a40);
*(undefined2 *)(param_1 + 0x76a24) = 0;
*(uint *)(param_1 + 0x76a40) =
(((uVar3 >> 0x10) << 0x18 | (uVar3 >> 0x18) << 0x10) >> 0x10) +
((uVar3 & 0xff) << 8 | uVar3 >> 8 & 0xff) * 0x10000;
uVar3 = (*(ushort *)(param_3 + 0x26) & 0xff) << 8 | (uint)(*(ushort *)(param_3 + 0x26) >> 8);
*(short *)(param_1 + 0x76a74) = (short)uVar3;
if (0x20 < uVar3) {
uVar7 = 3;
if (RTDebugLevel != 0) {
printk("pAd->ate.HLen > 32\n");
uVar7 = 3;
}
goto LAB_000aab10;
}
memmove((void *)(param_1 + 0x76a78),(void *)(param_3 + 0x28),uVar3) //possible issue identified - semgrep
uVar3 = (((*(ushort *)(param_3 + 8) & 0xff) << 8 | (uint)(*(ushort *)(param_3 + 8) >> 8)) -
(uint)*(ushort *)(param_1 + 0x76a74)) - 0x1c;
uVar6 = uVar3 & 0xffff;
*(short *)(param_1 + 0x76a76) = (short)uVar3;
if (0x20 < uVar6) {
uVar7 = 4;
if (RTDebugLevel != 0) {
printk("pAd->ate.PLen > 32\n");
uVar7 = 4;
}
goto LAB_000aab10;
}
memmove((void *)(param_1 + 0x76a98),
(void *)(param_3 + (uint)*(ushort *)(param_1 + 0x76a74) + 0x28),uVar6) //possible issue identified - semgrep
*(ushort *)(param_1 + 0x76ab8) =
(ushort)((uint)(*(int *)(param_1 + 0x76a18) << 0xc) >> 0x14) -
*(short *)(param_1 + 0x76a74);
}
iVar8 = 0;
cVar1 = *(char *)(param_1 + 0xec) //possible issue identified - semgrep
while( true ) {
uVar3 = 0;
if (cVar1 == '\0') {
uVar3 = *(uint *)(*(int *)(param_1 + 0xdc) + 0x101c);
}
if ((uVar3 & 0x20000) == 0) {
if (cVar1 == '\0') {
*(undefined4 *)(*(int *)(param_1 + 0xdc) + 0x101c) = 0xb1600;
}
iVar4 = 1;
while( true ) {
uVar3 = 0;
if (*(char *)(param_1 + 0xec) == '\0') {
uVar3 = *(uint *)(*(int *)(param_1 + 0xdc) + 0x101c);
}
if (((uVar3 & 0x20000) == 0) || (iVar4 == 100)) break;
iVar4 = iVar4 + 1;
}
if ((uVar3 & 0x2ff00) == 0x1600) {
uVar6 = uVar3 & 0xff;
goto LAB_000aa810;
}
}
iVar8 = iVar8 + 1;
if (iVar8 == 100) break;
cVar1 = *(char *)(param_1 + 0xec) //possible issue identified - semgrep
}
uVar6 = 0;
LAB_000aa810:
if ((int)(uVar3 << 0xe) < 0) {
if (RTDebugLevel == 0) {
bVar2 = *(byte *)(param_1 + 0x4adf);
}
else {
printk("BBP read R%d fail\n",0x16);
bVar2 = *(byte *)(param_1 + 0x4adf);
}
uVar6 = (uint)bVar2;
}
if (uVar6 == 0x80) {
if (2 < RTDebugLevel) {
printk("BBP22_TXCONT_OR_CARRSUPP\n");
}
iVar8 = 0;
cVar1 = *(char *)(param_1 + 0xec) //possible issue identified - semgrep
while( true ) {
uVar3 = 0;
if (cVar1 == '\0') {
uVar3 = *(uint *)(*(int *)(param_1 + 0xdc) + 0x101c);
}
if ((uVar3 & 0x20000) == 0) {
if (cVar1 == '\0') {
*(undefined4 *)(*(int *)(param_1 + 0xdc) + 0x101c) = 0xb1800;
}
iVar4 = 1;
while( true ) {
uVar3 = 0;
if (*(char *)(param_1 + 0xec) == '\0') {
uVar3 = *(uint *)(*(int *)(param_1 + 0xdc) + 0x101c);
}
if (((uVar3 & 0x20000) == 0) || (iVar4 == 100)) break;
iVar4 = iVar4 + 1;
}
if ((uVar3 & 0x2ff00) == 0x1800) {
uVar6 = uVar3 & 0xff;
goto LAB_000aa9a4;
}
}
iVar8 = iVar8 + 1;
if (iVar8 == 100) break;
cVar1 = *(char *)(param_1 + 0xec) //possible issue identified - semgrep
}
uVar6 = 0;
LAB_000aa9a4:
if ((int)(uVar3 << 0xe) < 0) {
if (RTDebugLevel == 0) {
uVar6 = (uint)*(byte *)(param_1 + 0x4ae1);
}
else {
printk("BBP read R%d fail\n",0x18);
uVar6 = (uint)*(byte *)(param_1 + 0x4ae1);
}
}
if (uVar6 == 0) {
if (2 < RTDebugLevel) {
pcVar5 = "START TXCONT\n";
LAB_000aaa24:
printk(pcVar5);
}
}
else {
if (uVar6 != 1) {
if (RTDebugLevel != 0) {
pcVar5 = "Unknown TX subtype !";
goto LAB_000aaac4;
}
goto LAB_000aaad8;
}
if (2 < RTDebugLevel) {
pcVar5 = "START TXCARRSUPP\n";
goto LAB_000aaa24;
}
}
*(undefined1 *)(param_1 + 0x76a52) = 1;
}
else {
if (uVar6 == 0xc1) {
if (2 < RTDebugLevel) {
printk("START TXCARR\n");
}
*(undefined1 *)(param_1 + 0x76a52) = 1;
pcVar5 = "TXCARR";
}
else {
if (uVar6 != 0) {
if (RTDebugLevel != 0) {
pcVar5 = "Unknown Start TX subtype !";
LAB_000aaac4:
printk(pcVar5);
}
goto LAB_000aaad8;
}
if (*(int *)(param_1 + 0x76a40) == 0) {
*(undefined4 *)(param_1 + 0x76a40) = 0xffffffff;
}
if (2 < RTDebugLevel) {
printk("START TXFRAME\n");
}
*(undefined1 *)(param_1 + 0x76a52) = 1;
pcVar5 = "TXFRAME";
}
Set_ATE_Proc(param_1,pcVar5);
}
LAB_000aaad8:
uVar7 = 1;
if (*(char *)(param_1 + 0x76a52) == '\x01') {
ResponseToGUI(param_3,param_2,2,0);
return 0;
}
LAB_000aab10:
ResponseToGUI(param_3,param_2,2);
return uVar7;
}