void APUpdateCapabilityAndErpIe(int param_1)
{
bool bVar1;
bool bVar2;
char cVar3;
uint uVar4;
int *piVar5;
int iVar6;
uint uVar7;
char cVar8;
cVar8 = *(char *)(param_1 + 0x16a7c) //possible issue identified - semgrep
if (*(char *)(param_1 + 0x16982) == '\x01') {
return;
}
piVar5 = (int *)(param_1 + 0x5d958);
cVar3 = '\x01';
bVar1 = false;
do {
cVar3 = cVar3 + '\x01';
if ((*piVar5 == 1) && (piVar5[0x9d] == 2)) {
if (*(byte *)(piVar5 + 0xd3) < 4) {
bVar1 = true;
cVar8 = '\0';
}
if ((*(ushort *)(piVar5 + 0xa0) & 0x400) == 0) {
cVar8 = '\0';
}
}
piVar5 = piVar5 + 0x288;
} while (cVar3 != ' ');
if (*(int *)(param_1 + 0x16a78) == 0) {
uVar4 = 3;
bVar2 = true;
if (!bVar1) {
uVar4 = 0;
bVar2 = bVar1;
}
bVar1 = bVar2;
if (*(uint *)(param_1 + 0x16fbc) < *(int *)(param_1 + 0x16634) + 0x4e2U) {
uVar4 = uVar4 | 2;
}
uVar4 = (uVar4 << 0x1e) >> 0x1f;
}
else {
uVar4 = 0;
if (*(int *)(param_1 + 0x16a78) == 1) {
uVar4 = 1;
}
}
uVar7 = *(uint *)(param_1 + 0x16abc);
if (uVar4 != (uVar7 << 0x1d) >> 0x1f) {
if (uVar4 == 0) {
*(uint *)(param_1 + 0x16abc) = uVar7 & 0xfffffffb;
}
else {
*(uint *)(param_1 + 0x16abc) = uVar7 | 4;
}
AsicUpdateProtect(param_1,(uint)(*(int *)(param_1 + 0x16b18) << 0xe) >> 0x1e,2,uVar4 == 0,
*(undefined1 *)(param_1 + 0x71351));
}
if (*(int *)(param_1 + 0x16a70) == 0) {
LAB_00069298:
*(byte *)(param_1 + 0x16633) = bVar1 | 4;
}
else {
piVar5 = (int *)(param_1 + 0x5cf38);
cVar3 = '\0';
do {
cVar3 = cVar3 + '\x01';
if (((*piVar5 == 1) && (piVar5[0x9d] == 2)) && ((*(ushort *)(piVar5 + 0xa0) & 0x20) == 0))
goto LAB_00069298;
piVar5 = piVar5 + 0x288;
} while (cVar3 != ' ');
*(bool *)(param_1 + 0x16633) = bVar1;
}
for (uVar4 = 0; iVar6 = uVar4 * 0x1140 + param_1, uVar4 < *(byte *)(param_1 + 0x51aa);
uVar4 = uVar4 + 1 & 0xff) {
if (cVar8 == '\0') {
*(ushort *)(iVar6 + 0x51d4) = *(ushort *)(iVar6 + 0x51d4) & 0xfbff;
}
else {
*(ushort *)(iVar6 + 0x51d4) = *(ushort *)(iVar6 + 0x51d4) | 0x400;
}
iVar6 = uVar4 * 0x1140 + param_1;
if (*(int *)(param_1 + 0x16a70) == 0) {
*(ushort *)(iVar6 + 0x51d4) = *(ushort *)(iVar6 + 0x51d4) & 0xffdf;
}
else {
*(ushort *)(iVar6 + 0x51d4) = *(ushort *)(iVar6 + 0x51d4) | 0x20;
}
}
AsicSetSlotTime(param_1,cVar8);
return;
}