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;
}