void AsicSetEdcaParm(int param_1,char *param_2)

{
  uint uVar1;
  uint uVar2;
  uint uVar3;
  byte bVar4;
  byte bVar5;
  byte bVar6;
  char cVar7;
  uint uVar8;
  uint uVar9;
  uint *puVar10;
  int iVar11;
  uint uVar12;
  uint uVar13;
  uint uVar14;
  uint uVar15;
  uint uVar16;
  uint uVar17;
  
  if ((param_2 == (char *)0x0) || (*param_2 == '\0')) {
    if (2 < RTDebugLevel) {
      printk("AsicSetEdcaParm\n");
    }
    *(uint *)(param_1 + 0x16abc) = *(uint *)(param_1 + 0x16abc) & 0xfffffeff;
    puVar10 = (uint *)(param_1 + 0x5d34c);
    iVar11 = 0;
    do {
      iVar11 = iVar11 + 1;
      if ((puVar10[-0x105] == 1) || (puVar10[-0x105] == 3)) {
        *puVar10 = *puVar10 & 0xfffffffe;
      }
      puVar10 = puVar10 + 0x288;
    } while (iVar11 != 0x20);
    uVar12 = 0x20;
    if (*(char *)(param_1 + 0x16a7d) == '\0') {
      uVar12 = 0;
    }
    if (*(char *)(param_1 + 0xec) == '\0') {
      *(uint *)(*(int *)(param_1 + 0xdc) + 0x1300) = uVar12 | 0x64200;
    }
    if (*(char *)(param_1 + 0xec) == '\0') {
      *(undefined4 *)(*(int *)(param_1 + 0xdc) + 0x1304) = 0x64200;
    }
    if (*(char *)(param_1 + 0x16982) == '\x01') {
      uVar12 = 0xc0;
      uVar8 = 0x60;
    }
    else {
      uVar12 = 0x60;
      uVar8 = 0x30;
    }
    cVar7 = *(char *)(param_1 + 0xec)   //possible issue identified - semgrep
    if (cVar7 == '\0') {
      *(uint *)(*(int *)(param_1 + 0xdc) + 0x1308) = uVar12 | 0x64200;
      cVar7 = *(char *)(param_1 + 0xec)   //possible issue identified - semgrep
      if (cVar7 == '\0') {
        *(uint *)(*(int *)(param_1 + 0xdc) + 0x130c) = uVar8 | 0x64200;
        cVar7 = *(char *)(param_1 + 0xec)   //possible issue identified - semgrep
      }
    }
    if (cVar7 == '\0') {
      *(undefined4 *)(*(int *)(param_1 + 0xdc) + 0x220) = 0;
    }
    if (*(char *)(param_1 + 0x16982) == '\x01') {
      uVar12 = 0xc0;
      iVar11 = 0x60;
    }
    else {
      uVar12 = 0x60;
      iVar11 = 0x30;
    }
    cVar7 = *(char *)(param_1 + 0xec)   //possible issue identified - semgrep
    if (cVar7 == '\0') {
      *(uint *)(*(int *)(param_1 + 0xdc) + 0x224) = uVar12 | iVar11 << 0x10;
      cVar7 = *(char *)(param_1 + 0xec)   //possible issue identified - semgrep
      if (cVar7 == '\0') {
        *(undefined4 *)(*(int *)(param_1 + 0xdc) + 0x218) = 0x4444;
        cVar7 = *(char *)(param_1 + 0xec)   //possible issue identified - semgrep
      }
    }
    if (cVar7 == '\0') {
      *(undefined4 *)(*(int *)(param_1 + 0xdc) + 0x21c) = 0x6666;
      cVar7 = *(char *)(param_1 + 0xec)   //possible issue identified - semgrep
    }
    else {
      cVar7 = *(char *)(param_1 + 0xec)   //possible issue identified - semgrep
    }
    if (cVar7 == '\0') {
      *(undefined4 *)(*(int *)(param_1 + 0xdc) + 0x214) = 0x2222;
    }
    memset((void *)(param_1 + 0x16a90),0,0x20)   //possible issue identified - semgrep
    return;
  }
  *(uint *)(param_1 + 0x16abc) = *(uint *)(param_1 + 0x16abc) | 0x100;
  uVar17 = ((uint)*(ushort *)(param_2 + 0x18) * 6) / 10;
  uVar13 = *(ushort *)(param_2 + 0x14) & 0xff;
  uVar12 = ((byte)param_2[0xb] & 0xf) << 0xc;
  uVar8 = ((byte)param_2[0xc] & 0xf) << 0xc;
  uVar1 = ((byte)param_2[0xf] & 0xf) << 0x10;
  uVar2 = ((byte)param_2[0x10] & 0xf) << 0x10;
  uVar15 = uVar13 | uVar12 | uVar1 | ((byte)param_2[7] & 0xf) << 8;
  uVar16 = (byte)param_2[0x16] | uVar8 | uVar2 | ((byte)param_2[8] & 0xf) << 8;
  if ((*(uint *)(param_1 + 0x4bf4) & 0xf0) == 0x10) {
    uVar17 = uVar17 & 0xff | ((byte)param_2[0xd] + 1 & 0xf) << 0xc |
             ((byte)param_2[0x11] + 1 & 0xf) << 0x10;
  }
  else {
    uVar17 = uVar17 & 0xff | ((byte)param_2[0xd] & 0xf) << 0xc | ((byte)param_2[0x11] & 0xf) << 0x10
    ;
  }
  uVar9 = (uint)*(ushort *)(param_2 + 0x1a);
  bVar4 = param_2[0xe];
  bVar5 = param_2[0x12];
  bVar6 = param_2[10];
  uVar3 = ((byte)param_2[9] + 1 & 0xf) << 8;
  uVar14 = uVar17 | uVar3;
  if (*(char *)(param_1 + 0x16e12) != '\0') {
    if ((uVar9 & 0xff) != 0x66) {
      cVar7 = *(char *)(param_1 + 0xec)   //possible issue identified - semgrep
      goto LAB_0005152c;
    }
    if (*(ushort *)(param_2 + 0x14) == 0) {
      uVar13 = 10;
    }
    uVar15 = uVar12 | uVar1 | uVar13 | ((byte)param_2[7] - 1 & 0xf) << 8;
    uVar16 = uVar8 | uVar2 | (uint)(byte)param_2[0x16] | ((byte)param_2[8] & 0xf) << 8;
    uVar14 = uVar17 & 0xfffff000 | uVar3 | *(ushort *)(param_2 + 0x18) & 0xff;
  }
  cVar7 = *(char *)(param_1 + 0xec)   //possible issue identified - semgrep
LAB_0005152c:
  if (cVar7 == '\0') {
    *(uint *)(*(int *)(param_1 + 0xdc) + 0x1300) = uVar15;
    cVar7 = *(char *)(param_1 + 0xec)   //possible issue identified - semgrep
  }
  else {
    cVar7 = *(char *)(param_1 + 0xec)   //possible issue identified - semgrep
  }
  if (cVar7 == '\0') {
    *(uint *)(*(int *)(param_1 + 0xdc) + 0x1304) = uVar16;
    cVar7 = *(char *)(param_1 + 0xec)   //possible issue identified - semgrep
  }
  else {
    cVar7 = *(char *)(param_1 + 0xec)   //possible issue identified - semgrep
  }
  if (cVar7 == '\0') {
    *(uint *)(*(int *)(param_1 + 0xdc) + 0x1308) = uVar14;
    cVar7 = *(char *)(param_1 + 0xec)   //possible issue identified - semgrep
  }
  else {
    cVar7 = *(char *)(param_1 + 0xec)   //possible issue identified - semgrep
  }
  if (cVar7 == '\0') {
    *(uint *)(*(int *)(param_1 + 0xdc) + 0x130c) =
         uVar9 & 0xff | (bVar4 & 0xf) << 0xc | (bVar5 & 0xf) << 0x10 | (bVar6 & 0xf) << 8;
    cVar7 = *(char *)(param_1 + 0xec)   //possible issue identified - semgrep
  }
  else {
    cVar7 = *(char *)(param_1 + 0xec)   //possible issue identified - semgrep
  }
  if (cVar7 == '\0') {
    *(uint *)(*(int *)(param_1 + 0xdc) + 0x220) = uVar15 & 0xff | (uVar16 & 0xff) << 0x10;
  }
  cVar7 = *(char *)(param_1 + 0xec)   //possible issue identified - semgrep
  if (cVar7 == '\0') {
    *(uint *)(*(int *)(param_1 + 0xdc) + 0x224) = uVar14 & 0xff | (uVar9 & 0xff) << 0x10;
    cVar7 = *(char *)(param_1 + 0xec)   //possible issue identified - semgrep
  }
  if (cVar7 == '\0') {
    *(uint *)(*(int *)(param_1 + 0xdc) + 0x218) =
         (byte)param_2[0xb] & 0xf | ((byte)param_2[0xc] & 0xf) << 4 |
         ((byte)param_2[0xd] & 0xf) << 8 | ((byte)param_2[0xe] & 0xf) << 0xc;
  }
  cVar7 = *(char *)(param_1 + 0xec)   //possible issue identified - semgrep
  if (cVar7 == '\0') {
    *(uint *)(*(int *)(param_1 + 0xdc) + 0x21c) =
         (byte)param_2[0xf] & 0xf | ((byte)param_2[0x10] & 0xf) << 4 |
         ((byte)param_2[0x11] & 0xf) << 8 | ((byte)param_2[0x12] & 0xf) << 0xc;
    cVar7 = *(char *)(param_1 + 0xec)   //possible issue identified - semgrep
  }
  if (cVar7 == '\0') {
    *(uint *)(*(int *)(param_1 + 0xdc) + 0x214) =
         (uVar15 << 0x14) >> 0x1c | ((uVar16 << 0x14) >> 0x1c) << 4 |
         ((uVar14 << 0x14) >> 0x1c) << 8 | (bVar6 & 0xf) << 0xc;
  }
  memmove((void *)(param_1 + 0x16a90),param_2,0x20)   //possible issue identified - semgrep
  if ((*(uint *)(param_1 + 0x16abc) & 2) == 0) {
    if (2 < RTDebugLevel) {
      printk("EDCA [#%d]: AIFSN CWmin CWmax  TXOP(us)  ACM\n",param_2[6]);
    }
    if (2 < RTDebugLevel) {
      printk("     AC_BE      %2d     %2d     %2d      %4d     %d\n",param_2[7],param_2[0xb],
             param_2[0xf],(uint)*(ushort *)(param_2 + 0x14) << 5,param_2[0x1c]);
    }
    if (2 < RTDebugLevel) {
      printk("     AC_BK      %2d     %2d     %2d      %4d     %d\n",param_2[8],param_2[0xc],
             param_2[0x10],(uint)*(ushort *)(param_2 + 0x16) << 5,param_2[0x1d]);
    }
    if (2 < RTDebugLevel) {
      printk("     AC_VI      %2d     %2d     %2d      %4d     %d\n",param_2[9],param_2[0xd],
             param_2[0x11],(uint)*(ushort *)(param_2 + 0x18) << 5,param_2[0x1e]);
    }
    if (2 < RTDebugLevel) {
      printk("     AC_VO      %2d     %2d     %2d      %4d     %d\n",param_2[10],param_2[0xe],
             param_2[0x12],(uint)*(ushort *)(param_2 + 0x1a) << 5,param_2[0x1f]);
    }
  }
  return;
}