undefined4
RtmpAsicSendCommandToSwMcu
          (int param_1,byte param_2,undefined4 param_3,undefined1 param_4,undefined1 param_5)

{
  bool bVar1;
  char cVar2;
  int iVar3;
  void *__dest;
  uint uVar4;
  uint uVar5;
  int iVar6;
  undefined2 local_30 [4];
  
  if (param_2 == 0x52) {
    __dest = (void *)(param_1 + 0x511c);
  }
  else {
    if (param_2 < 0x53) {
      if (param_2 == 0x50) {
        *(undefined1 *)(param_1 + 0x5128) = param_5;
        *(undefined1 *)(param_1 + 0x5122) = param_4;
        SetLedLinkStatus();
        return 0;
      }
      if (param_2 != 0x51) {
        return 0;
      }
      *(undefined1 *)(param_1 + 0x512a) = param_4;
      *(undefined1 *)(param_1 + 0x5129) = param_5;
      return 0;
    }
    if (param_2 == 0x54) {
      __dest = (void *)(param_1 + 0x5120);
    }
    else {
      if (0x53 < param_2) {
        if (param_2 != 0x80) {
          return 0;
        }
        uVar5 = 0;
        if (*(char *)(param_1 + 0xec) == '\0') {
          uVar5 = *(uint *)(*(int *)(param_1 + 0xdc) + 0x7028);
        }
        if (((uVar5 & 0xa0000) != 0xa0000) && (RTDebugLevel != 0)) {
          printk("error read write BBP 1\n");
        }
        iVar6 = 0;
        cVar2 = *(char *)(param_1 + 0xec)   //possible issue identified - semgrep
        do {
          uVar4 = 0;
          if (cVar2 == '\0') {
            uVar4 = *(uint *)(*(int *)(param_1 + 0xdc) + 0x101c);
          }
          if ((uVar4 & 0x20000) == 0) {
            if (cVar2 == '\0') {
              *(uint *)(*(int *)(param_1 + 0xdc) + 0x101c) = uVar5;
            }
            if ((uVar5 & 0x10000) == 0) {
              if (*(char *)(param_1 + 0xec) == '\0') {
                *(uint *)(*(int *)(param_1 + 0xdc) + 0x7028) = uVar5 & 0xfffdffff;
              }
              *(char *)(param_1 + (((uVar5 & 0xfffdffff) << 0x10) >> 0x18) + 0x4ac9) = (char)uVar5;
              return 0;
            }
            iVar3 = 1;
            do {
              uVar4 = 0;
              if (*(char *)(param_1 + 0xec) == '\0') {
                uVar4 = *(uint *)(*(int *)(param_1 + 0xdc) + 0x101c);
              }
              if ((uVar4 & 0x20000) == 0) goto LAB_0005342c;
              bVar1 = iVar3 != 100;
              iVar3 = iVar3 + 1;
            } while (bVar1);
            if (RTDebugLevel != 0) {
              printk("error read write BBP 2\n");
            }
LAB_0005342c:
            if (((uVar4 & 0x20000) == 0) && ((uVar4 << 0x10) >> 0x18 == (uVar5 << 0x10) >> 0x18)) {
              uVar5 = uVar5 & 0xffffff00 | uVar4 & 0xff;
              if (*(char *)(param_1 + 0xec) != '\0') {
                return 0;
              }
              goto LAB_000534bc;
            }
          }
          iVar6 = iVar6 + 1;
          if (iVar6 == 100) {
            if (RTDebugLevel != 0) {
              printk("error read write BBP 3\n");
            }
            if (((int)(uVar5 << 0xe) < 0) && (*(char *)(param_1 + 0xec) == '\0')) {
LAB_000534bc:
              *(uint *)(*(int *)(param_1 + 0xdc) + 0x7028) = uVar5 & 0xfffdffff;
            }
            return 0;
          }
          cVar2 = *(char *)(param_1 + 0xec)   //possible issue identified - semgrep
        } while( true );
      }
      __dest = (void *)(param_1 + 0x511e);
    }
  }
  local_30[0] = CONCAT11(param_5,param_4);
  memmove(__dest,local_30,2)   //possible issue identified - semgrep
  return 0;
}