/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */

void BssEntrySet(undefined4 param_1,void *param_2,void *param_3,void *param_4,byte param_5,
                char param_6,undefined2 param_7,char *param_8,undefined2 param_9,ushort param_10,
                void *param_11,byte param_12,void *param_13,byte param_14,byte *param_15,
                byte *param_16,byte param_17,byte param_18,undefined1 param_19,undefined1 param_20,
                undefined1 param_21)

{
  byte bVar1;
  char cVar2;
  undefined1 uVar3;
  ushort uVar4;
  int iVar5;
  uint __n;
  char *pcVar6;
  uint uVar7;
  size_t __n_00;
  size_t __n_01;
  undefined1 in_stack_00000060;
  void *in_stack_00000064;
  void *in_stack_00000068;
  void *in_stack_0000006c;
  ushort in_stack_00000070;
  char *in_stack_00000074;
  
  uVar4 = in_stack_00000070;
  uVar3 = in_stack_00000060;
  __n = (uint)in_stack_00000070;
  uVar7 = (uint)param_5;
  __n_01 = (size_t)param_12;
  __n_00 = (size_t)param_14;
  memcpy(param_2,param_3,6)   //possible issue identified - semgrep
  *(undefined1 *)((int)param_2 + 0x5f) = 1;
  if (uVar7 == 0) {
    iVar5 = memcmp((void *)((int)param_2 + 0x6d),ZeroSsid,(uint)*(byte *)((int)param_2 + 0x6c));
    if (iVar5 == 0) {
      memset((void *)((int)param_2 + 0x6d),0,0x20)   //possible issue identified - semgrep
      *(undefined1 *)((int)param_2 + 0x6c) = 0;
    }
  }
  else {
    iVar5 = memcmp(param_4,ZeroSsid,uVar7);
    if (iVar5 != 0) {
      memset((void *)((int)param_2 + 0x6d),0,0x20)   //possible issue identified - semgrep
      memmove((void *)((int)param_2 + 0x6d),param_4,uVar7)   //possible issue identified - semgrep
      *(byte *)((int)param_2 + 0x6c) = param_5;
      *(undefined1 *)((int)param_2 + 0x5f) = 0;
    }
  }
  *(char *)((int)param_2 + 8) = param_6;
  *(undefined2 *)((int)param_2 + 0xc) = param_7;
  if (param_6 == '\x01') {
    if (*param_8 != '\0') {
      *(ushort *)((int)param_2 + 100) = (ushort)(byte)param_8[1];
      *(ushort *)((int)param_2 + 0x66) = (ushort)(byte)param_8[2];
      *(undefined2 *)((int)param_2 + 0x68) = *(undefined2 *)(param_8 + 3);
      *(undefined2 *)((int)param_2 + 0x6a) = *(undefined2 *)(param_8 + 5);
    }
  }
  else {
    *(undefined2 *)((int)param_2 + 10) = param_9;
  }
  *(undefined4 *)((int)param_2 + 0x94) = _jiffies;
  *(byte *)((int)param_2 + 0x5e) = (byte)(((uint)param_10 << 0x1b) >> 0x1f);
  *(ushort *)((int)param_2 + 0x62) = param_10;
  if (0xc < __n_01) {
    printk("<4>/home/eric/release/dir600b5/progs.priv/rt2860v2/build/rt2860v2_ap/../rt2860v2/common/mlme.c:%d assert SupRateLen <= MAX_LEN_OF_SUPPORTED_RATESfailed\n"
           ,0xb85);
    __n_01 = 0xc   //possible issue identified - semgrep
  }
  memmove((void *)((int)param_2 + 0xe),param_11,__n_01)   //possible issue identified - semgrep
  *(byte *)((int)param_2 + 0x1a) = param_12;
  if (0xc < __n_00) {
    printk("<4>/home/eric/release/dir600b5/progs.priv/rt2860v2/build/rt2860v2_ap/../rt2860v2/common/mlme.c:%d assert ExtRateLen <= MAX_LEN_OF_SUPPORTED_RATESfailed\n"
           ,0xb8b);
    __n_00 = 0xc   //possible issue identified - semgrep
  }
  memmove((void *)((int)param_2 + 0x1b),param_13,__n_00)   //possible issue identified - semgrep
  *(char *)((int)param_2 + 0x27) = (char)__n_00;
  *(undefined1 *)((int)param_2 + 0x5b) = param_19;
  *(undefined1 *)((int)param_2 + 7) = param_20;
  *(undefined1 *)((int)param_2 + 0x5c) = param_21;
  *(undefined1 *)((int)param_2 + 0x4dc) = uVar3;
  *(undefined1 *)((int)param_2 + 6) = param_20;
  memmove((void *)((int)param_2 + 0xbc),&stack0x00000058,8)   //possible issue identified - semgrep
  *(ushort *)((int)param_2 + 0xc6) = param_10;
  *(undefined2 *)((int)param_2 + 0xc4) = param_7;
  if (__n == 0) {
    *(undefined2 *)((int)param_2 + 0xd4) = 0;
    *(undefined1 *)((int)param_2 + 0x59) = 0;
  }
  else {
    *(ushort *)((int)param_2 + 0xd4) = uVar4;
    memmove((void *)((int)param_2 + 0xd6),in_stack_00000074,__n)   //possible issue identified - semgrep
    *(undefined1 *)((int)param_2 + 0x59) = 0;
  }
  *(undefined1 *)((int)param_2 + 0x42) = 0;
  if (param_17 != 0) {
    *(byte *)((int)param_2 + 0x42) = param_17;
    memmove((void *)((int)param_2 + 0x28),param_15,(uint)param_17)   //possible issue identified - semgrep
    if (param_18 != 0) {
      *(byte *)((int)param_2 + 0x59) = param_18;
      memmove((void *)((int)param_2 + 0x43),param_16,(uint)param_18)   //possible issue identified - semgrep
      if (((*param_16 < 3) || ((param_16[1] & 3) != 3)) || ((*param_15 & 2) == 0)) {
        if (((param_16[1] & 3) != 1) || ((*param_15 & 2) == 0)) goto LAB_00018e90;
        cVar2 = '\x02';
      }
      else {
        cVar2 = -2   //possible issue identified - semgrep
      }
      *(byte *)((int)param_2 + 7) = *param_16 + cVar2;
    }
  }
LAB_00018e90:
  BssCipherParse(param_2);
  if (in_stack_00000064 == (void *)0x0) {
    *(undefined1 *)((int)param_2 + 0x4ea) = 0;
  }
  else {
    memmove((void *)((int)param_2 + 0x4ea),in_stack_00000064,0x20)   //possible issue identified - semgrep
  }
  if (in_stack_00000068 == (void *)0x0) {
    *(undefined1 *)((int)param_2 + 0x50a) = 0;
  }
  else {
    memmove((void *)((int)param_2 + 0x50a),in_stack_00000068,5)   //possible issue identified - semgrep
  }
  if (in_stack_0000006c == (void *)0x0) {
    *(undefined1 *)((int)param_2 + 0x510) = 0;
  }
  else {
    memmove((void *)((int)param_2 + 0x510),in_stack_0000006c,8)   //possible issue identified - semgrep
  }
  pcVar6 = in_stack_00000074;
  for (uVar7 = 0; (byte)pcVar6[1] + 2 + uVar7 <= __n; uVar7 = uVar7 + bVar1 + 2 & 0xffff) {
    if (*pcVar6 == -0x23) {
      memcmp(pcVar6 + 2,&WPS_OUI,4);
      bVar1 = pcVar6[1];
    }
    else {
      bVar1 = pcVar6[1];
    }
    pcVar6 = pcVar6 + bVar1 + 2;
  }
  return;
}