void AsicUpdateProtect(int param_1,short param_2,uint param_3,char param_4,char param_5)
{
uint uVar1;
uint uVar2;
int iVar3;
undefined4 auStack_1394 [1241];
uint local_30 [6];
param_3 = param_3 & 0xff;
if (*(char *)(param_1 + 0x76a0c) != -0x80) {
return;
}
if ((*(char *)(param_1 + 0x16e03) == '\0') && (param_2 != 8)) {
return;
}
if (*(int *)(param_1 + 0x71368) != 0) {
param_3 = param_3 | 0x3c;
param_2 = 8 //possible issue identified - semgrep
}
uVar2 = 0;
if (*(char *)(param_1 + 0xec) == '\0') {
uVar2 = *(uint *)(*(int *)(param_1 + 0xdc) + 0x1344);
}
if (((*(int *)(param_1 + 0x16a64) << 9 < 0) || (*(char *)(param_1 + 0x16a7e) == '\x01')) &&
(*(short *)(param_1 + 0x16a52) == 0x92b)) {
uVar1 = 0x100000;
}
else {
uVar1 = (uint)*(ushort *)(param_1 + 0x16a52) << 8;
}
if (*(char *)(param_1 + 0xec) == '\0') {
*(uint *)(*(int *)(param_1 + 0xdc) + 0x1344) = uVar2 & 0xff0000ff | uVar1;
}
RTMPZeroMemory(local_30,0x18);
local_30[0] = 0x7f40000;
if (*(char *)(param_1 + 0x16964) == '\x01') {
if (0xe < *(byte *)(param_1 + 0x169ec)) {
local_30[0] = 0x7f44000;
}
uVar2 = *(byte *)(param_1 + 0x16a4d) | local_30[0];
LAB_00052e48:
local_30[0] = local_30[0] & 0xffff0000 | uVar2 & 0xffff;
}
else if (*(char *)(param_1 + 0x16964) == '\0') {
uVar2 = 0x4000;
if (*(byte *)(param_1 + 0x169ec) < 0xf) {
if (*(byte *)(param_1 + 0x16a4c) < 4) goto LAB_00052e4c;
uVar2 = 0x4000;
}
goto LAB_00052e48;
}
LAB_00052e4c:
if (param_4 == '\0') {
*(undefined1 *)(param_1 + 0x76c24) = 1;
local_30[1] = local_30[0] | 0x20000;
}
else {
local_30[1] = local_30[0];
*(undefined1 *)(param_1 + 0x76c24) = 0;
}
if ((param_3 & 0x3c) == 0) goto switchD_00052eb8_default;
switch(param_2) {
case 0:
local_30[4] = 0x1744004;
local_30[5] = 0x3f44084;
local_30[2] = 0x1744004;
local_30[3] = 0x3f44084;
if (param_5 != '\0') {
local_30[4] = 0x1754004;
local_30[5] = 0x3f54084;
}
*(undefined1 *)(param_1 + 0x16a6c) = 0;
break;
case 1:
case 3:
uVar2 = 0x1744004;
uVar1 = 0x3f44084;
if ((*(uint *)(param_1 + 0x16abc) & 4) != 0) {
uVar2 = 0x1740003;
uVar1 = 0x3f40003;
}
local_30[4] = uVar2 & 0xfff3ffff | 0x50000;
local_30[5] = uVar1 & 0xfff3ffff | 0x50000;
goto LAB_00052ff4;
case 2:
local_30[2] = 0x1744004;
uVar2 = 0x3f44084;
if ((*(uint *)(param_1 + 0x16abc) & 4) != 0) {
local_30[2] = 0x1740003;
uVar2 = 0x3f40003;
}
local_30[5] = uVar2 & 0xfff3ffff | 0x50000;
local_30[4] = local_30[2];
if (param_5 != '\0') {
local_30[4] = local_30[2] & 0xfff3ffff | 0x50000;
}
*(undefined1 *)(param_1 + 0x16a6c) = 0;
goto LAB_00053004;
case 4:
case 5:
case 6:
case 7:
break;
case 8:
local_30[4] = 0x1754004;
local_30[5] = 0x3f54084;
if ((*(uint *)(param_1 + 0x16abc) & 4) != 0) {
local_30[4] = 0x1750003;
local_30[5] = 0x3f50003;
}
LAB_00052ff4:
*(undefined1 *)(param_1 + 0x16a6c) = 1;
local_30[2] = local_30[4];
LAB_00053004:
local_30[3] = local_30[5];
break;
default:
goto switchD_00052eb8_default;
}
switchD_00052eb8_default:
uVar2 = 0;
iVar3 = 0x1364;
do {
if ((((int)param_3 >> (uVar2 & 0x1f) & 1U) != 0) && (*(char *)(param_1 + 0xec) == '\0')) {
*(undefined4 *)(*(int *)(param_1 + 0xdc) + iVar3) = *(undefined4 *)((int)auStack_1394 + iVar3)
;
}
uVar2 = uVar2 + 1;
iVar3 = iVar3 + 4;
} while (uVar2 != 6);
return;
}