undefined4 RT28xxPciAsicRadioOff(int param_1,char param_2,uint param_3)

{
  uint uVar1;
  char *pcVar2;
  char cVar3;
  uint uVar4;
  uint uVar5;
  
  param_3 = param_3 & 0xffff;
  if (2 < RTDebugLevel) {
    printk("%s ===> Lv= %d, TxCpuIdx = %d, TxDmaIdx = %d. RxCpuIdx = %d, RxDmaIdx = %d.\n",
           "RT28xxPciAsicRadioOff",param_2,*(undefined4 *)(param_1 + 0x980),
           *(undefined4 *)(param_1 + 0x984),*(undefined4 *)(param_1 + 0x4a88),
           *(undefined4 *)(param_1 + 0x4a8c));
  }
  if (*(char *)(param_1 + 0x16964) == '\x01') {
    if (param_2 == '\0') {
      return 0;
    }
  }
  else if (param_2 == '\0') {
    if (*(char *)(param_1 + 0xec) == '\0') {
      uVar1 = *(uint *)(*(int *)(param_1 + 0xdc) + 0x29c);
      uVar5 = *(uint *)(*(int *)(param_1 + 0xdc) + 0x298);
      uVar4 = uVar5;
      if (uVar5 < uVar1) {
        if (0x2a < uVar1 - uVar5) {
          if (RTDebugLevel < 3) {
            return 0;
          }
          pcVar2 = "AsicRadioOff ===> return1. RxDmaIdx = %d ,  RxCpuIdx = %d. \n";
          uVar4 = uVar1;
          uVar1 = uVar5;
          goto LAB_0005476c;
        }
        if (uVar5 < uVar1) goto LAB_00054784;
      }
    }
    else {
      uVar1 = 0;
      uVar4 = 0;
    }
    if (uVar4 - uVar1 < 0x2a) {
      if (RTDebugLevel < 3) {
        return 0;
      }
      pcVar2 = "AsicRadioOff ===> return2.  RxCpuIdx = %d. RxDmaIdx = %d ,  \n";
LAB_0005476c:
      printk(pcVar2,uVar4,uVar1);
      return 0;
    }
  }
LAB_00054784:
  *(uint *)(param_1 + 0x76904) = *(uint *)(param_1 + 0x76904) | 0x40000000;
  if (((((*(uint *)(param_1 + 0x16abc) & 1) == 0) && (*(char *)(param_1 + 0x16964) != '\x01')) ||
      (cVar3 = *(char *)(param_1 + 0x169ed), *(char *)(param_1 + 0x169ec) == cVar3)) ||   //possible issue identified - semgrep
     ((*(uint *)(param_1 + 0x1f19c) & 0x20000) == 0)) {
    cVar3 = *(char *)(param_1 + 0x169ec)   //possible issue identified - semgrep
  }
  AsicTurnOffRFClk(param_1,cVar3);
  if (param_2 == '\x02') {
    cVar3 = *(char *)(param_1 + 0xec)   //possible issue identified - semgrep
    if ((*(uint *)(param_1 + 0x76904) & 0x2000) != 0) {
      if (cVar3 == '\0') {
        *(undefined4 *)(*(int *)(param_1 + 0xdc) + 0x204) = 0;
      }
      *(uint *)(param_1 + 0x76904) = *(uint *)(param_1 + 0x76904) & 0xffffdfff;
      cVar3 = *(char *)(param_1 + 0xec)   //possible issue identified - semgrep
    }
  }
  else {
    cVar3 = *(char *)(param_1 + 0xec)   //possible issue identified - semgrep
    if (cVar3 != '\0') goto LAB_00054894;
    *(undefined4 *)(*(int *)(param_1 + 0xdc) + 0x204) = 0x4000;
    cVar3 = *(char *)(param_1 + 0xec)   //possible issue identified - semgrep
  }
  if (cVar3 == '\0') {
    *(undefined4 *)(*(int *)(param_1 + 0xdc) + 0x298) = *(undefined4 *)(param_1 + 0x4a88);
    cVar3 = *(char *)(param_1 + 0xec)   //possible issue identified - semgrep
  }
  else {
    cVar3 = *(char *)(param_1 + 0xec)   //possible issue identified - semgrep
  }
LAB_00054894:
  if (cVar3 == '\0') {
    *(undefined4 *)(*(int *)(param_1 + 0xdc) + 0x701c) = 0xffffffff;
    cVar3 = *(char *)(param_1 + 0xec)   //possible issue identified - semgrep
  }
  else {
    cVar3 = *(char *)(param_1 + 0xec)   //possible issue identified - semgrep
  }
  if (cVar3 == '\0') {
    *(undefined4 *)(*(int *)(param_1 + 0xdc) + 0x7014) = 0xffffffff;
  }
  AsicSendCommandToMcu(param_1,0x30,1,0xff,1);
  if (param_2 == '\0') {
    cVar3 = *(char *)(param_1 + 0xec)   //possible issue identified - semgrep
    if (param_3 == 0) {
      param_3 = 1;
    }
    if (cVar3 == '\0') {
      *(undefined4 *)(*(int *)(param_1 + 0xdc) + 0x1208) = 0;
      cVar3 = *(char *)(param_1 + 0xec)   //possible issue identified - semgrep
    }
    if (cVar3 == '\0') {
      *(uint *)(*(int *)(param_1 + 0xdc) + 0x1208) = (param_3 - 1 & 0x7f) << 8 | 0x8005;
    }
  }
  return 1;
}