undefined4 DO_RACFG_CMD_BBP_READ8(int param_1,undefined4 param_2,int param_3)

{
  uint uVar1;
  uint uVar2;
  char cVar3;
  uint uVar4;
  undefined1 uVar5;
  int iVar6;
  int iVar7;
  uint uVar8;
  
  uVar4 = Status;
  uVar1 = (uint)(*(ushort *)(param_3 + 0xc) >> 8);
  uVar2 = (*(ushort *)(param_3 + 0xc) & 0xff) << 8 | uVar1;
  if (*(char *)(param_1 + 0x76a0c) == -0x80) {
    uVar5 = 0;
    if (*(char *)(param_1 + 0xec) == '\0') {
      if (*(int *)(param_1 + 0x29f8) == 4) {
        uVar8 = 0;
        if (*(char *)(param_1 + 0xad) == '\x01') {
          Status = Status & 0xfffffffe;
          uVar8 = uVar4 & 1;
        }
        iVar7 = 0;
        cVar3 = *(char *)(param_1 + 0xec)   //possible issue identified - semgrep
        while( true ) {
          uVar4 = 0;
          if (cVar3 == '\0') {
            uVar4 = *(uint *)(*(int *)(param_1 + 0xdc) + 0x101c);
          }
          if ((uVar4 & 0x20000) == 0) {
            if (cVar3 == '\0') {
              *(uint *)(*(int *)(param_1 + 0xdc) + 0x101c) = uVar1 << 8 | 0xb0000;
            }
            iVar6 = 1;
            while( true ) {
              uVar4 = 0;
              if (*(char *)(param_1 + 0xec) == '\0') {
                uVar4 = *(uint *)(*(int *)(param_1 + 0xdc) + 0x101c);
              }
              if (((uVar4 & 0x20000) == 0) || (iVar6 == 100)) break;
              iVar6 = iVar6 + 1;
            }
            if (((uVar4 & 0x20000) == 0) && ((uVar4 << 0x10) >> 0x18 == uVar2)) {
              uVar5 = (undefined1)uVar4;
              goto LAB_0009a898;
            }
          }
          iVar7 = iVar7 + 1;
          if (iVar7 == 100) break;
          cVar3 = *(char *)(param_1 + 0xec)   //possible issue identified - semgrep
        }
        uVar5 = 0;
LAB_0009a898:
        if ((int)(uVar4 << 0xe) < 0) {
          printk("ERROR!!! ");
          printk("BBP(viaMCU=%d) read R%d fail\n",0,uVar2);
          uVar5 = *(undefined1 *)(param_1 + uVar2 + 0x4ac9);
LAB_0009aa38:
          cVar3 = *(char *)(param_1 + 0xad)   //possible issue identified - semgrep
        }
        else {
          cVar3 = *(char *)(param_1 + 0xad)   //possible issue identified - semgrep
        }
      }
      else {
        uVar8 = 0;
        if (*(char *)(param_1 + 0xad) == '\x01') {
          Status = Status & 0xfffffffe;
          uVar8 = uVar4 & 1;
        }
        iVar7 = 0;
        cVar3 = *(char *)(param_1 + 0xec)   //possible issue identified - semgrep
        while( true ) {
          uVar4 = 0;
          if (cVar3 == '\0') {
            uVar4 = *(uint *)(*(int *)(param_1 + 0xdc) + 0x7028);
          }
          if ((uVar4 & 0x20000) == 0) {
            if (cVar3 == '\0') {
              *(uint *)(*(int *)(param_1 + 0xdc) + 0x7028) = uVar1 << 8 | 0xb0000;
            }
            AsicSendCommandToMcuBBP(param_1,0x80,0xff,0,0,0);
            RTMPusecDelay(1000);
            iVar6 = 1;
            while( true ) {
              uVar4 = 0;
              if (*(char *)(param_1 + 0xec) == '\0') {
                uVar4 = *(uint *)(*(int *)(param_1 + 0xdc) + 0x7028);
              }
              if (((uVar4 & 0x20000) == 0) || (iVar6 == 100)) break;
              iVar6 = iVar6 + 1;
            }
            if (((uVar4 & 0x20000) == 0) && ((uVar4 << 0x10) >> 0x18 == uVar2)) {
              uVar5 = (undefined1)uVar4;
              goto LAB_0009a9dc;
            }
          }
          iVar7 = iVar7 + 1;
          if (iVar7 == 100) break;
          cVar3 = *(char *)(param_1 + 0xec)   //possible issue identified - semgrep
        }
        uVar5 = 0;
LAB_0009a9dc:
        if ((int)(uVar4 << 0xe) < 0) {
          printk("ERROR!!! ");
          printk("BBP(viaMCU=%d) read R%d fail\n",1,uVar2);
          uVar5 = *(undefined1 *)(param_1 + uVar2 + 0x4ac9);
          if (*(char *)(param_1 + 0xec) == '\0') {
            *(uint *)(*(int *)(param_1 + 0xdc) + 0x7028) =
                 *(uint *)(*(int *)(param_1 + 0xdc) + 0x7028) & 0xfffdffff;
          }
          goto LAB_0009aa38;
        }
        cVar3 = *(char *)(param_1 + 0xad)   //possible issue identified - semgrep
      }
      if (cVar3 != '\x01') {
        *(undefined1 *)(param_3 + 0xe) = uVar5;
        goto LAB_0009aa60;
      }
      Status = Status & 0xfffffffe;
      if (uVar8 != 0) {
        Status = Status | 1;
      }
    }
  }
  else {
    iVar7 = 0;
    cVar3 = *(char *)(param_1 + 0xec)   //possible issue identified - semgrep
    while( true ) {
      uVar4 = 0;
      if (cVar3 == '\0') {
        uVar4 = *(uint *)(*(int *)(param_1 + 0xdc) + 0x101c);
      }
      if ((uVar4 & 0x20000) == 0) {
        if (cVar3 == '\0') {
          *(uint *)(*(int *)(param_1 + 0xdc) + 0x101c) = uVar1 << 8 | 0xb0000;
        }
        iVar6 = 1;
        while( true ) {
          uVar4 = 0;
          if (*(char *)(param_1 + 0xec) == '\0') {
            uVar4 = *(uint *)(*(int *)(param_1 + 0xdc) + 0x101c);
          }
          if (((uVar4 & 0x20000) == 0) || (iVar6 == 100)) break;
          iVar6 = iVar6 + 1;
        }
        if (((uVar4 & 0x20000) == 0) && ((uVar4 << 0x10) >> 0x18 == uVar2)) {
          uVar5 = (undefined1)uVar4;
          goto LAB_0009a770;
        }
      }
      iVar7 = iVar7 + 1;
      if (iVar7 == 100) break;
      cVar3 = *(char *)(param_1 + 0xec)   //possible issue identified - semgrep
    }
    uVar5 = 0;
LAB_0009a770:
    if ((int)(uVar4 << 0xe) < 0) {
      if (RTDebugLevel != 0) {
        printk("BBP read R%d fail\n",uVar2);
      }
      uVar5 = *(undefined1 *)(param_1 + uVar2 + 0x4ac9);
    }
  }
  *(undefined1 *)(param_3 + 0xe) = uVar5;
LAB_0009aa60:
  ResponseToGUI(param_3,param_2,3,0);
  return 0;
}