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;
}