void RTMPPrepareRDCTSFrame
(int param_1,undefined4 param_2,undefined2 param_3,undefined4 param_4,int param_5)
{
char cVar1;
int iVar2;
byte *pbVar3;
undefined2 local_40 [2];
undefined4 local_3c;
undefined1 auStack_38 [4];
byte abStack_34 [8];
byte local_2c [4];
uint local_28;
byte abStack_20 [8];
if (param_5 == 0x7700) {
cVar1 = *(char *)(param_1 + 0xb0) + -2 //possible issue identified - semgrep
}
else {
if (param_5 != 0x7780) {
printk("%s illegal address (%lx) for CTS frame buffer.\n","RTMPPrepareRDCTSFrame",param_5);
return;
}
cVar1 = *(char *)(param_1 + 0xb0) + -1 //possible issue identified - semgrep
}
memset(&local_3c,0,0x10) //possible issue identified - semgrep
local_3c = CONCAT22(param_3,(undefined2)local_3c) & 0xffffff03 | 0xc4;
memcpy(auStack_38,(void *)(param_1 + 0x16973),6) //possible issue identified - semgrep
if (*(byte *)(param_1 + 0x169ec) < 0xf) {
local_40[0] = 0;
}
else {
local_40[0] = 0x4000;
}
pbVar3 = local_2c;
RTMPWriteTxWI(param_1,pbVar3,0,0,0,0,0,1,0,cVar1,10,5,0,0,2,0,local_40);
local_28 = local_28 & 0xfffffff | 0x50000000;
iVar2 = param_5;
while( true ) {
if (*(char *)(param_1 + 0xec) == '\0') {
*(uint *)(*(int *)(param_1 + 0xdc) + iVar2) =
(uint)pbVar3[1] * 0x100 + (uint)pbVar3[2] * 0x10000 + (uint)*pbVar3 +
(uint)pbVar3[3] * 0x1000000;
}
iVar2 = iVar2 + 4;
if (pbVar3 == abStack_20) break;
pbVar3 = pbVar3 + 4;
}
param_5 = param_5 + 0x10;
pbVar3 = (byte *)&local_3c;
while( true ) {
if (*(char *)(param_1 + 0xec) == '\0') {
*(uint *)(*(int *)(param_1 + 0xdc) + param_5) =
(uint)pbVar3[1] * 0x100 + (uint)pbVar3[2] * 0x10000 + (uint)*pbVar3 +
(uint)pbVar3[3] * 0x1000000;
}
param_5 = param_5 + 4;
if (pbVar3 == abStack_34) break;
pbVar3 = pbVar3 + 4;
}
AsicUpdateRxWCIDTable(param_1,cVar1,param_1 + 0x51ac);
return;
}