undefined4 NICInitializeAsic(int param_1,char param_2)

{
  bool bVar1;
  byte bVar2;
  char cVar3;
  code *pcVar4;
  byte bVar5;
  uint uVar6;
  int iVar7;
  undefined4 *puVar8;
  uint uVar9;
  int iVar10;
  ushort *puVar11;
  int iVar12;
  uint uVar13;
  byte *pbVar14;
  
  if (2 < RTDebugLevel) {
    printk("--> NICInitializeAsic\n");
  }
  if (*(char *)(param_1 + 0xec) == '\0') {
    *(undefined4 *)(*(int *)(param_1 + 0xdc) + 0x1204) = 3;
  }
  if (param_2 == '\x01') {
    if (*(char *)(param_1 + 0xec) != '\0') goto LAB_00029504;
    *(undefined4 *)(*(int *)(param_1 + 0xdc) + 0x1004) = 3;
    cVar3 = *(char *)(param_1 + 0xec)   //possible issue identified - semgrep
  }
  else if (*(char *)(param_1 + 0xec) == '\0') {
    *(undefined4 *)(*(int *)(param_1 + 0xdc) + 0x1004) = 1;
    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) + 0x1004) = 0;
  }
LAB_00029504:
  puVar8 = &DAT_000e1ab0;
  cVar3 = *(char *)(param_1 + 0xec)   //possible issue identified - semgrep
  while( true ) {
    if (cVar3 == '\0') {
      *(undefined4 *)(*(int *)(param_1 + 0xdc) + puVar8[-1]) = *puVar8;
    }
    puVar8 = puVar8 + 2;
    if (puVar8 == &DAT_000e1b98) break;
    cVar3 = *(char *)(param_1 + 0xec)   //possible issue identified - semgrep
  }
  puVar8 = &DAT_000e1b98;
  cVar3 = *(char *)(param_1 + 0xec)   //possible issue identified - semgrep
  while( true ) {
    if (cVar3 == '\0') {
      *(undefined4 *)(*(int *)(param_1 + 0xdc) + puVar8[-1]) = *puVar8;
    }
    puVar8 = puVar8 + 2;
    if (puVar8 == (undefined4 *)0xe1bc8) break;
    cVar3 = *(char *)(param_1 + 0xec)   //possible issue identified - semgrep
  }
  if (*(char *)(param_1 + 0xad) == '\x01') {
    puVar8 = &DAT_000e1a90;
    cVar3 = *(char *)(param_1 + 0xec)   //possible issue identified - semgrep
    while( true ) {
      if (cVar3 == '\0') {
        *(undefined4 *)(*(int *)(param_1 + 0xdc) + (uint)*(ushort *)(puVar8 + -1)) = *puVar8;
      }
      puVar8 = puVar8 + 2;
      if (puVar8 == &DAT_000e1ab0) break;
      cVar3 = *(char *)(param_1 + 0xec)   //possible issue identified - semgrep
    }
    pcVar4 = *(code **)(param_1 + 0x2c);
  }
  else {
    pcVar4 = *(code **)(param_1 + 0x2c);
  }
  if (pcVar4 != (code *)0x0) {
    (*pcVar4)(param_1);
  }
  iVar12 = 0;
  do {
    uVar9 = 0;
    if (*(char *)(param_1 + 0xec) == '\0') {
      uVar9 = *(uint *)(*(int *)(param_1 + 0xdc) + 0x1200);
    }
    if ((*(uint *)(param_1 + 0x76904) & 0x100) != 0) {
      return 1;
    }
    if ((uVar9 & 3) == 0) break;
    if (2 < RTDebugLevel) {
      printk("Check MAC_STATUS_CFG  = Busy = %x\n");
    }
    RTMPusecDelay(1000);
    bVar1 = iVar12 != 100;
    iVar12 = iVar12 + 1;
  } while (bVar1);
  if ((*(char *)(param_1 + 0xec) == '\0') &&
     (*(undefined4 *)(*(int *)(param_1 + 0xdc) + 0x7028) = 0, *(char *)(param_1 + 0xec) == '\0')) {
    *(undefined4 *)(*(int *)(param_1 + 0xdc) + 0x7010) = 0;
  }
  AsicSendCommandToMcu(param_1,0x72,0,0,0);
  RTMPusecDelay(1000);
  *(undefined1 *)(param_1 + 0x3a84) = 0x72;
  iVar12 = 0;
  uVar9 = 0xff;
  cVar3 = *(char *)(param_1 + 0xec)   //possible issue identified - semgrep
  do {
    uVar6 = Status;
    if (cVar3 == '\0') {
      if (*(int *)(param_1 + 0x29f8) == 4) {
        uVar13 = 0;
        if (*(char *)(param_1 + 0xad) == '\x01') {
          Status = Status & 0xfffffffe;
          uVar13 = uVar6 & 1;
        }
        iVar10 = 0;
        cVar3 = *(char *)(param_1 + 0xec)   //possible issue identified - semgrep
LAB_00029724:
        uVar6 = 0;
        if (cVar3 == '\0') {
          uVar6 = *(uint *)(*(int *)(param_1 + 0xdc) + 0x101c);
        }
        if ((uVar6 & 0x20000) != 0) {
LAB_000297b8:
          iVar10 = iVar10 + 1;
          if (iVar10 == 100) goto LAB_000297c0;
          cVar3 = *(char *)(param_1 + 0xec)   //possible issue identified - semgrep
          goto LAB_00029724;
        }
        if (cVar3 == '\0') {
          *(undefined4 *)(*(int *)(param_1 + 0xdc) + 0x101c) = 0xb0000;
        }
        iVar7 = 1;
        do {
          uVar6 = 0;
          if (*(char *)(param_1 + 0xec) == '\0') {
            uVar6 = *(uint *)(*(int *)(param_1 + 0xdc) + 0x101c);
          }
        } while (((uVar6 & 0x20000) != 0) && (bVar1 = iVar7 != 100, iVar7 = iVar7 + 1, bVar1));
        if ((uVar6 & 0x2ff00) != 0) goto LAB_000297b8;
        uVar9 = uVar6 & 0xff;
LAB_000297c0:
        if ((uVar6 & 0x20000) == 0) {
          cVar3 = *(char *)(param_1 + 0xad)   //possible issue identified - semgrep
        }
        else {
          printk("ERROR!!! ");
          printk("BBP(viaMCU=%d) read R%d fail\n",0,0);
          uVar9 = (uint)*(byte *)(param_1 + 0x4ac9);
          cVar3 = *(char *)(param_1 + 0xad)   //possible issue identified - semgrep
        }
      }
      else {
        uVar13 = 0;
        if (*(char *)(param_1 + 0xad) == '\x01') {
          Status = Status & 0xfffffffe;
          uVar13 = uVar6 & 1;
        }
        iVar10 = 0;
        cVar3 = *(char *)(param_1 + 0xec)   //possible issue identified - semgrep
LAB_00029830:
        uVar6 = 0;
        if (cVar3 == '\0') {
          uVar6 = *(uint *)(*(int *)(param_1 + 0xdc) + 0x7028);
        }
        if ((uVar6 & 0x20000) != 0) {
LAB_000298f8:
          iVar10 = iVar10 + 1;
          if (iVar10 == 100) goto LAB_00029900;
          cVar3 = *(char *)(param_1 + 0xec)   //possible issue identified - semgrep
          goto LAB_00029830;
        }
        if (cVar3 == '\0') {
          *(undefined4 *)(*(int *)(param_1 + 0xdc) + 0x7028) = 0xb0000;
        }
        AsicSendCommandToMcuBBP(param_1,0x80,0xff,0,0,0);
        RTMPusecDelay(1000);
        iVar7 = 1;
        do {
          uVar6 = 0;
          if (*(char *)(param_1 + 0xec) == '\0') {
            uVar6 = *(uint *)(*(int *)(param_1 + 0xdc) + 0x7028);
          }
        } while (((uVar6 & 0x20000) != 0) && (bVar1 = iVar7 != 100, iVar7 = iVar7 + 1, bVar1));
        if ((uVar6 & 0x2ff00) != 0) goto LAB_000298f8;
        uVar9 = uVar6 & 0xff;
LAB_00029900:
        if ((uVar6 & 0x20000) == 0) {
          cVar3 = *(char *)(param_1 + 0xad)   //possible issue identified - semgrep
        }
        else {
          printk("ERROR!!! ");
          printk("BBP(viaMCU=%d) read R%d fail\n",1,0);
          uVar9 = (uint)*(byte *)(param_1 + 0x4ac9);
          uVar6 = 0;
          if (*(char *)(param_1 + 0xec) == '\0') {
            uVar6 = *(uint *)(*(int *)(param_1 + 0xdc) + 0x7028);
          }
          if (*(char *)(param_1 + 0xec) == '\0') {
            *(uint *)(*(int *)(param_1 + 0xdc) + 0x7028) = uVar6 & 0xfffdffff;
          }
          cVar3 = *(char *)(param_1 + 0xad)   //possible issue identified - semgrep
        }
      }
      if ((cVar3 == '\x01') && (Status = Status & 0xfffffffe, uVar13 != 0)) {
        Status = Status | 1;
      }
    }
    if ((*(uint *)(param_1 + 0x76904) & 0x100) != 0) {
      return 1;
    }
    if (2 < RTDebugLevel) {
      printk("BBP version = %x\n",uVar9);
    }
    iVar12 = iVar12 + 1;
    if ((iVar12 == 0x14) || ((uVar9 - 1 & 0xff) < 0xfe)) break;
    cVar3 = *(char *)(param_1 + 0xec)   //possible issue identified - semgrep
  } while( true );
  if (0xfd < (uVar9 - 1 & 0xff)) {
    return 1;
  }
  pbVar14 = &BBPRegTable;
  cVar3 = *(char *)(param_1 + 0xec)   //possible issue identified - semgrep
  do {
    uVar9 = Status;
    if (cVar3 == '\0') {
      if (*(int *)(param_1 + 0x29f8) == 4) {
        uVar6 = 0;
        if (*(char *)(param_1 + 0xad) == '\x01') {
          Status = Status & 0xfffffffe;
          uVar6 = uVar9 & 1;
        }
        iVar12 = 1;
        cVar3 = *(char *)(param_1 + 0xec)   //possible issue identified - semgrep
        while( true ) {
          uVar9 = 0;
          if (cVar3 == '\0') {
            uVar9 = *(uint *)(*(int *)(param_1 + 0xdc) + 0x101c);
          }
          if ((uVar9 & 0x20000) == 0) break;
          iVar12 = iVar12 + 1;
          printk(&_LC28)   //possible issue identified - semgrep
          if (iVar12 == 100) goto LAB_00029ad4;
          cVar3 = *(char *)(param_1 + 0xec)   //possible issue identified - semgrep
        }
        bVar5 = pbVar14[1];
        uVar9 = (uint)*pbVar14;
        if (cVar3 == '\0') {
          *(uint *)(*(int *)(param_1 + 0xdc) + 0x101c) = bVar5 | 0xa0000 | uVar9 << 8;
          uVar9 = (uint)*pbVar14;
          bVar5 = pbVar14[1];
        }
        *(byte *)(param_1 + uVar9 + 0x4ac9) = bVar5;
        if (iVar12 != 100) {
          cVar3 = *(char *)(param_1 + 0xad)   //possible issue identified - semgrep
          goto joined_r0x00029c98;
        }
LAB_00029ad4:
        printk("ERROR!!! ");
        printk("BBP write R%d fail\n",*pbVar14);
        cVar3 = *(char *)(param_1 + 0xad)   //possible issue identified - semgrep
      }
      else {
        uVar6 = 0;
        if (*(char *)(param_1 + 0xad) == '\x01') {
          Status = Status & 0xfffffffe;
          uVar6 = uVar9 & 1;
        }
        iVar12 = 1;
        cVar3 = *(char *)(param_1 + 0xec)   //possible issue identified - semgrep
        while( true ) {
          uVar9 = 0;
          if (cVar3 == '\0') {
            uVar9 = *(uint *)(*(int *)(param_1 + 0xdc) + 0x7028);
          }
          if ((uVar9 & 0x20000) == 0) break;
          iVar10 = iVar12 % 0x14;
          iVar12 = iVar12 + 1;
          if ((iVar10 == 0) && (cVar3 == '\0')) {
            *(uint *)(*(int *)(param_1 + 0xdc) + 0x7028) = uVar9 & 0xfffdffff;
          }
          printk(&_LC28)   //possible issue identified - semgrep
          if (iVar12 == 100) goto LAB_00029c4c;
          cVar3 = *(char *)(param_1 + 0xec)   //possible issue identified - semgrep
        }
        bVar5 = pbVar14[1];
        bVar2 = *pbVar14;
        if (cVar3 == '\0') {
          *(uint *)(*(int *)(param_1 + 0xdc) + 0x7028) = bVar5 | 0xa0000 | (uint)bVar2 << 8;
        }
        iVar10 = AsicSendCommandToMcuBBP(param_1,0x80,0xff,0,0,0);
        if (*(char *)(param_1 + 0x16964) == '\x01') {
          RTMPusecDelay(1000);
        }
        if (iVar10 == 0) {
          if (*(char *)(param_1 + 0xec) == '\0') {
            *(uint *)(*(int *)(param_1 + 0xdc) + 0x7028) = bVar5 | 0x80000 | (uint)bVar2 << 8;
          }
          bVar5 = *pbVar14;
        }
        else {
          bVar5 = *pbVar14;
        }
        *(byte *)(param_1 + (uint)bVar5 + 0x4ac9) = pbVar14[1];
        if (iVar12 != 100) {
          cVar3 = *(char *)(param_1 + 0xad)   //possible issue identified - semgrep
          goto joined_r0x00029c98;
        }
LAB_00029c4c:
        printk("ERROR!!! ");
        printk("BBP write R%d fail\n",*pbVar14);
        uVar9 = 0;
        if (*(char *)(param_1 + 0xec) == '\0') {
          uVar9 = *(uint *)(*(int *)(param_1 + 0xdc) + 0x7028);
        }
        if (*(char *)(param_1 + 0xec) == '\0') {
          *(uint *)(*(int *)(param_1 + 0xdc) + 0x7028) = uVar9 & 0xfffdffff;
        }
        cVar3 = *(char *)(param_1 + 0xad)   //possible issue identified - semgrep
      }
joined_r0x00029c98:
      if ((cVar3 == '\x01') && (Status = Status & 0xfffffffe, uVar6 != 0)) {
        Status = Status | 1;
      }
    }
    pbVar14 = pbVar14 + 2;
    if (pbVar14 == (byte *)&BcnSpecMACRegTable) break;
    cVar3 = *(char *)(param_1 + 0xec)   //possible issue identified - semgrep
  } while( true );
  pbVar14 = *(byte **)(param_1 + 0x9c);
  if (pbVar14 == (byte *)0x0) {
    pcVar4 = *(code **)(param_1 + 0x28);
  }
  else {
    for (uVar9 = 0; uVar6 = Status, uVar9 < *(byte *)(param_1 + 0xa0); uVar9 = uVar9 + 1) {
      if (*(char *)(param_1 + 0xec) == '\0') {
        if (*(int *)(param_1 + 0x29f8) == 4) {
          uVar13 = 0;
          if (*(char *)(param_1 + 0xad) == '\x01') {
            Status = Status & 0xfffffffe;
            uVar13 = uVar6 & 1;
          }
          iVar12 = 1;
          cVar3 = *(char *)(param_1 + 0xec)   //possible issue identified - semgrep
          while( true ) {
            uVar6 = 0;
            if (cVar3 == '\0') {
              uVar6 = *(uint *)(*(int *)(param_1 + 0xdc) + 0x101c);
            }
            if ((uVar6 & 0x20000) == 0) break;
            iVar12 = iVar12 + 1;
            printk(&_LC28)   //possible issue identified - semgrep
            if (iVar12 == 100) goto LAB_00029dc4;
            cVar3 = *(char *)(param_1 + 0xec)   //possible issue identified - semgrep
          }
          bVar5 = pbVar14[1];
          uVar6 = (uint)*pbVar14;
          if (cVar3 == '\0') {
            *(uint *)(*(int *)(param_1 + 0xdc) + 0x101c) = bVar5 | 0xa0000 | uVar6 << 8;
            uVar6 = (uint)*pbVar14;
            bVar5 = pbVar14[1];
          }
          *(byte *)(param_1 + uVar6 + 0x4ac9) = bVar5;
          if (iVar12 != 100) {
            cVar3 = *(char *)(param_1 + 0xad)   //possible issue identified - semgrep
            goto joined_r0x00029f8c;
          }
LAB_00029dc4:
          printk("ERROR!!! ");
          printk("BBP write R%d fail\n",*pbVar14);
          cVar3 = *(char *)(param_1 + 0xad)   //possible issue identified - semgrep
        }
        else {
          uVar13 = 0;
          if (*(char *)(param_1 + 0xad) == '\x01') {
            Status = Status & 0xfffffffe;
            uVar13 = uVar6 & 1;
          }
          iVar12 = 1;
          cVar3 = *(char *)(param_1 + 0xec)   //possible issue identified - semgrep
          while( true ) {
            uVar6 = 0;
            if (cVar3 == '\0') {
              uVar6 = *(uint *)(*(int *)(param_1 + 0xdc) + 0x7028);
            }
            if ((uVar6 & 0x20000) == 0) break;
            iVar10 = iVar12 % 0x14;
            iVar12 = iVar12 + 1;
            if ((iVar10 == 0) && (cVar3 == '\0')) {
              *(uint *)(*(int *)(param_1 + 0xdc) + 0x7028) = uVar6 & 0xfffdffff;
            }
            printk(&_LC28)   //possible issue identified - semgrep
            if (iVar12 == 100) goto LAB_00029f40;
            cVar3 = *(char *)(param_1 + 0xec)   //possible issue identified - semgrep
          }
          bVar5 = pbVar14[1];
          bVar2 = *pbVar14;
          if (cVar3 == '\0') {
            *(uint *)(*(int *)(param_1 + 0xdc) + 0x7028) = bVar5 | 0xa0000 | (uint)bVar2 << 8;
          }
          iVar10 = AsicSendCommandToMcuBBP(param_1,0x80,0xff,0,0,0);
          if (*(char *)(param_1 + 0x16964) == '\x01') {
            RTMPusecDelay(1000);
          }
          if (iVar10 == 0) {
            if (*(char *)(param_1 + 0xec) == '\0') {
              *(uint *)(*(int *)(param_1 + 0xdc) + 0x7028) = bVar5 | 0x80000 | (uint)bVar2 << 8;
            }
            bVar5 = *pbVar14;
          }
          else {
            bVar5 = *pbVar14;
          }
          *(byte *)(param_1 + (uint)bVar5 + 0x4ac9) = pbVar14[1];
          if (iVar12 != 100) {
            cVar3 = *(char *)(param_1 + 0xad)   //possible issue identified - semgrep
            goto joined_r0x00029f8c;
          }
LAB_00029f40:
          printk("ERROR!!! ");
          printk("BBP write R%d fail\n",*pbVar14);
          uVar6 = 0;
          if (*(char *)(param_1 + 0xec) == '\0') {
            uVar6 = *(uint *)(*(int *)(param_1 + 0xdc) + 0x7028);
          }
          if (*(char *)(param_1 + 0xec) == '\0') {
            *(uint *)(*(int *)(param_1 + 0xdc) + 0x7028) = uVar6 & 0xfffdffff;
          }
          cVar3 = *(char *)(param_1 + 0xad)   //possible issue identified - semgrep
        }
joined_r0x00029f8c:
        if ((cVar3 == '\x01') && (Status = Status & 0xfffffffe, uVar13 != 0)) {
          Status = Status | 1;
        }
      }
      if (2 < RTDebugLevel) {
        printk("BBP_R%d=%d\n",*pbVar14,pbVar14[1]);
      }
      pbVar14 = pbVar14 + 2;
    }
    pcVar4 = *(code **)(param_1 + 0x28);
  }
  if (pcVar4 == (code *)0x0) {
    pcVar4 = *(code **)(param_1 + 0x78);
  }
  else {
    (*pcVar4)(param_1);
    pcVar4 = *(code **)(param_1 + 0x78);
  }
  if (pcVar4 != (code *)0x0) {
    (*pcVar4)(param_1);
  }
  uVar9 = Status;
  iVar12 = *(int *)(param_1 + 0x4a94);
  if ((iVar12 == 0x28720200) && (*(char *)(param_1 + 0xec) == '\0')) {
    *(uint *)(*(int *)(param_1 + 0xdc) + 0x1018) =
         *(uint *)(*(int *)(param_1 + 0xdc) + 0x1018) & 0xffffcfff | 0x2000;
    iVar12 = *(int *)(param_1 + 0x4a94);
  }
  if ((iVar12 != 0x28600100) || (*(char *)(param_1 + 0xec) != '\0')) goto LAB_0002a618;
  if (*(int *)(param_1 + 0x29f8) == 4) {
    uVar6 = 0;
    if (*(char *)(param_1 + 0xad) == '\x01') {
      Status = Status & 0xfffffffe;
      uVar6 = uVar9 & 1;
    }
    iVar12 = 1;
    cVar3 = *(char *)(param_1 + 0xec)   //possible issue identified - semgrep
    while( true ) {
      uVar9 = 0;
      if (cVar3 == '\0') {
        uVar9 = *(uint *)(*(int *)(param_1 + 0xdc) + 0x101c);
      }
      if ((uVar9 & 0x20000) == 0) break;
      iVar12 = iVar12 + 1;
      printk(&_LC28)   //possible issue identified - semgrep
      if (iVar12 == 100) goto LAB_0002a144;
      cVar3 = *(char *)(param_1 + 0xec)   //possible issue identified - semgrep
    }
    if (cVar3 == '\0') {
      *(undefined4 *)(*(int *)(param_1 + 0xdc) + 0x101c) = 0xa4516;
    }
    *(undefined1 *)(param_1 + 0x4b0e) = 0x16;
    if (iVar12 != 100) {
      cVar3 = *(char *)(param_1 + 0xad)   //possible issue identified - semgrep
      goto LAB_0002a168;
    }
LAB_0002a144:
    printk("ERROR!!! ");
    printk("BBP write R%d fail\n",0x45);
    cVar3 = *(char *)(param_1 + 0xad)   //possible issue identified - semgrep
LAB_0002a168:
    if (cVar3 == '\x01') {
LAB_0002a32c:
      Status = Status & 0xfffffffe;
      if (uVar6 != 0) {
        Status = Status | 1;
      }
      cVar3 = *(char *)(param_1 + 0xec)   //possible issue identified - semgrep
    }
    else {
      cVar3 = *(char *)(param_1 + 0xec)   //possible issue identified - semgrep
    }
  }
  else {
    uVar6 = 0;
    if (*(char *)(param_1 + 0xad) == '\x01') {
      Status = Status & 0xfffffffe;
      uVar6 = uVar9 & 1;
    }
    iVar12 = 1;
    cVar3 = *(char *)(param_1 + 0xec)   //possible issue identified - semgrep
    while( true ) {
      uVar9 = 0;
      if (cVar3 == '\0') {
        uVar9 = *(uint *)(*(int *)(param_1 + 0xdc) + 0x7028);
      }
      if ((uVar9 & 0x20000) == 0) break;
      iVar10 = iVar12 % 0x14;
      iVar12 = iVar12 + 1;
      if ((iVar10 == 0) && (cVar3 == '\0')) {
        *(uint *)(*(int *)(param_1 + 0xdc) + 0x7028) = uVar9 & 0xfffdffff;
      }
      printk(&_LC28)   //possible issue identified - semgrep
      if (iVar12 == 100) goto LAB_0002a2d0;
      cVar3 = *(char *)(param_1 + 0xec)   //possible issue identified - semgrep
    }
    if (cVar3 == '\0') {
      *(undefined4 *)(*(int *)(param_1 + 0xdc) + 0x7028) = 0xa4516;
    }
    iVar10 = AsicSendCommandToMcuBBP(param_1,0x80,0xff,0,0,0);
    if (*(char *)(param_1 + 0x16964) == '\x01') {
      RTMPusecDelay(1000);
    }
    if ((iVar10 == 0) && (*(char *)(param_1 + 0xec) == '\0')) {
      *(undefined4 *)(*(int *)(param_1 + 0xdc) + 0x7028) = 0x84516;
    }
    *(undefined1 *)(param_1 + 0x4b0e) = 0x16;
    if (iVar12 != 100) {
      cVar3 = *(char *)(param_1 + 0xad)   //possible issue identified - semgrep
      goto LAB_0002a31c;
    }
LAB_0002a2d0:
    printk("ERROR!!! ");
    printk("BBP write R%d fail\n",0x45);
    if (*(char *)(param_1 + 0xec) == '\0') {
      *(uint *)(*(int *)(param_1 + 0xdc) + 0x7028) =
           *(uint *)(*(int *)(param_1 + 0xdc) + 0x7028) & 0xfffdffff;
      cVar3 = *(char *)(param_1 + 0xad)   //possible issue identified - semgrep
    }
    else {
      cVar3 = *(char *)(param_1 + 0xad)   //possible issue identified - semgrep
    }
LAB_0002a31c:
    if (cVar3 == '\x01') goto LAB_0002a32c;
    cVar3 = *(char *)(param_1 + 0xec)   //possible issue identified - semgrep
  }
  uVar9 = Status;
  if (cVar3 == '\0') {
    if (*(int *)(param_1 + 0x29f8) == 4) {
      uVar6 = 0;
      if (*(char *)(param_1 + 0xad) == '\x01') {
        Status = Status & 0xfffffffe;
        uVar6 = uVar9 & 1;
      }
      iVar12 = 1;
      cVar3 = *(char *)(param_1 + 0xec)   //possible issue identified - semgrep
      while( true ) {
        uVar9 = 0;
        if (cVar3 == '\0') {
          uVar9 = *(uint *)(*(int *)(param_1 + 0xdc) + 0x101c);
        }
        if ((uVar9 & 0x20000) == 0) break;
        iVar12 = iVar12 + 1;
        printk(&_LC28)   //possible issue identified - semgrep
        if (iVar12 == 100) goto LAB_0002a41c;
        cVar3 = *(char *)(param_1 + 0xec)   //possible issue identified - semgrep
      }
      if (cVar3 == '\0') {
        *(undefined4 *)(*(int *)(param_1 + 0xdc) + 0x101c) = 0xa4912;
      }
      *(undefined1 *)(param_1 + 0x4b12) = 0x12;
      if (iVar12 != 100) {
        cVar3 = *(char *)(param_1 + 0xad)   //possible issue identified - semgrep
        goto joined_r0x0002a5f8;
      }
LAB_0002a41c:
      printk("ERROR!!! ");
      printk("BBP write R%d fail\n",0x49);
      cVar3 = *(char *)(param_1 + 0xad)   //possible issue identified - semgrep
    }
    else {
      uVar6 = 0;
      if (*(char *)(param_1 + 0xad) == '\x01') {
        Status = Status & 0xfffffffe;
        uVar6 = uVar9 & 1;
      }
      iVar12 = 1;
      cVar3 = *(char *)(param_1 + 0xec)   //possible issue identified - semgrep
      while( true ) {
        uVar9 = 0;
        if (cVar3 == '\0') {
          uVar9 = *(uint *)(*(int *)(param_1 + 0xdc) + 0x7028);
        }
        if ((uVar9 & 0x20000) == 0) break;
        iVar10 = iVar12 % 0x14;
        iVar12 = iVar12 + 1;
        if ((iVar10 == 0) && (cVar3 == '\0')) {
          *(uint *)(*(int *)(param_1 + 0xdc) + 0x7028) = uVar9 & 0xfffdffff;
        }
        printk(&_LC28)   //possible issue identified - semgrep
        if (iVar12 == 100) goto LAB_0002a5a8;
        cVar3 = *(char *)(param_1 + 0xec)   //possible issue identified - semgrep
      }
      if (cVar3 == '\0') {
        *(undefined4 *)(*(int *)(param_1 + 0xdc) + 0x7028) = 0xa4912;
      }
      iVar10 = AsicSendCommandToMcuBBP(param_1,0x80,0xff,0,0,0);
      if (*(char *)(param_1 + 0x16964) == '\x01') {
        RTMPusecDelay(1000);
      }
      if ((iVar10 == 0) && (*(char *)(param_1 + 0xec) == '\0')) {
        *(undefined4 *)(*(int *)(param_1 + 0xdc) + 0x7028) = 0x84912;
      }
      *(undefined1 *)(param_1 + 0x4b12) = 0x12;
      if (iVar12 != 100) {
        cVar3 = *(char *)(param_1 + 0xad)   //possible issue identified - semgrep
        goto joined_r0x0002a5f8;
      }
LAB_0002a5a8:
      printk("ERROR!!! ");
      printk("BBP write R%d fail\n",0x49);
      if (*(char *)(param_1 + 0xec) == '\0') {
        *(uint *)(*(int *)(param_1 + 0xdc) + 0x7028) =
             *(uint *)(*(int *)(param_1 + 0xdc) + 0x7028) & 0xfffdffff;
        cVar3 = *(char *)(param_1 + 0xad)   //possible issue identified - semgrep
      }
      else {
        cVar3 = *(char *)(param_1 + 0xad)   //possible issue identified - semgrep
      }
    }
joined_r0x0002a5f8:
    if ((cVar3 == '\x01') && (Status = Status & 0xfffffffe, uVar6 != 0)) {
      Status = Status | 1;
    }
  }
