uint RtmpPCI_WriteMultiTxResource(int param_1,byte *param_2,uint param_3,short *param_4)

{
  byte bVar1;
  ushort uVar2;
  int iVar3;
  int iVar4;
  size_t __n;
  undefined4 *__s;
  uint uVar5;
  uint uVar6;
  undefined4 uVar7;
  
  uVar6 = (uint)*param_2;
  iVar4 = uVar6 * 0x80c;
  uVar5 = (uint)*(ushort *)(param_1 + iVar4 + 0x980);
  uVar7 = *(undefined4 *)(param_1 + uVar5 * 0x20 + iVar4 + 0x19c);
  bVar1 = param_2[2];
  if ((param_3 & 0xff) == 0) {
    if (param_2[1] == 8) {
      iVar3 = (uint)param_2[0xb5] + (uint)param_2[0xb4];
    }
    else {
      iVar3 = (uint)param_2[0xb5] + (uint)param_2[0xb4];
    }
    __n = iVar3 + 0x10   //possible issue identified - semgrep
  }
  else {
    __n = (size_t)param_2[0xb4]   //possible issue identified - semgrep
  }
  memmove(*(void **)(param_1 + uVar5 * 0x20 + iVar4 + 0x198),*(void **)(param_2 + 0xb0),__n)   //possible issue identified - semgrep
  iVar4 = uVar6 * 0x80c;
  __s = *(undefined4 **)(param_1 + uVar5 * 0x20 + iVar4 + 0x184);
  *(undefined4 *)(param_1 + uVar5 * 0x20 + iVar4 + 0x18c) = *(undefined4 *)(param_2 + 0x1c);
  *(undefined4 *)(param_1 + uVar5 * 0x20 + iVar4 + 400) = 0;
  memset(__s,0,0x10)   //possible issue identified - semgrep
  *__s = uVar7;
  *(byte *)((int)__s + 7) = *(byte *)((int)__s + 7) & 0xc0 | (byte)((__n << 0x12) >> 0x1a);
  *(char *)((int)__s + 6) = (char)__n;
  uVar7 = RtmpDrvPciMapSingle(param_1,param_2,0,1,0xff00);
  __s[2] = uVar7;
  uVar2 = *(ushort *)(param_2 + 0x28);
  *(byte *)((int)__s + 7) = *(byte *)((int)__s + 7) & 0xbf;
  *(byte *)((int)__s + 5) =
       *(byte *)((int)__s + 5) & 0x80 | (byte)(((uint)uVar2 << 0x12) >> 0x1a) |
       ((param_3 & 0xff) == bVar1 - 1) << 6;
  *(char *)(__s + 1) = (char)uVar2;
  *(uint *)(param_1 + 0x16abc) = *(uint *)(param_1 + 0x16abc) & 0xffffffef;
  bVar1 = *(byte *)((int)__s + 0xf);
  *(byte *)((int)__s + 0xf) = bVar1 & 0xf8 | 4;
  if (*(char *)(param_1 + 0x769e7) == '\x01') {
    *(byte *)((int)__s + 0xf) = bVar1 & 0xf8 | 2;
  }
  *(byte *)((int)__s + 7) = *(byte *)((int)__s + 7) & 0x7f;
  *(uint *)(uVar6 * 0x80c + param_1 + 0x980) = uVar5 + 1 & 0x3f;
  *param_4 = *param_4 + -1;
  return uVar5;
}