void BbpSoftReset(int param_1)

{
  char cVar1;
  byte bVar2;
  uint uVar3;
  uint uVar4;
  uint uVar5;
  int iVar6;
  int iVar7;
  
  iVar7 = 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') {
        *(undefined4 *)(*(int *)(param_1 + 0xdc) + 0x101c) = 0xb1500;
      }
      iVar6 = 1;
      while( true ) {
        uVar3 = 0;
        if (*(char *)(param_1 + 0xec) == '\0') {
          uVar3 = *(uint *)(*(int *)(param_1 + 0xdc) + 0x101c);
        }
        if (((uVar3 & 0x20000) == 0) || (iVar6 == 100)) break;
        iVar6 = iVar6 + 1;
      }
      if ((uVar3 & 0x2ff00) == 0x1500) {
        uVar4 = uVar3 & 0xff;
        goto LAB_00095fd0;
      }
    }
    iVar7 = iVar7 + 1;
    if (iVar7 == 100) break;
    cVar1 = *(char *)(param_1 + 0xec)   //possible issue identified - semgrep
  }
  uVar4 = 0;
LAB_00095fd0:
  if ((int)(uVar3 << 0xe) < 0) {
    if (RTDebugLevel == 0) {
      bVar2 = *(byte *)(param_1 + 0x4ade);
    }
    else {
      printk("BBP read R%d fail\n",0x15);
      bVar2 = *(byte *)(param_1 + 0x4ade);
    }
    uVar4 = (uint)bVar2;
    cVar1 = *(char *)(param_1 + 0xec)   //possible issue identified - semgrep
  }
  else {
    cVar1 = *(char *)(param_1 + 0xec)   //possible issue identified - semgrep
  }
  uVar3 = uVar4 | 1;
  iVar7 = 0;
  do {
    uVar5 = 0;
    if (cVar1 == '\0') {
      uVar5 = *(uint *)(*(int *)(param_1 + 0xdc) + 0x101c);
    }
    if ((uVar5 & 0x20000) == 0) {
      if (cVar1 == '\0') {
        *(uint *)(*(int *)(param_1 + 0xdc) + 0x101c) = uVar4 | 0xa1501;
      }
      *(char *)(param_1 + 0x4ade) = (char)uVar3;
      if (iVar7 != 100) goto LAB_000960b4;
      break;
    }
    iVar7 = iVar7 + 1;
  } while (iVar7 != 100);
  if (RTDebugLevel != 0) {
    printk("BBP write R%d fail\n",0x15);
  }
LAB_000960b4:
  iVar7 = 0;
  cVar1 = *(char *)(param_1 + 0xec)   //possible issue identified - semgrep
LAB_000960d0:
  uVar4 = 0;
  if (cVar1 == '\0') {
    uVar4 = *(uint *)(*(int *)(param_1 + 0xdc) + 0x101c);
  }
  if ((uVar4 & 0x20000) == 0) {
    if (cVar1 == '\0') {
      *(undefined4 *)(*(int *)(param_1 + 0xdc) + 0x101c) = 0xb1500;
    }
    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 & 0x2ff00) == 0x1500) {
      uVar3 = uVar4 & 0xff;
LAB_00096164:
      if ((int)(uVar4 << 0xe) < 0) {
        if (RTDebugLevel == 0) {
          bVar2 = *(byte *)(param_1 + 0x4ade);
        }
        else {
          printk("BBP read R%d fail\n",0x15);
          bVar2 = *(byte *)(param_1 + 0x4ade);
        }
        uVar3 = (uint)bVar2;
        cVar1 = *(char *)(param_1 + 0xec)   //possible issue identified - semgrep
      }
      else {
        cVar1 = *(char *)(param_1 + 0xec)   //possible issue identified - semgrep
      }
      iVar7 = 0;
      while( true ) {
        uVar4 = 0;
        if (cVar1 == '\0') {
          uVar4 = *(uint *)(*(int *)(param_1 + 0xdc) + 0x101c);
        }
        if ((uVar4 & 0x20000) == 0) break;
        iVar7 = iVar7 + 1;
        if (iVar7 == 100) {
LAB_0009621c:
          if (RTDebugLevel == 0) {
            return;
          }
          printk("BBP write R%d fail\n",0x15);
          return;
        }
      }
      if (cVar1 == '\0') {
        *(uint *)(*(int *)(param_1 + 0xdc) + 0x101c) = uVar3 & 0xfe | 0xa1500;
      }
      *(char *)(param_1 + 0x4ade) = (char)(uVar3 & 0xfe);
      if (iVar7 != 100) {
        return;
      }
      goto LAB_0009621c;
    }
  }
  iVar7 = iVar7 + 1;
  if (iVar7 == 100) goto LAB_00096164;
  cVar1 = *(char *)(param_1 + 0xec)   //possible issue identified - semgrep
  goto LAB_000960d0;
}