undefined4 Set_BBPWrite_Proc(int param_1,byte *param_2)

{
  byte bVar1;
  char cVar2;
  int iVar3;
  uint uVar4;
  uint uVar5;
  uint uVar6;
  int iVar7;
  uint uVar8;
  byte *pbVar9;
  undefined1 uVar10;
  uint uVar11;
  
  uVar6 = Status;
  for (pbVar9 = param_2; *pbVar9 != 0x3a; pbVar9 = pbVar9 + 1) {
    if (*pbVar9 == 0) {
      uVar11 = 0;
      goto LAB_0009ac08;
    }
  }
  uVar8 = 0;
  do {
    bVar1 = *param_2;
    iVar7 = (int)(char)bVar1;
    if ((byte)(bVar1 + 0x9f) < 6) {
      uVar8 = uVar8 * 0x10 + iVar7 + -0x57 & 0xffff;
    }
    else if ((byte)(bVar1 + 0xbf) < 6) {
      uVar8 = uVar8 * 0x10 + iVar7 + -0x37 & 0xffff;
    }
    else {
      if (9 < (byte)(bVar1 - 0x30)) goto code_r0x0009ab7c;
      uVar8 = uVar8 * 0x10 + iVar7 + -0x30 & 0xffff;
    }
    param_2 = param_2 + 1;
  } while( true );
LAB_0009ac08:
  uVar8 = (uint)*param_2;
  if ((uVar8 - 0x61 & 0xff) < 6) {
    uVar11 = uVar11 * 0x10 + (uVar8 - 0x57) & 0xff;
  }
  else {
    uVar5 = uVar8 - 0x30 & 0xff;
    if ((uVar8 - 0x41 & 0xff) < 6) {
      uVar11 = uVar11 * 0x10 + (uVar8 - 0x37) & 0xff;
    }
    else {
      if (9 < uVar5) goto code_r0x0009ac60;
      uVar11 = uVar11 * 0x10 + uVar5 & 0xff;
    }
  }
  param_2 = param_2 + 1;
  goto LAB_0009ac08;
code_r0x0009ac60:
  uVar8 = 0;
  goto LAB_0009ac68;
code_r0x0009ab7c:
  uVar11 = 0;
  while( true ) {
    while( true ) {
      while( true ) {
        pbVar9 = pbVar9 + 1;
        uVar5 = (uint)*pbVar9;
        if (5 < (uVar5 - 0x61 & 0xff)) break;
        uVar11 = uVar11 * 0x10 + (uVar5 - 0x57) & 0xff;
      }
      uVar4 = uVar5 - 0x30 & 0xff;
      if (5 < (uVar5 - 0x41 & 0xff)) break;
      uVar11 = uVar11 * 0x10 + (uVar5 - 0x37) & 0xff;
    }
    if (9 < uVar4) break;
    uVar11 = uVar11 * 0x10 + uVar4 & 0xff;
  }
LAB_0009ac68:
  cVar2 = *(char *)(param_1 + 0xec)   //possible issue identified - semgrep
  uVar10 = (undefined1)uVar11;
  if (*(char *)(param_1 + 0x76a0c) == -0x80) {
    if (cVar2 == '\0') {
      if (*(int *)(param_1 + 0x29f8) == 4) {
        uVar5 = 0;
        if (*(char *)(param_1 + 0xad) == '\x01') {
          Status = Status & 0xfffffffe;
          uVar5 = uVar6 & 1;
        }
        iVar7 = 1;
        cVar2 = *(char *)(param_1 + 0xec)   //possible issue identified - semgrep
        while( true ) {
          uVar6 = 0;
          if (cVar2 == '\0') {
            uVar6 = *(uint *)(*(int *)(param_1 + 0xdc) + 0x101c);
          }
          if ((uVar6 & 0x20000) == 0) break;
          iVar7 = iVar7 + 1;
          printk(&_LC94)   //possible issue identified - semgrep
          if (iVar7 == 100) goto LAB_0009adf8;
          cVar2 = *(char *)(param_1 + 0xec)   //possible issue identified - semgrep
        }
        if (cVar2 == '\0') {
          *(uint *)(*(int *)(param_1 + 0xdc) + 0x101c) = uVar11 | 0xa0000 | (uVar8 & 0xff) << 8;
        }
        *(undefined1 *)(param_1 + uVar8 + 0x4ac9) = uVar10;
        if (iVar7 != 100) {
          cVar2 = *(char *)(param_1 + 0xad)   //possible issue identified - semgrep
          goto joined_r0x0009afc8;
        }
LAB_0009adf8:
        printk("ERROR!!! ");
        printk("BBP write R%d fail\n",uVar8);
        cVar2 = *(char *)(param_1 + 0xad)   //possible issue identified - semgrep
      }
      else {
        uVar5 = 0;
        if (*(char *)(param_1 + 0xad) == '\x01') {
          Status = Status & 0xfffffffe;
          uVar5 = uVar6 & 1;
        }
        iVar7 = 1;
        cVar2 = *(char *)(param_1 + 0xec)   //possible issue identified - semgrep
        while( true ) {
          uVar6 = 0;
          if (cVar2 == '\0') {
            uVar6 = *(uint *)(*(int *)(param_1 + 0xdc) + 0x7028);
          }
          if ((uVar6 & 0x20000) == 0) break;
          iVar3 = iVar7 % 0x14;
          iVar7 = iVar7 + 1;
          if ((iVar3 == 0) && (cVar2 == '\0')) {
            *(uint *)(*(int *)(param_1 + 0xdc) + 0x7028) = uVar6 & 0xfffdffff;
          }
          printk(&_LC94)   //possible issue identified - semgrep
          if (iVar7 == 100) goto LAB_0009af78;
          cVar2 = *(char *)(param_1 + 0xec)   //possible issue identified - semgrep
        }
        uVar6 = (uVar8 & 0xff) << 8;
        if (cVar2 == '\0') {
          *(uint *)(*(int *)(param_1 + 0xdc) + 0x7028) = uVar11 | 0xa0000 | uVar6;
        }
        iVar3 = AsicSendCommandToMcuBBP(param_1,0x80,0xff,0,0,0);
        if (*(char *)(param_1 + 0x16964) == '\x01') {
          RTMPusecDelay(1000);
        }
        if ((iVar3 == 0) && (*(char *)(param_1 + 0xec) == '\0')) {
          *(uint *)(*(int *)(param_1 + 0xdc) + 0x7028) = uVar11 | 0x80000 | uVar6;
        }
        *(undefined1 *)(param_1 + uVar8 + 0x4ac9) = uVar10;
        if (iVar7 != 100) {
          cVar2 = *(char *)(param_1 + 0xad)   //possible issue identified - semgrep
          goto joined_r0x0009afc8;
        }
LAB_0009af78:
        printk("ERROR!!! ");
        printk("BBP write R%d fail\n",uVar8);
        if (*(char *)(param_1 + 0xec) == '\0') {
          *(uint *)(*(int *)(param_1 + 0xdc) + 0x7028) =
               *(uint *)(*(int *)(param_1 + 0xdc) + 0x7028) & 0xfffdffff;
          cVar2 = *(char *)(param_1 + 0xad)   //possible issue identified - semgrep
        }
        else {
          cVar2 = *(char *)(param_1 + 0xad)   //possible issue identified - semgrep
        }
      }
joined_r0x0009afc8:
      if ((cVar2 == '\x01') && (Status = Status & 0xfffffffe, uVar5 != 0)) {
        Status = Status | 1;
      }
    }
  }
  else {
    iVar7 = 0;
    do {
      uVar6 = 0;
      if (cVar2 == '\0') {
        uVar6 = *(uint *)(*(int *)(param_1 + 0xdc) + 0x101c);
      }
      if ((uVar6 & 0x20000) == 0) {
        if (cVar2 == '\0') {
          *(uint *)(*(int *)(param_1 + 0xdc) + 0x101c) = uVar11 | 0xa0000 | (uVar8 & 0xff) << 8;
        }
        *(undefined1 *)(param_1 + uVar8 + 0x4ac9) = uVar10;
        if (iVar7 != 100) {
          return 1;
        }
        break;
      }
      iVar7 = iVar7 + 1;
    } while (iVar7 != 100);
    if (RTDebugLevel != 0) {
      printk("BBP write R%d fail\n",uVar8);
    }
  }
  return 1;
}