undefined4 Set_BBPRead_Proc(int param_1,byte *param_2)

{
  char cVar1;
  uint uVar2;
  uint uVar3;
  int iVar4;
  int iVar5;
  uint uVar6;
  uint uVar7;
  
  uVar3 = Status;
  uVar7 = 0;
  do {
    uVar6 = (uint)*param_2;
    if ((uVar6 - 0x61 & 0xff) < 6) {
      uVar7 = uVar7 * 0x10 + (uVar6 - 0x57) & 0xff;
    }
    else {
      uVar2 = uVar6 - 0x30 & 0xff;
      if ((uVar6 - 0x41 & 0xff) < 6) {
        uVar7 = uVar7 * 0x10 + (uVar6 - 0x37) & 0xff;
      }
      else {
        if (9 < uVar2) break;
        uVar7 = uVar7 * 0x10 + uVar2 & 0xff;
      }
    }
    param_2 = param_2 + 1;
  } while( true );
  uVar6 = 0;
  if (*(char *)(param_1 + 0x76a0c) != -0x80) {
    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') {
          *(uint *)(*(int *)(param_1 + 0xdc) + 0x101c) = uVar7 << 8 | 0xb0000;
        }
        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 & 0x20000) == 0) && ((uVar3 << 0x10) >> 0x18 == uVar7)) {
          uVar6 = uVar3 & 0xff;
          goto LAB_0009b188;
        }
      }
      uVar6 = uVar6 + 1;
      if (uVar6 == 100) break;
      cVar1 = *(char *)(param_1 + 0xec)   //possible issue identified - semgrep
    }
    uVar6 = 0;
LAB_0009b188:
    if ((int)(uVar3 << 0xe) < 0) {
      if (RTDebugLevel != 0) {
        printk("BBP read R%d fail\n",uVar7);
      }
      uVar6 = (uint)*(byte *)(param_1 + uVar7 + 0x4ac9);
    }
    goto LAB_0009b474;
  }
  if (*(char *)(param_1 + 0xec) != '\0') goto LAB_0009b474;
  if (*(int *)(param_1 + 0x29f8) == 4) {
    uVar2 = 0;
    if (*(char *)(param_1 + 0xad) == '\x01') {
      Status = Status & 0xfffffffe;
      uVar2 = uVar3 & 1;
    }
    iVar4 = 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') {
          *(uint *)(*(int *)(param_1 + 0xdc) + 0x101c) = uVar7 << 8 | 0xb0000;
        }
        iVar5 = 1;
        while( true ) {
          uVar3 = 0;
          if (*(char *)(param_1 + 0xec) == '\0') {
            uVar3 = *(uint *)(*(int *)(param_1 + 0xdc) + 0x101c);
          }
          if (((uVar3 & 0x20000) == 0) || (iVar5 == 100)) break;
          iVar5 = iVar5 + 1;
        }
        if (((uVar3 & 0x20000) == 0) && ((uVar3 << 0x10) >> 0x18 == uVar7)) {
          uVar6 = uVar3 & 0xff;
          goto LAB_0009b2ac;
        }
      }
      iVar4 = iVar4 + 1;
      if (iVar4 == 100) break;
      cVar1 = *(char *)(param_1 + 0xec)   //possible issue identified - semgrep
    }
    uVar6 = 0;
LAB_0009b2ac:
    if ((int)(uVar3 << 0xe) < 0) {
      printk("ERROR!!! ",uVar6);
      printk("BBP(viaMCU=%d) read R%d fail\n",0,uVar7);
      uVar6 = (uint)*(byte *)(param_1 + uVar7 + 0x4ac9);
LAB_0009b44c:
      cVar1 = *(char *)(param_1 + 0xad)   //possible issue identified - semgrep
    }
    else {
      cVar1 = *(char *)(param_1 + 0xad)   //possible issue identified - semgrep
    }
  }
  else {
    uVar2 = 0;
    if (*(char *)(param_1 + 0xad) == '\x01') {
      Status = Status & 0xfffffffe;
      uVar2 = uVar3 & 1;
    }
    iVar4 = 0;
    cVar1 = *(char *)(param_1 + 0xec)   //possible issue identified - semgrep
    while( true ) {
      uVar3 = 0;
      if (cVar1 == '\0') {
        uVar3 = *(uint *)(*(int *)(param_1 + 0xdc) + 0x7028);
      }
      if ((uVar3 & 0x20000) == 0) {
        if (cVar1 == '\0') {
          *(uint *)(*(int *)(param_1 + 0xdc) + 0x7028) = uVar7 << 8 | 0xb0000;
        }
        AsicSendCommandToMcuBBP(param_1,0x80,0xff,0,0,0);
        RTMPusecDelay(1000);
        iVar5 = 1;
        while( true ) {
          uVar3 = 0;
          if (*(char *)(param_1 + 0xec) == '\0') {
            uVar3 = *(uint *)(*(int *)(param_1 + 0xdc) + 0x7028);
          }
          if (((uVar3 & 0x20000) == 0) || (iVar5 == 100)) break;
          iVar5 = iVar5 + 1;
        }
        if (((uVar3 & 0x20000) == 0) && ((uVar3 << 0x10) >> 0x18 == uVar7)) {
          uVar6 = uVar3 & 0xff;
          goto LAB_0009b3f0;
        }
      }
      iVar4 = iVar4 + 1;
      if (iVar4 == 100) break;
      cVar1 = *(char *)(param_1 + 0xec)   //possible issue identified - semgrep
    }
    uVar6 = 0;
LAB_0009b3f0:
    if ((int)(uVar3 << 0xe) < 0) {
      printk("ERROR!!! ",uVar6);
      printk("BBP(viaMCU=%d) read R%d fail\n",1,uVar7);
      uVar6 = (uint)*(byte *)(param_1 + uVar7 + 0x4ac9);
      if (*(char *)(param_1 + 0xec) == '\0') {
        *(uint *)(*(int *)(param_1 + 0xdc) + 0x7028) =
             *(uint *)(*(int *)(param_1 + 0xdc) + 0x7028) & 0xfffdffff;
      }
      goto LAB_0009b44c;
    }
    cVar1 = *(char *)(param_1 + 0xad)   //possible issue identified - semgrep
  }
  if ((cVar1 == '\x01') && (Status = Status & 0xfffffffe, uVar2 != 0)) {
    Status = Status | 1;
  }
LAB_0009b474:
  printk(&_LC97,uVar6)   //possible issue identified - semgrep
  return 1;
}