int FUN_0047733c(int param_1)

{
  char cVar1;
  bool bVar2;
  int *piVar3;
  int iVar4;
  undefined4 *puVar5;
  int iVar6;
  char *pcVar7;
  undefined4 uVar8;
  code *pcVar9;
  int local_30 [2];
  
  pcVar7 = *(char **)(param_1 + 0xc);
  cVar1 = *pcVar7;
  if (cVar1 == 'N') {
    *(char **)(param_1 + 0xc) = pcVar7 + 1;
    piVar3 = (int *)FUN_00473228(param_1,local_30,1);
    if (piVar3 == (int *)0x0) {
      return 0;
    }
    iVar4 = 0;
    while (cVar1 = **(char **)(param_1 + 0xc), cVar1 != '\0') {   //possible issue identified - semgrep
      if (((((byte)(cVar1 - 0x30U) < 10) || ((byte)(cVar1 + 0x9fU) < 0x1a)) || (cVar1 == 'C')) ||
         ((cVar1 == 'D' || (cVar1 == 'L')))) {
        pcVar9 = FUN_00475f2c;
LAB_004774d8:
        iVar6 = (*pcVar9)(param_1);
LAB_004774e0:
        uVar8 = 1;
        if (iVar4 != 0) goto LAB_00477508;
      }
      else {
        if (cVar1 == 'S') {
          iVar6 = FUN_00473458(param_1,1);
          goto LAB_004774e0;
        }
        if (cVar1 != 'I') {
          if (cVar1 == 'T') {
            pcVar9 = FUN_00473368;
            goto LAB_004774d8;
          }
          if (cVar1 != 'E') {
            iVar4 = 0;
          }
          goto LAB_00477588;
        }
        if (iVar4 == 0) goto LAB_00477588;
        iVar6 = FUN_004771ac(param_1);
        uVar8 = 4;
LAB_00477508:
        iVar6 = FUN_00473000(param_1,uVar8,iVar4,iVar6);
      }
      iVar4 = iVar6;
      if ((cVar1 != 'S') && (**(char **)(param_1 + 0xc) != 'E')) {
        if (iVar4 == 0) goto LAB_00477588;
        iVar6 = *(int *)(param_1 + 0x20);
        if (*(int *)(param_1 + 0x24) <= iVar6) break;
        *(int *)(*(int *)(param_1 + 0x1c) + iVar6 * 4) = iVar4;
        *(int *)(param_1 + 0x20) = iVar6 + 1;
      }
    }
    iVar4 = 0;
LAB_00477588:
    *piVar3 = iVar4;
    if (iVar4 == 0) {
      return 0;
    }
    if (**(char **)(param_1 + 0xc) != 'E') {
      return 0;
    }
    *(char **)(param_1 + 0xc) = *(char **)(param_1 + 0xc) + 1;
    return local_30[0];
  }
  if (cVar1 < 'O') {
    if (cVar1 == 'L') {
      iVar4 = FUN_00475f2c();
      return iVar4;
    }
LAB_00477820:
    iVar4 = FUN_00475f2c(param_1);
    if (**(char **)(param_1 + 0xc) != 'I') {
      return iVar4;
    }
LAB_00477850:
    if (iVar4 == 0) {
      return 0;
    }
    iVar6 = *(int *)(param_1 + 0x20);
    if (*(int *)(param_1 + 0x24) <= iVar6) {
      return 0;
    }
    *(int *)(*(int *)(param_1 + 0x1c) + iVar6 * 4) = iVar4;
    *(int *)(param_1 + 0x20) = iVar6 + 1;
  }
  else {
    if (cVar1 != 'S') {
      if (cVar1 == 'Z') {
        *(char **)(param_1 + 0xc) = pcVar7 + 1;
        iVar4 = FUN_004763b0(param_1,0);
        pcVar7 = *(char **)(param_1 + 0xc);
        if (*pcVar7 != 'E') {
          return 0;
        }
        *(char **)(param_1 + 0xc) = pcVar7 + 1;
        if (pcVar7[1] == 's') {
          *(char **)(param_1 + 0xc) = pcVar7 + 2;
          if (pcVar7[2] == '_') {
            *(char **)(param_1 + 0xc) = pcVar7 + 3;
            iVar6 = FUN_004730c0(param_1);
            if (iVar6 < 0) {
              return 0;
            }
          }
          iVar6 = *(int *)(param_1 + 0x14);
          puVar5 = (undefined4 *)0x0;
          if (iVar6 < *(int *)(param_1 + 0x18)) {
            puVar5 = (undefined4 *)(*(int *)(param_1 + 0x10) + iVar6 * 0xc);
            *(int *)(param_1 + 0x14) = iVar6 + 1;
            if (puVar5 == (undefined4 *)0x0) {
              puVar5 = (undefined4 *)0x0;
            }
            else {
              *puVar5 = 0;
              puVar5[1] = "string literal";
              puVar5[2] = 0xe;
            }
          }
        }
        else {
          puVar5 = (undefined4 *)FUN_0047733c(param_1);
          if (**(char **)(param_1 + 0xc) == '_') {
            *(char **)(param_1 + 0xc) = *(char **)(param_1 + 0xc) + 1;
            iVar6 = FUN_004730c0(param_1);
            if (iVar6 < 0) {
              return 0;
            }
          }
        }
        uVar8 = 2;
        goto LAB_004778b0;
      }
      goto LAB_00477820;
    }
    if (pcVar7[1] == 't') {
      iVar4 = *(int *)(param_1 + 0x14);
      *(char **)(param_1 + 0xc) = pcVar7 + 2;
      if (iVar4 < *(int *)(param_1 + 0x18)) {
        puVar5 = (undefined4 *)(*(int *)(param_1 + 0x10) + iVar4 * 0xc);
        *(int *)(param_1 + 0x14) = iVar4 + 1;
        if (puVar5 == (undefined4 *)0x0) goto LAB_004777a8;
        *puVar5 = 0;
        puVar5[1] = &DAT_00497de8;
        puVar5[2] = 3;
      }
      else {
LAB_004777a8:
        puVar5 = (undefined4 *)0x0;
      }
      uVar8 = FUN_00475f2c(param_1);
      iVar4 = FUN_00473000(param_1,1,puVar5,uVar8);
      *(int *)(param_1 + 0x30) = *(int *)(param_1 + 0x30) + 3;
      bVar2 = false;
    }
    else {
      iVar4 = FUN_00473458(param_1,0);
      bVar2 = true;
    }
    if (**(char **)(param_1 + 0xc) != 'I') {
      return iVar4;
    }
    if (!bVar2) goto LAB_00477850;
  }
  puVar5 = (undefined4 *)FUN_004771ac(param_1);
  uVar8 = 4;
LAB_004778b0:
  iVar4 = FUN_00473000(param_1,uVar8,iVar4,puVar5);
  return iVar4;
}