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