undefined4 APSendPacket(int param_1,undefined4 *param_2)

{
  char cVar1;
  char cVar2;
  byte bVar3;
  int iVar4;
  undefined4 *puVar5;
  ushort uVar6;
  uint uVar7;
  bool bVar8;
  int iVar9;
  uint uVar10;
  uint uVar11;
  int iVar12;
  int iVar13;
  byte local_48;
  undefined1 local_47 [3];
  byte *local_44;
  uint local_40;
  undefined1 auStack_3c [8];
  uint local_34;
  
  RTMP_QueryPacketInfo(param_2,auStack_3c,&local_44,&local_40);
  if (local_44 == (byte *)0x0) goto LAB_0007dcb8;
  if (local_40 < 0xe) {
    if (RTDebugLevel != 0) {
      printk("APSendPacket --> Ndis Packet buffer error !!!\n");
    }
    goto LAB_0007dcb8;
  }
  uVar10 = (uint)*(byte *)(param_2 + 9);
  iVar12 = param_1 + uVar10 * 0xa20 + 0x5cf38;
  local_47[0] = 0;
  local_48 = 0;
  iVar4 = RTMPCheckEtherType(param_1,param_2,iVar12,1,local_47,&local_48);
  if (iVar4 == 0) goto LAB_0007dcb8;
  if ((*(int *)(param_1 + uVar10 * 0xa20 + 0x5cf38) != 1) && (uVar10 != 0)) {
    if (RTDebugLevel != 0) {
      printk("I/F(ra%d) APSendPacket --> Drop unknow packet !!!\n",0);
    }
    goto LAB_0007dcb8;
  }
  iVar4 = uVar10 * 0xa20 + param_1;
  cVar1 = *(char *)(iVar4 + 0x5d1a8)   //possible issue identified - semgrep
  cVar2 = *(char *)(iVar4 + 0x5d285)   //possible issue identified - semgrep
  iVar13 = *(int *)(iVar4 + 0x5d1ac);
  if (uVar10 == 0) {
    if (*(char *)(param_1 + 0x168c8) == '\0') goto LAB_0007dcb8;
    uVar11 = (uint)*(byte *)(param_2 + 10);
    if (uVar11 != 0) {
      if (RTDebugLevel != 0) {
        printk("%s> Error! apidx = %d > MAX_MBSSID_NUM!\n","APSendPacket",uVar11);
      }
      uVar11 = 0;
    }
    iVar9 = uVar11 * 0x1140 + param_1 + 0x51ac;
  }
  else {
    iVar9 = *(int *)(iVar4 + 0x5d8b4);
    uVar11 = (uint)*(byte *)(iVar4 + 0x5cf69);
  }
  if (iVar9 != 0) {
    if (*(uint *)(iVar9 + 0x30) < 3) {
      if (*(char *)(iVar9 + 0x109) != '\x01') goto LAB_0007da0c;
      bVar3 = *(byte *)((int)param_2 + 0x2d);
    }
    else {
      bVar3 = *(byte *)((int)param_2 + 0x2d);
    }
    if ((bVar3 & 2) == 0) {
      if (uVar10 == 0) {
        uVar6 = (ushort)*(byte *)(iVar9 + 299);
      }
      else {
        uVar6 = *(ushort *)(uVar10 * 0xa20 + param_1 + 0x5d12a);
      }
      if (uVar6 == 2) goto LAB_0007dcb8;
    }
  }
LAB_0007da0c:
  uVar7 = 1;
  if (((*local_44 & 1) == 0) &&
     (((iVar12 == 0 || (iVar4 = uVar10 * 0xa20 + param_1, *(int *)(iVar4 + 0x5cf38) != 1)) ||
      (uVar7 = 1, (*(uint *)(iVar4 + 0x5d34c) & 2) == 0)))) {
    uVar7 = *(ushort *)(param_1 + 0x16a54) - 0x1c;
    if (local_34 - 6 < uVar7) {
      uVar7 = 1;
    }
    else {
      uVar7 = (local_34 - 6) / uVar7 + 1 & 0xff;
    }
  }
  *(char *)((int)param_2 + 0x23) = (char)uVar7;
  if (uVar7 < 2) {
    uVar6 = *(ushort *)(param_1 + 0x16a52);
  }
  else {
    uVar6 = *(ushort *)(param_1 + 0x16a52);
    local_34 = (uint)*(ushort *)(param_1 + 0x16a54);
  }
  bVar8 = uVar6 < local_34;
  if (((byte)(cVar2 - 4U) < 8) && ((*(uint *)(param_1 + 0x16abc) & 4) != 0)) {
    bVar8 = true;
  }
  *(bool *)((int)param_2 + 0x26) = bVar8;
  *(char *)((int)param_2 + 0x27) = cVar2;
  detect_wmm_traffic(param_1,local_47[0],1);
  *(undefined1 *)((int)param_2 + 0x22) = local_47[0];
  *(byte *)((int)param_2 + 0x32) = *(byte *)((int)param_2 + 0x32) & 0xf7;
  if ((iVar12 == 0) || (2 < *(int *)(uVar10 * 0xa20 + param_1 + 0x5cf38) - 2U)) {
    if (((*local_44 & 1) != 0) && (*(char *)(param_1 + 0x7134c) != '\0')) {
      if (0x1f < *(uint *)(param_1 + 0x71344)) {
        RTMPFreeNdisPacket(param_1,param_2);
        if (RTDebugLevel < 3) {
          return 1;
        }
        printk("M/BCAST PSQ(=%ld) full, drop it!\n",*(undefined4 *)(param_1 + 0x71344));
        return 1;
      }
      local_bh_disable();
      *param_2 = *(undefined4 *)(param_1 + 0x7133c);
      *(undefined4 **)(param_1 + 0x7133c) = param_2;
      if (*(int *)(param_1 + 0x71340) == 0) {
        *(undefined4 **)(param_1 + 0x71340) = param_2;
      }
      *(int *)(param_1 + 0x71344) = *(int *)(param_1 + 0x71344) + 1;
      local_bh_enable();
      iVar4 = uVar11 * 0x1140 + param_1;
      *(byte *)(iVar4 + 0x5250) = NUM_BIT8 | *(byte *)(iVar4 + 0x5250);
      goto LAB_0007dd30;
    }
    if ((((cVar1 == '\x01') && (iVar12 != 0)) && (*(int *)(uVar10 * 0xa20 + param_1 + 0x5cf38) == 1)
        ) && (iVar13 == 2)) {
      iVar4 = APInsertPsQueue(param_1,param_2,iVar12,local_48);
      if (iVar4 != 0) {
        return 1;
      }
      goto LAB_0007dd30;
    }
  }
  if (0x1ff < *(uint *)((uint)local_48 * 0xc + param_1 + 0x2a38)) {
LAB_0007dcb8:
    RTMPFreeNdisPacket(param_1,param_2);
    return 1;
  }
  local_bh_disable();
  *param_2 = 0;
  iVar4 = (uint)local_48 * 0xc + param_1;
  puVar5 = *(undefined4 **)(iVar4 + 0x2a34);
  if (puVar5 == (undefined4 *)0x0) {
    *(undefined4 **)(iVar4 + 0x2a30) = param_2;
  }
  else {
    *puVar5 = param_2;
  }
  iVar4 = (uint)local_48 * 0xc + param_1;
  *(undefined4 **)(iVar4 + 0x2a34) = param_2;
  *(int *)(iVar4 + 0x2a38) = *(int *)(iVar4 + 0x2a38) + 1;
  local_bh_enable();
LAB_0007dd30:
  RTMP_BASetup(param_1,iVar12,local_47[0]);
  return 0;
}