LAB_0002a618:
  uVar9 = Status;
  if (((*(int *)(param_1 + 0x4a94) == 0x38830400) ||
      (*(int *)(param_1 + 0x4a94) + 0xd78dfe00U < 0x7fe0000)) && (*(char *)(param_1 + 0xec) == '\0')
     ) {
    *(uint *)(*(int *)(param_1 + 0xdc) + 0x1018) =
         *(uint *)(*(int *)(param_1 + 0xdc) + 0x1018) & 0xfff | 0x2000;
  }
  if (param_2 != '\0') {
    iVar12 = 0x7000;
    cVar3 = *(char *)(param_1 + 0xec)   //possible issue identified - semgrep
    do {
      if (cVar3 == '\0') {
        *(undefined4 *)(*(int *)(param_1 + 0xdc) + iVar12) = 0;
      }
      iVar12 = iVar12 + 4;
      cVar3 = *(char *)(param_1 + 0xec)   //possible issue identified - semgrep
    } while (iVar12 != 0x7010);
    iVar12 = 0x6800;
    while( true ) {
      if (cVar3 == '\0') {
        *(undefined4 *)(*(int *)(param_1 + 0xdc) + iVar12) = 1;
      }
      iVar12 = iVar12 + 4;
      if (iVar12 == 0x6c00) break;
      cVar3 = *(char *)(param_1 + 0xec)   //possible issue identified - semgrep
    }
    if (param_2 == '\x01') {
      uVar6 = 0;
      if (*(char *)(param_1 + 0xad) == '\x01') {
        Status = Status & 0xfffffffe;
        uVar6 = uVar9 & 1;
        *(undefined1 *)(param_1 + 0x5154) = 1;
        if (*(char *)(param_1 + 0xec) == '\0') {
          *(uint *)(*(int *)(param_1 + 0xdc) + 0x400) =
               *(uint *)(*(int *)(param_1 + 0xdc) + 0x400) | 0x80000;
        }
      }
      puVar11 = (ushort *)(param_1 + 0x516c);
      do {
        iVar12 = 0;
        cVar3 = *(char *)(param_1 + 0xec)   //possible issue identified - semgrep
        while( true ) {
          if (cVar3 == '\0') {
            *(undefined4 *)(*(int *)(param_1 + 0xdc) + iVar12 + (uint)*puVar11) = 0;
          }
          iVar12 = iVar12 + 4;
          if (iVar12 == 0x80) break;
          cVar3 = *(char *)(param_1 + 0xec)   //possible issue identified - semgrep
        }
        puVar11 = puVar11 + 1;
      } while (puVar11 != (ushort *)(param_1 + 0x517c));
      if (*(char *)(param_1 + 0xad) == '\x01') {
        *(undefined1 *)(param_1 + 0x5154) = 0;
        if (*(char *)(param_1 + 0xec) == '\0') {
          *(uint *)(*(int *)(param_1 + 0xdc) + 0x400) =
               *(uint *)(*(int *)(param_1 + 0xdc) + 0x400) & 0xfff7ffff;
        }
        Status = Status & 0xfffffffe;
        if (uVar6 != 0) {
          Status = Status | 1;
        }
      }
    }
  }
  if (2 < RTDebugLevel) {
    printk("<-- NICInitializeAsic\n");
  }
  return 0;
}