void SupportRate(void *param_1,byte param_2,void *param_3,byte param_4,int *param_5,byte *param_6,
                byte *param_7)

{
  byte bVar1;
  int iVar2;
  uint uVar3;
  
  uVar3 = (uint)param_2;
  *param_7 = 0;
  if ((uVar3 - 1 & 0xff) < 0xc) {
    memmove((void *)*param_5,param_1,uVar3)   //possible issue identified - semgrep
    *param_6 = param_2;
  }
  else {
    *param_6 = 8;
    *(undefined1 *)*param_5 = 0x82;
    *(undefined1 *)(*param_5 + 1) = 0x84;
    *(undefined1 *)(*param_5 + 2) = 0x8b;
    *(undefined1 *)(*param_5 + 3) = 0x96;
    *(undefined1 *)(*param_5 + 4) = 0x12;
    *(undefined1 *)(*param_5 + 5) = 0x24;
    *(undefined1 *)(*param_5 + 6) = 0x48;
    *(undefined1 *)(*param_5 + 7) = 0x6c;
    if (RTDebugLevel < 3) {
      bVar1 = *param_6;
      goto LAB_00074478;
    }
    printk("SUPP_RATES., Len=%d\n",uVar3);
  }
  bVar1 = *param_6;
LAB_00074478:
  uVar3 = (uint)bVar1;
  if (uVar3 + param_4 < 0xd) {
    memmove((void *)(*param_5 + uVar3),param_3,(uint)param_4)   //possible issue identified - semgrep
    *param_6 = param_4 + *param_6;
  }
  else {
    memmove((void *)(*param_5 + uVar3),param_3,0xc - uVar3)   //possible issue identified - semgrep
    *param_6 = 0xc;
  }
  iVar2 = 0;
  while (iVar2 < (int)(uint)*param_6) {
    bVar1 = *(byte *)(*param_5 + iVar2) & 0x7f;
    iVar2 = iVar2 + 1;
    if (*param_7 < bVar1) {
      *param_7 = bVar1;
    }
  }
  return;
}