int FUN_004771ac(int param_1)

{
  char cVar1;
  int iVar2;
  int *piVar3;
  undefined4 uVar4;
  code *pcVar5;
  int local_30 [2];
  
  uVar4 = *(undefined4 *)(param_1 + 0x2c);
  local_30[0] = 0;
  if (**(char **)(param_1 + 0xc) == 'I') {
    *(char **)(param_1 + 0xc) = *(char **)(param_1 + 0xc) + 1;
    local_30[0] = 0;
    piVar3 = local_30;
    do {
      cVar1 = **(char **)(param_1 + 0xc)   //possible issue identified - semgrep
      if (cVar1 == 'L') {
        pcVar5 = FUN_00476c3c;
LAB_0047729c:
        iVar2 = (*pcVar5)(param_1);
      }
      else {
        pcVar5 = FUN_004754f4;
        if (cVar1 != 'X') goto LAB_0047729c;
        *(char **)(param_1 + 0xc) = *(char **)(param_1 + 0xc) + 1;
        iVar2 = FUN_00476e1c(param_1);
        if (**(char **)(param_1 + 0xc) != 'E') {
          return 0;
        }
        *(char **)(param_1 + 0xc) = *(char **)(param_1 + 0xc) + 1;
      }
      if (iVar2 == 0) {
        return 0;
      }
      iVar2 = FUN_00473000(param_1,0x28,iVar2,0);
      *piVar3 = iVar2;
      piVar3 = (int *)(iVar2 + 8);
      if (iVar2 == 0) {
        return 0;
      }
    } while (**(char **)(param_1 + 0xc) != 'E');
    *(undefined4 *)(param_1 + 0x2c) = uVar4;
    *(char **)(param_1 + 0xc) = *(char **)(param_1 + 0xc) + 1;
  }
  return local_30[0];
}