void AsicSetEdcaParm(int param_1,char *param_2)
{
uint uVar1;
uint uVar2;
uint uVar3;
byte bVar4;
byte bVar5;
byte bVar6;
char cVar7;
uint uVar8;
uint uVar9;
uint *puVar10;
int iVar11;
uint uVar12;
uint uVar13;
uint uVar14;
uint uVar15;
uint uVar16;
uint uVar17;
if ((param_2 == (char *)0x0) || (*param_2 == '\0')) {
if (2 < RTDebugLevel) {
printk("AsicSetEdcaParm\n");
}
*(uint *)(param_1 + 0x16abc) = *(uint *)(param_1 + 0x16abc) & 0xfffffeff;
puVar10 = (uint *)(param_1 + 0x5d34c);
iVar11 = 0;
do {
iVar11 = iVar11 + 1;
if ((puVar10[-0x105] == 1) || (puVar10[-0x105] == 3)) {
*puVar10 = *puVar10 & 0xfffffffe;
}
puVar10 = puVar10 + 0x288;
} while (iVar11 != 0x20);
uVar12 = 0x20;
if (*(char *)(param_1 + 0x16a7d) == '\0') {
uVar12 = 0;
}
if (*(char *)(param_1 + 0xec) == '\0') {
*(uint *)(*(int *)(param_1 + 0xdc) + 0x1300) = uVar12 | 0x64200;
}
if (*(char *)(param_1 + 0xec) == '\0') {
*(undefined4 *)(*(int *)(param_1 + 0xdc) + 0x1304) = 0x64200;
}
if (*(char *)(param_1 + 0x16982) == '\x01') {
uVar12 = 0xc0;
uVar8 = 0x60;
}
else {
uVar12 = 0x60;
uVar8 = 0x30;
}
cVar7 = *(char *)(param_1 + 0xec) //possible issue identified - semgrep
if (cVar7 == '\0') {
*(uint *)(*(int *)(param_1 + 0xdc) + 0x1308) = uVar12 | 0x64200;
cVar7 = *(char *)(param_1 + 0xec) //possible issue identified - semgrep
if (cVar7 == '\0') {
*(uint *)(*(int *)(param_1 + 0xdc) + 0x130c) = uVar8 | 0x64200;
cVar7 = *(char *)(param_1 + 0xec) //possible issue identified - semgrep
}
}
if (cVar7 == '\0') {
*(undefined4 *)(*(int *)(param_1 + 0xdc) + 0x220) = 0;
}
if (*(char *)(param_1 + 0x16982) == '\x01') {
uVar12 = 0xc0;
iVar11 = 0x60;
}
else {
uVar12 = 0x60;
iVar11 = 0x30;
}
cVar7 = *(char *)(param_1 + 0xec) //possible issue identified - semgrep
if (cVar7 == '\0') {
*(uint *)(*(int *)(param_1 + 0xdc) + 0x224) = uVar12 | iVar11 << 0x10;
cVar7 = *(char *)(param_1 + 0xec) //possible issue identified - semgrep
if (cVar7 == '\0') {
*(undefined4 *)(*(int *)(param_1 + 0xdc) + 0x218) = 0x4444;
cVar7 = *(char *)(param_1 + 0xec) //possible issue identified - semgrep
}
}
if (cVar7 == '\0') {
*(undefined4 *)(*(int *)(param_1 + 0xdc) + 0x21c) = 0x6666;
cVar7 = *(char *)(param_1 + 0xec) //possible issue identified - semgrep
}
else {
cVar7 = *(char *)(param_1 + 0xec) //possible issue identified - semgrep
}
if (cVar7 == '\0') {
*(undefined4 *)(*(int *)(param_1 + 0xdc) + 0x214) = 0x2222;
}
memset((void *)(param_1 + 0x16a90),0,0x20) //possible issue identified - semgrep
return;
}
*(uint *)(param_1 + 0x16abc) = *(uint *)(param_1 + 0x16abc) | 0x100;
uVar17 = ((uint)*(ushort *)(param_2 + 0x18) * 6) / 10;
uVar13 = *(ushort *)(param_2 + 0x14) & 0xff;
uVar12 = ((byte)param_2[0xb] & 0xf) << 0xc;
uVar8 = ((byte)param_2[0xc] & 0xf) << 0xc;
uVar1 = ((byte)param_2[0xf] & 0xf) << 0x10;
uVar2 = ((byte)param_2[0x10] & 0xf) << 0x10;
uVar15 = uVar13 | uVar12 | uVar1 | ((byte)param_2[7] & 0xf) << 8;
uVar16 = (byte)param_2[0x16] | uVar8 | uVar2 | ((byte)param_2[8] & 0xf) << 8;
if ((*(uint *)(param_1 + 0x4bf4) & 0xf0) == 0x10) {
uVar17 = uVar17 & 0xff | ((byte)param_2[0xd] + 1 & 0xf) << 0xc |
((byte)param_2[0x11] + 1 & 0xf) << 0x10;
}
else {
uVar17 = uVar17 & 0xff | ((byte)param_2[0xd] & 0xf) << 0xc | ((byte)param_2[0x11] & 0xf) << 0x10
;
}
uVar9 = (uint)*(ushort *)(param_2 + 0x1a);
bVar4 = param_2[0xe];
bVar5 = param_2[0x12];
bVar6 = param_2[10];
uVar3 = ((byte)param_2[9] + 1 & 0xf) << 8;
uVar14 = uVar17 | uVar3;
if (*(char *)(param_1 + 0x16e12) != '\0') {
if ((uVar9 & 0xff) != 0x66) {
cVar7 = *(char *)(param_1 + 0xec) //possible issue identified - semgrep
goto LAB_0005152c;
}
if (*(ushort *)(param_2 + 0x14) == 0) {
uVar13 = 10;
}
uVar15 = uVar12 | uVar1 | uVar13 | ((byte)param_2[7] - 1 & 0xf) << 8;
uVar16 = uVar8 | uVar2 | (uint)(byte)param_2[0x16] | ((byte)param_2[8] & 0xf) << 8;
uVar14 = uVar17 & 0xfffff000 | uVar3 | *(ushort *)(param_2 + 0x18) & 0xff;
}
cVar7 = *(char *)(param_1 + 0xec) //possible issue identified - semgrep
LAB_0005152c:
if (cVar7 == '\0') {
*(uint *)(*(int *)(param_1 + 0xdc) + 0x1300) = uVar15;
cVar7 = *(char *)(param_1 + 0xec) //possible issue identified - semgrep
}
else {
cVar7 = *(char *)(param_1 + 0xec) //possible issue identified - semgrep
}
if (cVar7 == '\0') {
*(uint *)(*(int *)(param_1 + 0xdc) + 0x1304) = uVar16;
cVar7 = *(char *)(param_1 + 0xec) //possible issue identified - semgrep
}
else {
cVar7 = *(char *)(param_1 + 0xec) //possible issue identified - semgrep
}
if (cVar7 == '\0') {
*(uint *)(*(int *)(param_1 + 0xdc) + 0x1308) = uVar14;
cVar7 = *(char *)(param_1 + 0xec) //possible issue identified - semgrep
}
else {
cVar7 = *(char *)(param_1 + 0xec) //possible issue identified - semgrep
}
if (cVar7 == '\0') {
*(uint *)(*(int *)(param_1 + 0xdc) + 0x130c) =
uVar9 & 0xff | (bVar4 & 0xf) << 0xc | (bVar5 & 0xf) << 0x10 | (bVar6 & 0xf) << 8;
cVar7 = *(char *)(param_1 + 0xec) //possible issue identified - semgrep
}
else {
cVar7 = *(char *)(param_1 + 0xec) //possible issue identified - semgrep
}
if (cVar7 == '\0') {
*(uint *)(*(int *)(param_1 + 0xdc) + 0x220) = uVar15 & 0xff | (uVar16 & 0xff) << 0x10;
}
cVar7 = *(char *)(param_1 + 0xec) //possible issue identified - semgrep
if (cVar7 == '\0') {
*(uint *)(*(int *)(param_1 + 0xdc) + 0x224) = uVar14 & 0xff | (uVar9 & 0xff) << 0x10;
cVar7 = *(char *)(param_1 + 0xec) //possible issue identified - semgrep
}
if (cVar7 == '\0') {
*(uint *)(*(int *)(param_1 + 0xdc) + 0x218) =
(byte)param_2[0xb] & 0xf | ((byte)param_2[0xc] & 0xf) << 4 |
((byte)param_2[0xd] & 0xf) << 8 | ((byte)param_2[0xe] & 0xf) << 0xc;
}
cVar7 = *(char *)(param_1 + 0xec) //possible issue identified - semgrep
if (cVar7 == '\0') {
*(uint *)(*(int *)(param_1 + 0xdc) + 0x21c) =
(byte)param_2[0xf] & 0xf | ((byte)param_2[0x10] & 0xf) << 4 |
((byte)param_2[0x11] & 0xf) << 8 | ((byte)param_2[0x12] & 0xf) << 0xc;
cVar7 = *(char *)(param_1 + 0xec) //possible issue identified - semgrep
}
if (cVar7 == '\0') {
*(uint *)(*(int *)(param_1 + 0xdc) + 0x214) =
(uVar15 << 0x14) >> 0x1c | ((uVar16 << 0x14) >> 0x1c) << 4 |
((uVar14 << 0x14) >> 0x1c) << 8 | (bVar6 & 0xf) << 0xc;
}
memmove((void *)(param_1 + 0x16a90),param_2,0x20) //possible issue identified - semgrep
if ((*(uint *)(param_1 + 0x16abc) & 2) == 0) {
if (2 < RTDebugLevel) {
printk("EDCA [#%d]: AIFSN CWmin CWmax TXOP(us) ACM\n",param_2[6]);
}
if (2 < RTDebugLevel) {
printk(" AC_BE %2d %2d %2d %4d %d\n",param_2[7],param_2[0xb],
param_2[0xf],(uint)*(ushort *)(param_2 + 0x14) << 5,param_2[0x1c]);
}
if (2 < RTDebugLevel) {
printk(" AC_BK %2d %2d %2d %4d %d\n",param_2[8],param_2[0xc],
param_2[0x10],(uint)*(ushort *)(param_2 + 0x16) << 5,param_2[0x1d]);
}
if (2 < RTDebugLevel) {
printk(" AC_VI %2d %2d %2d %4d %d\n",param_2[9],param_2[0xd],
param_2[0x11],(uint)*(ushort *)(param_2 + 0x18) << 5,param_2[0x1e]);
}
if (2 < RTDebugLevel) {
printk(" AC_VO %2d %2d %2d %4d %d\n",param_2[10],param_2[0xe],
param_2[0x12],(uint)*(ushort *)(param_2 + 0x1a) << 5,param_2[0x1f]);
}
}
return;
}