undefined4 Set_HiPower_Proc(int param_1,undefined4 param_2)

{
  char cVar1;
  int iVar2;
  int iVar3;
  uint uVar4;
  uint uVar5;
  
  iVar2 = simple_strtol(param_2,0,10);
  uVar4 = Status;
  *(bool *)(param_1 + 0x16e78) = iVar2 == 0;
  if (iVar2 != 0) {
    return 1;
  }
  if (*(char *)(param_1 + 0xec) != '\0') goto LAB_00037f90;
  if (*(int *)(param_1 + 0x29f8) == 4) {
    uVar5 = 0;
    if (*(char *)(param_1 + 0xad) == '\x01') {
      Status = Status & 0xfffffffe;
      uVar5 = uVar4 & 1;
    }
    iVar2 = 1;
    cVar1 = *(char *)(param_1 + 0xec)   //possible issue identified - semgrep
    while( true ) {
      uVar4 = 0;
      if (cVar1 == '\0') {
        uVar4 = *(uint *)(*(int *)(param_1 + 0xdc) + 0x101c);
      }
      if ((uVar4 & 0x20000) == 0) break;
      iVar2 = iVar2 + 1;
      printk(&_LC49)   //possible issue identified - semgrep
      if (iVar2 == 100) goto LAB_00037abc;
      cVar1 = *(char *)(param_1 + 0xec)   //possible issue identified - semgrep
    }
    if (cVar1 == '\0') {
      *(undefined4 *)(*(int *)(param_1 + 0xdc) + 0x101c) = 0xa5262;
    }
    *(undefined1 *)(param_1 + 0x4b1b) = 0x62;
    if (iVar2 != 100) {
      cVar1 = *(char *)(param_1 + 0xad)   //possible issue identified - semgrep
      goto LAB_00037ae0;
    }
LAB_00037abc:
    printk("ERROR!!! ");
    printk("BBP write R%d fail\n",0x52);
    cVar1 = *(char *)(param_1 + 0xad)   //possible issue identified - semgrep
LAB_00037ae0:
    if (cVar1 == '\x01') {
LAB_00037ca4:
      Status = Status & 0xfffffffe;
      if (uVar5 != 0) {
        Status = Status | 1;
      }
      cVar1 = *(char *)(param_1 + 0xec)   //possible issue identified - semgrep
    }
    else {
      cVar1 = *(char *)(param_1 + 0xec)   //possible issue identified - semgrep
    }
  }
  else {
    uVar5 = 0;
    if (*(char *)(param_1 + 0xad) == '\x01') {
      Status = Status & 0xfffffffe;
      uVar5 = uVar4 & 1;
    }
    iVar2 = 1;
    cVar1 = *(char *)(param_1 + 0xec)   //possible issue identified - semgrep
    while( true ) {
      uVar4 = 0;
      if (cVar1 == '\0') {
        uVar4 = *(uint *)(*(int *)(param_1 + 0xdc) + 0x7028);
      }
      if ((uVar4 & 0x20000) == 0) break;
      iVar3 = iVar2 % 0x14;
      iVar2 = iVar2 + 1;
      if ((iVar3 == 0) && (cVar1 == '\0')) {
        *(uint *)(*(int *)(param_1 + 0xdc) + 0x7028) = uVar4 & 0xfffdffff;
      }
      printk(&_LC49)   //possible issue identified - semgrep
      if (iVar2 == 100) goto LAB_00037c48;
      cVar1 = *(char *)(param_1 + 0xec)   //possible issue identified - semgrep
    }
    if (cVar1 == '\0') {
      *(undefined4 *)(*(int *)(param_1 + 0xdc) + 0x7028) = 0xa5262;
    }
    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')) {
      *(undefined4 *)(*(int *)(param_1 + 0xdc) + 0x7028) = 0x85262;
    }
    *(undefined1 *)(param_1 + 0x4b1b) = 0x62;
    if (iVar2 != 100) {
      cVar1 = *(char *)(param_1 + 0xad)   //possible issue identified - semgrep
      goto LAB_00037c94;
    }
LAB_00037c48:
    printk("ERROR!!! ");
    printk("BBP write R%d fail\n",0x52);
    if (*(char *)(param_1 + 0xec) == '\0') {
      *(uint *)(*(int *)(param_1 + 0xdc) + 0x7028) =
           *(uint *)(*(int *)(param_1 + 0xdc) + 0x7028) & 0xfffdffff;
      cVar1 = *(char *)(param_1 + 0xad)   //possible issue identified - semgrep
    }
    else {
      cVar1 = *(char *)(param_1 + 0xad)   //possible issue identified - semgrep
    }
LAB_00037c94:
    if (cVar1 == '\x01') goto LAB_00037ca4;
    cVar1 = *(char *)(param_1 + 0xec)   //possible issue identified - semgrep
  }
  uVar4 = Status;
  if (cVar1 == '\0') {
    if (*(int *)(param_1 + 0x29f8) == 4) {
      uVar5 = 0;
      if (*(char *)(param_1 + 0xad) == '\x01') {
        Status = Status & 0xfffffffe;
        uVar5 = uVar4 & 1;
      }
      iVar2 = 1;
      cVar1 = *(char *)(param_1 + 0xec)   //possible issue identified - semgrep
      while( true ) {
        uVar4 = 0;
        if (cVar1 == '\0') {
          uVar4 = *(uint *)(*(int *)(param_1 + 0xdc) + 0x101c);
        }
        if ((uVar4 & 0x20000) == 0) break;
        iVar2 = iVar2 + 1;
        printk(&_LC49)   //possible issue identified - semgrep
        if (iVar2 == 100) goto LAB_00037d94;
        cVar1 = *(char *)(param_1 + 0xec)   //possible issue identified - semgrep
      }
      if (cVar1 == '\0') {
        *(undefined4 *)(*(int *)(param_1 + 0xdc) + 0x101c) = 0xa4320;
      }
      *(undefined1 *)(param_1 + 0x4b0c) = 0x20;
      if (iVar2 != 100) {
        cVar1 = *(char *)(param_1 + 0xad)   //possible issue identified - semgrep
        goto joined_r0x00037f70;
      }
LAB_00037d94:
      printk("ERROR!!! ");
      printk("BBP write R%d fail\n",0x43);
      cVar1 = *(char *)(param_1 + 0xad)   //possible issue identified - semgrep
    }
    else {
      uVar5 = 0;
      if (*(char *)(param_1 + 0xad) == '\x01') {
        Status = Status & 0xfffffffe;
        uVar5 = uVar4 & 1;
      }
      iVar2 = 1;
      cVar1 = *(char *)(param_1 + 0xec)   //possible issue identified - semgrep
      while( true ) {
        uVar4 = 0;
        if (cVar1 == '\0') {
          uVar4 = *(uint *)(*(int *)(param_1 + 0xdc) + 0x7028);
        }
        if ((uVar4 & 0x20000) == 0) break;
        iVar3 = iVar2 % 0x14;
        iVar2 = iVar2 + 1;
        if ((iVar3 == 0) && (cVar1 == '\0')) {
          *(uint *)(*(int *)(param_1 + 0xdc) + 0x7028) = uVar4 & 0xfffdffff;
        }
        printk(&_LC49)   //possible issue identified - semgrep
        if (iVar2 == 100) goto LAB_00037f20;
        cVar1 = *(char *)(param_1 + 0xec)   //possible issue identified - semgrep
      }
      if (cVar1 == '\0') {
        *(undefined4 *)(*(int *)(param_1 + 0xdc) + 0x7028) = 0xa4320;
      }
      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')) {
        *(undefined4 *)(*(int *)(param_1 + 0xdc) + 0x7028) = 0x84320;
      }
      *(undefined1 *)(param_1 + 0x4b0c) = 0x20;
      if (iVar2 != 100) {
        cVar1 = *(char *)(param_1 + 0xad)   //possible issue identified - semgrep
        goto joined_r0x00037f70;
      }
LAB_00037f20:
      printk("ERROR!!! ");
      printk("BBP write R%d fail\n",0x43);
      if (*(char *)(param_1 + 0xec) == '\0') {
        *(uint *)(*(int *)(param_1 + 0xdc) + 0x7028) =
             *(uint *)(*(int *)(param_1 + 0xdc) + 0x7028) & 0xfffdffff;
        cVar1 = *(char *)(param_1 + 0xad)   //possible issue identified - semgrep
      }
      else {
        cVar1 = *(char *)(param_1 + 0xad)   //possible issue identified - semgrep
      }
    }
joined_r0x00037f70:
    if ((cVar1 == '\x01') && (Status = Status & 0xfffffffe, uVar5 != 0)) {
      Status = Status | 1;
    }
  }
LAB_00037f90:
  RT30xxWriteRFRegister(param_1,0x1b,0x23);
  return 1;
}