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