/* WARNING: Removing unreachable block (ram,0x0041943c) */
/* WARNING: Removing unreachable block (ram,0x004196ac) */

int FUN_004153b8(char *param_1,int *param_2)

{
  undefined4 *puVar1;
  undefined *__s2;
  int *__s;
  FILE *__stream;
  size_t sVar2;
  char *pcVar3;
  void *pvVar4;
  undefined4 *puVar5;
  int iVar6;
  undefined4 uVar7;
  size_t sVar8;
  char cVar9;
  int iVar10;
  void *pvVar11;
  undefined4 *puVar12;
  char *pcVar13;
  int iVar14;
  char *pcVar15;
  int *piVar16;
  int iStack_a8;
  undefined4 uStack_a4;
  undefined4 uStack_a0;
  undefined4 uStack_9c;
  char *pcStack_98;
  undefined4 uStack_94;
  undefined4 *puStack_90;
  char *pcStack_8c;
  char *pcStack_88;
  uint uStack_84;
  char *pcStack_7c;
  char *pcStack_78;
  char *pcStack_58;
  char *pcStack_54;
  char *pcStack_50;
  char *pcStack_4c;
  char *pcStack_48;
  char *pcStack_44;
  char *pcStack_40;
  char *pcStack_3c;
  char *pcStack_38;
  undefined4 *puStack_34;
  undefined4 *puStack_30;
  
  if ((param_1 == (char *)0x0) || (param_2 == (int *)0x0)) {
    return 0x69;
  }
  __s = (int *)malloc(0x40)   //possible issue identified - semgrep
  if (__s == (int *)0x0) {
    return 0x66;
  }
  memset(__s,0,0x40)   //possible issue identified - semgrep
  piVar16 = __s + 7;
  ixml_membuf_init(piVar16);
  ixml_membuf_init(__s + 3);
  __stream = fopen(param_1,"rb")   //possible issue identified - semgrep
  if (__stream == (FILE *)0x0) {
    iVar14 = 0x65;
    goto LAB_004194bc;
  }
  fseek(__stream,0,2);
  sVar2 = ftell(__stream);
  if (sVar2 == 0) {
    fclose(__stream);
    iVar14 = 0xc;
    goto LAB_004194bc;
  }
  pvVar4 = malloc(sVar2 + 1)   //possible issue identified - semgrep
  *__s = (int)pvVar4;
  if (pvVar4 == (void *)0x0) {
    fclose(__stream);
    iVar14 = 0x66;
    goto LAB_004194bc;
  }
  fseek(__stream,0,0);
  sVar2 = fread((void *)*__s,1,sVar2,__stream)   //possible issue identified - semgrep
  *(undefined1 *)(*__s + sVar2) = 0;
  fclose(__stream);
  __s[1] = *__s;
  iStack_a8 = 0;
  uStack_a4 = 0;
  uStack_a0 = 0;
  ixmlNode_init(&pcStack_8c);
  iVar14 = ixmlDocument_createDocumentEx(&iStack_a8);
  if (iVar14 == 0) {
    __s[0xd] = iStack_a8;
    FUN_004181e0(__s);
    pcStack_58 = PTR_s_<_xml_004303c0;
    sVar2 = strlen(PTR_s_<_xml_004303c0);
    iVar14 = strncmp((char *)__s[1],pcStack_58,sVar2)   //possible issue identified - semgrep
    if (iVar14 == 0) {
      iVar14 = FUN_0041879c(__s + 1,PTR_s__>_004303cc);
      FUN_004181e0(__s);
      if (iVar14 != 0) goto LAB_0041949c;
    }
    iVar14 = FUN_00418998(__s);
    __s2 = PTR_s_<_DOCTYPE_004303c4;
    if (iVar14 == 0) {
      pcVar13 = (char *)__s[1];
      sVar2 = strlen(PTR_s_<_DOCTYPE_004303c4);
      iVar14 = strncmp(pcVar13,__s2,sVar2)   //possible issue identified - semgrep
      pcVar3 = pcVar13 + 1;
      if (iVar14 == 0) {
        __s[1] = (int)pcVar3;
        if (pcVar3 != (char *)0x0) {
          iVar10 = 1;
          cVar9 = pcVar13[1]   //possible issue identified - semgrep
          while (cVar9 != '\0') {
            if (cVar9 == '<') {
              iVar10 = iVar10 + 1;
            }
            else if (cVar9 == '>') {
              iVar10 = iVar10 + -1;
            }
            else if ((cVar9 == '\"') && (pcVar3 = strchr(pcVar3 + 1,0x22), pcVar3 == (char *)0x0)) {
              iVar14 = 0xc;
              goto LAB_0041949c;
            }
            pcVar3 = pcVar3 + 1;
            if (pcVar3 == (char *)0x0) {
              iVar14 = 0xc;
              if (iVar10 != 0) goto LAB_0041949c;
LAB_004196dc:
              __s[1] = (int)pcVar3;
              goto LAB_004196e0;
            }
            if (iVar10 == 0) goto LAB_004196dc;
            cVar9 = *pcVar3;
          }
          goto LAB_00419618;
        }
LAB_0041986c:
        iVar14 = 0x6a;
      }
      else {
LAB_004196e0:
        iVar14 = FUN_00418998(__s);
        if (iVar14 == 0) {
          pcStack_48 = PTR_s_<_[CDATA[_004303e8;
          pcStack_4c = PTR_DAT_004303ec;
          pcStack_44 = PTR_DAT_004303d0;
          pcStack_40 = PTR_DAT_004303d8;
          pcStack_54 = PTR_s_<_xml__004303d4;
          pcStack_50 = PTR_s__>_004303cc;
          pcStack_3c = PTR_DAT_004303e0;
          pcStack_38 = PTR_s__>_004303e4;
          puStack_34 = &uStack_9c;
          puStack_30 = &uStack_a4;
          iVar14 = 0;
LAB_00419764:
          ixmlNode_init(&pcStack_8c);
          if (*(char *)__s[1] == '\0') goto code_r0x0041978c;
          if (__s[0xe] == 2) {
            __s[2] = __s[1];
            FUN_004181e0(__s);
            pcVar3 = (char *)__s[1];
            if (*pcVar3 != '\0') {
              if (*pcVar3 == '<') {
                pcStack_98 = pcVar3;
                sVar2 = strlen(pcStack_48);
                iVar10 = strncmp(pcVar3,pcStack_48,sVar2);
                pcVar15 = pcVar3 + sVar2;
                pcVar13 = pcVar15;
                if (iVar10 == 0) {
                  while( true ) {
                    iVar10 = (int)*pcVar13;
                    if (((((1 < iVar10 - 9U) && (iVar10 != 0xd)) && (0xd7df < iVar10 - 0x20U)) &&
                        ((0x1ffd < iVar10 - 0xe000U && (0xfffff < iVar10 - 0x10000U)))) ||
                       (iVar10 == 0x30)) break;
                    sVar2 = strlen(pcStack_4c);
                    iVar6 = strncmp(pcVar13,pcStack_4c,sVar2);
                    if (iVar6 == 0) break;
                    pcVar13 = pcVar13 + 1;
                  }
                  sVar2 = (int)pcVar13 - (int)pcVar15;
                  if ((((int)sVar2 < 1) || (iVar10 == 0x30)) ||
                     (pcStack_88 = (char *)malloc(sVar2 + 1), pcStack_88 == (char *)0x0))
                  goto LAB_0041986c;
                  strncpy(pcStack_88,pcVar15,sVar2);
                  pcStack_88[sVar2] = '\0';
                  pcStack_8c = strdup("#cdata-section");
                  if (pcStack_8c == (char *)0x0) goto LAB_0041986c;
                  uStack_84 = 4;
                  sVar2 = strlen(pcStack_4c);
                  pcStack_98 = pcVar13 + sVar2;
                  __s[1] = (int)pcStack_98;
                }
                else {
                  sVar2 = strlen(pcStack_44);
                  iVar10 = strncmp(pcVar3,pcStack_44,sVar2);
                  if (iVar10 == 0) {
                    iVar10 = FUN_004188ac(&pcStack_98);
                    pcVar13 = pcStack_98;
                    if (iVar10 != 0) goto LAB_0041986c;
                  }
                  else {
                    sVar2 = strlen(pcStack_40);
                    iVar10 = strncmp(pcVar3,pcStack_40,sVar2);
                    if (iVar10 != 0) {
                      __s[0xe] = 0;
                      goto LAB_00419a34;
                    }
                    sVar8 = strlen(pcStack_58);
                    iVar10 = strncasecmp(pcVar3,pcStack_58,sVar8);
                    if (iVar10 == 0) goto LAB_0041986c;
                    sVar8 = strlen(pcStack_54);
                    iVar10 = strncasecmp(pcVar3,pcStack_54,sVar8);
                    if ((iVar10 == 0) ||
                       ((iVar10 = strncasecmp(pcVar3,pcStack_40,sVar2), pcVar13 = pcStack_98,
                        iVar10 == 0 &&
                        ((pcVar15 = strstr(pcVar3,pcStack_50), pcVar15 == (char *)0x0 ||
                         (pcVar13 = pcVar15 + sVar2, pcVar3 == pcVar15)))))) goto LAB_0041986c;
                  }
                  pcStack_98 = pcVar13;
                  __s[1] = (int)pcStack_98;
                }
              }
              else {
                pcVar3 = (char *)__s[2];
                __s[1] = (int)pcVar3;
                cVar9 = *pcVar3;
                while (pcStack_98 = pcVar3, cVar9 != '<') {
                  iVar10 = strncmp(pcVar3,"]]>",3);
                  if (iVar10 == 0) goto LAB_0041986c;
                  if (cVar9 == '\0') goto LAB_00419f74;
                  pcVar3 = pcVar3 + 1;
                  cVar9 = *pcVar3;
                }
                iVar10 = strncmp(pcVar3,"]]>",3);
                if (iVar10 == 0) goto LAB_0041986c;
LAB_00419f74:
                iVar10 = __s[1];
                ixml_membuf_destroy(piVar16);
                iVar6 = FUN_00418b58(__s,__s[1],(int)pcVar3 - iVar10);
                if ((((iVar6 != 0) || ((char *)__s[7] == (char *)0x0)) ||
                    (pcStack_88 = strdup((char *)__s[7]), pcStack_88 == (char *)0x0)) ||   //possible issue identified - semgrep
                   (pcStack_8c = strdup("#text"), pcStack_8c == (char *)0x0)) goto LAB_0041986c   //possible issue identified - semgrep
                uStack_84 = 3;
                __s[1] = __s[1] + ((int)pcVar3 - iVar10);
              }
            }
          }
          else {
            FUN_004181e0(__s);
            iVar10 = FUN_00419158(__s);
            if (((iVar10 == 0) && (__s[0xc] == 0)) && (*(char *)__s[1] == '\0')) goto LAB_00419a34;
            if (__s[8] == 0) goto LAB_0041986c;
            pcVar3 = (char *)__s[7];
            cVar9 = *pcVar3;
            if (cVar9 == '>') goto LAB_00419a34;
            iVar10 = strcmp(pcVar3,pcStack_3c);
            if (iVar10 == 0) {
              iVar10 = FUN_00419158(__s);
              iVar14 = 0x6a;
              if (((iVar10 == 0) || ((char *)__s[7] == (char *)0x0)) ||
                 (pcStack_8c = strdup((char *)__s[7]), pcStack_8c == (char *)0x0))
              goto LAB_0041949c;
              pcStack_88 = (char *)0x0;
              uStack_84 = 1;
              FUN_004181e0(__s);
              iVar14 = FUN_00419158(__s);
              if (((iVar14 == 0) || ((char *)__s[7] == (char *)0x0)) ||
                 (iVar14 = strcmp((char *)__s[7],">"), iVar14 != 0)) goto LAB_0041986c;
              if (uStack_84 == 1) {
LAB_00419b78:
                puVar12 = (undefined4 *)__s[0xc];
                iVar14 = strcmp((char *)*puVar12,pcStack_8c);
                if (iVar14 != 0) goto LAB_00419618;
                __s[0xc] = puVar12[4];
                FUN_004184ac(puVar12);
                pvVar4 = (void *)puVar12[3];
                while (pvVar4 != (void *)0x0) {
                  pvVar11 = *(void **)((int)pvVar4 + 8);
                  FUN_00418550(pvVar4);
                  free(pvVar4);
                  pvVar4 = pvVar11;
                }
                free(puVar12);
              }
              puVar12 = (undefined4 *)__s[0xd];
              iVar14 = strcmp(pcStack_8c,(char *)*puVar12);
              if (iVar14 != 0) goto LAB_00419618;
              __s[0xd] = puVar12[7];
              __s[0xe] = 2;
              iVar14 = 0;
              goto LAB_00419a58;
            }
            if (cVar9 != '<') {
              iVar10 = strcmp(pcVar3,pcStack_38);
              if (iVar10 == 0) {
                if (((char *)__s[3] != (char *)0x0) &&
                   (pcStack_8c = strdup((char *)__s[3]), pcStack_8c != (char *)0x0)) {
                  uStack_84 = 1;
                  goto LAB_00419b78;
                }
                goto LAB_0041986c;
              }
              if ((__s[0xe] != 1) || (uStack_94 = 0, pcVar3 == (char *)0x0)) goto LAB_0041986c;
              uVar7 = FUN_00417ef8(pcVar3,&uStack_94);
              iVar10 = FUN_00417e20(uVar7,0);
              if (((iVar10 == 0) ||
                  (((pcStack_8c = strdup(pcVar3), pcStack_8c == (char *)0x0 ||
                    (iVar10 = FUN_00419158(__s), iVar10 == 0)) || (*(char *)__s[7] != '=')))) ||
                 (iVar10 = FUN_00419158(__s), iVar10 == 0)) goto LAB_0041986c;
              cVar9 = *(char *)__s[7];
              if ((cVar9 != '\"') && (cVar9 != '\'')) goto LAB_0041986c;
              pcVar13 = (char *)__s[1];
              pcVar3 = strstr(pcVar13,(char *)__s[7]);
              if (pcVar3 == (char *)0x0) goto LAB_0041986c;
              if (pcVar13 < pcVar3) {
                cVar9 = *pcVar13;
                if (cVar9 == '<') goto LAB_0041986c;
                while( true ) {
                  if (cVar9 == '&') {
                    pcVar13 = pcVar13 + 1;
                  }
                  pcVar13 = pcVar13 + 1;
                  if (pcVar3 <= pcVar13) break;
                  cVar9 = *pcVar13;
                  if (cVar9 == '<') {
                    iVar14 = 0x6a;
                    goto LAB_0041949c;
                  }
                }
              }
              ixml_membuf_destroy(piVar16);
              pcVar13 = (char *)__s[1];
              if ((pcVar3 != pcVar13) &&
                 (iVar10 = FUN_00418b58(__s,pcVar13,(int)pcVar3 - (int)pcVar13), iVar10 != 0))
              goto LAB_0041986c;
              __s[1] = (int)(pcVar3 + 1);
              if (((char *)__s[7] != (char *)0x0) &&
                 (pcStack_88 = strdup((char *)__s[7]), pcStack_88 == (char *)0x0))
              goto LAB_0041986c;
              pcVar3 = pcStack_8c;
              uStack_84 = 2;
              iVar10 = strcmp(pcStack_8c,"xmlns");
              iVar6 = __s[0xc];
              if (iVar10 == 0) {
                if (*(void **)(iVar6 + 8) != (void *)0x0) {
                  free(*(void **)(iVar6 + 8));
                }
LAB_0041992c:
                pcVar3 = strdup(pcStack_88)   //possible issue identified - semgrep
                *(char **)(iVar6 + 8) = pcVar3;
                if (pcVar3 == (char *)0x0) goto LAB_0041986c;
              }
              else {
                iVar10 = strncmp(pcVar3,"xmlns:",6);
                if (iVar10 == 0) {
                  iVar10 = Parser_setNodePrefixAndLocalName(&pcStack_8c);
                  if ((iVar10 != 0) || (iVar6 == 0)) goto LAB_0041986c;
                  if ((*(char **)(iVar6 + 4) != (char *)0x0) &&
                     (iVar10 = strcmp(*(char **)(iVar6 + 4),pcStack_78), iVar10 == 0))
                  goto LAB_0041992c;
                  pcVar3 = pcStack_78;
                  puVar5 = *(undefined4 **)(iVar6 + 0xc);
                  puVar12 = *(undefined4 **)(iVar6 + 0xc);
                  while (puVar1 = puVar5, puVar1 != (undefined4 *)0x0) {
                    if (((char *)puVar1[1] != (char *)0x0) &&
                       (iVar10 = strcmp((char *)puVar1[1],pcVar3), iVar10 == 0)) {
                      if ((void *)*puVar1 != (void *)0x0) {
                        free((void *)*puVar1);
                      }
                      pcVar3 = strdup(pcStack_88);
                      *puVar1 = pcVar3;
                      if (pcVar3 != (char *)0x0) goto LAB_00419948;
                      iVar14 = 0x6a;
                      goto LAB_0041949c;
                    }
                    puVar12 = puVar1;
                    puVar5 = (undefined4 *)puVar1[2];
                  }
                  puVar5 = (undefined4 *)malloc(0xc)   //possible issue identified - semgrep
                  if (puVar5 == (undefined4 *)0x0) goto LAB_0041986c;
                  *puVar5 = 0;
                  puVar5[1] = 0;
                  puVar5[2] = 0;
                  pcVar3 = strdup(pcStack_78);
                  puVar5[1] = pcVar3;
                  if (pcVar3 != (char *)0x0) {
                    pcVar3 = strdup(pcStack_88);
                    *puVar5 = pcVar3;
                    if (pcVar3 != (char *)0x0) {
                      if (*(int *)(iVar6 + 0xc) == 0) {
                        *(undefined4 **)(iVar6 + 0xc) = puVar5;
                      }
                      else {
                        puVar12[2] = puVar5;
                      }
                      goto LAB_00419948;
                    }
                    FUN_00418550(puVar5);
                  }
                  free(puVar5);
                  iVar14 = 0x6a;
                  goto LAB_0041949c;
                }
              }
LAB_00419948:
              puVar12 = (undefined4 *)__s[0xb];
              if (puVar12 != (undefined4 *)0x0) {
                pcVar3 = (char *)puVar12[4];
                puVar5 = (undefined4 *)__s[0xc];
                if (pcVar3 == (char *)0x0) {
                  iVar10 = strcmp((char *)*puVar12,(char *)*puVar5);
                  if (iVar10 != 0) goto LAB_0041986c;
                  pcVar3 = (char *)puVar5[2];
                  if (pcVar3 != (char *)0x0) goto LAB_004199b4;
                  __s[0xb] = 0;
                }
                else {
                  iVar10 = strcmp((char *)*puVar12,(char *)*puVar5);
                  if ((iVar10 != 0) && (iVar10 = strcmp(pcVar3,(char *)puVar5[1]), iVar10 != 0))
                  goto LAB_0041986c;
                  pcVar3 = (char *)puVar5[2];
                  if (pcVar3 != (char *)0x0) {
LAB_004199b4:
                    pcVar3 = strdup(pcVar3)   //possible issue identified - semgrep
                    puVar12[3] = pcVar3;
                    if (pcVar3 == (char *)0x0) goto LAB_0041986c;
                    __s[0xb] = 0;
                  }
                }
              }
              __s[2] = __s[1];
              iVar10 = FUN_00419158(__s);
              if (iVar10 != 0) {
                pcVar3 = (char *)__s[7];
                iVar10 = strcmp(pcVar3,"<");
                if (iVar10 != 0) {
                  iVar10 = strcmp(pcVar3,">");
                  if (iVar10 == 0) {
LAB_0041a694:
                    __s[0xe] = 2;
                  }
                  else {
                    __s[1] = __s[2];
                  }
                  goto LAB_00419a34;
                }
              }
              goto LAB_0041986c;
            }
            iVar10 = FUN_00419158(__s);
            if ((((iVar10 == 0) || ((char *)__s[7] == (char *)0x0)) ||
                (pcStack_8c = strdup((char *)__s[7]), pcStack_8c == (char *)0x0)) ||   //possible issue identified - semgrep
               ((iVar10 = ixml_membuf_assign_str(__s + 3,pcStack_8c), iVar10 != 0 ||
                (iVar10 = Parser_setNodePrefixAndLocalName(&pcStack_8c), iVar10 != 0))))
            goto LAB_0041986c;
            uStack_84 = 1;
            __s[2] = __s[1];
            pcStack_88 = (char *)0x0;
            iVar10 = FUN_00419158(__s);
            if (iVar10 == 0) goto LAB_0041986c;
            pcVar3 = (char *)__s[7];
            iVar10 = strcmp(pcVar3,"/>");
            if (iVar10 == 0) {
              __s[0xe] = 0;
              __s[1] = __s[2];
            }
            else {
              iVar10 = strcmp(pcVar3,">");
              if (iVar10 == 0) goto LAB_0041a694;
              __s[0xe] = 1;
              __s[1] = __s[2];
            }
          }
LAB_00419a34:
          pcVar3 = pcStack_8c;
          iVar10 = iStack_a8;
          if (uStack_84 == 2) {
            uStack_9c = 0;
            for (puVar12 = *(undefined4 **)(__s[0xd] + 0x2c); puVar12 != (undefined4 *)0x0;
                puVar12 = (undefined4 *)puVar12[10]) {
              iVar6 = strcmp((char *)*puVar12,pcVar3);
              iVar14 = 0xc;
              if (iVar6 == 0) goto LAB_0041949c;
            }
            iVar14 = ixmlDocument_createAttributeEx(iVar10,pcVar3,puStack_34);
            if ((iVar14 != 0) ||
               (iVar14 = ixmlNode_setNodeProperties(uStack_9c,&pcStack_8c), iVar14 != 0))
            goto LAB_0041949c;
            iVar14 = ixmlElement_setAttributeNode(__s[0xd],uStack_9c,0);
          }
          else {
            if (uStack_84 < 3) {
              if (uStack_84 != 1) goto LAB_00419a58;
              puStack_90 = (undefined4 *)0x0;
              if (__s[0xf] == 1) {
                if (__s[0xc] == 0) goto LAB_00419618;
              }
              else {
                __s[0xf] = 1;
              }
              __s[2] = __s[1];
              iVar14 = ixmlDocument_createElementEx(iStack_a8,pcStack_8c,&puStack_90);
              if (iVar14 != 0) goto LAB_0041949c;
              iVar14 = ixmlNode_setNodeProperties(puStack_90,&pcStack_8c);
              pcVar3 = pcStack_7c;
              if (iVar14 == 0) {
                if (pcStack_7c == (char *)0x0) {
                  for (iVar14 = __s[0xc]; iVar14 != 0; iVar14 = *(int *)(iVar14 + 0x10)) {
                    if ((*(int *)(iVar14 + 4) == 0) &&
                       (pcVar3 = *(char **)(iVar14 + 8), pcVar3 != (char *)0x0)) goto LAB_00419d84;
                  }
                  if (__s[0xe] == 1) goto LAB_0041a02c;
                }
                else {
                  iVar14 = __s[0xc];
                  if (iVar14 != 0) {
LAB_00419d10:
                    if ((*(char **)(iVar14 + 4) == (char *)0x0) ||
                       (iVar10 = strcmp(*(char **)(iVar14 + 4),pcVar3), iVar10 != 0))
                    goto LAB_00419d3c;
                    pcVar3 = *(char **)(iVar14 + 8);
LAB_00419d84:
                    puVar12 = puStack_90;
                    if ((puStack_90 != (undefined4 *)0x0) && (puStack_90[3] == 0)) {
                      pcVar3 = strdup(pcVar3)   //possible issue identified - semgrep
                      puVar12[3] = pcVar3;
                    }
                    goto LAB_00419da4;
                  }
LAB_0041a02c:
                  __s[0xb] = (int)puStack_90;
                }
LAB_00419da4:
                iVar14 = ixmlNode_appendChild(__s[0xd],puStack_90);
                puVar12 = puStack_90;
                if (iVar14 == 0) {
                  __s[0xd] = (int)puStack_90;
                  iVar14 = 0;
                  if (puStack_90 == (undefined4 *)0x0) goto LAB_00419a58;
                  puVar5 = (undefined4 *)malloc(0x14)   //possible issue identified - semgrep
                  if (puVar5 != (undefined4 *)0x0) {
                    *puVar5 = 0;
                    puVar5[1] = 0;
                    puVar5[2] = 0;
                    puVar5[3] = 0;
                    puVar5[4] = 0;
                    pcVar3 = strdup((char *)*puVar12);
                    *puVar5 = pcVar3;
                    if (pcVar3 != (char *)0x0) {
                      if ((char *)puVar12[4] == (char *)0x0) {
LAB_00419e48:
                        if ((char *)puVar12[3] != (char *)0x0) {
                          pcVar3 = strdup((char *)puVar12[3]);
                          puVar5[2] = pcVar3;
                          if (pcVar3 == (char *)0x0) goto LAB_0041a450;
                        }
                        iVar10 = __s[0xc];
                        __s[0xc] = (int)puVar5;
                        puVar5[4] = iVar10;
                        goto LAB_00419a58;
                      }
                      pcVar3 = strdup((char *)puVar12[4]);
                      puVar5[1] = pcVar3;
                      if (pcVar3 != (char *)0x0) goto LAB_00419e48;
LAB_0041a450:
                      FUN_004184ac(puVar5);
                    }
                    free(puVar5);
                  }
                  iVar14 = 0x66;
                  goto LAB_0041949c;
                }
              }
              ixmlElement_free(puStack_90);
              goto LAB_0041949c;
            }
            if (uStack_84 == 3) {
              iVar14 = ixmlDocument_createTextNodeEx(iStack_a8,pcStack_88,puStack_30);
              if (iVar14 != 0) goto LAB_0041949c;
              iVar14 = __s[0xd];
              uVar7 = uStack_a4;
            }
            else {
              if (uStack_84 != 4) goto LAB_00419a58;
              iVar14 = ixmlDocument_createCDATASectionEx(iStack_a8,pcStack_88,&uStack_a0);
              if (iVar14 != 0) goto LAB_0041949c;
              iVar14 = __s[0xd];
              uVar7 = uStack_a0;
            }
            iVar14 = ixmlNode_appendChild(iVar14,uVar7);
          }
          if (iVar14 != 0) goto LAB_0041949c;
LAB_00419a58:
          Parser_freeNodeContent(&pcStack_8c);
          goto LAB_00419764;
        }
      }
    }
  }
LAB_0041949c:
  Parser_freeNodeContent(&pcStack_8c);
  ixmlDocument_free(iStack_a8);
LAB_004194bc:
  FUN_004185c4(__s);
  return iVar14;
code_r0x0041978c:
  if (__s[0xc] == 0) {
    *param_2 = iStack_a8;
    FUN_004185c4(__s);
    return iVar14;
  }
LAB_00419618:
  iVar14 = 0xc;
  goto LAB_0041949c;
LAB_00419d3c:
  for (puVar12 = *(undefined4 **)(iVar14 + 0xc); puVar12 != (undefined4 *)0x0;
      puVar12 = (undefined4 *)puVar12[2]) {
    iVar10 = strcmp((char *)puVar12[1],pcVar3);
    if (iVar10 == 0) {
      pcVar3 = (char *)*puVar12;
      goto LAB_00419d84;
    }
  }
  iVar14 = *(int *)(iVar14 + 0x10);
  if (iVar14 == 0) goto LAB_0041a02c;
  goto LAB_00419d10;
}