undefined4 Set_ATE_TX_MODE_Proc(int param_1,undefined4 param_2)
{
char cVar1;
byte bVar2;
uint uVar3;
int iVar4;
ushort uVar5;
int iVar6;
uint uVar7;
ushort uVar8;
ushort local_20 [6];
uVar3 = simple_strtol(param_2,0,10);
*(uint *)(param_1 + 0x76a14) = *(uint *)(param_1 + 0x76a14) & 0xff3fffff | (uVar3 & 3) << 0x16;
if ((uVar3 & 3) == 0) {
iVar6 = 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) = 0xb0400;
}
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) == 0x400) {
uVar7 = uVar3 & 0xff;
goto LAB_000a06c8;
}
}
iVar6 = iVar6 + 1;
if (iVar6 == 100) break;
cVar1 = *(char *)(param_1 + 0xec) //possible issue identified - semgrep
}
uVar7 = 0;
LAB_000a06c8:
if ((int)(uVar3 << 0xe) < 0) {
if (RTDebugLevel == 0) {
bVar2 = *(byte *)(param_1 + 0x4acd);
}
else {
printk("BBP read R%d fail\n",4);
bVar2 = *(byte *)(param_1 + 0x4acd);
}
uVar7 = (uint)bVar2;
cVar1 = *(char *)(param_1 + 0xec) //possible issue identified - semgrep
}
else {
cVar1 = *(char *)(param_1 + 0xec) //possible issue identified - semgrep
}
iVar6 = 0;
do {
uVar3 = 0;
if (cVar1 == '\0') {
uVar3 = *(uint *)(*(int *)(param_1 + 0xdc) + 0x101c);
}
if ((uVar3 & 0x20000) == 0) {
if (cVar1 == '\0') {
*(uint *)(*(int *)(param_1 + 0xdc) + 0x101c) = uVar7 & 0xe7 | 0xa0400;
}
*(char *)(param_1 + 0x4acd) = (char)(uVar7 & 0xe7);
if (iVar6 != 100) goto LAB_000a07a8;
break;
}
iVar6 = iVar6 + 1;
} while (iVar6 != 100);
if (RTDebugLevel != 0) {
printk("BBP write R%d fail\n",4);
}
LAB_000a07a8:
*(uint *)(param_1 + 0x76a14) = *(uint *)(param_1 + 0x76a14) & 0xffff7fff;
if (RTDebugLevel != 0) {
printk("Set_ATE_TX_MODE_Proc::CCK Only support 20MHZ. Switch to 20MHZ.\n");
}
}
if ((*(int *)(param_1 + 0x4a94) == 0x28720200) && (*(char *)(param_1 + 0x4bd4) == '\v')) {
if ((*(uint *)(param_1 + 0x76a14) & 0xc00000) == 0) {
(**(code **)(param_1 + 0x10))(param_1,0x126,local_20);
uVar5 = 0x15;
if (local_20[0] >> 8 != 0xff) {
uVar5 = local_20[0] >> 8;
}
uVar8 = 0x4f;
if ((local_20[0] & 0xff) != 0xff) {
uVar8 = local_20[0] & 0xff;
}
RT30xxWriteRFRegister(param_1,uVar5,uVar8);
(**(code **)(param_1 + 0x10))(param_1,0x12a,local_20);
uVar5 = 0x1d;
if (local_20[0] >> 8 != 0xff) {
uVar5 = local_20[0] >> 8;
}
uVar8 = 7;
if ((local_20[0] & 0xff) != 0xff) {
uVar8 = local_20[0] & 0xff;
}
RT30xxWriteRFRegister(param_1,uVar5,uVar8);
if ((*(uint *)(param_1 + 0x76a14) & 0x8000) == 0) {
local_20[0] = 0x1f;
}
else {
local_20[0] = 0x3f;
}
}
else {
(**(code **)(param_1 + 0x10))(param_1,0x124,local_20);
uVar5 = 0x15;
if (local_20[0] >> 8 != 0xff) {
uVar5 = local_20[0] >> 8;
}
uVar8 = 0x6f;
if ((local_20[0] & 0xff) != 0xff) {
uVar8 = local_20[0] & 0xff;
}
RT30xxWriteRFRegister(param_1,uVar5,uVar8);
(**(code **)(param_1 + 0x10))(param_1,0x128,local_20);
uVar5 = 0x1d;
if (local_20[0] >> 8 != 0xff) {
uVar5 = local_20[0] >> 8;
}
uVar8 = 7;
if ((local_20[0] & 0xff) != 0xff) {
uVar8 = local_20[0] & 0xff;
}
RT30xxWriteRFRegister(param_1,uVar5,uVar8);
if ((*(uint *)(param_1 + 0x76a14) & 0x8000) == 0) {
local_20[0] = 0x18;
}
else {
local_20[0] = 0x28;
}
}
RT30xxWriteRFRegister(param_1,0x18,(undefined1)local_20[0]);
}
if (2 < RTDebugLevel) {
printk("Set_ATE_TX_MODE_Proc (TxMode = %d)\n",(uint)(*(int *)(param_1 + 0x76a14) << 8) >> 0x1e);
}
if (2 < RTDebugLevel) {
printk("Ralink: Set_ATE_TX_MODE_Proc Success\n");
}
return 1;
}