undefined4 ATESetUpFrame(undefined4 *param_1,int param_2)

{
  uint uVar1;
  bool bVar2;
  ushort uVar3;
  uint uVar4;
  undefined4 *puVar5;
  void *__dest;
  undefined1 *puVar6;
  undefined4 uVar7;
  size_t __n;
  int iVar8;
  int iVar9;
  uint uVar10;
  uint uVar11;
  int local_58;
  undefined4 local_54;
  uint local_50;
  uint local_4c;
  void *local_40;
  uint local_3c;
  uint local_38;
  uint local_34;
  uint local_30;
  
  local_58 = 0;
  local_40 = (void *)param_1[param_2 * 8 + 0x66];
  uVar10 = param_1[0x1da85];
  if (*(char *)((int)param_1 + 0x76a52) == '\x01') {
    uVar4 = (uVar10 << 0x10) >> 0x1f;
    iVar8 = param_1[0x1da84];
    local_3c = (uint)(param_1[0x1da86] << 8) >> 0x1c;
    param_1[0x5aaf] = param_1[0x5aaf] & 0xffffffef;
    local_38 = (uint)(param_1[0x1da86] << 0xc) >> 0x14;
    local_30 = (uint)(iVar8 << 5) >> 0x1f;
    local_34 = (uVar10 << 6) >> 0x1f;
    memset(&local_50,0,0x10)   //possible issue identified - semgrep
    uVar11 = uVar10 >> 0x1a;
    uVar1 = (uVar10 << 8) >> 0x1e;
    if (7 < uVar11) {
      uVar11 = 7;
    }
    if (uVar1 < 2) {
      uVar4 = 0;
    }
    local_4c = (uVar10 << 7) >> 0x1f | (local_34 & 1) << 1 | uVar11 << 2 |
               (local_38 & 0xfff) << 0x10;
    local_50 = local_50 & 0x3800fce0 | (uint)(iVar8 << 7) >> 0x1f |
               ((uint)(iVar8 << 4) >> 0x1f) << 3 | ((uint)(iVar8 << 3) >> 0x1f) << 4 |
               (uVar10 & 3) << 8 | uVar4 << 0x17 | ((uVar10 << 0xf) >> 0x1f) << 0x18 |
               ((uVar10 << 0xd) >> 0x1e) << 0x19 | ((uVar10 << 0x11) >> 0x19) << 0x10 |
               uVar1 << 0x1e | (local_30 & 1) << 2;
  }
  else {
    uVar4 = (uVar10 << 0x10) >> 0x1f;
    param_1[0x5aaf] = param_1[0x5aaf] & 0xffffffef;
    uVar11 = param_1[0x1da8f];
    memset(&local_50,0,0x10)   //possible issue identified - semgrep
    uVar1 = (uVar10 << 8) >> 0x1e;
    if (uVar1 < 2) {
      uVar4 = 0;
    }
    local_4c = (uVar11 & 0xfff) << 0x10 | 0x10;
    local_50 = local_50 & 0x3800fce0 | uVar4 << 0x17 | ((uVar10 << 0xf) >> 0x1f) << 0x18 |
               ((uVar10 << 0xd) >> 0x1e) << 0x19 | ((uVar10 << 0x11) >> 0x19) << 0x10 |
               uVar1 << 0x1e;
  }
  local_50 = local_50 & 0xffffff1f;
  local_4c = local_4c | ((local_50 << 9) >> 0x19) << 0x1c;
  memmove(local_40,&local_50,0x10)   //possible issue identified - semgrep
  __dest = (void *)((int)local_40 + 0x10);
  if (*(char *)((int)param_1 + 0x76a52) == '\x01') {
    iVar8 = 0x76a78;
    __n = (size_t)*(ushort *)(param_1 + 0x1da9d)   //possible issue identified - semgrep
  }
  else {
    memmove(__dest,TemplateFrame,0x18)   //possible issue identified - semgrep
    memmove((void *)((int)local_40 + 0x14),(void *)((int)param_1 + 0x76a26),6)   //possible issue identified - semgrep
    memmove((void *)((int)local_40 + 0x1a),param_1 + 0x1da8b,6)   //possible issue identified - semgrep
    iVar8 = 0x76a32;
    __dest = (void *)((int)local_40 + 0x20);
    __n = 6   //possible issue identified - semgrep
  }
  memmove(__dest,(void *)((int)param_1 + iVar8),__n)   //possible issue identified - semgrep
  if (*(char *)((int)param_1 + 0x76a52) == '\x01') {
    if (*(ushort *)(param_1 + 0x1daae) != 0) {
      iVar8 = *(ushort *)(param_1 + 0x1daae) + 0x100;
      uVar7 = *(undefined4 *)*param_1;
      goto LAB_000a5688;
    }
    puVar5 = (undefined4 *)*param_1;
  }
  else {
    puVar5 = (undefined4 *)*param_1;
  }
  uVar7 = *puVar5;
  iVar8 = param_1[0x1da8f];
LAB_000a5688:
  iVar8 = RTMP_AllocateRxPacketBuffer(param_1,uVar7,iVar8,0,&local_58,&local_54);
  if (iVar8 == 0) {
    param_1[0x1da90] = 0;
    uVar7 = 0xffffffff;
    if (RTDebugLevel != 0) {
      printk("%s fail to alloc packet space.\n","ATESetUpFrame");
      uVar7 = 0xffffffff;
    }
  }
  else {
    param_1[param_2 * 8 + 100] = iVar8;
    if ((*(char *)((int)param_1 + 0x76a52) != '\x01') ||
       (uVar10 = (uint)*(ushort *)(param_1 + 0x1daae), uVar10 == 0)) {
      uVar10 = param_1[0x1da8f] - 0x18;
    }
    *(uint *)(iVar8 + 0x4c) = uVar10;
    if ((*(char *)((int)param_1 + 0x76a52) == '\x01') && (*(short *)(param_1 + 0x1daae) != 0)) {
      if (*(short *)((int)param_1 + 0x76a76) != 0) {
        for (iVar9 = 0; iVar9 < (int)(uint)*(ushort *)(param_1 + 0x1daae);
            iVar9 = iVar9 + (uint)*(ushort *)((int)param_1 + 0x76a76)) {
          memcpy((void *)(*(int *)(iVar8 + 0x9c) + iVar9),param_1 + 0x1daa6,
                 (uint)*(ushort *)((int)param_1 + 0x76a76))   //possible issue identified - semgrep
        }
      }
    }
    else {
      uVar10 = 0;
      while( true ) {
        puVar6 = (undefined1 *)(local_58 + uVar10);
        bVar2 = *(uint *)(iVar8 + 0x4c) <= uVar10;
        uVar10 = uVar10 + 1;
        if (bVar2) break;
        *puVar6 = *(undefined1 *)((int)param_1 + 0x76a39);
      }
    }
    puVar5 = (undefined4 *)param_1[(param_2 + 0xc) * 8 + 1];
    if (*(char *)((int)param_1 + 0x76a52) == '\x01') {
      memset(puVar5,0,0x10)   //possible issue identified - semgrep
      RTMPWriteTxDescriptor(param_1,puVar5,0,2);
      *puVar5 = param_1[param_2 * 8 + 0x67];
      uVar10 = *(ushort *)(param_1 + 0x1da9d) + 0x10 & 0xffff;
      *(byte *)((int)puVar5 + 7) =
           *(byte *)((int)puVar5 + 7) & 0xc0 | (byte)((uVar10 << 0x12) >> 0x1a);
      *(char *)((int)puVar5 + 6) = (char)uVar10;
      puVar5[2] = local_54;
      uVar10 = *(uint *)(iVar8 + 0x4c) & 0x3fff;
      *(byte *)((int)puVar5 + 5) = *(byte *)((int)puVar5 + 5) & 0x80 | (byte)(uVar10 >> 8) | 0x40;
      *(byte *)((int)puVar5 + 7) = *(byte *)((int)puVar5 + 7) & 0xbf | (uVar10 == 0) << 6;
      *(char *)(puVar5 + 1) = (char)uVar10;
      if (param_1[0x1da91] == 0) {
        *(ushort *)((int)param_1 + 0x76aba) =
             (ushort)*(byte *)((int)local_40 + 0x27) << 4 |
             (ushort)(*(byte *)((int)local_40 + 0x26) >> 4);
        uVar7 = 0;
      }
      else {
        uVar7 = 0;
        uVar3 = *(short *)((int)param_1 + 0x76aba) + 1;
        *(ushort *)((int)param_1 + 0x76aba) = uVar3;
        *(char *)((int)local_40 + 0x27) = (char)(((uint)uVar3 << 0x14) >> 0x18);
        *(byte *)((int)local_40 + 0x26) =
             *(byte *)((int)local_40 + 0x26) & 0xf | (byte)((uVar3 & 0xf) << 4);
      }
    }
    else {
      memset(puVar5,0,0x10)   //possible issue identified - semgrep
      RTMPWriteTxDescriptor(param_1,puVar5,0,2);
      *puVar5 = param_1[param_2 * 8 + 0x67];
      *(undefined1 *)((int)puVar5 + 6) = 0x28;
      *(byte *)((int)puVar5 + 7) = *(byte *)((int)puVar5 + 7) & 0x80;
      uVar7 = 0;
      puVar5[2] = local_54;
      uVar3 = *(ushort *)(iVar8 + 0x4c);
      *(byte *)((int)puVar5 + 5) =
           *(byte *)((int)puVar5 + 5) & 0x80 | (byte)(((uint)uVar3 << 0x12) >> 0x1a) | 0x40;
      *(char *)(puVar5 + 1) = (char)uVar3;
    }
  }
  return uVar7;
}