
/* WARNING: Function: __x86.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */

char * proper_name_utf8(char *name_ascii,char *name_utf8)

{
  _Bool _Var1;
  char *__s1;
  char *pcVar2;
  int iVar3;
  size_t sVar4;
  size_t sVar5;
  char *pcVar6;
  char *__s;
  char *pcVar7;
  char *sub;
  char *local_24;
  
  __s1 = (char *)dcgettext(0,name_ascii,5);
  pcVar2 = locale_charset();
  iVar3 = c_strcasecmp(pcVar2,"UTF-8");
  pcVar6 = __s1;
  if (iVar3 == 0) {
    if (name_utf8 == (char *)0x0) {
      pcVar2 = name_ascii;
      pcVar7 = (char *)0x0;
      sub = (char *)0x0;
    }
    else {
      pcVar2 = name_utf8;
      pcVar7 = (char *)0x0;
      sub = name_utf8;
    }
LAB_000149d0:
    iVar3 = strcmp(__s1,name_ascii);
    if (iVar3 == 0) {
      return pcVar2;
    }
    _Var1 = mbsstr_trimmed_wordbounded(__s1,name_ascii);
    if (_Var1) goto joined_r0x00014a36;
    local_24 = (char *)0x0;
    __s = pcVar2;
LAB_00014a00:
    if (((name_utf8 == (char *)0x0) || (_Var1 = mbsstr_trimmed_wordbounded(__s1,name_utf8), !_Var1))
       && ((sub == (char *)0x0 || (_Var1 = mbsstr_trimmed_wordbounded(__s1,sub), !_Var1)))) {
      sVar4 = strlen(__s1);
      sVar5 = strlen(__s);
      pcVar6 = (char *)xmalloc(sVar4 + 4 + sVar5);
      __sprintf_chk(pcVar6,1,0xffffffff,"%s (%s)",__s1,__s);
      if (local_24 != (char *)0x0) {
        free(local_24);
      }
      goto joined_r0x00014a36;
    }
    if (local_24 == (char *)0x0) goto joined_r0x00014a36;
  }
  else {
    __s = xstr_iconv(name_utf8,"UTF-8",pcVar2);
    sVar4 = strlen(pcVar2);
    pcVar7 = (char *)xmalloc(sVar4 + 0xb);
    memcpy(pcVar7,pcVar2,sVar4);
    builtin_strncpy(pcVar7 + sVar4,"//TRANSLIT",0xb);
    pcVar2 = xstr_iconv(name_utf8,"UTF-8",pcVar7);
    free(pcVar7);
    if (pcVar2 == (char *)0x0) {
      if (__s != (char *)0x0) goto LAB_00014b81;
LAB_00014bfc:
      name_utf8 = (char *)0x0;
      pcVar2 = name_ascii;
      pcVar7 = (char *)0x0;
      sub = (char *)0x0;
      goto LAB_000149d0;
    }
    pcVar7 = strchr(pcVar2,0x3f);
    if (pcVar7 == (char *)0x0) {
      pcVar7 = pcVar2;
      if (__s == (char *)0x0) {
        name_utf8 = (char *)0x0;
        sub = pcVar2;
        goto LAB_000149d0;
      }
      iVar3 = strcmp(__s1,name_ascii);
      if (iVar3 == 0) {
        if (__s == pcVar2) {
          return __s;
        }
        free(pcVar2);
        return __s;
      }
    }
    else {
      free(pcVar2);
      if (__s == (char *)0x0) goto LAB_00014bfc;
LAB_00014b81:
      iVar3 = strcmp(__s1,name_ascii);
      if (iVar3 == 0) {
        return __s;
      }
      pcVar7 = (char *)0x0;
    }
    _Var1 = mbsstr_trimmed_wordbounded(__s1,name_ascii);
    sub = pcVar7;
    name_utf8 = __s;
    local_24 = __s;
    if (!_Var1) goto LAB_00014a00;
  }
  free(local_24);
joined_r0x00014a36:
  if (pcVar7 != (char *)0x0) {
    free(pcVar7);
  }
  return pcVar6;
}



/* WARNING: Function: __i686.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */

char * FUN_00014970(char *param_1,char *param_2)

{
  char cVar1;
  char *__s1;
  char *pcVar2;
  int iVar3;
  size_t sVar4;
  size_t sVar5;
  char *pcVar6;
  char *__s;
  void *__dest;
  char *pcVar7;
  char *pcVar8;
  undefined4 *puVar9;
  char *local_24;
  
  __s1 = (char *)dcgettext(0,param_1,5);
  pcVar2 = (char *)FUN_00017150();
  iVar3 = FUN_00016e00(pcVar2,"UTF-8");
  pcVar6 = __s1;
  if (iVar3 == 0) {
    if (param_2 == (char *)0x0) {
      pcVar2 = param_1;
      pcVar7 = (char *)0x0;
      pcVar8 = (char *)0x0;
    }
    else {
      pcVar2 = param_2;
      pcVar7 = (char *)0x0;
      pcVar8 = param_2;
    }
LAB_000149d0:
    iVar3 = strcmp(__s1,param_1);
    if (iVar3 == 0) {
      return pcVar2;
    }
    cVar1 = FUN_00013fe0();
    if (cVar1 != '\0') goto joined_r0x00014a36;
    local_24 = (char *)0x0;
    __s = pcVar2;
LAB_00014a00:
    if (((param_2 == (char *)0x0) || (cVar1 = FUN_00013fe0(), cVar1 == '\0')) &&
       ((pcVar8 == (char *)0x0 || (cVar1 = FUN_00013fe0(), cVar1 == '\0')))) {
      sVar4 = strlen(__s1);
      sVar5 = strlen(__s);
      pcVar6 = (char *)FUN_00015880(sVar4 + 4 + sVar5);
      __sprintf_chk(pcVar6,1,0xffffffff,"%s (%s)",__s1,__s);
      if (local_24 != (char *)0x0) {
        free(local_24);
      }
      goto joined_r0x00014a36;
    }
    if (local_24 == (char *)0x0) goto joined_r0x00014a36;
  }
  else {
    __s = (char *)FUN_00015d40(param_2,"UTF-8",pcVar2);
    sVar4 = strlen(pcVar2);
    __dest = (void *)FUN_00015880(sVar4 + 0xb);
    memcpy(__dest,pcVar2,sVar4);
    puVar9 = (undefined4 *)(sVar4 + (int)__dest);
    *puVar9 = 0x52542f2f;
    puVar9[1] = 0x4c534e41;
    *(undefined2 *)(puVar9 + 2) = 0x5449;
    *(undefined1 *)((int)puVar9 + 10) = 0;
    pcVar2 = (char *)FUN_00015d40(param_2,"UTF-8",__dest);
    free(__dest);
    if (pcVar2 == (char *)0x0) {
      if (__s != (char *)0x0) goto LAB_00014b81;
LAB_00014bfc:
      param_2 = (char *)0x0;
      pcVar2 = param_1;
      pcVar7 = (char *)0x0;
      pcVar8 = (char *)0x0;
      goto LAB_000149d0;
    }
    pcVar7 = strchr(pcVar2,0x3f);
    if (pcVar7 == (char *)0x0) {
      pcVar7 = pcVar2;
      if (__s == (char *)0x0) {
        param_2 = (char *)0x0;
        pcVar8 = pcVar2;
        goto LAB_000149d0;
      }
      iVar3 = strcmp(__s1,param_1);
      if (iVar3 == 0) {
        if (__s == pcVar2) {
          return __s;
        }
        free(pcVar2);
        return __s;
      }
    }
    else {
      free(pcVar2);
      if (__s == (char *)0x0) goto LAB_00014bfc;
LAB_00014b81:
      iVar3 = strcmp(__s1,param_1);
      if (iVar3 == 0) {
        return __s;
      }
      pcVar7 = (char *)0x0;
    }
    cVar1 = FUN_00013fe0();
    pcVar8 = pcVar7;
    param_2 = __s;
    local_24 = __s;
    if (cVar1 == '\0') goto LAB_00014a00;
  }
  free(local_24);
joined_r0x00014a36:
  if (pcVar7 != (char *)0x0) {
    free(pcVar7);
  }
  return pcVar6;
}


PUSH EBP
PUSH EDI
PUSH ESI
PUSH EBX
CALL 0x000130f0
ADD EBX,0xd687
SUB ESP,0x20
PUSH 0x5
PUSH dword ptr [ESP + 0x38]
PUSH 0x0
CALL 0x00011130
MOV dword ptr [ESP + 0x14],EAX
CALL 0x00017150
POP EDX
LEA EDX,[EBX + 0xffffadb6]
POP ECX
PUSH EDX
MOV ESI,EAX
MOV dword ptr [ESP + 0x14],EDX
PUSH EAX
CALL 0x00016e00
ADD ESP,0x10
MOV EDX,dword ptr [ESP + 0x8]
TEST EAX,EAX
JNZ 0x00014ad8
MOV EAX,dword ptr [ESP + 0x34]
TEST EAX,EAX
JZ 0x00014a50
MOV EDI,dword ptr [ESP + 0x34]
XOR ESI,ESI
MOV EBP,EDI
SUB ESP,0x8
PUSH dword ptr [ESP + 0x38]
PUSH dword ptr [ESP + 0x10]
CALL 0x00011060
ADD ESP,0x10
TEST EAX,EAX
JZ 0x00014a44
MOV EDX,dword ptr [ESP + 0x30]
MOV EAX,dword ptr [ESP + 0x4]
CALL 0x00013fe0
TEST AL,AL
JNZ 0x00014a30
MOV dword ptr [ESP + 0x8],0x0
MOV EAX,dword ptr [ESP + 0x34]
TEST EAX,EAX
JZ 0x00014a60
MOV EDX,dword ptr [ESP + 0x34]
MOV EAX,dword ptr [ESP + 0x4]
CALL 0x00013fe0
TEST AL,AL
JZ 0x00014a60
MOV EAX,dword ptr [ESP + 0x8]
TEST EAX,EAX
JZ 0x00014a30
SUB ESP,0xc
PUSH dword ptr [ESP + 0x14]
CALL 0x000110c0
ADD ESP,0x10
MOV EBP,dword ptr [ESP + 0x4]
TEST ESI,ESI
JZ 0x00014a44
SUB ESP,0xc
PUSH ESI
CALL 0x000110c0
ADD ESP,0x10
ADD ESP,0x1c
MOV EAX,EBP
POP EBX
POP ESI
POP EDI
POP EBP
RET
XOR EDI,EDI
XOR ESI,ESI
MOV EBP,dword ptr [ESP + 0x30]
JMP 0x000149d0
TEST EDI,EDI
JZ 0x00014a73
MOV EAX,dword ptr [ESP + 0x4]
MOV EDX,EDI
CALL 0x00013fe0
TEST AL,AL
JNZ 0x00014a19
SUB ESP,0xc
PUSH dword ptr [ESP + 0x10]
CALL 0x00011260
MOV dword ptr [ESP],EBP
MOV EDI,EAX
CALL 0x00011260
LEA EAX,[EDI + EAX*0x1 + 0x4]
MOV dword ptr [ESP],EAX
CALL 0x00015880
POP EDX
POP ECX
PUSH EBP
MOV EDI,EAX
LEA EAX,[EBX + 0xffffadae]
PUSH dword ptr [ESP + 0x10]
PUSH EAX
PUSH -0x1
PUSH 0x1
PUSH EDI
CALL 0x00011450
ADD ESP,0x20
MOV EAX,dword ptr [ESP + 0x8]
TEST EAX,EAX
JZ 0x00014ac6
SUB ESP,0xc
PUSH EAX
CALL 0x000110c0
ADD ESP,0x10
MOV EBP,EDI
TEST ESI,ESI
JNZ 0x00014a38
JMP 0x00014a44
SUB ESP,0x4
PUSH ESI
PUSH EDX
MOV dword ptr [ESP + 0x18],EDX
PUSH dword ptr [ESP + 0x40]
CALL 0x00015d40
MOV dword ptr [ESP],ESI
MOV EBP,EAX
CALL 0x00011260
MOV EDI,EAX
LEA EAX,[EAX + 0xb]
MOV dword ptr [ESP],EAX
CALL 0x00015880
ADD ESP,0xc
PUSH EDI
PUSH ESI
PUSH EAX
MOV dword ptr [ESP + 0x18],EAX
CALL 0x000110e0
MOV ECX,dword ptr [ESP + 0x18]
MOV EAX,0x5449
ADD ESP,0xc
ADD EDI,ECX
MOV dword ptr [EDI],0x52542f2f
MOV dword ptr [EDI + 0x4],0x4c534e41
MOV word ptr [EDI + 0x8],AX
MOV byte ptr [EDI + 0xa],0x0
PUSH ECX
MOV EDX,dword ptr [ESP + 0x14]
MOV dword ptr [ESP + 0x10],ECX
PUSH EDX
PUSH dword ptr [ESP + 0x40]
CALL 0x00015d40
MOV ECX,dword ptr [ESP + 0x18]
MOV ESI,EAX
MOV dword ptr [ESP],ECX
CALL 0x000110c0
ADD ESP,0x10
TEST ESI,ESI
JZ 0x00014bf8
SUB ESP,0x8
PUSH 0x3f
PUSH ESI
CALL 0x00011250
ADD ESP,0x10
TEST EAX,EAX
JZ 0x00014bc0
SUB ESP,0xc
PUSH ESI
CALL 0x000110c0
ADD ESP,0x10
TEST EBP,EBP
JZ 0x00014bfc
SUB ESP,0x8
PUSH dword ptr [ESP + 0x38]
PUSH dword ptr [ESP + 0x10]
CALL 0x00011060
ADD ESP,0x10
TEST EAX,EAX
JZ 0x00014a44
XOR EDI,EDI
XOR ESI,ESI
MOV EDX,dword ptr [ESP + 0x30]
MOV EAX,dword ptr [ESP + 0x4]
CALL 0x00013fe0
TEST AL,AL
JNZ 0x00014c30
MOV dword ptr [ESP + 0x34],EBP
MOV dword ptr [ESP + 0x8],EBP
JMP 0x00014a00
TEST EBP,EBP
JZ 0x00014c18
PUSH EAX
MOV EDI,ESI
PUSH EAX
PUSH dword ptr [ESP + 0x38]
PUSH dword ptr [ESP + 0x10]
CALL 0x00011060
ADD ESP,0x10
TEST EAX,EAX
JNZ 0x00014ba0
CMP EBP,ESI
JZ 0x00014a44
SUB ESP,0xc
PUSH ESI
CALL 0x000110c0
ADD ESP,0x10
JMP 0x00014a44
TEST EBP,EBP
JNZ 0x00014b81
MOV EBP,dword ptr [ESP + 0x30]
XOR EDI,EDI
MOV dword ptr [ESP + 0x34],0x0
XOR ESI,ESI
JMP 0x000149d0
MOV EDI,ESI
MOV dword ptr [ESP + 0x34],0x0
MOV EBP,ESI
JMP 0x000149d0
MOV dword ptr [ESP + 0x8],EBP
JMP 0x00014a21
(translation_unit "/* WARNING: Function: __i686.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */\n\nchar * FUN_00014970(char *param_1,char *param_2)\n\n{\n  char cVar1;\n  char *__s1;\n  char *pcVar2;\n  int iVar3;\n  size_t sVar4;\n  size_t sVar5;\n  char *pcVar6;\n  char *__s;\n  void *__dest;\n  char *pcVar7;\n  char *pcVar8;\n  undefined4 *puVar9;\n  char *local_24;\n  \n  __s1 = (char *)dcgettext(0,param_1,5);\n  pcVar2 = (char *)FUN_00017150();\n  iVar3 = FUN_00016e00(pcVar2,"UTF-8");\n  pcVar6 = __s1;\n  if (iVar3 == 0) {\n    if (param_2 == (char *)0x0) {\n      pcVar2 = param_1;\n      pcVar7 = (char *)0x0;\n      pcVar8 = (char *)0x0;\n    }\n    else {\n      pcVar2 = param_2;\n      pcVar7 = (char *)0x0;\n      pcVar8 = param_2;\n    }\nLAB_000149d0:\n    iVar3 = strcmp(__s1,param_1);\n    if (iVar3 == 0) {\n      return pcVar2;\n    }\n    cVar1 = FUN_00013fe0();\n    if (cVar1 != '\0') goto joined_r0x00014a36;\n    local_24 = (char *)0x0;\n    __s = pcVar2;\nLAB_00014a00:\n    if (((param_2 == (char *)0x0) || (cVar1 = FUN_00013fe0(), cVar1 == '\0')) &&\n       ((pcVar8 == (char *)0x0 || (cVar1 = FUN_00013fe0(), cVar1 == '\0')))) {\n      sVar4 = strlen(__s1);\n      sVar5 = strlen(__s);\n      pcVar6 = (char *)FUN_00015880(sVar4 + 4 + sVar5);\n      __sprintf_chk(pcVar6,1,0xffffffff,"%s (%s)",__s1,__s);\n      if (local_24 != (char *)0x0) {\n        free(local_24);\n      }\n      goto joined_r0x00014a36;\n    }\n    if (local_24 == (char *)0x0) goto joined_r0x00014a36;\n  }\n  else {\n    __s = (char *)FUN_00015d40(param_2,"UTF-8",pcVar2);\n    sVar4 = strlen(pcVar2);\n    __dest = (void *)FUN_00015880(sVar4 + 0xb);\n    memcpy(__dest,pcVar2,sVar4);\n    puVar9 = (undefined4 *)(sVar4 + (int)__dest);\n    *puVar9 = 0x52542f2f;\n    puVar9[1] = 0x4c534e41;\n    *(undefined2 *)(puVar9 + 2) = 0x5449;\n    *(undefined1 *)((int)puVar9 + 10) = 0;\n    pcVar2 = (char *)FUN_00015d40(param_2,"UTF-8",__dest);\n    free(__dest);\n    if (pcVar2 == (char *)0x0) {\n      if (__s != (char *)0x0) goto LAB_00014b81;\nLAB_00014bfc:\n      param_2 = (char *)0x0;\n      pcVar2 = param_1;\n      pcVar7 = (char *)0x0;\n      pcVar8 = (char *)0x0;\n      goto LAB_000149d0;\n    }\n    pcVar7 = strchr(pcVar2,0x3f);\n    if (pcVar7 == (char *)0x0) {\n      pcVar7 = pcVar2;\n      if (__s == (char *)0x0) {\n        param_2 = (char *)0x0;\n        pcVar8 = pcVar2;\n        goto LAB_000149d0;\n      }\n      iVar3 = strcmp(__s1,param_1);\n      if (iVar3 == 0) {\n        if (__s == pcVar2) {\n          return __s;\n        }\n        free(pcVar2);\n        return __s;\n      }\n    }\n    else {\n      free(pcVar2);\n      if (__s == (char *)0x0) goto LAB_00014bfc;\nLAB_00014b81:\n      iVar3 = strcmp(__s1,param_1);\n      if (iVar3 == 0) {\n        return __s;\n      }\n      pcVar7 = (char *)0x0;\n    }\n    cVar1 = FUN_00013fe0();\n    pcVar8 = pcVar7;\n    param_2 = __s;\n    local_24 = __s;\n    if (cVar1 == '\0') goto LAB_00014a00;\n  }\n  free(local_24);\njoined_r0x00014a36:\n  if (pcVar7 != (char *)0x0) {\n    free(pcVar7);\n  }\n  return pcVar6;\n}\n\n" comment (function_definition "char * FUN_00014970(char *param_1,char *param_2)\n\n{\n  char cVar1;\n  char *__s1;\n  char *pcVar2;\n  int iVar3;\n  size_t sVar4;\n  size_t sVar5;\n  char *pcVar6;\n  char *__s;\n  void *__dest;\n  char *pcVar7;\n  char *pcVar8;\n  undefined4 *puVar9;\n  char *local_24;\n  \n  __s1 = (char *)dcgettext(0,param_1,5);\n  pcVar2 = (char *)FUN_00017150();\n  iVar3 = FUN_00016e00(pcVar2,"UTF-8");\n  pcVar6 = __s1;\n  if (iVar3 == 0) {\n    if (param_2 == (char *)0x0) {\n      pcVar2 = param_1;\n      pcVar7 = (char *)0x0;\n      pcVar8 = (char *)0x0;\n    }\n    else {\n      pcVar2 = param_2;\n      pcVar7 = (char *)0x0;\n      pcVar8 = param_2;\n    }\nLAB_000149d0:\n    iVar3 = strcmp(__s1,param_1);\n    if (iVar3 == 0) {\n      return pcVar2;\n    }\n    cVar1 = FUN_00013fe0();\n    if (cVar1 != '\0') goto joined_r0x00014a36;\n    local_24 = (char *)0x0;\n    __s = pcVar2;\nLAB_00014a00:\n    if (((param_2 == (char *)0x0) || (cVar1 = FUN_00013fe0(), cVar1 == '\0')) &&\n       ((pcVar8 == (char *)0x0 || (cVar1 = FUN_00013fe0(), cVar1 == '\0')))) {\n      sVar4 = strlen(__s1);\n      sVar5 = strlen(__s);\n      pcVar6 = (char *)FUN_00015880(sVar4 + 4 + sVar5);\n      __sprintf_chk(pcVar6,1,0xffffffff,"%s (%s)",__s1,__s);\n      if (local_24 != (char *)0x0) {\n        free(local_24);\n      }\n      goto joined_r0x00014a36;\n    }\n    if (local_24 == (char *)0x0) goto joined_r0x00014a36;\n  }\n  else {\n    __s = (char *)FUN_00015d40(param_2,"UTF-8",pcVar2);\n    sVar4 = strlen(pcVar2);\n    __dest = (void *)FUN_00015880(sVar4 + 0xb);\n    memcpy(__dest,pcVar2,sVar4);\n    puVar9 = (undefined4 *)(sVar4 + (int)__dest);\n    *puVar9 = 0x52542f2f;\n    puVar9[1] = 0x4c534e41;\n    *(undefined2 *)(puVar9 + 2) = 0x5449;\n    *(undefined1 *)((int)puVar9 + 10) = 0;\n    pcVar2 = (char *)FUN_00015d40(param_2,"UTF-8",__dest);\n    free(__dest);\n    if (pcVar2 == (char *)0x0) {\n      if (__s != (char *)0x0) goto LAB_00014b81;\nLAB_00014bfc:\n      param_2 = (char *)0x0;\n      pcVar2 = param_1;\n      pcVar7 = (char *)0x0;\n      pcVar8 = (char *)0x0;\n      goto LAB_000149d0;\n    }\n    pcVar7 = strchr(pcVar2,0x3f);\n    if (pcVar7 == (char *)0x0) {\n      pcVar7 = pcVar2;\n      if (__s == (char *)0x0) {\n        param_2 = (char *)0x0;\n        pcVar8 = pcVar2;\n        goto LAB_000149d0;\n      }\n      iVar3 = strcmp(__s1,param_1);\n      if (iVar3 == 0) {\n        if (__s == pcVar2) {\n          return __s;\n        }\n        free(pcVar2);\n        return __s;\n      }\n    }\n    else {\n      free(pcVar2);\n      if (__s == (char *)0x0) goto LAB_00014bfc;\nLAB_00014b81:\n      iVar3 = strcmp(__s1,param_1);\n      if (iVar3 == 0) {\n        return __s;\n      }\n      pcVar7 = (char *)0x0;\n    }\n    cVar1 = FUN_00013fe0();\n    pcVar8 = pcVar7;\n    param_2 = __s;\n    local_24 = __s;\n    if (cVar1 == '\0') goto LAB_00014a00;\n  }\n  free(local_24);\njoined_r0x00014a36:\n  if (pcVar7 != (char *)0x0) {\n    free(pcVar7);\n  }\n  return pcVar6;\n}" primitive_type (pointer_declarator "* FUN_00014970(char *param_1,char *param_2)" * (function_declarator "FUN_00014970(char *param_1,char *param_2)" identifier (parameter_list "(char *param_1,char *param_2)" ( (parameter_declaration "char *param_1" primitive_type (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "char *param_2" primitive_type (pointer_declarator "*param_2" * identifier)) )))) (compound_statement "{\n  char cVar1;\n  char *__s1;\n  char *pcVar2;\n  int iVar3;\n  size_t sVar4;\n  size_t sVar5;\n  char *pcVar6;\n  char *__s;\n  void *__dest;\n  char *pcVar7;\n  char *pcVar8;\n  undefined4 *puVar9;\n  char *local_24;\n  \n  __s1 = (char *)dcgettext(0,param_1,5);\n  pcVar2 = (char *)FUN_00017150();\n  iVar3 = FUN_00016e00(pcVar2,"UTF-8");\n  pcVar6 = __s1;\n  if (iVar3 == 0) {\n    if (param_2 == (char *)0x0) {\n      pcVar2 = param_1;\n      pcVar7 = (char *)0x0;\n      pcVar8 = (char *)0x0;\n    }\n    else {\n      pcVar2 = param_2;\n      pcVar7 = (char *)0x0;\n      pcVar8 = param_2;\n    }\nLAB_000149d0:\n    iVar3 = strcmp(__s1,param_1);\n    if (iVar3 == 0) {\n      return pcVar2;\n    }\n    cVar1 = FUN_00013fe0();\n    if (cVar1 != '\0') goto joined_r0x00014a36;\n    local_24 = (char *)0x0;\n    __s = pcVar2;\nLAB_00014a00:\n    if (((param_2 == (char *)0x0) || (cVar1 = FUN_00013fe0(), cVar1 == '\0')) &&\n       ((pcVar8 == (char *)0x0 || (cVar1 = FUN_00013fe0(), cVar1 == '\0')))) {\n      sVar4 = strlen(__s1);\n      sVar5 = strlen(__s);\n      pcVar6 = (char *)FUN_00015880(sVar4 + 4 + sVar5);\n      __sprintf_chk(pcVar6,1,0xffffffff,"%s (%s)",__s1,__s);\n      if (local_24 != (char *)0x0) {\n        free(local_24);\n      }\n      goto joined_r0x00014a36;\n    }\n    if (local_24 == (char *)0x0) goto joined_r0x00014a36;\n  }\n  else {\n    __s = (char *)FUN_00015d40(param_2,"UTF-8",pcVar2);\n    sVar4 = strlen(pcVar2);\n    __dest = (void *)FUN_00015880(sVar4 + 0xb);\n    memcpy(__dest,pcVar2,sVar4);\n    puVar9 = (undefined4 *)(sVar4 + (int)__dest);\n    *puVar9 = 0x52542f2f;\n    puVar9[1] = 0x4c534e41;\n    *(undefined2 *)(puVar9 + 2) = 0x5449;\n    *(undefined1 *)((int)puVar9 + 10) = 0;\n    pcVar2 = (char *)FUN_00015d40(param_2,"UTF-8",__dest);\n    free(__dest);\n    if (pcVar2 == (char *)0x0) {\n      if (__s != (char *)0x0) goto LAB_00014b81;\nLAB_00014bfc:\n      param_2 = (char *)0x0;\n      pcVar2 = param_1;\n      pcVar7 = (char *)0x0;\n      pcVar8 = (char *)0x0;\n      goto LAB_000149d0;\n    }\n    pcVar7 = strchr(pcVar2,0x3f);\n    if (pcVar7 == (char *)0x0) {\n      pcVar7 = pcVar2;\n      if (__s == (char *)0x0) {\n        param_2 = (char *)0x0;\n        pcVar8 = pcVar2;\n        goto LAB_000149d0;\n      }\n      iVar3 = strcmp(__s1,param_1);\n      if (iVar3 == 0) {\n        if (__s == pcVar2) {\n          return __s;\n        }\n        free(pcVar2);\n        return __s;\n      }\n    }\n    else {\n      free(pcVar2);\n      if (__s == (char *)0x0) goto LAB_00014bfc;\nLAB_00014b81:\n      iVar3 = strcmp(__s1,param_1);\n      if (iVar3 == 0) {\n        return __s;\n      }\n      pcVar7 = (char *)0x0;\n    }\n    cVar1 = FUN_00013fe0();\n    pcVar8 = pcVar7;\n    param_2 = __s;\n    local_24 = __s;\n    if (cVar1 == '\0') goto LAB_00014a00;\n  }\n  free(local_24);\njoined_r0x00014a36:\n  if (pcVar7 != (char *)0x0) {\n    free(pcVar7);\n  }\n  return pcVar6;\n}" { (declaration "char cVar1;" primitive_type identifier ;) (declaration "char *__s1;" primitive_type (pointer_declarator "*__s1" * identifier) ;) (declaration "char *pcVar2;" primitive_type (pointer_declarator "*pcVar2" * identifier) ;) (declaration "int iVar3;" primitive_type identifier ;) (declaration "size_t sVar4;" primitive_type identifier ;) (declaration "size_t sVar5;" primitive_type identifier ;) (declaration "char *pcVar6;" primitive_type (pointer_declarator "*pcVar6" * identifier) ;) (declaration "char *__s;" primitive_type (pointer_declarator "*__s" * identifier) ;) (declaration "void *__dest;" primitive_type (pointer_declarator "*__dest" * identifier) ;) (declaration "char *pcVar7;" primitive_type (pointer_declarator "*pcVar7" * identifier) ;) (declaration "char *pcVar8;" primitive_type (pointer_declarator "*pcVar8" * identifier) ;) (declaration "undefined4 *puVar9;" type_identifier (pointer_declarator "*puVar9" * identifier) ;) (declaration "char *local_24;" primitive_type (pointer_declarator "*local_24" * identifier) ;) (expression_statement "__s1 = (char *)dcgettext(0,param_1,5);" (assignment_expression "__s1 = (char *)dcgettext(0,param_1,5)" identifier = (cast_expression "(char *)dcgettext(0,param_1,5)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "dcgettext(0,param_1,5)" identifier (argument_list "(0,param_1,5)" ( number_literal , identifier , number_literal ))))) ;) (expression_statement "pcVar2 = (char *)FUN_00017150();" (assignment_expression "pcVar2 = (char *)FUN_00017150()" identifier = (cast_expression "(char *)FUN_00017150()" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00017150()" identifier (argument_list "()" ( ))))) ;) (expression_statement "iVar3 = FUN_00016e00(pcVar2,"UTF-8");" (assignment_expression "iVar3 = FUN_00016e00(pcVar2,"UTF-8")" identifier = (call_expression "FUN_00016e00(pcVar2,"UTF-8")" identifier (argument_list "(pcVar2,"UTF-8")" ( identifier , (string_literal ""UTF-8"" " string_content ") )))) ;) (expression_statement "pcVar6 = __s1;" (assignment_expression "pcVar6 = __s1" identifier = identifier) ;) (if_statement "if (iVar3 == 0) {\n    if (param_2 == (char *)0x0) {\n      pcVar2 = param_1;\n      pcVar7 = (char *)0x0;\n      pcVar8 = (char *)0x0;\n    }\n    else {\n      pcVar2 = param_2;\n      pcVar7 = (char *)0x0;\n      pcVar8 = param_2;\n    }\nLAB_000149d0:\n    iVar3 = strcmp(__s1,param_1);\n    if (iVar3 == 0) {\n      return pcVar2;\n    }\n    cVar1 = FUN_00013fe0();\n    if (cVar1 != '\0') goto joined_r0x00014a36;\n    local_24 = (char *)0x0;\n    __s = pcVar2;\nLAB_00014a00:\n    if (((param_2 == (char *)0x0) || (cVar1 = FUN_00013fe0(), cVar1 == '\0')) &&\n       ((pcVar8 == (char *)0x0 || (cVar1 = FUN_00013fe0(), cVar1 == '\0')))) {\n      sVar4 = strlen(__s1);\n      sVar5 = strlen(__s);\n      pcVar6 = (char *)FUN_00015880(sVar4 + 4 + sVar5);\n      __sprintf_chk(pcVar6,1,0xffffffff,"%s (%s)",__s1,__s);\n      if (local_24 != (char *)0x0) {\n        free(local_24);\n      }\n      goto joined_r0x00014a36;\n    }\n    if (local_24 == (char *)0x0) goto joined_r0x00014a36;\n  }\n  else {\n    __s = (char *)FUN_00015d40(param_2,"UTF-8",pcVar2);\n    sVar4 = strlen(pcVar2);\n    __dest = (void *)FUN_00015880(sVar4 + 0xb);\n    memcpy(__dest,pcVar2,sVar4);\n    puVar9 = (undefined4 *)(sVar4 + (int)__dest);\n    *puVar9 = 0x52542f2f;\n    puVar9[1] = 0x4c534e41;\n    *(undefined2 *)(puVar9 + 2) = 0x5449;\n    *(undefined1 *)((int)puVar9 + 10) = 0;\n    pcVar2 = (char *)FUN_00015d40(param_2,"UTF-8",__dest);\n    free(__dest);\n    if (pcVar2 == (char *)0x0) {\n      if (__s != (char *)0x0) goto LAB_00014b81;\nLAB_00014bfc:\n      param_2 = (char *)0x0;\n      pcVar2 = param_1;\n      pcVar7 = (char *)0x0;\n      pcVar8 = (char *)0x0;\n      goto LAB_000149d0;\n    }\n    pcVar7 = strchr(pcVar2,0x3f);\n    if (pcVar7 == (char *)0x0) {\n      pcVar7 = pcVar2;\n      if (__s == (char *)0x0) {\n        param_2 = (char *)0x0;\n        pcVar8 = pcVar2;\n        goto LAB_000149d0;\n      }\n      iVar3 = strcmp(__s1,param_1);\n      if (iVar3 == 0) {\n        if (__s == pcVar2) {\n          return __s;\n        }\n        free(pcVar2);\n        return __s;\n      }\n    }\n    else {\n      free(pcVar2);\n      if (__s == (char *)0x0) goto LAB_00014bfc;\nLAB_00014b81:\n      iVar3 = strcmp(__s1,param_1);\n      if (iVar3 == 0) {\n        return __s;\n      }\n      pcVar7 = (char *)0x0;\n    }\n    cVar1 = FUN_00013fe0();\n    pcVar8 = pcVar7;\n    param_2 = __s;\n    local_24 = __s;\n    if (cVar1 == '\0') goto LAB_00014a00;\n  }" if (parenthesized_expression "(iVar3 == 0)" ( (binary_expression "iVar3 == 0" identifier == number_literal) )) (compound_statement "{\n    if (param_2 == (char *)0x0) {\n      pcVar2 = param_1;\n      pcVar7 = (char *)0x0;\n      pcVar8 = (char *)0x0;\n    }\n    else {\n      pcVar2 = param_2;\n      pcVar7 = (char *)0x0;\n      pcVar8 = param_2;\n    }\nLAB_000149d0:\n    iVar3 = strcmp(__s1,param_1);\n    if (iVar3 == 0) {\n      return pcVar2;\n    }\n    cVar1 = FUN_00013fe0();\n    if (cVar1 != '\0') goto joined_r0x00014a36;\n    local_24 = (char *)0x0;\n    __s = pcVar2;\nLAB_00014a00:\n    if (((param_2 == (char *)0x0) || (cVar1 = FUN_00013fe0(), cVar1 == '\0')) &&\n       ((pcVar8 == (char *)0x0 || (cVar1 = FUN_00013fe0(), cVar1 == '\0')))) {\n      sVar4 = strlen(__s1);\n      sVar5 = strlen(__s);\n      pcVar6 = (char *)FUN_00015880(sVar4 + 4 + sVar5);\n      __sprintf_chk(pcVar6,1,0xffffffff,"%s (%s)",__s1,__s);\n      if (local_24 != (char *)0x0) {\n        free(local_24);\n      }\n      goto joined_r0x00014a36;\n    }\n    if (local_24 == (char *)0x0) goto joined_r0x00014a36;\n  }" { (if_statement "if (param_2 == (char *)0x0) {\n      pcVar2 = param_1;\n      pcVar7 = (char *)0x0;\n      pcVar8 = (char *)0x0;\n    }\n    else {\n      pcVar2 = param_2;\n      pcVar7 = (char *)0x0;\n      pcVar8 = param_2;\n    }" if (parenthesized_expression "(param_2 == (char *)0x0)" ( (binary_expression "param_2 == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      pcVar2 = param_1;\n      pcVar7 = (char *)0x0;\n      pcVar8 = (char *)0x0;\n    }" { (expression_statement "pcVar2 = param_1;" (assignment_expression "pcVar2 = param_1" identifier = identifier) ;) (expression_statement "pcVar7 = (char *)0x0;" (assignment_expression "pcVar7 = (char *)0x0" identifier = (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "pcVar8 = (char *)0x0;" (assignment_expression "pcVar8 = (char *)0x0" identifier = (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) }) (else_clause "else {\n      pcVar2 = param_2;\n      pcVar7 = (char *)0x0;\n      pcVar8 = param_2;\n    }" else (compound_statement "{\n      pcVar2 = param_2;\n      pcVar7 = (char *)0x0;\n      pcVar8 = param_2;\n    }" { (expression_statement "pcVar2 = param_2;" (assignment_expression "pcVar2 = param_2" identifier = identifier) ;) (expression_statement "pcVar7 = (char *)0x0;" (assignment_expression "pcVar7 = (char *)0x0" identifier = (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "pcVar8 = param_2;" (assignment_expression "pcVar8 = param_2" identifier = identifier) ;) }))) (labeled_statement "LAB_000149d0:\n    iVar3 = strcmp(__s1,param_1);" statement_identifier : (expression_statement "iVar3 = strcmp(__s1,param_1);" (assignment_expression "iVar3 = strcmp(__s1,param_1)" identifier = (call_expression "strcmp(__s1,param_1)" identifier (argument_list "(__s1,param_1)" ( identifier , identifier )))) ;)) (if_statement "if (iVar3 == 0) {\n      return pcVar2;\n    }" if (parenthesized_expression "(iVar3 == 0)" ( (binary_expression "iVar3 == 0" identifier == number_literal) )) (compound_statement "{\n      return pcVar2;\n    }" { (return_statement "return pcVar2;" return identifier ;) })) (expression_statement "cVar1 = FUN_00013fe0();" (assignment_expression "cVar1 = FUN_00013fe0()" identifier = (call_expression "FUN_00013fe0()" identifier (argument_list "()" ( )))) ;) (if_statement "if (cVar1 != '\0') goto joined_r0x00014a36;" if (parenthesized_expression "(cVar1 != '\0')" ( (binary_expression "cVar1 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) (goto_statement "goto joined_r0x00014a36;" goto statement_identifier ;)) (expression_statement "local_24 = (char *)0x0;" (assignment_expression "local_24 = (char *)0x0" identifier = (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "__s = pcVar2;" (assignment_expression "__s = pcVar2" identifier = identifier) ;) (labeled_statement "LAB_00014a00:\n    if (((param_2 == (char *)0x0) || (cVar1 = FUN_00013fe0(), cVar1 == '\0')) &&\n       ((pcVar8 == (char *)0x0 || (cVar1 = FUN_00013fe0(), cVar1 == '\0')))) {\n      sVar4 = strlen(__s1);\n      sVar5 = strlen(__s);\n      pcVar6 = (char *)FUN_00015880(sVar4 + 4 + sVar5);\n      __sprintf_chk(pcVar6,1,0xffffffff,"%s (%s)",__s1,__s);\n      if (local_24 != (char *)0x0) {\n        free(local_24);\n      }\n      goto joined_r0x00014a36;\n    }" statement_identifier : (if_statement "if (((param_2 == (char *)0x0) || (cVar1 = FUN_00013fe0(), cVar1 == '\0')) &&\n       ((pcVar8 == (char *)0x0 || (cVar1 = FUN_00013fe0(), cVar1 == '\0')))) {\n      sVar4 = strlen(__s1);\n      sVar5 = strlen(__s);\n      pcVar6 = (char *)FUN_00015880(sVar4 + 4 + sVar5);\n      __sprintf_chk(pcVar6,1,0xffffffff,"%s (%s)",__s1,__s);\n      if (local_24 != (char *)0x0) {\n        free(local_24);\n      }\n      goto joined_r0x00014a36;\n    }" if (parenthesized_expression "(((param_2 == (char *)0x0) || (cVar1 = FUN_00013fe0(), cVar1 == '\0')) &&\n       ((pcVar8 == (char *)0x0 || (cVar1 = FUN_00013fe0(), cVar1 == '\0'))))" ( (binary_expression "((param_2 == (char *)0x0) || (cVar1 = FUN_00013fe0(), cVar1 == '\0')) &&\n       ((pcVar8 == (char *)0x0 || (cVar1 = FUN_00013fe0(), cVar1 == '\0')))" (parenthesized_expression "((param_2 == (char *)0x0) || (cVar1 = FUN_00013fe0(), cVar1 == '\0'))" ( (binary_expression "(param_2 == (char *)0x0) || (cVar1 = FUN_00013fe0(), cVar1 == '\0')" (parenthesized_expression "(param_2 == (char *)0x0)" ( (binary_expression "param_2 == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) || (parenthesized_expression "(cVar1 = FUN_00013fe0(), cVar1 == '\0')" ( (comma_expression "cVar1 = FUN_00013fe0(), cVar1 == '\0'" (assignment_expression "cVar1 = FUN_00013fe0()" identifier = (call_expression "FUN_00013fe0()" identifier (argument_list "()" ( )))) , (binary_expression "cVar1 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence '))) ))) )) && (parenthesized_expression "((pcVar8 == (char *)0x0 || (cVar1 = FUN_00013fe0(), cVar1 == '\0')))" ( (parenthesized_expression "(pcVar8 == (char *)0x0 || (cVar1 = FUN_00013fe0(), cVar1 == '\0'))" ( (binary_expression "pcVar8 == (char *)0x0 || (cVar1 = FUN_00013fe0(), cVar1 == '\0')" (binary_expression "pcVar8 == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) || (parenthesized_expression "(cVar1 = FUN_00013fe0(), cVar1 == '\0')" ( (comma_expression "cVar1 = FUN_00013fe0(), cVar1 == '\0'" (assignment_expression "cVar1 = FUN_00013fe0()" identifier = (call_expression "FUN_00013fe0()" identifier (argument_list "()" ( )))) , (binary_expression "cVar1 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence '))) ))) )) ))) )) (compound_statement "{\n      sVar4 = strlen(__s1);\n      sVar5 = strlen(__s);\n      pcVar6 = (char *)FUN_00015880(sVar4 + 4 + sVar5);\n      __sprintf_chk(pcVar6,1,0xffffffff,"%s (%s)",__s1,__s);\n      if (local_24 != (char *)0x0) {\n        free(local_24);\n      }\n      goto joined_r0x00014a36;\n    }" { (expression_statement "sVar4 = strlen(__s1);" (assignment_expression "sVar4 = strlen(__s1)" identifier = (call_expression "strlen(__s1)" identifier (argument_list "(__s1)" ( identifier )))) ;) (expression_statement "sVar5 = strlen(__s);" (assignment_expression "sVar5 = strlen(__s)" identifier = (call_expression "strlen(__s)" identifier (argument_list "(__s)" ( identifier )))) ;) (expression_statement "pcVar6 = (char *)FUN_00015880(sVar4 + 4 + sVar5);" (assignment_expression "pcVar6 = (char *)FUN_00015880(sVar4 + 4 + sVar5)" identifier = (cast_expression "(char *)FUN_00015880(sVar4 + 4 + sVar5)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00015880(sVar4 + 4 + sVar5)" identifier (argument_list "(sVar4 + 4 + sVar5)" ( (binary_expression "sVar4 + 4 + sVar5" (binary_expression "sVar4 + 4" identifier + number_literal) + identifier) ))))) ;) (expression_statement "__sprintf_chk(pcVar6,1,0xffffffff,"%s (%s)",__s1,__s);" (call_expression "__sprintf_chk(pcVar6,1,0xffffffff,"%s (%s)",__s1,__s)" identifier (argument_list "(pcVar6,1,0xffffffff,"%s (%s)",__s1,__s)" ( identifier , number_literal , number_literal , (string_literal ""%s (%s)"" " string_content ") , identifier , identifier ))) ;) (if_statement "if (local_24 != (char *)0x0) {\n        free(local_24);\n      }" if (parenthesized_expression "(local_24 != (char *)0x0)" ( (binary_expression "local_24 != (char *)0x0" identifier != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        free(local_24);\n      }" { (expression_statement "free(local_24);" (call_expression "free(local_24)" identifier (argument_list "(local_24)" ( identifier ))) ;) })) (goto_statement "goto joined_r0x00014a36;" goto statement_identifier ;) }))) (if_statement "if (local_24 == (char *)0x0) goto joined_r0x00014a36;" if (parenthesized_expression "(local_24 == (char *)0x0)" ( (binary_expression "local_24 == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto joined_r0x00014a36;" goto statement_identifier ;)) }) (else_clause "else {\n    __s = (char *)FUN_00015d40(param_2,"UTF-8",pcVar2);\n    sVar4 = strlen(pcVar2);\n    __dest = (void *)FUN_00015880(sVar4 + 0xb);\n    memcpy(__dest,pcVar2,sVar4);\n    puVar9 = (undefined4 *)(sVar4 + (int)__dest);\n    *puVar9 = 0x52542f2f;\n    puVar9[1] = 0x4c534e41;\n    *(undefined2 *)(puVar9 + 2) = 0x5449;\n    *(undefined1 *)((int)puVar9 + 10) = 0;\n    pcVar2 = (char *)FUN_00015d40(param_2,"UTF-8",__dest);\n    free(__dest);\n    if (pcVar2 == (char *)0x0) {\n      if (__s != (char *)0x0) goto LAB_00014b81;\nLAB_00014bfc:\n      param_2 = (char *)0x0;\n      pcVar2 = param_1;\n      pcVar7 = (char *)0x0;\n      pcVar8 = (char *)0x0;\n      goto LAB_000149d0;\n    }\n    pcVar7 = strchr(pcVar2,0x3f);\n    if (pcVar7 == (char *)0x0) {\n      pcVar7 = pcVar2;\n      if (__s == (char *)0x0) {\n        param_2 = (char *)0x0;\n        pcVar8 = pcVar2;\n        goto LAB_000149d0;\n      }\n      iVar3 = strcmp(__s1,param_1);\n      if (iVar3 == 0) {\n        if (__s == pcVar2) {\n          return __s;\n        }\n        free(pcVar2);\n        return __s;\n      }\n    }\n    else {\n      free(pcVar2);\n      if (__s == (char *)0x0) goto LAB_00014bfc;\nLAB_00014b81:\n      iVar3 = strcmp(__s1,param_1);\n      if (iVar3 == 0) {\n        return __s;\n      }\n      pcVar7 = (char *)0x0;\n    }\n    cVar1 = FUN_00013fe0();\n    pcVar8 = pcVar7;\n    param_2 = __s;\n    local_24 = __s;\n    if (cVar1 == '\0') goto LAB_00014a00;\n  }" else (compound_statement "{\n    __s = (char *)FUN_00015d40(param_2,"UTF-8",pcVar2);\n    sVar4 = strlen(pcVar2);\n    __dest = (void *)FUN_00015880(sVar4 + 0xb);\n    memcpy(__dest,pcVar2,sVar4);\n    puVar9 = (undefined4 *)(sVar4 + (int)__dest);\n    *puVar9 = 0x52542f2f;\n    puVar9[1] = 0x4c534e41;\n    *(undefined2 *)(puVar9 + 2) = 0x5449;\n    *(undefined1 *)((int)puVar9 + 10) = 0;\n    pcVar2 = (char *)FUN_00015d40(param_2,"UTF-8",__dest);\n    free(__dest);\n    if (pcVar2 == (char *)0x0) {\n      if (__s != (char *)0x0) goto LAB_00014b81;\nLAB_00014bfc:\n      param_2 = (char *)0x0;\n      pcVar2 = param_1;\n      pcVar7 = (char *)0x0;\n      pcVar8 = (char *)0x0;\n      goto LAB_000149d0;\n    }\n    pcVar7 = strchr(pcVar2,0x3f);\n    if (pcVar7 == (char *)0x0) {\n      pcVar7 = pcVar2;\n      if (__s == (char *)0x0) {\n        param_2 = (char *)0x0;\n        pcVar8 = pcVar2;\n        goto LAB_000149d0;\n      }\n      iVar3 = strcmp(__s1,param_1);\n      if (iVar3 == 0) {\n        if (__s == pcVar2) {\n          return __s;\n        }\n        free(pcVar2);\n        return __s;\n      }\n    }\n    else {\n      free(pcVar2);\n      if (__s == (char *)0x0) goto LAB_00014bfc;\nLAB_00014b81:\n      iVar3 = strcmp(__s1,param_1);\n      if (iVar3 == 0) {\n        return __s;\n      }\n      pcVar7 = (char *)0x0;\n    }\n    cVar1 = FUN_00013fe0();\n    pcVar8 = pcVar7;\n    param_2 = __s;\n    local_24 = __s;\n    if (cVar1 == '\0') goto LAB_00014a00;\n  }" { (expression_statement "__s = (char *)FUN_00015d40(param_2,"UTF-8",pcVar2);" (assignment_expression "__s = (char *)FUN_00015d40(param_2,"UTF-8",pcVar2)" identifier = (cast_expression "(char *)FUN_00015d40(param_2,"UTF-8",pcVar2)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00015d40(param_2,"UTF-8",pcVar2)" identifier (argument_list "(param_2,"UTF-8",pcVar2)" ( identifier , (string_literal ""UTF-8"" " string_content ") , identifier ))))) ;) (expression_statement "sVar4 = strlen(pcVar2);" (assignment_expression "sVar4 = strlen(pcVar2)" identifier = (call_expression "strlen(pcVar2)" identifier (argument_list "(pcVar2)" ( identifier )))) ;) (expression_statement "__dest = (void *)FUN_00015880(sVar4 + 0xb);" (assignment_expression "__dest = (void *)FUN_00015880(sVar4 + 0xb)" identifier = (cast_expression "(void *)FUN_00015880(sVar4 + 0xb)" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00015880(sVar4 + 0xb)" identifier (argument_list "(sVar4 + 0xb)" ( (binary_expression "sVar4 + 0xb" identifier + number_literal) ))))) ;) (expression_statement "memcpy(__dest,pcVar2,sVar4);" (call_expression "memcpy(__dest,pcVar2,sVar4)" identifier (argument_list "(__dest,pcVar2,sVar4)" ( identifier , identifier , identifier ))) ;) (expression_statement "puVar9 = (undefined4 *)(sVar4 + (int)__dest);" (assignment_expression "puVar9 = (undefined4 *)(sVar4 + (int)__dest)" identifier = (cast_expression "(undefined4 *)(sVar4 + (int)__dest)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(sVar4 + (int)__dest)" ( (binary_expression "sVar4 + (int)__dest" identifier + (cast_expression "(int)__dest" ( (type_descriptor "int" primitive_type) ) identifier)) )))) ;) (expression_statement "*puVar9 = 0x52542f2f;" (assignment_expression "*puVar9 = 0x52542f2f" (pointer_expression "*puVar9" * identifier) = number_literal) ;) (expression_statement "puVar9[1] = 0x4c534e41;" (assignment_expression "puVar9[1] = 0x4c534e41" (subscript_expression "puVar9[1]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*(undefined2 *)(puVar9 + 2) = 0x5449;" (assignment_expression "*(undefined2 *)(puVar9 + 2) = 0x5449" (pointer_expression "*(undefined2 *)(puVar9 + 2)" * (cast_expression "(undefined2 *)(puVar9 + 2)" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar9 + 2)" ( (binary_expression "puVar9 + 2" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined1 *)((int)puVar9 + 10) = 0;" (assignment_expression "*(undefined1 *)((int)puVar9 + 10) = 0" (pointer_expression "*(undefined1 *)((int)puVar9 + 10)" * (cast_expression "(undefined1 *)((int)puVar9 + 10)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar9 + 10)" ( (binary_expression "(int)puVar9 + 10" (cast_expression "(int)puVar9" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) (expression_statement "pcVar2 = (char *)FUN_00015d40(param_2,"UTF-8",__dest);" (assignment_expression "pcVar2 = (char *)FUN_00015d40(param_2,"UTF-8",__dest)" identifier = (cast_expression "(char *)FUN_00015d40(param_2,"UTF-8",__dest)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00015d40(param_2,"UTF-8",__dest)" identifier (argument_list "(param_2,"UTF-8",__dest)" ( identifier , (string_literal ""UTF-8"" " string_content ") , identifier ))))) ;) (expression_statement "free(__dest);" (call_expression "free(__dest)" identifier (argument_list "(__dest)" ( identifier ))) ;) (if_statement "if (pcVar2 == (char *)0x0) {\n      if (__s != (char *)0x0) goto LAB_00014b81;\nLAB_00014bfc:\n      param_2 = (char *)0x0;\n      pcVar2 = param_1;\n      pcVar7 = (char *)0x0;\n      pcVar8 = (char *)0x0;\n      goto LAB_000149d0;\n    }" if (parenthesized_expression "(pcVar2 == (char *)0x0)" ( (binary_expression "pcVar2 == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      if (__s != (char *)0x0) goto LAB_00014b81;\nLAB_00014bfc:\n      param_2 = (char *)0x0;\n      pcVar2 = param_1;\n      pcVar7 = (char *)0x0;\n      pcVar8 = (char *)0x0;\n      goto LAB_000149d0;\n    }" { (if_statement "if (__s != (char *)0x0) goto LAB_00014b81;" if (parenthesized_expression "(__s != (char *)0x0)" ( (binary_expression "__s != (char *)0x0" identifier != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_00014b81;" goto statement_identifier ;)) (labeled_statement "LAB_00014bfc:\n      param_2 = (char *)0x0;" statement_identifier : (expression_statement "param_2 = (char *)0x0;" (assignment_expression "param_2 = (char *)0x0" identifier = (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;)) (expression_statement "pcVar2 = param_1;" (assignment_expression "pcVar2 = param_1" identifier = identifier) ;) (expression_statement "pcVar7 = (char *)0x0;" (assignment_expression "pcVar7 = (char *)0x0" identifier = (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "pcVar8 = (char *)0x0;" (assignment_expression "pcVar8 = (char *)0x0" identifier = (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (goto_statement "goto LAB_000149d0;" goto statement_identifier ;) })) (expression_statement "pcVar7 = strchr(pcVar2,0x3f);" (assignment_expression "pcVar7 = strchr(pcVar2,0x3f)" identifier = (call_expression "strchr(pcVar2,0x3f)" identifier (argument_list "(pcVar2,0x3f)" ( identifier , number_literal )))) ;) (if_statement "if (pcVar7 == (char *)0x0) {\n      pcVar7 = pcVar2;\n      if (__s == (char *)0x0) {\n        param_2 = (char *)0x0;\n        pcVar8 = pcVar2;\n        goto LAB_000149d0;\n      }\n      iVar3 = strcmp(__s1,param_1);\n      if (iVar3 == 0) {\n        if (__s == pcVar2) {\n          return __s;\n        }\n        free(pcVar2);\n        return __s;\n      }\n    }\n    else {\n      free(pcVar2);\n      if (__s == (char *)0x0) goto LAB_00014bfc;\nLAB_00014b81:\n      iVar3 = strcmp(__s1,param_1);\n      if (iVar3 == 0) {\n        return __s;\n      }\n      pcVar7 = (char *)0x0;\n    }" if (parenthesized_expression "(pcVar7 == (char *)0x0)" ( (binary_expression "pcVar7 == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      pcVar7 = pcVar2;\n      if (__s == (char *)0x0) {\n        param_2 = (char *)0x0;\n        pcVar8 = pcVar2;\n        goto LAB_000149d0;\n      }\n      iVar3 = strcmp(__s1,param_1);\n      if (iVar3 == 0) {\n        if (__s == pcVar2) {\n          return __s;\n        }\n        free(pcVar2);\n        return __s;\n      }\n    }" { (expression_statement "pcVar7 = pcVar2;" (assignment_expression "pcVar7 = pcVar2" identifier = identifier) ;) (if_statement "if (__s == (char *)0x0) {\n        param_2 = (char *)0x0;\n        pcVar8 = pcVar2;\n        goto LAB_000149d0;\n      }" if (parenthesized_expression "(__s == (char *)0x0)" ( (binary_expression "__s == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        param_2 = (char *)0x0;\n        pcVar8 = pcVar2;\n        goto LAB_000149d0;\n      }" { (expression_statement "param_2 = (char *)0x0;" (assignment_expression "param_2 = (char *)0x0" identifier = (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "pcVar8 = pcVar2;" (assignment_expression "pcVar8 = pcVar2" identifier = identifier) ;) (goto_statement "goto LAB_000149d0;" goto statement_identifier ;) })) (expression_statement "iVar3 = strcmp(__s1,param_1);" (assignment_expression "iVar3 = strcmp(__s1,param_1)" identifier = (call_expression "strcmp(__s1,param_1)" identifier (argument_list "(__s1,param_1)" ( identifier , identifier )))) ;) (if_statement "if (iVar3 == 0) {\n        if (__s == pcVar2) {\n          return __s;\n        }\n        free(pcVar2);\n        return __s;\n      }" if (parenthesized_expression "(iVar3 == 0)" ( (binary_expression "iVar3 == 0" identifier == number_literal) )) (compound_statement "{\n        if (__s == pcVar2) {\n          return __s;\n        }\n        free(pcVar2);\n        return __s;\n      }" { (if_statement "if (__s == pcVar2) {\n          return __s;\n        }" if (parenthesized_expression "(__s == pcVar2)" ( (binary_expression "__s == pcVar2" identifier == identifier) )) (compound_statement "{\n          return __s;\n        }" { (return_statement "return __s;" return identifier ;) })) (expression_statement "free(pcVar2);" (call_expression "free(pcVar2)" identifier (argument_list "(pcVar2)" ( identifier ))) ;) (return_statement "return __s;" return identifier ;) })) }) (else_clause "else {\n      free(pcVar2);\n      if (__s == (char *)0x0) goto LAB_00014bfc;\nLAB_00014b81:\n      iVar3 = strcmp(__s1,param_1);\n      if (iVar3 == 0) {\n        return __s;\n      }\n      pcVar7 = (char *)0x0;\n    }" else (compound_statement "{\n      free(pcVar2);\n      if (__s == (char *)0x0) goto LAB_00014bfc;\nLAB_00014b81:\n      iVar3 = strcmp(__s1,param_1);\n      if (iVar3 == 0) {\n        return __s;\n      }\n      pcVar7 = (char *)0x0;\n    }" { (expression_statement "free(pcVar2);" (call_expression "free(pcVar2)" identifier (argument_list "(pcVar2)" ( identifier ))) ;) (if_statement "if (__s == (char *)0x0) goto LAB_00014bfc;" if (parenthesized_expression "(__s == (char *)0x0)" ( (binary_expression "__s == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_00014bfc;" goto statement_identifier ;)) (labeled_statement "LAB_00014b81:\n      iVar3 = strcmp(__s1,param_1);" statement_identifier : (expression_statement "iVar3 = strcmp(__s1,param_1);" (assignment_expression "iVar3 = strcmp(__s1,param_1)" identifier = (call_expression "strcmp(__s1,param_1)" identifier (argument_list "(__s1,param_1)" ( identifier , identifier )))) ;)) (if_statement "if (iVar3 == 0) {\n        return __s;\n      }" if (parenthesized_expression "(iVar3 == 0)" ( (binary_expression "iVar3 == 0" identifier == number_literal) )) (compound_statement "{\n        return __s;\n      }" { (return_statement "return __s;" return identifier ;) })) (expression_statement "pcVar7 = (char *)0x0;" (assignment_expression "pcVar7 = (char *)0x0" identifier = (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) }))) (expression_statement "cVar1 = FUN_00013fe0();" (assignment_expression "cVar1 = FUN_00013fe0()" identifier = (call_expression "FUN_00013fe0()" identifier (argument_list "()" ( )))) ;) (expression_statement "pcVar8 = pcVar7;" (assignment_expression "pcVar8 = pcVar7" identifier = identifier) ;) (expression_statement "param_2 = __s;" (assignment_expression "param_2 = __s" identifier = identifier) ;) (expression_statement "local_24 = __s;" (assignment_expression "local_24 = __s" identifier = identifier) ;) (if_statement "if (cVar1 == '\0') goto LAB_00014a00;" if (parenthesized_expression "(cVar1 == '\0')" ( (binary_expression "cVar1 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence ')) )) (goto_statement "goto LAB_00014a00;" goto statement_identifier ;)) }))) (expression_statement "free(local_24);" (call_expression "free(local_24)" identifier (argument_list "(local_24)" ( identifier ))) ;) (labeled_statement "joined_r0x00014a36:\n  if (pcVar7 != (char *)0x0) {\n    free(pcVar7);\n  }" statement_identifier : (if_statement "if (pcVar7 != (char *)0x0) {\n    free(pcVar7);\n  }" if (parenthesized_expression "(pcVar7 != (char *)0x0)" ( (binary_expression "pcVar7 != (char *)0x0" identifier != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    free(pcVar7);\n  }" { (expression_statement "free(pcVar7);" (call_expression "free(pcVar7)" identifier (argument_list "(pcVar7)" ( identifier ))) ;) }))) (return_statement "return pcVar6;" return identifier ;) })))
(translation_unit "/* WARNING: Function: __x86.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */\n\nchar * proper_name_utf8(char *name_ascii,char *name_utf8)\n\n{\n  _Bool _Var1;\n  char *__s1;\n  char *pcVar2;\n  int iVar3;\n  size_t sVar4;\n  size_t sVar5;\n  char *pcVar6;\n  char *__s;\n  char *pcVar7;\n  char *sub;\n  char *local_24;\n  \n  __s1 = (char *)dcgettext(0,name_ascii,5);\n  pcVar2 = locale_charset();\n  iVar3 = c_strcasecmp(pcVar2,"UTF-8");\n  pcVar6 = __s1;\n  if (iVar3 == 0) {\n    if (name_utf8 == (char *)0x0) {\n      pcVar2 = name_ascii;\n      pcVar7 = (char *)0x0;\n      sub = (char *)0x0;\n    }\n    else {\n      pcVar2 = name_utf8;\n      pcVar7 = (char *)0x0;\n      sub = name_utf8;\n    }\nLAB_000149d0:\n    iVar3 = strcmp(__s1,name_ascii);\n    if (iVar3 == 0) {\n      return pcVar2;\n    }\n    _Var1 = mbsstr_trimmed_wordbounded(__s1,name_ascii);\n    if (_Var1) goto joined_r0x00014a36;\n    local_24 = (char *)0x0;\n    __s = pcVar2;\nLAB_00014a00:\n    if (((name_utf8 == (char *)0x0) || (_Var1 = mbsstr_trimmed_wordbounded(__s1,name_utf8), !_Var1))\n       && ((sub == (char *)0x0 || (_Var1 = mbsstr_trimmed_wordbounded(__s1,sub), !_Var1)))) {\n      sVar4 = strlen(__s1);\n      sVar5 = strlen(__s);\n      pcVar6 = (char *)xmalloc(sVar4 + 4 + sVar5);\n      __sprintf_chk(pcVar6,1,0xffffffff,"%s (%s)",__s1,__s);\n      if (local_24 != (char *)0x0) {\n        free(local_24);\n      }\n      goto joined_r0x00014a36;\n    }\n    if (local_24 == (char *)0x0) goto joined_r0x00014a36;\n  }\n  else {\n    __s = xstr_iconv(name_utf8,"UTF-8",pcVar2);\n    sVar4 = strlen(pcVar2);\n    pcVar7 = (char *)xmalloc(sVar4 + 0xb);\n    memcpy(pcVar7,pcVar2,sVar4);\n    builtin_strncpy(pcVar7 + sVar4,"//TRANSLIT",0xb);\n    pcVar2 = xstr_iconv(name_utf8,"UTF-8",pcVar7);\n    free(pcVar7);\n    if (pcVar2 == (char *)0x0) {\n      if (__s != (char *)0x0) goto LAB_00014b81;\nLAB_00014bfc:\n      name_utf8 = (char *)0x0;\n      pcVar2 = name_ascii;\n      pcVar7 = (char *)0x0;\n      sub = (char *)0x0;\n      goto LAB_000149d0;\n    }\n    pcVar7 = strchr(pcVar2,0x3f);\n    if (pcVar7 == (char *)0x0) {\n      pcVar7 = pcVar2;\n      if (__s == (char *)0x0) {\n        name_utf8 = (char *)0x0;\n        sub = pcVar2;\n        goto LAB_000149d0;\n      }\n      iVar3 = strcmp(__s1,name_ascii);\n      if (iVar3 == 0) {\n        if (__s == pcVar2) {\n          return __s;\n        }\n        free(pcVar2);\n        return __s;\n      }\n    }\n    else {\n      free(pcVar2);\n      if (__s == (char *)0x0) goto LAB_00014bfc;\nLAB_00014b81:\n      iVar3 = strcmp(__s1,name_ascii);\n      if (iVar3 == 0) {\n        return __s;\n      }\n      pcVar7 = (char *)0x0;\n    }\n    _Var1 = mbsstr_trimmed_wordbounded(__s1,name_ascii);\n    sub = pcVar7;\n    name_utf8 = __s;\n    local_24 = __s;\n    if (!_Var1) goto LAB_00014a00;\n  }\n  free(local_24);\njoined_r0x00014a36:\n  if (pcVar7 != (char *)0x0) {\n    free(pcVar7);\n  }\n  return pcVar6;\n}\n\n" comment (function_definition "char * proper_name_utf8(char *name_ascii,char *name_utf8)\n\n{\n  _Bool _Var1;\n  char *__s1;\n  char *pcVar2;\n  int iVar3;\n  size_t sVar4;\n  size_t sVar5;\n  char *pcVar6;\n  char *__s;\n  char *pcVar7;\n  char *sub;\n  char *local_24;\n  \n  __s1 = (char *)dcgettext(0,name_ascii,5);\n  pcVar2 = locale_charset();\n  iVar3 = c_strcasecmp(pcVar2,"UTF-8");\n  pcVar6 = __s1;\n  if (iVar3 == 0) {\n    if (name_utf8 == (char *)0x0) {\n      pcVar2 = name_ascii;\n      pcVar7 = (char *)0x0;\n      sub = (char *)0x0;\n    }\n    else {\n      pcVar2 = name_utf8;\n      pcVar7 = (char *)0x0;\n      sub = name_utf8;\n    }\nLAB_000149d0:\n    iVar3 = strcmp(__s1,name_ascii);\n    if (iVar3 == 0) {\n      return pcVar2;\n    }\n    _Var1 = mbsstr_trimmed_wordbounded(__s1,name_ascii);\n    if (_Var1) goto joined_r0x00014a36;\n    local_24 = (char *)0x0;\n    __s = pcVar2;\nLAB_00014a00:\n    if (((name_utf8 == (char *)0x0) || (_Var1 = mbsstr_trimmed_wordbounded(__s1,name_utf8), !_Var1))\n       && ((sub == (char *)0x0 || (_Var1 = mbsstr_trimmed_wordbounded(__s1,sub), !_Var1)))) {\n      sVar4 = strlen(__s1);\n      sVar5 = strlen(__s);\n      pcVar6 = (char *)xmalloc(sVar4 + 4 + sVar5);\n      __sprintf_chk(pcVar6,1,0xffffffff,"%s (%s)",__s1,__s);\n      if (local_24 != (char *)0x0) {\n        free(local_24);\n      }\n      goto joined_r0x00014a36;\n    }\n    if (local_24 == (char *)0x0) goto joined_r0x00014a36;\n  }\n  else {\n    __s = xstr_iconv(name_utf8,"UTF-8",pcVar2);\n    sVar4 = strlen(pcVar2);\n    pcVar7 = (char *)xmalloc(sVar4 + 0xb);\n    memcpy(pcVar7,pcVar2,sVar4);\n    builtin_strncpy(pcVar7 + sVar4,"//TRANSLIT",0xb);\n    pcVar2 = xstr_iconv(name_utf8,"UTF-8",pcVar7);\n    free(pcVar7);\n    if (pcVar2 == (char *)0x0) {\n      if (__s != (char *)0x0) goto LAB_00014b81;\nLAB_00014bfc:\n      name_utf8 = (char *)0x0;\n      pcVar2 = name_ascii;\n      pcVar7 = (char *)0x0;\n      sub = (char *)0x0;\n      goto LAB_000149d0;\n    }\n    pcVar7 = strchr(pcVar2,0x3f);\n    if (pcVar7 == (char *)0x0) {\n      pcVar7 = pcVar2;\n      if (__s == (char *)0x0) {\n        name_utf8 = (char *)0x0;\n        sub = pcVar2;\n        goto LAB_000149d0;\n      }\n      iVar3 = strcmp(__s1,name_ascii);\n      if (iVar3 == 0) {\n        if (__s == pcVar2) {\n          return __s;\n        }\n        free(pcVar2);\n        return __s;\n      }\n    }\n    else {\n      free(pcVar2);\n      if (__s == (char *)0x0) goto LAB_00014bfc;\nLAB_00014b81:\n      iVar3 = strcmp(__s1,name_ascii);\n      if (iVar3 == 0) {\n        return __s;\n      }\n      pcVar7 = (char *)0x0;\n    }\n    _Var1 = mbsstr_trimmed_wordbounded(__s1,name_ascii);\n    sub = pcVar7;\n    name_utf8 = __s;\n    local_24 = __s;\n    if (!_Var1) goto LAB_00014a00;\n  }\n  free(local_24);\njoined_r0x00014a36:\n  if (pcVar7 != (char *)0x0) {\n    free(pcVar7);\n  }\n  return pcVar6;\n}" primitive_type (pointer_declarator "* proper_name_utf8(char *name_ascii,char *name_utf8)" * (function_declarator "proper_name_utf8(char *name_ascii,char *name_utf8)" identifier (parameter_list "(char *name_ascii,char *name_utf8)" ( (parameter_declaration "char *name_ascii" primitive_type (pointer_declarator "*name_ascii" * identifier)) , (parameter_declaration "char *name_utf8" primitive_type (pointer_declarator "*name_utf8" * identifier)) )))) (compound_statement "{\n  _Bool _Var1;\n  char *__s1;\n  char *pcVar2;\n  int iVar3;\n  size_t sVar4;\n  size_t sVar5;\n  char *pcVar6;\n  char *__s;\n  char *pcVar7;\n  char *sub;\n  char *local_24;\n  \n  __s1 = (char *)dcgettext(0,name_ascii,5);\n  pcVar2 = locale_charset();\n  iVar3 = c_strcasecmp(pcVar2,"UTF-8");\n  pcVar6 = __s1;\n  if (iVar3 == 0) {\n    if (name_utf8 == (char *)0x0) {\n      pcVar2 = name_ascii;\n      pcVar7 = (char *)0x0;\n      sub = (char *)0x0;\n    }\n    else {\n      pcVar2 = name_utf8;\n      pcVar7 = (char *)0x0;\n      sub = name_utf8;\n    }\nLAB_000149d0:\n    iVar3 = strcmp(__s1,name_ascii);\n    if (iVar3 == 0) {\n      return pcVar2;\n    }\n    _Var1 = mbsstr_trimmed_wordbounded(__s1,name_ascii);\n    if (_Var1) goto joined_r0x00014a36;\n    local_24 = (char *)0x0;\n    __s = pcVar2;\nLAB_00014a00:\n    if (((name_utf8 == (char *)0x0) || (_Var1 = mbsstr_trimmed_wordbounded(__s1,name_utf8), !_Var1))\n       && ((sub == (char *)0x0 || (_Var1 = mbsstr_trimmed_wordbounded(__s1,sub), !_Var1)))) {\n      sVar4 = strlen(__s1);\n      sVar5 = strlen(__s);\n      pcVar6 = (char *)xmalloc(sVar4 + 4 + sVar5);\n      __sprintf_chk(pcVar6,1,0xffffffff,"%s (%s)",__s1,__s);\n      if (local_24 != (char *)0x0) {\n        free(local_24);\n      }\n      goto joined_r0x00014a36;\n    }\n    if (local_24 == (char *)0x0) goto joined_r0x00014a36;\n  }\n  else {\n    __s = xstr_iconv(name_utf8,"UTF-8",pcVar2);\n    sVar4 = strlen(pcVar2);\n    pcVar7 = (char *)xmalloc(sVar4 + 0xb);\n    memcpy(pcVar7,pcVar2,sVar4);\n    builtin_strncpy(pcVar7 + sVar4,"//TRANSLIT",0xb);\n    pcVar2 = xstr_iconv(name_utf8,"UTF-8",pcVar7);\n    free(pcVar7);\n    if (pcVar2 == (char *)0x0) {\n      if (__s != (char *)0x0) goto LAB_00014b81;\nLAB_00014bfc:\n      name_utf8 = (char *)0x0;\n      pcVar2 = name_ascii;\n      pcVar7 = (char *)0x0;\n      sub = (char *)0x0;\n      goto LAB_000149d0;\n    }\n    pcVar7 = strchr(pcVar2,0x3f);\n    if (pcVar7 == (char *)0x0) {\n      pcVar7 = pcVar2;\n      if (__s == (char *)0x0) {\n        name_utf8 = (char *)0x0;\n        sub = pcVar2;\n        goto LAB_000149d0;\n      }\n      iVar3 = strcmp(__s1,name_ascii);\n      if (iVar3 == 0) {\n        if (__s == pcVar2) {\n          return __s;\n        }\n        free(pcVar2);\n        return __s;\n      }\n    }\n    else {\n      free(pcVar2);\n      if (__s == (char *)0x0) goto LAB_00014bfc;\nLAB_00014b81:\n      iVar3 = strcmp(__s1,name_ascii);\n      if (iVar3 == 0) {\n        return __s;\n      }\n      pcVar7 = (char *)0x0;\n    }\n    _Var1 = mbsstr_trimmed_wordbounded(__s1,name_ascii);\n    sub = pcVar7;\n    name_utf8 = __s;\n    local_24 = __s;\n    if (!_Var1) goto LAB_00014a00;\n  }\n  free(local_24);\njoined_r0x00014a36:\n  if (pcVar7 != (char *)0x0) {\n    free(pcVar7);\n  }\n  return pcVar6;\n}" { (declaration "_Bool _Var1;" type_identifier identifier ;) (declaration "char *__s1;" primitive_type (pointer_declarator "*__s1" * identifier) ;) (declaration "char *pcVar2;" primitive_type (pointer_declarator "*pcVar2" * identifier) ;) (declaration "int iVar3;" primitive_type identifier ;) (declaration "size_t sVar4;" primitive_type identifier ;) (declaration "size_t sVar5;" primitive_type identifier ;) (declaration "char *pcVar6;" primitive_type (pointer_declarator "*pcVar6" * identifier) ;) (declaration "char *__s;" primitive_type (pointer_declarator "*__s" * identifier) ;) (declaration "char *pcVar7;" primitive_type (pointer_declarator "*pcVar7" * identifier) ;) (declaration "char *sub;" primitive_type (pointer_declarator "*sub" * identifier) ;) (declaration "char *local_24;" primitive_type (pointer_declarator "*local_24" * identifier) ;) (expression_statement "__s1 = (char *)dcgettext(0,name_ascii,5);" (assignment_expression "__s1 = (char *)dcgettext(0,name_ascii,5)" identifier = (cast_expression "(char *)dcgettext(0,name_ascii,5)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "dcgettext(0,name_ascii,5)" identifier (argument_list "(0,name_ascii,5)" ( number_literal , identifier , number_literal ))))) ;) (expression_statement "pcVar2 = locale_charset();" (assignment_expression "pcVar2 = locale_charset()" identifier = (call_expression "locale_charset()" identifier (argument_list "()" ( )))) ;) (expression_statement "iVar3 = c_strcasecmp(pcVar2,"UTF-8");" (assignment_expression "iVar3 = c_strcasecmp(pcVar2,"UTF-8")" identifier = (call_expression "c_strcasecmp(pcVar2,"UTF-8")" identifier (argument_list "(pcVar2,"UTF-8")" ( identifier , (string_literal ""UTF-8"" " string_content ") )))) ;) (expression_statement "pcVar6 = __s1;" (assignment_expression "pcVar6 = __s1" identifier = identifier) ;) (if_statement "if (iVar3 == 0) {\n    if (name_utf8 == (char *)0x0) {\n      pcVar2 = name_ascii;\n      pcVar7 = (char *)0x0;\n      sub = (char *)0x0;\n    }\n    else {\n      pcVar2 = name_utf8;\n      pcVar7 = (char *)0x0;\n      sub = name_utf8;\n    }\nLAB_000149d0:\n    iVar3 = strcmp(__s1,name_ascii);\n    if (iVar3 == 0) {\n      return pcVar2;\n    }\n    _Var1 = mbsstr_trimmed_wordbounded(__s1,name_ascii);\n    if (_Var1) goto joined_r0x00014a36;\n    local_24 = (char *)0x0;\n    __s = pcVar2;\nLAB_00014a00:\n    if (((name_utf8 == (char *)0x0) || (_Var1 = mbsstr_trimmed_wordbounded(__s1,name_utf8), !_Var1))\n       && ((sub == (char *)0x0 || (_Var1 = mbsstr_trimmed_wordbounded(__s1,sub), !_Var1)))) {\n      sVar4 = strlen(__s1);\n      sVar5 = strlen(__s);\n      pcVar6 = (char *)xmalloc(sVar4 + 4 + sVar5);\n      __sprintf_chk(pcVar6,1,0xffffffff,"%s (%s)",__s1,__s);\n      if (local_24 != (char *)0x0) {\n        free(local_24);\n      }\n      goto joined_r0x00014a36;\n    }\n    if (local_24 == (char *)0x0) goto joined_r0x00014a36;\n  }\n  else {\n    __s = xstr_iconv(name_utf8,"UTF-8",pcVar2);\n    sVar4 = strlen(pcVar2);\n    pcVar7 = (char *)xmalloc(sVar4 + 0xb);\n    memcpy(pcVar7,pcVar2,sVar4);\n    builtin_strncpy(pcVar7 + sVar4,"//TRANSLIT",0xb);\n    pcVar2 = xstr_iconv(name_utf8,"UTF-8",pcVar7);\n    free(pcVar7);\n    if (pcVar2 == (char *)0x0) {\n      if (__s != (char *)0x0) goto LAB_00014b81;\nLAB_00014bfc:\n      name_utf8 = (char *)0x0;\n      pcVar2 = name_ascii;\n      pcVar7 = (char *)0x0;\n      sub = (char *)0x0;\n      goto LAB_000149d0;\n    }\n    pcVar7 = strchr(pcVar2,0x3f);\n    if (pcVar7 == (char *)0x0) {\n      pcVar7 = pcVar2;\n      if (__s == (char *)0x0) {\n        name_utf8 = (char *)0x0;\n        sub = pcVar2;\n        goto LAB_000149d0;\n      }\n      iVar3 = strcmp(__s1,name_ascii);\n      if (iVar3 == 0) {\n        if (__s == pcVar2) {\n          return __s;\n        }\n        free(pcVar2);\n        return __s;\n      }\n    }\n    else {\n      free(pcVar2);\n      if (__s == (char *)0x0) goto LAB_00014bfc;\nLAB_00014b81:\n      iVar3 = strcmp(__s1,name_ascii);\n      if (iVar3 == 0) {\n        return __s;\n      }\n      pcVar7 = (char *)0x0;\n    }\n    _Var1 = mbsstr_trimmed_wordbounded(__s1,name_ascii);\n    sub = pcVar7;\n    name_utf8 = __s;\n    local_24 = __s;\n    if (!_Var1) goto LAB_00014a00;\n  }" if (parenthesized_expression "(iVar3 == 0)" ( (binary_expression "iVar3 == 0" identifier == number_literal) )) (compound_statement "{\n    if (name_utf8 == (char *)0x0) {\n      pcVar2 = name_ascii;\n      pcVar7 = (char *)0x0;\n      sub = (char *)0x0;\n    }\n    else {\n      pcVar2 = name_utf8;\n      pcVar7 = (char *)0x0;\n      sub = name_utf8;\n    }\nLAB_000149d0:\n    iVar3 = strcmp(__s1,name_ascii);\n    if (iVar3 == 0) {\n      return pcVar2;\n    }\n    _Var1 = mbsstr_trimmed_wordbounded(__s1,name_ascii);\n    if (_Var1) goto joined_r0x00014a36;\n    local_24 = (char *)0x0;\n    __s = pcVar2;\nLAB_00014a00:\n    if (((name_utf8 == (char *)0x0) || (_Var1 = mbsstr_trimmed_wordbounded(__s1,name_utf8), !_Var1))\n       && ((sub == (char *)0x0 || (_Var1 = mbsstr_trimmed_wordbounded(__s1,sub), !_Var1)))) {\n      sVar4 = strlen(__s1);\n      sVar5 = strlen(__s);\n      pcVar6 = (char *)xmalloc(sVar4 + 4 + sVar5);\n      __sprintf_chk(pcVar6,1,0xffffffff,"%s (%s)",__s1,__s);\n      if (local_24 != (char *)0x0) {\n        free(local_24);\n      }\n      goto joined_r0x00014a36;\n    }\n    if (local_24 == (char *)0x0) goto joined_r0x00014a36;\n  }" { (if_statement "if (name_utf8 == (char *)0x0) {\n      pcVar2 = name_ascii;\n      pcVar7 = (char *)0x0;\n      sub = (char *)0x0;\n    }\n    else {\n      pcVar2 = name_utf8;\n      pcVar7 = (char *)0x0;\n      sub = name_utf8;\n    }" if (parenthesized_expression "(name_utf8 == (char *)0x0)" ( (binary_expression "name_utf8 == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      pcVar2 = name_ascii;\n      pcVar7 = (char *)0x0;\n      sub = (char *)0x0;\n    }" { (expression_statement "pcVar2 = name_ascii;" (assignment_expression "pcVar2 = name_ascii" identifier = identifier) ;) (expression_statement "pcVar7 = (char *)0x0;" (assignment_expression "pcVar7 = (char *)0x0" identifier = (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "sub = (char *)0x0;" (assignment_expression "sub = (char *)0x0" identifier = (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) }) (else_clause "else {\n      pcVar2 = name_utf8;\n      pcVar7 = (char *)0x0;\n      sub = name_utf8;\n    }" else (compound_statement "{\n      pcVar2 = name_utf8;\n      pcVar7 = (char *)0x0;\n      sub = name_utf8;\n    }" { (expression_statement "pcVar2 = name_utf8;" (assignment_expression "pcVar2 = name_utf8" identifier = identifier) ;) (expression_statement "pcVar7 = (char *)0x0;" (assignment_expression "pcVar7 = (char *)0x0" identifier = (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "sub = name_utf8;" (assignment_expression "sub = name_utf8" identifier = identifier) ;) }))) (labeled_statement "LAB_000149d0:\n    iVar3 = strcmp(__s1,name_ascii);" statement_identifier : (expression_statement "iVar3 = strcmp(__s1,name_ascii);" (assignment_expression "iVar3 = strcmp(__s1,name_ascii)" identifier = (call_expression "strcmp(__s1,name_ascii)" identifier (argument_list "(__s1,name_ascii)" ( identifier , identifier )))) ;)) (if_statement "if (iVar3 == 0) {\n      return pcVar2;\n    }" if (parenthesized_expression "(iVar3 == 0)" ( (binary_expression "iVar3 == 0" identifier == number_literal) )) (compound_statement "{\n      return pcVar2;\n    }" { (return_statement "return pcVar2;" return identifier ;) })) (expression_statement "_Var1 = mbsstr_trimmed_wordbounded(__s1,name_ascii);" (assignment_expression "_Var1 = mbsstr_trimmed_wordbounded(__s1,name_ascii)" identifier = (call_expression "mbsstr_trimmed_wordbounded(__s1,name_ascii)" identifier (argument_list "(__s1,name_ascii)" ( identifier , identifier )))) ;) (if_statement "if (_Var1) goto joined_r0x00014a36;" if (parenthesized_expression "(_Var1)" ( identifier )) (goto_statement "goto joined_r0x00014a36;" goto statement_identifier ;)) (expression_statement "local_24 = (char *)0x0;" (assignment_expression "local_24 = (char *)0x0" identifier = (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "__s = pcVar2;" (assignment_expression "__s = pcVar2" identifier = identifier) ;) (labeled_statement "LAB_00014a00:\n    if (((name_utf8 == (char *)0x0) || (_Var1 = mbsstr_trimmed_wordbounded(__s1,name_utf8), !_Var1))\n       && ((sub == (char *)0x0 || (_Var1 = mbsstr_trimmed_wordbounded(__s1,sub), !_Var1)))) {\n      sVar4 = strlen(__s1);\n      sVar5 = strlen(__s);\n      pcVar6 = (char *)xmalloc(sVar4 + 4 + sVar5);\n      __sprintf_chk(pcVar6,1,0xffffffff,"%s (%s)",__s1,__s);\n      if (local_24 != (char *)0x0) {\n        free(local_24);\n      }\n      goto joined_r0x00014a36;\n    }" statement_identifier : (if_statement "if (((name_utf8 == (char *)0x0) || (_Var1 = mbsstr_trimmed_wordbounded(__s1,name_utf8), !_Var1))\n       && ((sub == (char *)0x0 || (_Var1 = mbsstr_trimmed_wordbounded(__s1,sub), !_Var1)))) {\n      sVar4 = strlen(__s1);\n      sVar5 = strlen(__s);\n      pcVar6 = (char *)xmalloc(sVar4 + 4 + sVar5);\n      __sprintf_chk(pcVar6,1,0xffffffff,"%s (%s)",__s1,__s);\n      if (local_24 != (char *)0x0) {\n        free(local_24);\n      }\n      goto joined_r0x00014a36;\n    }" if (parenthesized_expression "(((name_utf8 == (char *)0x0) || (_Var1 = mbsstr_trimmed_wordbounded(__s1,name_utf8), !_Var1))\n       && ((sub == (char *)0x0 || (_Var1 = mbsstr_trimmed_wordbounded(__s1,sub), !_Var1))))" ( (binary_expression "((name_utf8 == (char *)0x0) || (_Var1 = mbsstr_trimmed_wordbounded(__s1,name_utf8), !_Var1))\n       && ((sub == (char *)0x0 || (_Var1 = mbsstr_trimmed_wordbounded(__s1,sub), !_Var1)))" (parenthesized_expression "((name_utf8 == (char *)0x0) || (_Var1 = mbsstr_trimmed_wordbounded(__s1,name_utf8), !_Var1))" ( (binary_expression "(name_utf8 == (char *)0x0) || (_Var1 = mbsstr_trimmed_wordbounded(__s1,name_utf8), !_Var1)" (parenthesized_expression "(name_utf8 == (char *)0x0)" ( (binary_expression "name_utf8 == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) || (parenthesized_expression "(_Var1 = mbsstr_trimmed_wordbounded(__s1,name_utf8), !_Var1)" ( (comma_expression "_Var1 = mbsstr_trimmed_wordbounded(__s1,name_utf8), !_Var1" (assignment_expression "_Var1 = mbsstr_trimmed_wordbounded(__s1,name_utf8)" identifier = (call_expression "mbsstr_trimmed_wordbounded(__s1,name_utf8)" identifier (argument_list "(__s1,name_utf8)" ( identifier , identifier )))) , (unary_expression "!_Var1" ! identifier)) ))) )) && (parenthesized_expression "((sub == (char *)0x0 || (_Var1 = mbsstr_trimmed_wordbounded(__s1,sub), !_Var1)))" ( (parenthesized_expression "(sub == (char *)0x0 || (_Var1 = mbsstr_trimmed_wordbounded(__s1,sub), !_Var1))" ( (binary_expression "sub == (char *)0x0 || (_Var1 = mbsstr_trimmed_wordbounded(__s1,sub), !_Var1)" (binary_expression "sub == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) || (parenthesized_expression "(_Var1 = mbsstr_trimmed_wordbounded(__s1,sub), !_Var1)" ( (comma_expression "_Var1 = mbsstr_trimmed_wordbounded(__s1,sub), !_Var1" (assignment_expression "_Var1 = mbsstr_trimmed_wordbounded(__s1,sub)" identifier = (call_expression "mbsstr_trimmed_wordbounded(__s1,sub)" identifier (argument_list "(__s1,sub)" ( identifier , identifier )))) , (unary_expression "!_Var1" ! identifier)) ))) )) ))) )) (compound_statement "{\n      sVar4 = strlen(__s1);\n      sVar5 = strlen(__s);\n      pcVar6 = (char *)xmalloc(sVar4 + 4 + sVar5);\n      __sprintf_chk(pcVar6,1,0xffffffff,"%s (%s)",__s1,__s);\n      if (local_24 != (char *)0x0) {\n        free(local_24);\n      }\n      goto joined_r0x00014a36;\n    }" { (expression_statement "sVar4 = strlen(__s1);" (assignment_expression "sVar4 = strlen(__s1)" identifier = (call_expression "strlen(__s1)" identifier (argument_list "(__s1)" ( identifier )))) ;) (expression_statement "sVar5 = strlen(__s);" (assignment_expression "sVar5 = strlen(__s)" identifier = (call_expression "strlen(__s)" identifier (argument_list "(__s)" ( identifier )))) ;) (expression_statement "pcVar6 = (char *)xmalloc(sVar4 + 4 + sVar5);" (assignment_expression "pcVar6 = (char *)xmalloc(sVar4 + 4 + sVar5)" identifier = (cast_expression "(char *)xmalloc(sVar4 + 4 + sVar5)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "xmalloc(sVar4 + 4 + sVar5)" identifier (argument_list "(sVar4 + 4 + sVar5)" ( (binary_expression "sVar4 + 4 + sVar5" (binary_expression "sVar4 + 4" identifier + number_literal) + identifier) ))))) ;) (expression_statement "__sprintf_chk(pcVar6,1,0xffffffff,"%s (%s)",__s1,__s);" (call_expression "__sprintf_chk(pcVar6,1,0xffffffff,"%s (%s)",__s1,__s)" identifier (argument_list "(pcVar6,1,0xffffffff,"%s (%s)",__s1,__s)" ( identifier , number_literal , number_literal , (string_literal ""%s (%s)"" " string_content ") , identifier , identifier ))) ;) (if_statement "if (local_24 != (char *)0x0) {\n        free(local_24);\n      }" if (parenthesized_expression "(local_24 != (char *)0x0)" ( (binary_expression "local_24 != (char *)0x0" identifier != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        free(local_24);\n      }" { (expression_statement "free(local_24);" (call_expression "free(local_24)" identifier (argument_list "(local_24)" ( identifier ))) ;) })) (goto_statement "goto joined_r0x00014a36;" goto statement_identifier ;) }))) (if_statement "if (local_24 == (char *)0x0) goto joined_r0x00014a36;" if (parenthesized_expression "(local_24 == (char *)0x0)" ( (binary_expression "local_24 == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto joined_r0x00014a36;" goto statement_identifier ;)) }) (else_clause "else {\n    __s = xstr_iconv(name_utf8,"UTF-8",pcVar2);\n    sVar4 = strlen(pcVar2);\n    pcVar7 = (char *)xmalloc(sVar4 + 0xb);\n    memcpy(pcVar7,pcVar2,sVar4);\n    builtin_strncpy(pcVar7 + sVar4,"//TRANSLIT",0xb);\n    pcVar2 = xstr_iconv(name_utf8,"UTF-8",pcVar7);\n    free(pcVar7);\n    if (pcVar2 == (char *)0x0) {\n      if (__s != (char *)0x0) goto LAB_00014b81;\nLAB_00014bfc:\n      name_utf8 = (char *)0x0;\n      pcVar2 = name_ascii;\n      pcVar7 = (char *)0x0;\n      sub = (char *)0x0;\n      goto LAB_000149d0;\n    }\n    pcVar7 = strchr(pcVar2,0x3f);\n    if (pcVar7 == (char *)0x0) {\n      pcVar7 = pcVar2;\n      if (__s == (char *)0x0) {\n        name_utf8 = (char *)0x0;\n        sub = pcVar2;\n        goto LAB_000149d0;\n      }\n      iVar3 = strcmp(__s1,name_ascii);\n      if (iVar3 == 0) {\n        if (__s == pcVar2) {\n          return __s;\n        }\n        free(pcVar2);\n        return __s;\n      }\n    }\n    else {\n      free(pcVar2);\n      if (__s == (char *)0x0) goto LAB_00014bfc;\nLAB_00014b81:\n      iVar3 = strcmp(__s1,name_ascii);\n      if (iVar3 == 0) {\n        return __s;\n      }\n      pcVar7 = (char *)0x0;\n    }\n    _Var1 = mbsstr_trimmed_wordbounded(__s1,name_ascii);\n    sub = pcVar7;\n    name_utf8 = __s;\n    local_24 = __s;\n    if (!_Var1) goto LAB_00014a00;\n  }" else (compound_statement "{\n    __s = xstr_iconv(name_utf8,"UTF-8",pcVar2);\n    sVar4 = strlen(pcVar2);\n    pcVar7 = (char *)xmalloc(sVar4 + 0xb);\n    memcpy(pcVar7,pcVar2,sVar4);\n    builtin_strncpy(pcVar7 + sVar4,"//TRANSLIT",0xb);\n    pcVar2 = xstr_iconv(name_utf8,"UTF-8",pcVar7);\n    free(pcVar7);\n    if (pcVar2 == (char *)0x0) {\n      if (__s != (char *)0x0) goto LAB_00014b81;\nLAB_00014bfc:\n      name_utf8 = (char *)0x0;\n      pcVar2 = name_ascii;\n      pcVar7 = (char *)0x0;\n      sub = (char *)0x0;\n      goto LAB_000149d0;\n    }\n    pcVar7 = strchr(pcVar2,0x3f);\n    if (pcVar7 == (char *)0x0) {\n      pcVar7 = pcVar2;\n      if (__s == (char *)0x0) {\n        name_utf8 = (char *)0x0;\n        sub = pcVar2;\n        goto LAB_000149d0;\n      }\n      iVar3 = strcmp(__s1,name_ascii);\n      if (iVar3 == 0) {\n        if (__s == pcVar2) {\n          return __s;\n        }\n        free(pcVar2);\n        return __s;\n      }\n    }\n    else {\n      free(pcVar2);\n      if (__s == (char *)0x0) goto LAB_00014bfc;\nLAB_00014b81:\n      iVar3 = strcmp(__s1,name_ascii);\n      if (iVar3 == 0) {\n        return __s;\n      }\n      pcVar7 = (char *)0x0;\n    }\n    _Var1 = mbsstr_trimmed_wordbounded(__s1,name_ascii);\n    sub = pcVar7;\n    name_utf8 = __s;\n    local_24 = __s;\n    if (!_Var1) goto LAB_00014a00;\n  }" { (expression_statement "__s = xstr_iconv(name_utf8,"UTF-8",pcVar2);" (assignment_expression "__s = xstr_iconv(name_utf8,"UTF-8",pcVar2)" identifier = (call_expression "xstr_iconv(name_utf8,"UTF-8",pcVar2)" identifier (argument_list "(name_utf8,"UTF-8",pcVar2)" ( identifier , (string_literal ""UTF-8"" " string_content ") , identifier )))) ;) (expression_statement "sVar4 = strlen(pcVar2);" (assignment_expression "sVar4 = strlen(pcVar2)" identifier = (call_expression "strlen(pcVar2)" identifier (argument_list "(pcVar2)" ( identifier )))) ;) (expression_statement "pcVar7 = (char *)xmalloc(sVar4 + 0xb);" (assignment_expression "pcVar7 = (char *)xmalloc(sVar4 + 0xb)" identifier = (cast_expression "(char *)xmalloc(sVar4 + 0xb)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "xmalloc(sVar4 + 0xb)" identifier (argument_list "(sVar4 + 0xb)" ( (binary_expression "sVar4 + 0xb" identifier + number_literal) ))))) ;) (expression_statement "memcpy(pcVar7,pcVar2,sVar4);" (call_expression "memcpy(pcVar7,pcVar2,sVar4)" identifier (argument_list "(pcVar7,pcVar2,sVar4)" ( identifier , identifier , identifier ))) ;) (expression_statement "builtin_strncpy(pcVar7 + sVar4,"//TRANSLIT",0xb);" (call_expression "builtin_strncpy(pcVar7 + sVar4,"//TRANSLIT",0xb)" identifier (argument_list "(pcVar7 + sVar4,"//TRANSLIT",0xb)" ( (binary_expression "pcVar7 + sVar4" identifier + identifier) , (string_literal ""//TRANSLIT"" " string_content ") , number_literal ))) ;) (expression_statement "pcVar2 = xstr_iconv(name_utf8,"UTF-8",pcVar7);" (assignment_expression "pcVar2 = xstr_iconv(name_utf8,"UTF-8",pcVar7)" identifier = (call_expression "xstr_iconv(name_utf8,"UTF-8",pcVar7)" identifier (argument_list "(name_utf8,"UTF-8",pcVar7)" ( identifier , (string_literal ""UTF-8"" " string_content ") , identifier )))) ;) (expression_statement "free(pcVar7);" (call_expression "free(pcVar7)" identifier (argument_list "(pcVar7)" ( identifier ))) ;) (if_statement "if (pcVar2 == (char *)0x0) {\n      if (__s != (char *)0x0) goto LAB_00014b81;\nLAB_00014bfc:\n      name_utf8 = (char *)0x0;\n      pcVar2 = name_ascii;\n      pcVar7 = (char *)0x0;\n      sub = (char *)0x0;\n      goto LAB_000149d0;\n    }" if (parenthesized_expression "(pcVar2 == (char *)0x0)" ( (binary_expression "pcVar2 == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      if (__s != (char *)0x0) goto LAB_00014b81;\nLAB_00014bfc:\n      name_utf8 = (char *)0x0;\n      pcVar2 = name_ascii;\n      pcVar7 = (char *)0x0;\n      sub = (char *)0x0;\n      goto LAB_000149d0;\n    }" { (if_statement "if (__s != (char *)0x0) goto LAB_00014b81;" if (parenthesized_expression "(__s != (char *)0x0)" ( (binary_expression "__s != (char *)0x0" identifier != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_00014b81;" goto statement_identifier ;)) (labeled_statement "LAB_00014bfc:\n      name_utf8 = (char *)0x0;" statement_identifier : (expression_statement "name_utf8 = (char *)0x0;" (assignment_expression "name_utf8 = (char *)0x0" identifier = (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;)) (expression_statement "pcVar2 = name_ascii;" (assignment_expression "pcVar2 = name_ascii" identifier = identifier) ;) (expression_statement "pcVar7 = (char *)0x0;" (assignment_expression "pcVar7 = (char *)0x0" identifier = (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "sub = (char *)0x0;" (assignment_expression "sub = (char *)0x0" identifier = (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (goto_statement "goto LAB_000149d0;" goto statement_identifier ;) })) (expression_statement "pcVar7 = strchr(pcVar2,0x3f);" (assignment_expression "pcVar7 = strchr(pcVar2,0x3f)" identifier = (call_expression "strchr(pcVar2,0x3f)" identifier (argument_list "(pcVar2,0x3f)" ( identifier , number_literal )))) ;) (if_statement "if (pcVar7 == (char *)0x0) {\n      pcVar7 = pcVar2;\n      if (__s == (char *)0x0) {\n        name_utf8 = (char *)0x0;\n        sub = pcVar2;\n        goto LAB_000149d0;\n      }\n      iVar3 = strcmp(__s1,name_ascii);\n      if (iVar3 == 0) {\n        if (__s == pcVar2) {\n          return __s;\n        }\n        free(pcVar2);\n        return __s;\n      }\n    }\n    else {\n      free(pcVar2);\n      if (__s == (char *)0x0) goto LAB_00014bfc;\nLAB_00014b81:\n      iVar3 = strcmp(__s1,name_ascii);\n      if (iVar3 == 0) {\n        return __s;\n      }\n      pcVar7 = (char *)0x0;\n    }" if (parenthesized_expression "(pcVar7 == (char *)0x0)" ( (binary_expression "pcVar7 == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      pcVar7 = pcVar2;\n      if (__s == (char *)0x0) {\n        name_utf8 = (char *)0x0;\n        sub = pcVar2;\n        goto LAB_000149d0;\n      }\n      iVar3 = strcmp(__s1,name_ascii);\n      if (iVar3 == 0) {\n        if (__s == pcVar2) {\n          return __s;\n        }\n        free(pcVar2);\n        return __s;\n      }\n    }" { (expression_statement "pcVar7 = pcVar2;" (assignment_expression "pcVar7 = pcVar2" identifier = identifier) ;) (if_statement "if (__s == (char *)0x0) {\n        name_utf8 = (char *)0x0;\n        sub = pcVar2;\n        goto LAB_000149d0;\n      }" if (parenthesized_expression "(__s == (char *)0x0)" ( (binary_expression "__s == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        name_utf8 = (char *)0x0;\n        sub = pcVar2;\n        goto LAB_000149d0;\n      }" { (expression_statement "name_utf8 = (char *)0x0;" (assignment_expression "name_utf8 = (char *)0x0" identifier = (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "sub = pcVar2;" (assignment_expression "sub = pcVar2" identifier = identifier) ;) (goto_statement "goto LAB_000149d0;" goto statement_identifier ;) })) (expression_statement "iVar3 = strcmp(__s1,name_ascii);" (assignment_expression "iVar3 = strcmp(__s1,name_ascii)" identifier = (call_expression "strcmp(__s1,name_ascii)" identifier (argument_list "(__s1,name_ascii)" ( identifier , identifier )))) ;) (if_statement "if (iVar3 == 0) {\n        if (__s == pcVar2) {\n          return __s;\n        }\n        free(pcVar2);\n        return __s;\n      }" if (parenthesized_expression "(iVar3 == 0)" ( (binary_expression "iVar3 == 0" identifier == number_literal) )) (compound_statement "{\n        if (__s == pcVar2) {\n          return __s;\n        }\n        free(pcVar2);\n        return __s;\n      }" { (if_statement "if (__s == pcVar2) {\n          return __s;\n        }" if (parenthesized_expression "(__s == pcVar2)" ( (binary_expression "__s == pcVar2" identifier == identifier) )) (compound_statement "{\n          return __s;\n        }" { (return_statement "return __s;" return identifier ;) })) (expression_statement "free(pcVar2);" (call_expression "free(pcVar2)" identifier (argument_list "(pcVar2)" ( identifier ))) ;) (return_statement "return __s;" return identifier ;) })) }) (else_clause "else {\n      free(pcVar2);\n      if (__s == (char *)0x0) goto LAB_00014bfc;\nLAB_00014b81:\n      iVar3 = strcmp(__s1,name_ascii);\n      if (iVar3 == 0) {\n        return __s;\n      }\n      pcVar7 = (char *)0x0;\n    }" else (compound_statement "{\n      free(pcVar2);\n      if (__s == (char *)0x0) goto LAB_00014bfc;\nLAB_00014b81:\n      iVar3 = strcmp(__s1,name_ascii);\n      if (iVar3 == 0) {\n        return __s;\n      }\n      pcVar7 = (char *)0x0;\n    }" { (expression_statement "free(pcVar2);" (call_expression "free(pcVar2)" identifier (argument_list "(pcVar2)" ( identifier ))) ;) (if_statement "if (__s == (char *)0x0) goto LAB_00014bfc;" if (parenthesized_expression "(__s == (char *)0x0)" ( (binary_expression "__s == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_00014bfc;" goto statement_identifier ;)) (labeled_statement "LAB_00014b81:\n      iVar3 = strcmp(__s1,name_ascii);" statement_identifier : (expression_statement "iVar3 = strcmp(__s1,name_ascii);" (assignment_expression "iVar3 = strcmp(__s1,name_ascii)" identifier = (call_expression "strcmp(__s1,name_ascii)" identifier (argument_list "(__s1,name_ascii)" ( identifier , identifier )))) ;)) (if_statement "if (iVar3 == 0) {\n        return __s;\n      }" if (parenthesized_expression "(iVar3 == 0)" ( (binary_expression "iVar3 == 0" identifier == number_literal) )) (compound_statement "{\n        return __s;\n      }" { (return_statement "return __s;" return identifier ;) })) (expression_statement "pcVar7 = (char *)0x0;" (assignment_expression "pcVar7 = (char *)0x0" identifier = (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) }))) (expression_statement "_Var1 = mbsstr_trimmed_wordbounded(__s1,name_ascii);" (assignment_expression "_Var1 = mbsstr_trimmed_wordbounded(__s1,name_ascii)" identifier = (call_expression "mbsstr_trimmed_wordbounded(__s1,name_ascii)" identifier (argument_list "(__s1,name_ascii)" ( identifier , identifier )))) ;) (expression_statement "sub = pcVar7;" (assignment_expression "sub = pcVar7" identifier = identifier) ;) (expression_statement "name_utf8 = __s;" (assignment_expression "name_utf8 = __s" identifier = identifier) ;) (expression_statement "local_24 = __s;" (assignment_expression "local_24 = __s" identifier = identifier) ;) (if_statement "if (!_Var1) goto LAB_00014a00;" if (parenthesized_expression "(!_Var1)" ( (unary_expression "!_Var1" ! identifier) )) (goto_statement "goto LAB_00014a00;" goto statement_identifier ;)) }))) (expression_statement "free(local_24);" (call_expression "free(local_24)" identifier (argument_list "(local_24)" ( identifier ))) ;) (labeled_statement "joined_r0x00014a36:\n  if (pcVar7 != (char *)0x0) {\n    free(pcVar7);\n  }" statement_identifier : (if_statement "if (pcVar7 != (char *)0x0) {\n    free(pcVar7);\n  }" if (parenthesized_expression "(pcVar7 != (char *)0x0)" ( (binary_expression "pcVar7 != (char *)0x0" identifier != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    free(pcVar7);\n  }" { (expression_statement "free(pcVar7);" (call_expression "free(pcVar7)" identifier (argument_list "(pcVar7)" ( identifier ))) ;) }))) (return_statement "return pcVar6;" return identifier ;) })))
(translation_unit "char * FUN_00014970(char *param_1,char *param_2)\n\n{\n  char cVar1;\n  char *__s1;\n  char *pcVar2;\n  int iVar3;\n  size_t sVar4;\n  size_t sVar5;\n  char *pcVar6;\n  char *__s;\n  void *__dest;\n  char *pcVar7;\n  char *pcVar8;\n  undefined4 *puVar9;\n  char *local_24;\n  \n  __s1 = (char *)dcgettext(0,param_1,5);\n  pcVar2 = (char *)FUN_00017150();\n  iVar3 = FUN_00016e00(pcVar2,"UTF-8");\n  pcVar6 = __s1;\n  if (iVar3 == 0) {\n    if (param_2 == (char *)0x0) {\n      pcVar2 = param_1;\n      pcVar7 = (char *)0x0;\n      pcVar8 = (char *)0x0;\n    }\n    else {\n      pcVar2 = param_2;\n      pcVar7 = (char *)0x0;\n      pcVar8 = param_2;\n    }\nLAB_000149d0:\n    iVar3 = strcmp(__s1,param_1);\n    if (iVar3 == 0) {\n      return pcVar2;\n    }\n    cVar1 = FUN_00013fe0();\n    if (cVar1 != '\0') goto joined_r0x00014a36;\n    local_24 = (char *)0x0;\n    __s = pcVar2;\nLAB_00014a00:\n    if (((param_2 == (char *)0x0) || (cVar1 = FUN_00013fe0(), cVar1 == '\0')) &&\n       ((pcVar8 == (char *)0x0 || (cVar1 = FUN_00013fe0(), cVar1 == '\0')))) {\n      sVar4 = strlen(__s1);\n      sVar5 = strlen(__s);\n      pcVar6 = (char *)FUN_00015880(sVar4 + 4 + sVar5);\n      __sprintf_chk(pcVar6,1,0xffffffff,"%s (%s)",__s1,__s);\n      if (local_24 != (char *)0x0) {\n        free(local_24);\n      }\n      goto joined_r0x00014a36;\n    }\n    if (local_24 == (char *)0x0) goto joined_r0x00014a36;\n  }\n  else {\n    __s = (char *)FUN_00015d40(param_2,"UTF-8",pcVar2);\n    sVar4 = strlen(pcVar2);\n    __dest = (void *)FUN_00015880(sVar4 + 0xb);\n    memcpy(__dest,pcVar2,sVar4);\n    puVar9 = (undefined4 *)(sVar4 + (int)__dest);\n    *puVar9 = 0x52542f2f;\n    puVar9[1] = 0x4c534e41;\n    *(undefined2 *)(puVar9 + 2) = 0x5449;\n    *(undefined1 *)((int)puVar9 + 10) = 0;\n    pcVar2 = (char *)FUN_00015d40(param_2,"UTF-8",__dest);\n    free(__dest);\n    if (pcVar2 == (char *)0x0) {\n      if (__s != (char *)0x0) goto LAB_00014b81;\nLAB_00014bfc:\n      param_2 = (char *)0x0;\n      pcVar2 = param_1;\n      pcVar7 = (char *)0x0;\n      pcVar8 = (char *)0x0;\n      goto LAB_000149d0;\n    }\n    pcVar7 = strchr(pcVar2,0x3f);\n    if (pcVar7 == (char *)0x0) {\n      pcVar7 = pcVar2;\n      if (__s == (char *)0x0) {\n        param_2 = (char *)0x0;\n        pcVar8 = pcVar2;\n        goto LAB_000149d0;\n      }\n      iVar3 = strcmp(__s1,param_1);\n      if (iVar3 == 0) {\n        if (__s == pcVar2) {\n          return __s;\n        }\n        free(pcVar2);\n        return __s;\n      }\n    }\n    else {\n      free(pcVar2);\n      if (__s == (char *)0x0) goto LAB_00014bfc;\nLAB_00014b81:\n      iVar3 = strcmp(__s1,param_1);\n      if (iVar3 == 0) {\n        return __s;\n      }\n      pcVar7 = (char *)0x0;\n    }\n    cVar1 = FUN_00013fe0();\n    pcVar8 = pcVar7;\n    param_2 = __s;\n    local_24 = __s;\n    if (cVar1 == '\0') goto LAB_00014a00;\n  }\n  free(local_24);\njoined_r0x00014a36:\n  if (pcVar7 != (char *)0x0) {\n    free(pcVar7);\n  }\n  return pcVar6;\n}\n\n" (function_definition "char * FUN_00014970(char *param_1,char *param_2)\n\n{\n  char cVar1;\n  char *__s1;\n  char *pcVar2;\n  int iVar3;\n  size_t sVar4;\n  size_t sVar5;\n  char *pcVar6;\n  char *__s;\n  void *__dest;\n  char *pcVar7;\n  char *pcVar8;\n  undefined4 *puVar9;\n  char *local_24;\n  \n  __s1 = (char *)dcgettext(0,param_1,5);\n  pcVar2 = (char *)FUN_00017150();\n  iVar3 = FUN_00016e00(pcVar2,"UTF-8");\n  pcVar6 = __s1;\n  if (iVar3 == 0) {\n    if (param_2 == (char *)0x0) {\n      pcVar2 = param_1;\n      pcVar7 = (char *)0x0;\n      pcVar8 = (char *)0x0;\n    }\n    else {\n      pcVar2 = param_2;\n      pcVar7 = (char *)0x0;\n      pcVar8 = param_2;\n    }\nLAB_000149d0:\n    iVar3 = strcmp(__s1,param_1);\n    if (iVar3 == 0) {\n      return pcVar2;\n    }\n    cVar1 = FUN_00013fe0();\n    if (cVar1 != '\0') goto joined_r0x00014a36;\n    local_24 = (char *)0x0;\n    __s = pcVar2;\nLAB_00014a00:\n    if (((param_2 == (char *)0x0) || (cVar1 = FUN_00013fe0(), cVar1 == '\0')) &&\n       ((pcVar8 == (char *)0x0 || (cVar1 = FUN_00013fe0(), cVar1 == '\0')))) {\n      sVar4 = strlen(__s1);\n      sVar5 = strlen(__s);\n      pcVar6 = (char *)FUN_00015880(sVar4 + 4 + sVar5);\n      __sprintf_chk(pcVar6,1,0xffffffff,"%s (%s)",__s1,__s);\n      if (local_24 != (char *)0x0) {\n        free(local_24);\n      }\n      goto joined_r0x00014a36;\n    }\n    if (local_24 == (char *)0x0) goto joined_r0x00014a36;\n  }\n  else {\n    __s = (char *)FUN_00015d40(param_2,"UTF-8",pcVar2);\n    sVar4 = strlen(pcVar2);\n    __dest = (void *)FUN_00015880(sVar4 + 0xb);\n    memcpy(__dest,pcVar2,sVar4);\n    puVar9 = (undefined4 *)(sVar4 + (int)__dest);\n    *puVar9 = 0x52542f2f;\n    puVar9[1] = 0x4c534e41;\n    *(undefined2 *)(puVar9 + 2) = 0x5449;\n    *(undefined1 *)((int)puVar9 + 10) = 0;\n    pcVar2 = (char *)FUN_00015d40(param_2,"UTF-8",__dest);\n    free(__dest);\n    if (pcVar2 == (char *)0x0) {\n      if (__s != (char *)0x0) goto LAB_00014b81;\nLAB_00014bfc:\n      param_2 = (char *)0x0;\n      pcVar2 = param_1;\n      pcVar7 = (char *)0x0;\n      pcVar8 = (char *)0x0;\n      goto LAB_000149d0;\n    }\n    pcVar7 = strchr(pcVar2,0x3f);\n    if (pcVar7 == (char *)0x0) {\n      pcVar7 = pcVar2;\n      if (__s == (char *)0x0) {\n        param_2 = (char *)0x0;\n        pcVar8 = pcVar2;\n        goto LAB_000149d0;\n      }\n      iVar3 = strcmp(__s1,param_1);\n      if (iVar3 == 0) {\n        if (__s == pcVar2) {\n          return __s;\n        }\n        free(pcVar2);\n        return __s;\n      }\n    }\n    else {\n      free(pcVar2);\n      if (__s == (char *)0x0) goto LAB_00014bfc;\nLAB_00014b81:\n      iVar3 = strcmp(__s1,param_1);\n      if (iVar3 == 0) {\n        return __s;\n      }\n      pcVar7 = (char *)0x0;\n    }\n    cVar1 = FUN_00013fe0();\n    pcVar8 = pcVar7;\n    param_2 = __s;\n    local_24 = __s;\n    if (cVar1 == '\0') goto LAB_00014a00;\n  }\n  free(local_24);\njoined_r0x00014a36:\n  if (pcVar7 != (char *)0x0) {\n    free(pcVar7);\n  }\n  return pcVar6;\n}" primitive_type (pointer_declarator "* FUN_00014970(char *param_1,char *param_2)" * (function_declarator "FUN_00014970(char *param_1,char *param_2)" identifier (parameter_list "(char *param_1,char *param_2)" ( (parameter_declaration "char *param_1" primitive_type (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "char *param_2" primitive_type (pointer_declarator "*param_2" * identifier)) )))) (compound_statement "{\n  char cVar1;\n  char *__s1;\n  char *pcVar2;\n  int iVar3;\n  size_t sVar4;\n  size_t sVar5;\n  char *pcVar6;\n  char *__s;\n  void *__dest;\n  char *pcVar7;\n  char *pcVar8;\n  undefined4 *puVar9;\n  char *local_24;\n  \n  __s1 = (char *)dcgettext(0,param_1,5);\n  pcVar2 = (char *)FUN_00017150();\n  iVar3 = FUN_00016e00(pcVar2,"UTF-8");\n  pcVar6 = __s1;\n  if (iVar3 == 0) {\n    if (param_2 == (char *)0x0) {\n      pcVar2 = param_1;\n      pcVar7 = (char *)0x0;\n      pcVar8 = (char *)0x0;\n    }\n    else {\n      pcVar2 = param_2;\n      pcVar7 = (char *)0x0;\n      pcVar8 = param_2;\n    }\nLAB_000149d0:\n    iVar3 = strcmp(__s1,param_1);\n    if (iVar3 == 0) {\n      return pcVar2;\n    }\n    cVar1 = FUN_00013fe0();\n    if (cVar1 != '\0') goto joined_r0x00014a36;\n    local_24 = (char *)0x0;\n    __s = pcVar2;\nLAB_00014a00:\n    if (((param_2 == (char *)0x0) || (cVar1 = FUN_00013fe0(), cVar1 == '\0')) &&\n       ((pcVar8 == (char *)0x0 || (cVar1 = FUN_00013fe0(), cVar1 == '\0')))) {\n      sVar4 = strlen(__s1);\n      sVar5 = strlen(__s);\n      pcVar6 = (char *)FUN_00015880(sVar4 + 4 + sVar5);\n      __sprintf_chk(pcVar6,1,0xffffffff,"%s (%s)",__s1,__s);\n      if (local_24 != (char *)0x0) {\n        free(local_24);\n      }\n      goto joined_r0x00014a36;\n    }\n    if (local_24 == (char *)0x0) goto joined_r0x00014a36;\n  }\n  else {\n    __s = (char *)FUN_00015d40(param_2,"UTF-8",pcVar2);\n    sVar4 = strlen(pcVar2);\n    __dest = (void *)FUN_00015880(sVar4 + 0xb);\n    memcpy(__dest,pcVar2,sVar4);\n    puVar9 = (undefined4 *)(sVar4 + (int)__dest);\n    *puVar9 = 0x52542f2f;\n    puVar9[1] = 0x4c534e41;\n    *(undefined2 *)(puVar9 + 2) = 0x5449;\n    *(undefined1 *)((int)puVar9 + 10) = 0;\n    pcVar2 = (char *)FUN_00015d40(param_2,"UTF-8",__dest);\n    free(__dest);\n    if (pcVar2 == (char *)0x0) {\n      if (__s != (char *)0x0) goto LAB_00014b81;\nLAB_00014bfc:\n      param_2 = (char *)0x0;\n      pcVar2 = param_1;\n      pcVar7 = (char *)0x0;\n      pcVar8 = (char *)0x0;\n      goto LAB_000149d0;\n    }\n    pcVar7 = strchr(pcVar2,0x3f);\n    if (pcVar7 == (char *)0x0) {\n      pcVar7 = pcVar2;\n      if (__s == (char *)0x0) {\n        param_2 = (char *)0x0;\n        pcVar8 = pcVar2;\n        goto LAB_000149d0;\n      }\n      iVar3 = strcmp(__s1,param_1);\n      if (iVar3 == 0) {\n        if (__s == pcVar2) {\n          return __s;\n        }\n        free(pcVar2);\n        return __s;\n      }\n    }\n    else {\n      free(pcVar2);\n      if (__s == (char *)0x0) goto LAB_00014bfc;\nLAB_00014b81:\n      iVar3 = strcmp(__s1,param_1);\n      if (iVar3 == 0) {\n        return __s;\n      }\n      pcVar7 = (char *)0x0;\n    }\n    cVar1 = FUN_00013fe0();\n    pcVar8 = pcVar7;\n    param_2 = __s;\n    local_24 = __s;\n    if (cVar1 == '\0') goto LAB_00014a00;\n  }\n  free(local_24);\njoined_r0x00014a36:\n  if (pcVar7 != (char *)0x0) {\n    free(pcVar7);\n  }\n  return pcVar6;\n}" { (declaration "char cVar1;" primitive_type identifier ;) (declaration "char *__s1;" primitive_type (pointer_declarator "*__s1" * identifier) ;) (declaration "char *pcVar2;" primitive_type (pointer_declarator "*pcVar2" * identifier) ;) (declaration "int iVar3;" primitive_type identifier ;) (declaration "size_t sVar4;" primitive_type identifier ;) (declaration "size_t sVar5;" primitive_type identifier ;) (declaration "char *pcVar6;" primitive_type (pointer_declarator "*pcVar6" * identifier) ;) (declaration "char *__s;" primitive_type (pointer_declarator "*__s" * identifier) ;) (declaration "void *__dest;" primitive_type (pointer_declarator "*__dest" * identifier) ;) (declaration "char *pcVar7;" primitive_type (pointer_declarator "*pcVar7" * identifier) ;) (declaration "char *pcVar8;" primitive_type (pointer_declarator "*pcVar8" * identifier) ;) (declaration "undefined4 *puVar9;" type_identifier (pointer_declarator "*puVar9" * identifier) ;) (declaration "char *local_24;" primitive_type (pointer_declarator "*local_24" * identifier) ;) (expression_statement "__s1 = (char *)dcgettext(0,param_1,5);" (assignment_expression "__s1 = (char *)dcgettext(0,param_1,5)" identifier = (cast_expression "(char *)dcgettext(0,param_1,5)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "dcgettext(0,param_1,5)" identifier (argument_list "(0,param_1,5)" ( number_literal , identifier , number_literal ))))) ;) (expression_statement "pcVar2 = (char *)FUN_00017150();" (assignment_expression "pcVar2 = (char *)FUN_00017150()" identifier = (cast_expression "(char *)FUN_00017150()" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00017150()" identifier (argument_list "()" ( ))))) ;) (expression_statement "iVar3 = FUN_00016e00(pcVar2,"UTF-8");" (assignment_expression "iVar3 = FUN_00016e00(pcVar2,"UTF-8")" identifier = (call_expression "FUN_00016e00(pcVar2,"UTF-8")" identifier (argument_list "(pcVar2,"UTF-8")" ( identifier , (string_literal ""UTF-8"" " string_content ") )))) ;) (expression_statement "pcVar6 = __s1;" (assignment_expression "pcVar6 = __s1" identifier = identifier) ;) (if_statement "if (iVar3 == 0) {\n    if (param_2 == (char *)0x0) {\n      pcVar2 = param_1;\n      pcVar7 = (char *)0x0;\n      pcVar8 = (char *)0x0;\n    }\n    else {\n      pcVar2 = param_2;\n      pcVar7 = (char *)0x0;\n      pcVar8 = param_2;\n    }\nLAB_000149d0:\n    iVar3 = strcmp(__s1,param_1);\n    if (iVar3 == 0) {\n      return pcVar2;\n    }\n    cVar1 = FUN_00013fe0();\n    if (cVar1 != '\0') goto joined_r0x00014a36;\n    local_24 = (char *)0x0;\n    __s = pcVar2;\nLAB_00014a00:\n    if (((param_2 == (char *)0x0) || (cVar1 = FUN_00013fe0(), cVar1 == '\0')) &&\n       ((pcVar8 == (char *)0x0 || (cVar1 = FUN_00013fe0(), cVar1 == '\0')))) {\n      sVar4 = strlen(__s1);\n      sVar5 = strlen(__s);\n      pcVar6 = (char *)FUN_00015880(sVar4 + 4 + sVar5);\n      __sprintf_chk(pcVar6,1,0xffffffff,"%s (%s)",__s1,__s);\n      if (local_24 != (char *)0x0) {\n        free(local_24);\n      }\n      goto joined_r0x00014a36;\n    }\n    if (local_24 == (char *)0x0) goto joined_r0x00014a36;\n  }\n  else {\n    __s = (char *)FUN_00015d40(param_2,"UTF-8",pcVar2);\n    sVar4 = strlen(pcVar2);\n    __dest = (void *)FUN_00015880(sVar4 + 0xb);\n    memcpy(__dest,pcVar2,sVar4);\n    puVar9 = (undefined4 *)(sVar4 + (int)__dest);\n    *puVar9 = 0x52542f2f;\n    puVar9[1] = 0x4c534e41;\n    *(undefined2 *)(puVar9 + 2) = 0x5449;\n    *(undefined1 *)((int)puVar9 + 10) = 0;\n    pcVar2 = (char *)FUN_00015d40(param_2,"UTF-8",__dest);\n    free(__dest);\n    if (pcVar2 == (char *)0x0) {\n      if (__s != (char *)0x0) goto LAB_00014b81;\nLAB_00014bfc:\n      param_2 = (char *)0x0;\n      pcVar2 = param_1;\n      pcVar7 = (char *)0x0;\n      pcVar8 = (char *)0x0;\n      goto LAB_000149d0;\n    }\n    pcVar7 = strchr(pcVar2,0x3f);\n    if (pcVar7 == (char *)0x0) {\n      pcVar7 = pcVar2;\n      if (__s == (char *)0x0) {\n        param_2 = (char *)0x0;\n        pcVar8 = pcVar2;\n        goto LAB_000149d0;\n      }\n      iVar3 = strcmp(__s1,param_1);\n      if (iVar3 == 0) {\n        if (__s == pcVar2) {\n          return __s;\n        }\n        free(pcVar2);\n        return __s;\n      }\n    }\n    else {\n      free(pcVar2);\n      if (__s == (char *)0x0) goto LAB_00014bfc;\nLAB_00014b81:\n      iVar3 = strcmp(__s1,param_1);\n      if (iVar3 == 0) {\n        return __s;\n      }\n      pcVar7 = (char *)0x0;\n    }\n    cVar1 = FUN_00013fe0();\n    pcVar8 = pcVar7;\n    param_2 = __s;\n    local_24 = __s;\n    if (cVar1 == '\0') goto LAB_00014a00;\n  }" if (parenthesized_expression "(iVar3 == 0)" ( (binary_expression "iVar3 == 0" identifier == number_literal) )) (compound_statement "{\n    if (param_2 == (char *)0x0) {\n      pcVar2 = param_1;\n      pcVar7 = (char *)0x0;\n      pcVar8 = (char *)0x0;\n    }\n    else {\n      pcVar2 = param_2;\n      pcVar7 = (char *)0x0;\n      pcVar8 = param_2;\n    }\nLAB_000149d0:\n    iVar3 = strcmp(__s1,param_1);\n    if (iVar3 == 0) {\n      return pcVar2;\n    }\n    cVar1 = FUN_00013fe0();\n    if (cVar1 != '\0') goto joined_r0x00014a36;\n    local_24 = (char *)0x0;\n    __s = pcVar2;\nLAB_00014a00:\n    if (((param_2 == (char *)0x0) || (cVar1 = FUN_00013fe0(), cVar1 == '\0')) &&\n       ((pcVar8 == (char *)0x0 || (cVar1 = FUN_00013fe0(), cVar1 == '\0')))) {\n      sVar4 = strlen(__s1);\n      sVar5 = strlen(__s);\n      pcVar6 = (char *)FUN_00015880(sVar4 + 4 + sVar5);\n      __sprintf_chk(pcVar6,1,0xffffffff,"%s (%s)",__s1,__s);\n      if (local_24 != (char *)0x0) {\n        free(local_24);\n      }\n      goto joined_r0x00014a36;\n    }\n    if (local_24 == (char *)0x0) goto joined_r0x00014a36;\n  }" { (if_statement "if (param_2 == (char *)0x0) {\n      pcVar2 = param_1;\n      pcVar7 = (char *)0x0;\n      pcVar8 = (char *)0x0;\n    }\n    else {\n      pcVar2 = param_2;\n      pcVar7 = (char *)0x0;\n      pcVar8 = param_2;\n    }" if (parenthesized_expression "(param_2 == (char *)0x0)" ( (binary_expression "param_2 == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      pcVar2 = param_1;\n      pcVar7 = (char *)0x0;\n      pcVar8 = (char *)0x0;\n    }" { (expression_statement "pcVar2 = param_1;" (assignment_expression "pcVar2 = param_1" identifier = identifier) ;) (expression_statement "pcVar7 = (char *)0x0;" (assignment_expression "pcVar7 = (char *)0x0" identifier = (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "pcVar8 = (char *)0x0;" (assignment_expression "pcVar8 = (char *)0x0" identifier = (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) }) (else_clause "else {\n      pcVar2 = param_2;\n      pcVar7 = (char *)0x0;\n      pcVar8 = param_2;\n    }" else (compound_statement "{\n      pcVar2 = param_2;\n      pcVar7 = (char *)0x0;\n      pcVar8 = param_2;\n    }" { (expression_statement "pcVar2 = param_2;" (assignment_expression "pcVar2 = param_2" identifier = identifier) ;) (expression_statement "pcVar7 = (char *)0x0;" (assignment_expression "pcVar7 = (char *)0x0" identifier = (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "pcVar8 = param_2;" (assignment_expression "pcVar8 = param_2" identifier = identifier) ;) }))) (labeled_statement "LAB_000149d0:\n    iVar3 = strcmp(__s1,param_1);" statement_identifier : (expression_statement "iVar3 = strcmp(__s1,param_1);" (assignment_expression "iVar3 = strcmp(__s1,param_1)" identifier = (call_expression "strcmp(__s1,param_1)" identifier (argument_list "(__s1,param_1)" ( identifier , identifier )))) ;)) (if_statement "if (iVar3 == 0) {\n      return pcVar2;\n    }" if (parenthesized_expression "(iVar3 == 0)" ( (binary_expression "iVar3 == 0" identifier == number_literal) )) (compound_statement "{\n      return pcVar2;\n    }" { (return_statement "return pcVar2;" return identifier ;) })) (expression_statement "cVar1 = FUN_00013fe0();" (assignment_expression "cVar1 = FUN_00013fe0()" identifier = (call_expression "FUN_00013fe0()" identifier (argument_list "()" ( )))) ;) (if_statement "if (cVar1 != '\0') goto joined_r0x00014a36;" if (parenthesized_expression "(cVar1 != '\0')" ( (binary_expression "cVar1 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) (goto_statement "goto joined_r0x00014a36;" goto statement_identifier ;)) (expression_statement "local_24 = (char *)0x0;" (assignment_expression "local_24 = (char *)0x0" identifier = (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "__s = pcVar2;" (assignment_expression "__s = pcVar2" identifier = identifier) ;) (labeled_statement "LAB_00014a00:\n    if (((param_2 == (char *)0x0) || (cVar1 = FUN_00013fe0(), cVar1 == '\0')) &&\n       ((pcVar8 == (char *)0x0 || (cVar1 = FUN_00013fe0(), cVar1 == '\0')))) {\n      sVar4 = strlen(__s1);\n      sVar5 = strlen(__s);\n      pcVar6 = (char *)FUN_00015880(sVar4 + 4 + sVar5);\n      __sprintf_chk(pcVar6,1,0xffffffff,"%s (%s)",__s1,__s);\n      if (local_24 != (char *)0x0) {\n        free(local_24);\n      }\n      goto joined_r0x00014a36;\n    }" statement_identifier : (if_statement "if (((param_2 == (char *)0x0) || (cVar1 = FUN_00013fe0(), cVar1 == '\0')) &&\n       ((pcVar8 == (char *)0x0 || (cVar1 = FUN_00013fe0(), cVar1 == '\0')))) {\n      sVar4 = strlen(__s1);\n      sVar5 = strlen(__s);\n      pcVar6 = (char *)FUN_00015880(sVar4 + 4 + sVar5);\n      __sprintf_chk(pcVar6,1,0xffffffff,"%s (%s)",__s1,__s);\n      if (local_24 != (char *)0x0) {\n        free(local_24);\n      }\n      goto joined_r0x00014a36;\n    }" if (parenthesized_expression "(((param_2 == (char *)0x0) || (cVar1 = FUN_00013fe0(), cVar1 == '\0')) &&\n       ((pcVar8 == (char *)0x0 || (cVar1 = FUN_00013fe0(), cVar1 == '\0'))))" ( (binary_expression "((param_2 == (char *)0x0) || (cVar1 = FUN_00013fe0(), cVar1 == '\0')) &&\n       ((pcVar8 == (char *)0x0 || (cVar1 = FUN_00013fe0(), cVar1 == '\0')))" (parenthesized_expression "((param_2 == (char *)0x0) || (cVar1 = FUN_00013fe0(), cVar1 == '\0'))" ( (binary_expression "(param_2 == (char *)0x0) || (cVar1 = FUN_00013fe0(), cVar1 == '\0')" (parenthesized_expression "(param_2 == (char *)0x0)" ( (binary_expression "param_2 == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) || (parenthesized_expression "(cVar1 = FUN_00013fe0(), cVar1 == '\0')" ( (comma_expression "cVar1 = FUN_00013fe0(), cVar1 == '\0'" (assignment_expression "cVar1 = FUN_00013fe0()" identifier = (call_expression "FUN_00013fe0()" identifier (argument_list "()" ( )))) , (binary_expression "cVar1 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence '))) ))) )) && (parenthesized_expression "((pcVar8 == (char *)0x0 || (cVar1 = FUN_00013fe0(), cVar1 == '\0')))" ( (parenthesized_expression "(pcVar8 == (char *)0x0 || (cVar1 = FUN_00013fe0(), cVar1 == '\0'))" ( (binary_expression "pcVar8 == (char *)0x0 || (cVar1 = FUN_00013fe0(), cVar1 == '\0')" (binary_expression "pcVar8 == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) || (parenthesized_expression "(cVar1 = FUN_00013fe0(), cVar1 == '\0')" ( (comma_expression "cVar1 = FUN_00013fe0(), cVar1 == '\0'" (assignment_expression "cVar1 = FUN_00013fe0()" identifier = (call_expression "FUN_00013fe0()" identifier (argument_list "()" ( )))) , (binary_expression "cVar1 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence '))) ))) )) ))) )) (compound_statement "{\n      sVar4 = strlen(__s1);\n      sVar5 = strlen(__s);\n      pcVar6 = (char *)FUN_00015880(sVar4 + 4 + sVar5);\n      __sprintf_chk(pcVar6,1,0xffffffff,"%s (%s)",__s1,__s);\n      if (local_24 != (char *)0x0) {\n        free(local_24);\n      }\n      goto joined_r0x00014a36;\n    }" { (expression_statement "sVar4 = strlen(__s1);" (assignment_expression "sVar4 = strlen(__s1)" identifier = (call_expression "strlen(__s1)" identifier (argument_list "(__s1)" ( identifier )))) ;) (expression_statement "sVar5 = strlen(__s);" (assignment_expression "sVar5 = strlen(__s)" identifier = (call_expression "strlen(__s)" identifier (argument_list "(__s)" ( identifier )))) ;) (expression_statement "pcVar6 = (char *)FUN_00015880(sVar4 + 4 + sVar5);" (assignment_expression "pcVar6 = (char *)FUN_00015880(sVar4 + 4 + sVar5)" identifier = (cast_expression "(char *)FUN_00015880(sVar4 + 4 + sVar5)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00015880(sVar4 + 4 + sVar5)" identifier (argument_list "(sVar4 + 4 + sVar5)" ( (binary_expression "sVar4 + 4 + sVar5" (binary_expression "sVar4 + 4" identifier + number_literal) + identifier) ))))) ;) (expression_statement "__sprintf_chk(pcVar6,1,0xffffffff,"%s (%s)",__s1,__s);" (call_expression "__sprintf_chk(pcVar6,1,0xffffffff,"%s (%s)",__s1,__s)" identifier (argument_list "(pcVar6,1,0xffffffff,"%s (%s)",__s1,__s)" ( identifier , number_literal , number_literal , (string_literal ""%s (%s)"" " string_content ") , identifier , identifier ))) ;) (if_statement "if (local_24 != (char *)0x0) {\n        free(local_24);\n      }" if (parenthesized_expression "(local_24 != (char *)0x0)" ( (binary_expression "local_24 != (char *)0x0" identifier != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        free(local_24);\n      }" { (expression_statement "free(local_24);" (call_expression "free(local_24)" identifier (argument_list "(local_24)" ( identifier ))) ;) })) (goto_statement "goto joined_r0x00014a36;" goto statement_identifier ;) }))) (if_statement "if (local_24 == (char *)0x0) goto joined_r0x00014a36;" if (parenthesized_expression "(local_24 == (char *)0x0)" ( (binary_expression "local_24 == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto joined_r0x00014a36;" goto statement_identifier ;)) }) (else_clause "else {\n    __s = (char *)FUN_00015d40(param_2,"UTF-8",pcVar2);\n    sVar4 = strlen(pcVar2);\n    __dest = (void *)FUN_00015880(sVar4 + 0xb);\n    memcpy(__dest,pcVar2,sVar4);\n    puVar9 = (undefined4 *)(sVar4 + (int)__dest);\n    *puVar9 = 0x52542f2f;\n    puVar9[1] = 0x4c534e41;\n    *(undefined2 *)(puVar9 + 2) = 0x5449;\n    *(undefined1 *)((int)puVar9 + 10) = 0;\n    pcVar2 = (char *)FUN_00015d40(param_2,"UTF-8",__dest);\n    free(__dest);\n    if (pcVar2 == (char *)0x0) {\n      if (__s != (char *)0x0) goto LAB_00014b81;\nLAB_00014bfc:\n      param_2 = (char *)0x0;\n      pcVar2 = param_1;\n      pcVar7 = (char *)0x0;\n      pcVar8 = (char *)0x0;\n      goto LAB_000149d0;\n    }\n    pcVar7 = strchr(pcVar2,0x3f);\n    if (pcVar7 == (char *)0x0) {\n      pcVar7 = pcVar2;\n      if (__s == (char *)0x0) {\n        param_2 = (char *)0x0;\n        pcVar8 = pcVar2;\n        goto LAB_000149d0;\n      }\n      iVar3 = strcmp(__s1,param_1);\n      if (iVar3 == 0) {\n        if (__s == pcVar2) {\n          return __s;\n        }\n        free(pcVar2);\n        return __s;\n      }\n    }\n    else {\n      free(pcVar2);\n      if (__s == (char *)0x0) goto LAB_00014bfc;\nLAB_00014b81:\n      iVar3 = strcmp(__s1,param_1);\n      if (iVar3 == 0) {\n        return __s;\n      }\n      pcVar7 = (char *)0x0;\n    }\n    cVar1 = FUN_00013fe0();\n    pcVar8 = pcVar7;\n    param_2 = __s;\n    local_24 = __s;\n    if (cVar1 == '\0') goto LAB_00014a00;\n  }" else (compound_statement "{\n    __s = (char *)FUN_00015d40(param_2,"UTF-8",pcVar2);\n    sVar4 = strlen(pcVar2);\n    __dest = (void *)FUN_00015880(sVar4 + 0xb);\n    memcpy(__dest,pcVar2,sVar4);\n    puVar9 = (undefined4 *)(sVar4 + (int)__dest);\n    *puVar9 = 0x52542f2f;\n    puVar9[1] = 0x4c534e41;\n    *(undefined2 *)(puVar9 + 2) = 0x5449;\n    *(undefined1 *)((int)puVar9 + 10) = 0;\n    pcVar2 = (char *)FUN_00015d40(param_2,"UTF-8",__dest);\n    free(__dest);\n    if (pcVar2 == (char *)0x0) {\n      if (__s != (char *)0x0) goto LAB_00014b81;\nLAB_00014bfc:\n      param_2 = (char *)0x0;\n      pcVar2 = param_1;\n      pcVar7 = (char *)0x0;\n      pcVar8 = (char *)0x0;\n      goto LAB_000149d0;\n    }\n    pcVar7 = strchr(pcVar2,0x3f);\n    if (pcVar7 == (char *)0x0) {\n      pcVar7 = pcVar2;\n      if (__s == (char *)0x0) {\n        param_2 = (char *)0x0;\n        pcVar8 = pcVar2;\n        goto LAB_000149d0;\n      }\n      iVar3 = strcmp(__s1,param_1);\n      if (iVar3 == 0) {\n        if (__s == pcVar2) {\n          return __s;\n        }\n        free(pcVar2);\n        return __s;\n      }\n    }\n    else {\n      free(pcVar2);\n      if (__s == (char *)0x0) goto LAB_00014bfc;\nLAB_00014b81:\n      iVar3 = strcmp(__s1,param_1);\n      if (iVar3 == 0) {\n        return __s;\n      }\n      pcVar7 = (char *)0x0;\n    }\n    cVar1 = FUN_00013fe0();\n    pcVar8 = pcVar7;\n    param_2 = __s;\n    local_24 = __s;\n    if (cVar1 == '\0') goto LAB_00014a00;\n  }" { (expression_statement "__s = (char *)FUN_00015d40(param_2,"UTF-8",pcVar2);" (assignment_expression "__s = (char *)FUN_00015d40(param_2,"UTF-8",pcVar2)" identifier = (cast_expression "(char *)FUN_00015d40(param_2,"UTF-8",pcVar2)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00015d40(param_2,"UTF-8",pcVar2)" identifier (argument_list "(param_2,"UTF-8",pcVar2)" ( identifier , (string_literal ""UTF-8"" " string_content ") , identifier ))))) ;) (expression_statement "sVar4 = strlen(pcVar2);" (assignment_expression "sVar4 = strlen(pcVar2)" identifier = (call_expression "strlen(pcVar2)" identifier (argument_list "(pcVar2)" ( identifier )))) ;) (expression_statement "__dest = (void *)FUN_00015880(sVar4 + 0xb);" (assignment_expression "__dest = (void *)FUN_00015880(sVar4 + 0xb)" identifier = (cast_expression "(void *)FUN_00015880(sVar4 + 0xb)" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00015880(sVar4 + 0xb)" identifier (argument_list "(sVar4 + 0xb)" ( (binary_expression "sVar4 + 0xb" identifier + number_literal) ))))) ;) (expression_statement "memcpy(__dest,pcVar2,sVar4);" (call_expression "memcpy(__dest,pcVar2,sVar4)" identifier (argument_list "(__dest,pcVar2,sVar4)" ( identifier , identifier , identifier ))) ;) (expression_statement "puVar9 = (undefined4 *)(sVar4 + (int)__dest);" (assignment_expression "puVar9 = (undefined4 *)(sVar4 + (int)__dest)" identifier = (cast_expression "(undefined4 *)(sVar4 + (int)__dest)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(sVar4 + (int)__dest)" ( (binary_expression "sVar4 + (int)__dest" identifier + (cast_expression "(int)__dest" ( (type_descriptor "int" primitive_type) ) identifier)) )))) ;) (expression_statement "*puVar9 = 0x52542f2f;" (assignment_expression "*puVar9 = 0x52542f2f" (pointer_expression "*puVar9" * identifier) = number_literal) ;) (expression_statement "puVar9[1] = 0x4c534e41;" (assignment_expression "puVar9[1] = 0x4c534e41" (subscript_expression "puVar9[1]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*(undefined2 *)(puVar9 + 2) = 0x5449;" (assignment_expression "*(undefined2 *)(puVar9 + 2) = 0x5449" (pointer_expression "*(undefined2 *)(puVar9 + 2)" * (cast_expression "(undefined2 *)(puVar9 + 2)" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar9 + 2)" ( (binary_expression "puVar9 + 2" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined1 *)((int)puVar9 + 10) = 0;" (assignment_expression "*(undefined1 *)((int)puVar9 + 10) = 0" (pointer_expression "*(undefined1 *)((int)puVar9 + 10)" * (cast_expression "(undefined1 *)((int)puVar9 + 10)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar9 + 10)" ( (binary_expression "(int)puVar9 + 10" (cast_expression "(int)puVar9" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) (expression_statement "pcVar2 = (char *)FUN_00015d40(param_2,"UTF-8",__dest);" (assignment_expression "pcVar2 = (char *)FUN_00015d40(param_2,"UTF-8",__dest)" identifier = (cast_expression "(char *)FUN_00015d40(param_2,"UTF-8",__dest)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00015d40(param_2,"UTF-8",__dest)" identifier (argument_list "(param_2,"UTF-8",__dest)" ( identifier , (string_literal ""UTF-8"" " string_content ") , identifier ))))) ;) (expression_statement "free(__dest);" (call_expression "free(__dest)" identifier (argument_list "(__dest)" ( identifier ))) ;) (if_statement "if (pcVar2 == (char *)0x0) {\n      if (__s != (char *)0x0) goto LAB_00014b81;\nLAB_00014bfc:\n      param_2 = (char *)0x0;\n      pcVar2 = param_1;\n      pcVar7 = (char *)0x0;\n      pcVar8 = (char *)0x0;\n      goto LAB_000149d0;\n    }" if (parenthesized_expression "(pcVar2 == (char *)0x0)" ( (binary_expression "pcVar2 == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      if (__s != (char *)0x0) goto LAB_00014b81;\nLAB_00014bfc:\n      param_2 = (char *)0x0;\n      pcVar2 = param_1;\n      pcVar7 = (char *)0x0;\n      pcVar8 = (char *)0x0;\n      goto LAB_000149d0;\n    }" { (if_statement "if (__s != (char *)0x0) goto LAB_00014b81;" if (parenthesized_expression "(__s != (char *)0x0)" ( (binary_expression "__s != (char *)0x0" identifier != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_00014b81;" goto statement_identifier ;)) (labeled_statement "LAB_00014bfc:\n      param_2 = (char *)0x0;" statement_identifier : (expression_statement "param_2 = (char *)0x0;" (assignment_expression "param_2 = (char *)0x0" identifier = (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;)) (expression_statement "pcVar2 = param_1;" (assignment_expression "pcVar2 = param_1" identifier = identifier) ;) (expression_statement "pcVar7 = (char *)0x0;" (assignment_expression "pcVar7 = (char *)0x0" identifier = (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "pcVar8 = (char *)0x0;" (assignment_expression "pcVar8 = (char *)0x0" identifier = (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (goto_statement "goto LAB_000149d0;" goto statement_identifier ;) })) (expression_statement "pcVar7 = strchr(pcVar2,0x3f);" (assignment_expression "pcVar7 = strchr(pcVar2,0x3f)" identifier = (call_expression "strchr(pcVar2,0x3f)" identifier (argument_list "(pcVar2,0x3f)" ( identifier , number_literal )))) ;) (if_statement "if (pcVar7 == (char *)0x0) {\n      pcVar7 = pcVar2;\n      if (__s == (char *)0x0) {\n        param_2 = (char *)0x0;\n        pcVar8 = pcVar2;\n        goto LAB_000149d0;\n      }\n      iVar3 = strcmp(__s1,param_1);\n      if (iVar3 == 0) {\n        if (__s == pcVar2) {\n          return __s;\n        }\n        free(pcVar2);\n        return __s;\n      }\n    }\n    else {\n      free(pcVar2);\n      if (__s == (char *)0x0) goto LAB_00014bfc;\nLAB_00014b81:\n      iVar3 = strcmp(__s1,param_1);\n      if (iVar3 == 0) {\n        return __s;\n      }\n      pcVar7 = (char *)0x0;\n    }" if (parenthesized_expression "(pcVar7 == (char *)0x0)" ( (binary_expression "pcVar7 == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      pcVar7 = pcVar2;\n      if (__s == (char *)0x0) {\n        param_2 = (char *)0x0;\n        pcVar8 = pcVar2;\n        goto LAB_000149d0;\n      }\n      iVar3 = strcmp(__s1,param_1);\n      if (iVar3 == 0) {\n        if (__s == pcVar2) {\n          return __s;\n        }\n        free(pcVar2);\n        return __s;\n      }\n    }" { (expression_statement "pcVar7 = pcVar2;" (assignment_expression "pcVar7 = pcVar2" identifier = identifier) ;) (if_statement "if (__s == (char *)0x0) {\n        param_2 = (char *)0x0;\n        pcVar8 = pcVar2;\n        goto LAB_000149d0;\n      }" if (parenthesized_expression "(__s == (char *)0x0)" ( (binary_expression "__s == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        param_2 = (char *)0x0;\n        pcVar8 = pcVar2;\n        goto LAB_000149d0;\n      }" { (expression_statement "param_2 = (char *)0x0;" (assignment_expression "param_2 = (char *)0x0" identifier = (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "pcVar8 = pcVar2;" (assignment_expression "pcVar8 = pcVar2" identifier = identifier) ;) (goto_statement "goto LAB_000149d0;" goto statement_identifier ;) })) (expression_statement "iVar3 = strcmp(__s1,param_1);" (assignment_expression "iVar3 = strcmp(__s1,param_1)" identifier = (call_expression "strcmp(__s1,param_1)" identifier (argument_list "(__s1,param_1)" ( identifier , identifier )))) ;) (if_statement "if (iVar3 == 0) {\n        if (__s == pcVar2) {\n          return __s;\n        }\n        free(pcVar2);\n        return __s;\n      }" if (parenthesized_expression "(iVar3 == 0)" ( (binary_expression "iVar3 == 0" identifier == number_literal) )) (compound_statement "{\n        if (__s == pcVar2) {\n          return __s;\n        }\n        free(pcVar2);\n        return __s;\n      }" { (if_statement "if (__s == pcVar2) {\n          return __s;\n        }" if (parenthesized_expression "(__s == pcVar2)" ( (binary_expression "__s == pcVar2" identifier == identifier) )) (compound_statement "{\n          return __s;\n        }" { (return_statement "return __s;" return identifier ;) })) (expression_statement "free(pcVar2);" (call_expression "free(pcVar2)" identifier (argument_list "(pcVar2)" ( identifier ))) ;) (return_statement "return __s;" return identifier ;) })) }) (else_clause "else {\n      free(pcVar2);\n      if (__s == (char *)0x0) goto LAB_00014bfc;\nLAB_00014b81:\n      iVar3 = strcmp(__s1,param_1);\n      if (iVar3 == 0) {\n        return __s;\n      }\n      pcVar7 = (char *)0x0;\n    }" else (compound_statement "{\n      free(pcVar2);\n      if (__s == (char *)0x0) goto LAB_00014bfc;\nLAB_00014b81:\n      iVar3 = strcmp(__s1,param_1);\n      if (iVar3 == 0) {\n        return __s;\n      }\n      pcVar7 = (char *)0x0;\n    }" { (expression_statement "free(pcVar2);" (call_expression "free(pcVar2)" identifier (argument_list "(pcVar2)" ( identifier ))) ;) (if_statement "if (__s == (char *)0x0) goto LAB_00014bfc;" if (parenthesized_expression "(__s == (char *)0x0)" ( (binary_expression "__s == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_00014bfc;" goto statement_identifier ;)) (labeled_statement "LAB_00014b81:\n      iVar3 = strcmp(__s1,param_1);" statement_identifier : (expression_statement "iVar3 = strcmp(__s1,param_1);" (assignment_expression "iVar3 = strcmp(__s1,param_1)" identifier = (call_expression "strcmp(__s1,param_1)" identifier (argument_list "(__s1,param_1)" ( identifier , identifier )))) ;)) (if_statement "if (iVar3 == 0) {\n        return __s;\n      }" if (parenthesized_expression "(iVar3 == 0)" ( (binary_expression "iVar3 == 0" identifier == number_literal) )) (compound_statement "{\n        return __s;\n      }" { (return_statement "return __s;" return identifier ;) })) (expression_statement "pcVar7 = (char *)0x0;" (assignment_expression "pcVar7 = (char *)0x0" identifier = (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) }))) (expression_statement "cVar1 = FUN_00013fe0();" (assignment_expression "cVar1 = FUN_00013fe0()" identifier = (call_expression "FUN_00013fe0()" identifier (argument_list "()" ( )))) ;) (expression_statement "pcVar8 = pcVar7;" (assignment_expression "pcVar8 = pcVar7" identifier = identifier) ;) (expression_statement "param_2 = __s;" (assignment_expression "param_2 = __s" identifier = identifier) ;) (expression_statement "local_24 = __s;" (assignment_expression "local_24 = __s" identifier = identifier) ;) (if_statement "if (cVar1 == '\0') goto LAB_00014a00;" if (parenthesized_expression "(cVar1 == '\0')" ( (binary_expression "cVar1 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence ')) )) (goto_statement "goto LAB_00014a00;" goto statement_identifier ;)) }))) (expression_statement "free(local_24);" (call_expression "free(local_24)" identifier (argument_list "(local_24)" ( identifier ))) ;) (labeled_statement "joined_r0x00014a36:\n  if (pcVar7 != (char *)0x0) {\n    free(pcVar7);\n  }" statement_identifier : (if_statement "if (pcVar7 != (char *)0x0) {\n    free(pcVar7);\n  }" if (parenthesized_expression "(pcVar7 != (char *)0x0)" ( (binary_expression "pcVar7 != (char *)0x0" identifier != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    free(pcVar7);\n  }" { (expression_statement "free(pcVar7);" (call_expression "free(pcVar7)" identifier (argument_list "(pcVar7)" ( identifier ))) ;) }))) (return_statement "return pcVar6;" return identifier ;) })))
(translation_unit (function_definition TYPE (pointer_declarator * (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE (pointer_declarator * IDENT)) )))) (compound_statement { (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( LIT , IDENT , LIT ))))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( ))))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , (string_literal " string_content ") )))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) }))) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT )))) ;)) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (return_statement return IDENT ;) })) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (char_literal ' escape_sequence ')) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) || (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) , (binary_expression IDENT == (char_literal ' escape_sequence '))) ))) )) && (parenthesized_expression ( (parenthesized_expression ( (binary_expression (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) || (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) , (binary_expression IDENT == (char_literal ' escape_sequence '))) ))) )) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( (binary_expression (binary_expression IDENT + LIT) + IDENT) ))))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , LIT , LIT , (string_literal " string_content ") , IDENT , IDENT ))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) })) (goto_statement goto statement_identifier ;) }))) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (goto_statement goto statement_identifier ;)) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( IDENT , (string_literal " string_content ") , IDENT ))))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT ))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (cast_expression ( (type_descriptor TYPE) ) IDENT)) )))) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) = LIT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( IDENT , (string_literal " string_content ") , IDENT ))))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (goto_statement goto statement_identifier ;)) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;)) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , LIT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == IDENT) )) (compound_statement { (return_statement return IDENT ;) })) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (return_statement return IDENT ;) })) }) (else_clause else (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (goto_statement goto statement_identifier ;)) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT )))) ;)) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (return_statement return IDENT ;) })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) }))) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (char_literal ' escape_sequence ')) )) (goto_statement goto statement_identifier ;)) }))) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) }))) (return_statement return IDENT ;) })))
(function_definition "char * FUN_00014970(char *param_1,char *param_2)\n\n{\n  char cVar1;\n  char *__s1;\n  char *pcVar2;\n  int iVar3;\n  size_t sVar4;\n  size_t sVar5;\n  char *pcVar6;\n  char *__s;\n  void *__dest;\n  char *pcVar7;\n  char *pcVar8;\n  undefined4 *puVar9;\n  char *local_24;\n  \n  __s1 = (char *)dcgettext(0,param_1,5);\n  pcVar2 = (char *)FUN_00017150();\n  iVar3 = FUN_00016e00(pcVar2,"UTF-8");\n  pcVar6 = __s1;\n  if (iVar3 == 0) {\n    if (param_2 == (char *)0x0) {\n      pcVar2 = param_1;\n      pcVar7 = (char *)0x0;\n      pcVar8 = (char *)0x0;\n    }\n    else {\n      pcVar2 = param_2;\n      pcVar7 = (char *)0x0;\n      pcVar8 = param_2;\n    }\nLAB_000149d0:\n    iVar3 = strcmp(__s1,param_1);\n    if (iVar3 == 0) {\n      return pcVar2;\n    }\n    cVar1 = FUN_00013fe0();\n    if (cVar1 != '\0') goto joined_r0x00014a36;\n    local_24 = (char *)0x0;\n    __s = pcVar2;\nLAB_00014a00:\n    if (((param_2 == (char *)0x0) || (cVar1 = FUN_00013fe0(), cVar1 == '\0')) &&\n       ((pcVar8 == (char *)0x0 || (cVar1 = FUN_00013fe0(), cVar1 == '\0')))) {\n      sVar4 = strlen(__s1);\n      sVar5 = strlen(__s);\n      pcVar6 = (char *)FUN_00015880(sVar4 + 4 + sVar5);\n      __sprintf_chk(pcVar6,1,0xffffffff,"%s (%s)",__s1,__s);\n      if (local_24 != (char *)0x0) {\n        free(local_24);\n      }\n      goto joined_r0x00014a36;\n    }\n    if (local_24 == (char *)0x0) goto joined_r0x00014a36;\n  }\n  else {\n    __s = (char *)FUN_00015d40(param_2,"UTF-8",pcVar2);\n    sVar4 = strlen(pcVar2);\n    __dest = (void *)FUN_00015880(sVar4 + 0xb);\n    memcpy(__dest,pcVar2,sVar4);\n    puVar9 = (undefined4 *)(sVar4 + (int)__dest);\n    *puVar9 = 0x52542f2f;\n    puVar9[1] = 0x4c534e41;\n    *(undefined2 *)(puVar9 + 2) = 0x5449;\n    *(undefined1 *)((int)puVar9 + 10) = 0;\n    pcVar2 = (char *)FUN_00015d40(param_2,"UTF-8",__dest);\n    free(__dest);\n    if (pcVar2 == (char *)0x0) {\n      if (__s != (char *)0x0) goto LAB_00014b81;\nLAB_00014bfc:\n      param_2 = (char *)0x0;\n      pcVar2 = param_1;\n      pcVar7 = (char *)0x0;\n      pcVar8 = (char *)0x0;\n      goto LAB_000149d0;\n    }\n    pcVar7 = strchr(pcVar2,0x3f);\n    if (pcVar7 == (char *)0x0) {\n      pcVar7 = pcVar2;\n      if (__s == (char *)0x0) {\n        param_2 = (char *)0x0;\n        pcVar8 = pcVar2;\n        goto LAB_000149d0;\n      }\n      iVar3 = strcmp(__s1,param_1);\n      if (iVar3 == 0) {\n        if (__s == pcVar2) {\n          return __s;\n        }\n        free(pcVar2);\n        return __s;\n      }\n    }\n    else {\n      free(pcVar2);\n      if (__s == (char *)0x0) goto LAB_00014bfc;\nLAB_00014b81:\n      iVar3 = strcmp(__s1,param_1);\n      if (iVar3 == 0) {\n        return __s;\n      }\n      pcVar7 = (char *)0x0;\n    }\n    cVar1 = FUN_00013fe0();\n    pcVar8 = pcVar7;\n    param_2 = __s;\n    local_24 = __s;\n    if (cVar1 == '\0') goto LAB_00014a00;\n  }\n  free(local_24);\njoined_r0x00014a36:\n  if (pcVar7 != (char *)0x0) {\n    free(pcVar7);\n  }\n  return pcVar6;\n}" (primitive_type "char") (pointer_declarator "* FUN_00014970(char *param_1,char *param_2)" (* "*") (function_declarator "FUN_00014970(char *param_1,char *param_2)" (identifier "FUN_00014970") (parameter_list "(char *param_1,char *param_2)" (( "(") (parameter_declaration "char *param_1" (primitive_type "char") (pointer_declarator "*param_1" (* "*") (identifier "param_1"))) (, ",") (parameter_declaration "char *param_2" (primitive_type "char") (pointer_declarator "*param_2" (* "*") (identifier "param_2"))) () ")")))) (compound_statement "{\n  char cVar1;\n  char *__s1;\n  char *pcVar2;\n  int iVar3;\n  size_t sVar4;\n  size_t sVar5;\n  char *pcVar6;\n  char *__s;\n  void *__dest;\n  char *pcVar7;\n  char *pcVar8;\n  undefined4 *puVar9;\n  char *local_24;\n  \n  __s1 = (char *)dcgettext(0,param_1,5);\n  pcVar2 = (char *)FUN_00017150();\n  iVar3 = FUN_00016e00(pcVar2,"UTF-8");\n  pcVar6 = __s1;\n  if (iVar3 == 0) {\n    if (param_2 == (char *)0x0) {\n      pcVar2 = param_1;\n      pcVar7 = (char *)0x0;\n      pcVar8 = (char *)0x0;\n    }\n    else {\n      pcVar2 = param_2;\n      pcVar7 = (char *)0x0;\n      pcVar8 = param_2;\n    }\nLAB_000149d0:\n    iVar3 = strcmp(__s1,param_1);\n    if (iVar3 == 0) {\n      return pcVar2;\n    }\n    cVar1 = FUN_00013fe0();\n    if (cVar1 != '\0') goto joined_r0x00014a36;\n    local_24 = (char *)0x0;\n    __s = pcVar2;\nLAB_00014a00:\n    if (((param_2 == (char *)0x0) || (cVar1 = FUN_00013fe0(), cVar1 == '\0')) &&\n       ((pcVar8 == (char *)0x0 || (cVar1 = FUN_00013fe0(), cVar1 == '\0')))) {\n      sVar4 = strlen(__s1);\n      sVar5 = strlen(__s);\n      pcVar6 = (char *)FUN_00015880(sVar4 + 4 + sVar5);\n      __sprintf_chk(pcVar6,1,0xffffffff,"%s (%s)",__s1,__s);\n      if (local_24 != (char *)0x0) {\n        free(local_24);\n      }\n      goto joined_r0x00014a36;\n    }\n    if (local_24 == (char *)0x0) goto joined_r0x00014a36;\n  }\n  else {\n    __s = (char *)FUN_00015d40(param_2,"UTF-8",pcVar2);\n    sVar4 = strlen(pcVar2);\n    __dest = (void *)FUN_00015880(sVar4 + 0xb);\n    memcpy(__dest,pcVar2,sVar4);\n    puVar9 = (undefined4 *)(sVar4 + (int)__dest);\n    *puVar9 = 0x52542f2f;\n    puVar9[1] = 0x4c534e41;\n    *(undefined2 *)(puVar9 + 2) = 0x5449;\n    *(undefined1 *)((int)puVar9 + 10) = 0;\n    pcVar2 = (char *)FUN_00015d40(param_2,"UTF-8",__dest);\n    free(__dest);\n    if (pcVar2 == (char *)0x0) {\n      if (__s != (char *)0x0) goto LAB_00014b81;\nLAB_00014bfc:\n      param_2 = (char *)0x0;\n      pcVar2 = param_1;\n      pcVar7 = (char *)0x0;\n      pcVar8 = (char *)0x0;\n      goto LAB_000149d0;\n    }\n    pcVar7 = strchr(pcVar2,0x3f);\n    if (pcVar7 == (char *)0x0) {\n      pcVar7 = pcVar2;\n      if (__s == (char *)0x0) {\n        param_2 = (char *)0x0;\n        pcVar8 = pcVar2;\n        goto LAB_000149d0;\n      }\n      iVar3 = strcmp(__s1,param_1);\n      if (iVar3 == 0) {\n        if (__s == pcVar2) {\n          return __s;\n        }\n        free(pcVar2);\n        return __s;\n      }\n    }\n    else {\n      free(pcVar2);\n      if (__s == (char *)0x0) goto LAB_00014bfc;\nLAB_00014b81:\n      iVar3 = strcmp(__s1,param_1);\n      if (iVar3 == 0) {\n        return __s;\n      }\n      pcVar7 = (char *)0x0;\n    }\n    cVar1 = FUN_00013fe0();\n    pcVar8 = pcVar7;\n    param_2 = __s;\n    local_24 = __s;\n    if (cVar1 == '\0') goto LAB_00014a00;\n  }\n  free(local_24);\njoined_r0x00014a36:\n  if (pcVar7 != (char *)0x0) {\n    free(pcVar7);\n  }\n  return pcVar6;\n}" ({ "{") (declaration "char cVar1;" (primitive_type "char") (identifier "cVar1") (; ";")) (declaration "char *__s1;" (primitive_type "char") (pointer_declarator "*__s1" (* "*") (identifier "__s1")) (; ";")) (declaration "char *pcVar2;" (primitive_type "char") (pointer_declarator "*pcVar2" (* "*") (identifier "pcVar2")) (; ";")) (declaration "int iVar3;" (primitive_type "int") (identifier "iVar3") (; ";")) (declaration "size_t sVar4;" (primitive_type "size_t") (identifier "sVar4") (; ";")) (declaration "size_t sVar5;" (primitive_type "size_t") (identifier "sVar5") (; ";")) (declaration "char *pcVar6;" (primitive_type "char") (pointer_declarator "*pcVar6" (* "*") (identifier "pcVar6")) (; ";")) (declaration "char *__s;" (primitive_type "char") (pointer_declarator "*__s" (* "*") (identifier "__s")) (; ";")) (declaration "void *__dest;" (primitive_type "void") (pointer_declarator "*__dest" (* "*") (identifier "__dest")) (; ";")) (declaration "char *pcVar7;" (primitive_type "char") (pointer_declarator "*pcVar7" (* "*") (identifier "pcVar7")) (; ";")) (declaration "char *pcVar8;" (primitive_type "char") (pointer_declarator "*pcVar8" (* "*") (identifier "pcVar8")) (; ";")) (declaration "undefined4 *puVar9;" (type_identifier "undefined4") (pointer_declarator "*puVar9" (* "*") (identifier "puVar9")) (; ";")) (declaration "char *local_24;" (primitive_type "char") (pointer_declarator "*local_24" (* "*") (identifier "local_24")) (; ";")) (expression_statement "__s1 = (char *)dcgettext(0,param_1,5);" (assignment_expression "__s1 = (char *)dcgettext(0,param_1,5)" (identifier "__s1") (= "=") (cast_expression "(char *)dcgettext(0,param_1,5)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "dcgettext(0,param_1,5)" (identifier "dcgettext") (argument_list "(0,param_1,5)" (( "(") (number_literal "0") (, ",") (identifier "param_1") (, ",") (number_literal "5") () ")"))))) (; ";")) (expression_statement "pcVar2 = (char *)FUN_00017150();" (assignment_expression "pcVar2 = (char *)FUN_00017150()" (identifier "pcVar2") (= "=") (cast_expression "(char *)FUN_00017150()" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_00017150()" (identifier "FUN_00017150") (argument_list "()" (( "(") () ")"))))) (; ";")) (expression_statement "iVar3 = FUN_00016e00(pcVar2,"UTF-8");" (assignment_expression "iVar3 = FUN_00016e00(pcVar2,"UTF-8")" (identifier "iVar3") (= "=") (call_expression "FUN_00016e00(pcVar2,"UTF-8")" (identifier "FUN_00016e00") (argument_list "(pcVar2,"UTF-8")" (( "(") (identifier "pcVar2") (, ",") (string_literal ""UTF-8"" (" """) (string_content "UTF-8") (" """)) () ")")))) (; ";")) (expression_statement "pcVar6 = __s1;" (assignment_expression "pcVar6 = __s1" (identifier "pcVar6") (= "=") (identifier "__s1")) (; ";")) (if_statement "if (iVar3 == 0) {\n    if (param_2 == (char *)0x0) {\n      pcVar2 = param_1;\n      pcVar7 = (char *)0x0;\n      pcVar8 = (char *)0x0;\n    }\n    else {\n      pcVar2 = param_2;\n      pcVar7 = (char *)0x0;\n      pcVar8 = param_2;\n    }\nLAB_000149d0:\n    iVar3 = strcmp(__s1,param_1);\n    if (iVar3 == 0) {\n      return pcVar2;\n    }\n    cVar1 = FUN_00013fe0();\n    if (cVar1 != '\0') goto joined_r0x00014a36;\n    local_24 = (char *)0x0;\n    __s = pcVar2;\nLAB_00014a00:\n    if (((param_2 == (char *)0x0) || (cVar1 = FUN_00013fe0(), cVar1 == '\0')) &&\n       ((pcVar8 == (char *)0x0 || (cVar1 = FUN_00013fe0(), cVar1 == '\0')))) {\n      sVar4 = strlen(__s1);\n      sVar5 = strlen(__s);\n      pcVar6 = (char *)FUN_00015880(sVar4 + 4 + sVar5);\n      __sprintf_chk(pcVar6,1,0xffffffff,"%s (%s)",__s1,__s);\n      if (local_24 != (char *)0x0) {\n        free(local_24);\n      }\n      goto joined_r0x00014a36;\n    }\n    if (local_24 == (char *)0x0) goto joined_r0x00014a36;\n  }\n  else {\n    __s = (char *)FUN_00015d40(param_2,"UTF-8",pcVar2);\n    sVar4 = strlen(pcVar2);\n    __dest = (void *)FUN_00015880(sVar4 + 0xb);\n    memcpy(__dest,pcVar2,sVar4);\n    puVar9 = (undefined4 *)(sVar4 + (int)__dest);\n    *puVar9 = 0x52542f2f;\n    puVar9[1] = 0x4c534e41;\n    *(undefined2 *)(puVar9 + 2) = 0x5449;\n    *(undefined1 *)((int)puVar9 + 10) = 0;\n    pcVar2 = (char *)FUN_00015d40(param_2,"UTF-8",__dest);\n    free(__dest);\n    if (pcVar2 == (char *)0x0) {\n      if (__s != (char *)0x0) goto LAB_00014b81;\nLAB_00014bfc:\n      param_2 = (char *)0x0;\n      pcVar2 = param_1;\n      pcVar7 = (char *)0x0;\n      pcVar8 = (char *)0x0;\n      goto LAB_000149d0;\n    }\n    pcVar7 = strchr(pcVar2,0x3f);\n    if (pcVar7 == (char *)0x0) {\n      pcVar7 = pcVar2;\n      if (__s == (char *)0x0) {\n        param_2 = (char *)0x0;\n        pcVar8 = pcVar2;\n        goto LAB_000149d0;\n      }\n      iVar3 = strcmp(__s1,param_1);\n      if (iVar3 == 0) {\n        if (__s == pcVar2) {\n          return __s;\n        }\n        free(pcVar2);\n        return __s;\n      }\n    }\n    else {\n      free(pcVar2);\n      if (__s == (char *)0x0) goto LAB_00014bfc;\nLAB_00014b81:\n      iVar3 = strcmp(__s1,param_1);\n      if (iVar3 == 0) {\n        return __s;\n      }\n      pcVar7 = (char *)0x0;\n    }\n    cVar1 = FUN_00013fe0();\n    pcVar8 = pcVar7;\n    param_2 = __s;\n    local_24 = __s;\n    if (cVar1 == '\0') goto LAB_00014a00;\n  }" (if "if") (parenthesized_expression "(iVar3 == 0)" (( "(") (binary_expression "iVar3 == 0" (identifier "iVar3") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n    if (param_2 == (char *)0x0) {\n      pcVar2 = param_1;\n      pcVar7 = (char *)0x0;\n      pcVar8 = (char *)0x0;\n    }\n    else {\n      pcVar2 = param_2;\n      pcVar7 = (char *)0x0;\n      pcVar8 = param_2;\n    }\nLAB_000149d0:\n    iVar3 = strcmp(__s1,param_1);\n    if (iVar3 == 0) {\n      return pcVar2;\n    }\n    cVar1 = FUN_00013fe0();\n    if (cVar1 != '\0') goto joined_r0x00014a36;\n    local_24 = (char *)0x0;\n    __s = pcVar2;\nLAB_00014a00:\n    if (((param_2 == (char *)0x0) || (cVar1 = FUN_00013fe0(), cVar1 == '\0')) &&\n       ((pcVar8 == (char *)0x0 || (cVar1 = FUN_00013fe0(), cVar1 == '\0')))) {\n      sVar4 = strlen(__s1);\n      sVar5 = strlen(__s);\n      pcVar6 = (char *)FUN_00015880(sVar4 + 4 + sVar5);\n      __sprintf_chk(pcVar6,1,0xffffffff,"%s (%s)",__s1,__s);\n      if (local_24 != (char *)0x0) {\n        free(local_24);\n      }\n      goto joined_r0x00014a36;\n    }\n    if (local_24 == (char *)0x0) goto joined_r0x00014a36;\n  }" ({ "{") (if_statement "if (param_2 == (char *)0x0) {\n      pcVar2 = param_1;\n      pcVar7 = (char *)0x0;\n      pcVar8 = (char *)0x0;\n    }\n    else {\n      pcVar2 = param_2;\n      pcVar7 = (char *)0x0;\n      pcVar8 = param_2;\n    }" (if "if") (parenthesized_expression "(param_2 == (char *)0x0)" (( "(") (binary_expression "param_2 == (char *)0x0" (identifier "param_2") (== "==") (cast_expression "(char *)0x0" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n      pcVar2 = param_1;\n      pcVar7 = (char *)0x0;\n      pcVar8 = (char *)0x0;\n    }" ({ "{") (expression_statement "pcVar2 = param_1;" (assignment_expression "pcVar2 = param_1" (identifier "pcVar2") (= "=") (identifier "param_1")) (; ";")) (expression_statement "pcVar7 = (char *)0x0;" (assignment_expression "pcVar7 = (char *)0x0" (identifier "pcVar7") (= "=") (cast_expression "(char *)0x0" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";")) (expression_statement "pcVar8 = (char *)0x0;" (assignment_expression "pcVar8 = (char *)0x0" (identifier "pcVar8") (= "=") (cast_expression "(char *)0x0" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";")) (} "}")) (else_clause "else {\n      pcVar2 = param_2;\n      pcVar7 = (char *)0x0;\n      pcVar8 = param_2;\n    }" (else "else") (compound_statement "{\n      pcVar2 = param_2;\n      pcVar7 = (char *)0x0;\n      pcVar8 = param_2;\n    }" ({ "{") (expression_statement "pcVar2 = param_2;" (assignment_expression "pcVar2 = param_2" (identifier "pcVar2") (= "=") (identifier "param_2")) (; ";")) (expression_statement "pcVar7 = (char *)0x0;" (assignment_expression "pcVar7 = (char *)0x0" (identifier "pcVar7") (= "=") (cast_expression "(char *)0x0" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";")) (expression_statement "pcVar8 = param_2;" (assignment_expression "pcVar8 = param_2" (identifier "pcVar8") (= "=") (identifier "param_2")) (; ";")) (} "}")))) (labeled_statement "LAB_000149d0:\n    iVar3 = strcmp(__s1,param_1);" (statement_identifier "LAB_000149d0") (: ":") (expression_statement "iVar3 = strcmp(__s1,param_1);" (assignment_expression "iVar3 = strcmp(__s1,param_1)" (identifier "iVar3") (= "=") (call_expression "strcmp(__s1,param_1)" (identifier "strcmp") (argument_list "(__s1,param_1)" (( "(") (identifier "__s1") (, ",") (identifier "param_1") () ")")))) (; ";"))) (if_statement "if (iVar3 == 0) {\n      return pcVar2;\n    }" (if "if") (parenthesized_expression "(iVar3 == 0)" (( "(") (binary_expression "iVar3 == 0" (identifier "iVar3") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n      return pcVar2;\n    }" ({ "{") (return_statement "return pcVar2;" (return "return") (identifier "pcVar2") (; ";")) (} "}"))) (expression_statement "cVar1 = FUN_00013fe0();" (assignment_expression "cVar1 = FUN_00013fe0()" (identifier "cVar1") (= "=") (call_expression "FUN_00013fe0()" (identifier "FUN_00013fe0") (argument_list "()" (( "(") () ")")))) (; ";")) (if_statement "if (cVar1 != '\0') goto joined_r0x00014a36;" (if "if") (parenthesized_expression "(cVar1 != '\0')" (( "(") (binary_expression "cVar1 != '\0'" (identifier "cVar1") (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (goto_statement "goto joined_r0x00014a36;" (goto "goto") (statement_identifier "joined_r0x00014a36") (; ";"))) (expression_statement "local_24 = (char *)0x0;" (assignment_expression "local_24 = (char *)0x0" (identifier "local_24") (= "=") (cast_expression "(char *)0x0" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";")) (expression_statement "__s = pcVar2;" (assignment_expression "__s = pcVar2" (identifier "__s") (= "=") (identifier "pcVar2")) (; ";")) (labeled_statement "LAB_00014a00:\n    if (((param_2 == (char *)0x0) || (cVar1 = FUN_00013fe0(), cVar1 == '\0')) &&\n       ((pcVar8 == (char *)0x0 || (cVar1 = FUN_00013fe0(), cVar1 == '\0')))) {\n      sVar4 = strlen(__s1);\n      sVar5 = strlen(__s);\n      pcVar6 = (char *)FUN_00015880(sVar4 + 4 + sVar5);\n      __sprintf_chk(pcVar6,1,0xffffffff,"%s (%s)",__s1,__s);\n      if (local_24 != (char *)0x0) {\n        free(local_24);\n      }\n      goto joined_r0x00014a36;\n    }" (statement_identifier "LAB_00014a00") (: ":") (if_statement "if (((param_2 == (char *)0x0) || (cVar1 = FUN_00013fe0(), cVar1 == '\0')) &&\n       ((pcVar8 == (char *)0x0 || (cVar1 = FUN_00013fe0(), cVar1 == '\0')))) {\n      sVar4 = strlen(__s1);\n      sVar5 = strlen(__s);\n      pcVar6 = (char *)FUN_00015880(sVar4 + 4 + sVar5);\n      __sprintf_chk(pcVar6,1,0xffffffff,"%s (%s)",__s1,__s);\n      if (local_24 != (char *)0x0) {\n        free(local_24);\n      }\n      goto joined_r0x00014a36;\n    }" (if "if") (parenthesized_expression "(((param_2 == (char *)0x0) || (cVar1 = FUN_00013fe0(), cVar1 == '\0')) &&\n       ((pcVar8 == (char *)0x0 || (cVar1 = FUN_00013fe0(), cVar1 == '\0'))))" (( "(") (binary_expression "((param_2 == (char *)0x0) || (cVar1 = FUN_00013fe0(), cVar1 == '\0')) &&\n       ((pcVar8 == (char *)0x0 || (cVar1 = FUN_00013fe0(), cVar1 == '\0')))" (parenthesized_expression "((param_2 == (char *)0x0) || (cVar1 = FUN_00013fe0(), cVar1 == '\0'))" (( "(") (binary_expression "(param_2 == (char *)0x0) || (cVar1 = FUN_00013fe0(), cVar1 == '\0')" (parenthesized_expression "(param_2 == (char *)0x0)" (( "(") (binary_expression "param_2 == (char *)0x0" (identifier "param_2") (== "==") (cast_expression "(char *)0x0" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (|| "||") (parenthesized_expression "(cVar1 = FUN_00013fe0(), cVar1 == '\0')" (( "(") (comma_expression "cVar1 = FUN_00013fe0(), cVar1 == '\0'" (assignment_expression "cVar1 = FUN_00013fe0()" (identifier "cVar1") (= "=") (call_expression "FUN_00013fe0()" (identifier "FUN_00013fe0") (argument_list "()" (( "(") () ")")))) (, ",") (binary_expression "cVar1 == '\0'" (identifier "cVar1") (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'")))) () ")"))) () ")")) (&& "&&") (parenthesized_expression "((pcVar8 == (char *)0x0 || (cVar1 = FUN_00013fe0(), cVar1 == '\0')))" (( "(") (parenthesized_expression "(pcVar8 == (char *)0x0 || (cVar1 = FUN_00013fe0(), cVar1 == '\0'))" (( "(") (binary_expression "pcVar8 == (char *)0x0 || (cVar1 = FUN_00013fe0(), cVar1 == '\0')" (binary_expression "pcVar8 == (char *)0x0" (identifier "pcVar8") (== "==") (cast_expression "(char *)0x0" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (|| "||") (parenthesized_expression "(cVar1 = FUN_00013fe0(), cVar1 == '\0')" (( "(") (comma_expression "cVar1 = FUN_00013fe0(), cVar1 == '\0'" (assignment_expression "cVar1 = FUN_00013fe0()" (identifier "cVar1") (= "=") (call_expression "FUN_00013fe0()" (identifier "FUN_00013fe0") (argument_list "()" (( "(") () ")")))) (, ",") (binary_expression "cVar1 == '\0'" (identifier "cVar1") (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'")))) () ")"))) () ")")) () ")"))) () ")")) (compound_statement "{\n      sVar4 = strlen(__s1);\n      sVar5 = strlen(__s);\n      pcVar6 = (char *)FUN_00015880(sVar4 + 4 + sVar5);\n      __sprintf_chk(pcVar6,1,0xffffffff,"%s (%s)",__s1,__s);\n      if (local_24 != (char *)0x0) {\n        free(local_24);\n      }\n      goto joined_r0x00014a36;\n    }" ({ "{") (expression_statement "sVar4 = strlen(__s1);" (assignment_expression "sVar4 = strlen(__s1)" (identifier "sVar4") (= "=") (call_expression "strlen(__s1)" (identifier "strlen") (argument_list "(__s1)" (( "(") (identifier "__s1") () ")")))) (; ";")) (expression_statement "sVar5 = strlen(__s);" (assignment_expression "sVar5 = strlen(__s)" (identifier "sVar5") (= "=") (call_expression "strlen(__s)" (identifier "strlen") (argument_list "(__s)" (( "(") (identifier "__s") () ")")))) (; ";")) (expression_statement "pcVar6 = (char *)FUN_00015880(sVar4 + 4 + sVar5);" (assignment_expression "pcVar6 = (char *)FUN_00015880(sVar4 + 4 + sVar5)" (identifier "pcVar6") (= "=") (cast_expression "(char *)FUN_00015880(sVar4 + 4 + sVar5)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_00015880(sVar4 + 4 + sVar5)" (identifier "FUN_00015880") (argument_list "(sVar4 + 4 + sVar5)" (( "(") (binary_expression "sVar4 + 4 + sVar5" (binary_expression "sVar4 + 4" (identifier "sVar4") (+ "+") (number_literal "4")) (+ "+") (identifier "sVar5")) () ")"))))) (; ";")) (expression_statement "__sprintf_chk(pcVar6,1,0xffffffff,"%s (%s)",__s1,__s);" (call_expression "__sprintf_chk(pcVar6,1,0xffffffff,"%s (%s)",__s1,__s)" (identifier "__sprintf_chk") (argument_list "(pcVar6,1,0xffffffff,"%s (%s)",__s1,__s)" (( "(") (identifier "pcVar6") (, ",") (number_literal "1") (, ",") (number_literal "0xffffffff") (, ",") (string_literal ""%s (%s)"" (" """) (string_content "%s (%s)") (" """)) (, ",") (identifier "__s1") (, ",") (identifier "__s") () ")"))) (; ";")) (if_statement "if (local_24 != (char *)0x0) {\n        free(local_24);\n      }" (if "if") (parenthesized_expression "(local_24 != (char *)0x0)" (( "(") (binary_expression "local_24 != (char *)0x0" (identifier "local_24") (!= "!=") (cast_expression "(char *)0x0" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n        free(local_24);\n      }" ({ "{") (expression_statement "free(local_24);" (call_expression "free(local_24)" (identifier "free") (argument_list "(local_24)" (( "(") (identifier "local_24") () ")"))) (; ";")) (} "}"))) (goto_statement "goto joined_r0x00014a36;" (goto "goto") (statement_identifier "joined_r0x00014a36") (; ";")) (} "}")))) (if_statement "if (local_24 == (char *)0x0) goto joined_r0x00014a36;" (if "if") (parenthesized_expression "(local_24 == (char *)0x0)" (( "(") (binary_expression "local_24 == (char *)0x0" (identifier "local_24") (== "==") (cast_expression "(char *)0x0" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (goto_statement "goto joined_r0x00014a36;" (goto "goto") (statement_identifier "joined_r0x00014a36") (; ";"))) (} "}")) (else_clause "else {\n    __s = (char *)FUN_00015d40(param_2,"UTF-8",pcVar2);\n    sVar4 = strlen(pcVar2);\n    __dest = (void *)FUN_00015880(sVar4 + 0xb);\n    memcpy(__dest,pcVar2,sVar4);\n    puVar9 = (undefined4 *)(sVar4 + (int)__dest);\n    *puVar9 = 0x52542f2f;\n    puVar9[1] = 0x4c534e41;\n    *(undefined2 *)(puVar9 + 2) = 0x5449;\n    *(undefined1 *)((int)puVar9 + 10) = 0;\n    pcVar2 = (char *)FUN_00015d40(param_2,"UTF-8",__dest);\n    free(__dest);\n    if (pcVar2 == (char *)0x0) {\n      if (__s != (char *)0x0) goto LAB_00014b81;\nLAB_00014bfc:\n      param_2 = (char *)0x0;\n      pcVar2 = param_1;\n      pcVar7 = (char *)0x0;\n      pcVar8 = (char *)0x0;\n      goto LAB_000149d0;\n    }\n    pcVar7 = strchr(pcVar2,0x3f);\n    if (pcVar7 == (char *)0x0) {\n      pcVar7 = pcVar2;\n      if (__s == (char *)0x0) {\n        param_2 = (char *)0x0;\n        pcVar8 = pcVar2;\n        goto LAB_000149d0;\n      }\n      iVar3 = strcmp(__s1,param_1);\n      if (iVar3 == 0) {\n        if (__s == pcVar2) {\n          return __s;\n        }\n        free(pcVar2);\n        return __s;\n      }\n    }\n    else {\n      free(pcVar2);\n      if (__s == (char *)0x0) goto LAB_00014bfc;\nLAB_00014b81:\n      iVar3 = strcmp(__s1,param_1);\n      if (iVar3 == 0) {\n        return __s;\n      }\n      pcVar7 = (char *)0x0;\n    }\n    cVar1 = FUN_00013fe0();\n    pcVar8 = pcVar7;\n    param_2 = __s;\n    local_24 = __s;\n    if (cVar1 == '\0') goto LAB_00014a00;\n  }" (else "else") (compound_statement "{\n    __s = (char *)FUN_00015d40(param_2,"UTF-8",pcVar2);\n    sVar4 = strlen(pcVar2);\n    __dest = (void *)FUN_00015880(sVar4 + 0xb);\n    memcpy(__dest,pcVar2,sVar4);\n    puVar9 = (undefined4 *)(sVar4 + (int)__dest);\n    *puVar9 = 0x52542f2f;\n    puVar9[1] = 0x4c534e41;\n    *(undefined2 *)(puVar9 + 2) = 0x5449;\n    *(undefined1 *)((int)puVar9 + 10) = 0;\n    pcVar2 = (char *)FUN_00015d40(param_2,"UTF-8",__dest);\n    free(__dest);\n    if (pcVar2 == (char *)0x0) {\n      if (__s != (char *)0x0) goto LAB_00014b81;\nLAB_00014bfc:\n      param_2 = (char *)0x0;\n      pcVar2 = param_1;\n      pcVar7 = (char *)0x0;\n      pcVar8 = (char *)0x0;\n      goto LAB_000149d0;\n    }\n    pcVar7 = strchr(pcVar2,0x3f);\n    if (pcVar7 == (char *)0x0) {\n      pcVar7 = pcVar2;\n      if (__s == (char *)0x0) {\n        param_2 = (char *)0x0;\n        pcVar8 = pcVar2;\n        goto LAB_000149d0;\n      }\n      iVar3 = strcmp(__s1,param_1);\n      if (iVar3 == 0) {\n        if (__s == pcVar2) {\n          return __s;\n        }\n        free(pcVar2);\n        return __s;\n      }\n    }\n    else {\n      free(pcVar2);\n      if (__s == (char *)0x0) goto LAB_00014bfc;\nLAB_00014b81:\n      iVar3 = strcmp(__s1,param_1);\n      if (iVar3 == 0) {\n        return __s;\n      }\n      pcVar7 = (char *)0x0;\n    }\n    cVar1 = FUN_00013fe0();\n    pcVar8 = pcVar7;\n    param_2 = __s;\n    local_24 = __s;\n    if (cVar1 == '\0') goto LAB_00014a00;\n  }" ({ "{") (expression_statement "__s = (char *)FUN_00015d40(param_2,"UTF-8",pcVar2);" (assignment_expression "__s = (char *)FUN_00015d40(param_2,"UTF-8",pcVar2)" (identifier "__s") (= "=") (cast_expression "(char *)FUN_00015d40(param_2,"UTF-8",pcVar2)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_00015d40(param_2,"UTF-8",pcVar2)" (identifier "FUN_00015d40") (argument_list "(param_2,"UTF-8",pcVar2)" (( "(") (identifier "param_2") (, ",") (string_literal ""UTF-8"" (" """) (string_content "UTF-8") (" """)) (, ",") (identifier "pcVar2") () ")"))))) (; ";")) (expression_statement "sVar4 = strlen(pcVar2);" (assignment_expression "sVar4 = strlen(pcVar2)" (identifier "sVar4") (= "=") (call_expression "strlen(pcVar2)" (identifier "strlen") (argument_list "(pcVar2)" (( "(") (identifier "pcVar2") () ")")))) (; ";")) (expression_statement "__dest = (void *)FUN_00015880(sVar4 + 0xb);" (assignment_expression "__dest = (void *)FUN_00015880(sVar4 + 0xb)" (identifier "__dest") (= "=") (cast_expression "(void *)FUN_00015880(sVar4 + 0xb)" (( "(") (type_descriptor "void *" (primitive_type "void") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_00015880(sVar4 + 0xb)" (identifier "FUN_00015880") (argument_list "(sVar4 + 0xb)" (( "(") (binary_expression "sVar4 + 0xb" (identifier "sVar4") (+ "+") (number_literal "0xb")) () ")"))))) (; ";")) (expression_statement "memcpy(__dest,pcVar2,sVar4);" (call_expression "memcpy(__dest,pcVar2,sVar4)" (identifier "memcpy") (argument_list "(__dest,pcVar2,sVar4)" (( "(") (identifier "__dest") (, ",") (identifier "pcVar2") (, ",") (identifier "sVar4") () ")"))) (; ";")) (expression_statement "puVar9 = (undefined4 *)(sVar4 + (int)__dest);" (assignment_expression "puVar9 = (undefined4 *)(sVar4 + (int)__dest)" (identifier "puVar9") (= "=") (cast_expression "(undefined4 *)(sVar4 + (int)__dest)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(sVar4 + (int)__dest)" (( "(") (binary_expression "sVar4 + (int)__dest" (identifier "sVar4") (+ "+") (cast_expression "(int)__dest" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "__dest"))) () ")")))) (; ";")) (expression_statement "*puVar9 = 0x52542f2f;" (assignment_expression "*puVar9 = 0x52542f2f" (pointer_expression "*puVar9" (* "*") (identifier "puVar9")) (= "=") (number_literal "0x52542f2f")) (; ";")) (expression_statement "puVar9[1] = 0x4c534e41;" (assignment_expression "puVar9[1] = 0x4c534e41" (subscript_expression "puVar9[1]" (identifier "puVar9") ([ "[") (number_literal "1") (] "]")) (= "=") (number_literal "0x4c534e41")) (; ";")) (expression_statement "*(undefined2 *)(puVar9 + 2) = 0x5449;" (assignment_expression "*(undefined2 *)(puVar9 + 2) = 0x5449" (pointer_expression "*(undefined2 *)(puVar9 + 2)" (* "*") (cast_expression "(undefined2 *)(puVar9 + 2)" (( "(") (type_descriptor "undefined2 *" (type_identifier "undefined2") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar9 + 2)" (( "(") (binary_expression "puVar9 + 2" (identifier "puVar9") (+ "+") (number_literal "2")) () ")")))) (= "=") (number_literal "0x5449")) (; ";")) (expression_statement "*(undefined1 *)((int)puVar9 + 10) = 0;" (assignment_expression "*(undefined1 *)((int)puVar9 + 10) = 0" (pointer_expression "*(undefined1 *)((int)puVar9 + 10)" (* "*") (cast_expression "(undefined1 *)((int)puVar9 + 10)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)puVar9 + 10)" (( "(") (binary_expression "(int)puVar9 + 10" (cast_expression "(int)puVar9" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar9")) (+ "+") (number_literal "10")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "pcVar2 = (char *)FUN_00015d40(param_2,"UTF-8",__dest);" (assignment_expression "pcVar2 = (char *)FUN_00015d40(param_2,"UTF-8",__dest)" (identifier "pcVar2") (= "=") (cast_expression "(char *)FUN_00015d40(param_2,"UTF-8",__dest)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_00015d40(param_2,"UTF-8",__dest)" (identifier "FUN_00015d40") (argument_list "(param_2,"UTF-8",__dest)" (( "(") (identifier "param_2") (, ",") (string_literal ""UTF-8"" (" """) (string_content "UTF-8") (" """)) (, ",") (identifier "__dest") () ")"))))) (; ";")) (expression_statement "free(__dest);" (call_expression "free(__dest)" (identifier "free") (argument_list "(__dest)" (( "(") (identifier "__dest") () ")"))) (; ";")) (if_statement "if (pcVar2 == (char *)0x0) {\n      if (__s != (char *)0x0) goto LAB_00014b81;\nLAB_00014bfc:\n      param_2 = (char *)0x0;\n      pcVar2 = param_1;\n      pcVar7 = (char *)0x0;\n      pcVar8 = (char *)0x0;\n      goto LAB_000149d0;\n    }" (if "if") (parenthesized_expression "(pcVar2 == (char *)0x0)" (( "(") (binary_expression "pcVar2 == (char *)0x0" (identifier "pcVar2") (== "==") (cast_expression "(char *)0x0" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n      if (__s != (char *)0x0) goto LAB_00014b81;\nLAB_00014bfc:\n      param_2 = (char *)0x0;\n      pcVar2 = param_1;\n      pcVar7 = (char *)0x0;\n      pcVar8 = (char *)0x0;\n      goto LAB_000149d0;\n    }" ({ "{") (if_statement "if (__s != (char *)0x0) goto LAB_00014b81;" (if "if") (parenthesized_expression "(__s != (char *)0x0)" (( "(") (binary_expression "__s != (char *)0x0" (identifier "__s") (!= "!=") (cast_expression "(char *)0x0" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (goto_statement "goto LAB_00014b81;" (goto "goto") (statement_identifier "LAB_00014b81") (; ";"))) (labeled_statement "LAB_00014bfc:\n      param_2 = (char *)0x0;" (statement_identifier "LAB_00014bfc") (: ":") (expression_statement "param_2 = (char *)0x0;" (assignment_expression "param_2 = (char *)0x0" (identifier "param_2") (= "=") (cast_expression "(char *)0x0" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";"))) (expression_statement "pcVar2 = param_1;" (assignment_expression "pcVar2 = param_1" (identifier "pcVar2") (= "=") (identifier "param_1")) (; ";")) (expression_statement "pcVar7 = (char *)0x0;" (assignment_expression "pcVar7 = (char *)0x0" (identifier "pcVar7") (= "=") (cast_expression "(char *)0x0" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";")) (expression_statement "pcVar8 = (char *)0x0;" (assignment_expression "pcVar8 = (char *)0x0" (identifier "pcVar8") (= "=") (cast_expression "(char *)0x0" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";")) (goto_statement "goto LAB_000149d0;" (goto "goto") (statement_identifier "LAB_000149d0") (; ";")) (} "}"))) (expression_statement "pcVar7 = strchr(pcVar2,0x3f);" (assignment_expression "pcVar7 = strchr(pcVar2,0x3f)" (identifier "pcVar7") (= "=") (call_expression "strchr(pcVar2,0x3f)" (identifier "strchr") (argument_list "(pcVar2,0x3f)" (( "(") (identifier "pcVar2") (, ",") (number_literal "0x3f") () ")")))) (; ";")) (if_statement "if (pcVar7 == (char *)0x0) {\n      pcVar7 = pcVar2;\n      if (__s == (char *)0x0) {\n        param_2 = (char *)0x0;\n        pcVar8 = pcVar2;\n        goto LAB_000149d0;\n      }\n      iVar3 = strcmp(__s1,param_1);\n      if (iVar3 == 0) {\n        if (__s == pcVar2) {\n          return __s;\n        }\n        free(pcVar2);\n        return __s;\n      }\n    }\n    else {\n      free(pcVar2);\n      if (__s == (char *)0x0) goto LAB_00014bfc;\nLAB_00014b81:\n      iVar3 = strcmp(__s1,param_1);\n      if (iVar3 == 0) {\n        return __s;\n      }\n      pcVar7 = (char *)0x0;\n    }" (if "if") (parenthesized_expression "(pcVar7 == (char *)0x0)" (( "(") (binary_expression "pcVar7 == (char *)0x0" (identifier "pcVar7") (== "==") (cast_expression "(char *)0x0" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n      pcVar7 = pcVar2;\n      if (__s == (char *)0x0) {\n        param_2 = (char *)0x0;\n        pcVar8 = pcVar2;\n        goto LAB_000149d0;\n      }\n      iVar3 = strcmp(__s1,param_1);\n      if (iVar3 == 0) {\n        if (__s == pcVar2) {\n          return __s;\n        }\n        free(pcVar2);\n        return __s;\n      }\n    }" ({ "{") (expression_statement "pcVar7 = pcVar2;" (assignment_expression "pcVar7 = pcVar2" (identifier "pcVar7") (= "=") (identifier "pcVar2")) (; ";")) (if_statement "if (__s == (char *)0x0) {\n        param_2 = (char *)0x0;\n        pcVar8 = pcVar2;\n        goto LAB_000149d0;\n      }" (if "if") (parenthesized_expression "(__s == (char *)0x0)" (( "(") (binary_expression "__s == (char *)0x0" (identifier "__s") (== "==") (cast_expression "(char *)0x0" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n        param_2 = (char *)0x0;\n        pcVar8 = pcVar2;\n        goto LAB_000149d0;\n      }" ({ "{") (expression_statement "param_2 = (char *)0x0;" (assignment_expression "param_2 = (char *)0x0" (identifier "param_2") (= "=") (cast_expression "(char *)0x0" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";")) (expression_statement "pcVar8 = pcVar2;" (assignment_expression "pcVar8 = pcVar2" (identifier "pcVar8") (= "=") (identifier "pcVar2")) (; ";")) (goto_statement "goto LAB_000149d0;" (goto "goto") (statement_identifier "LAB_000149d0") (; ";")) (} "}"))) (expression_statement "iVar3 = strcmp(__s1,param_1);" (assignment_expression "iVar3 = strcmp(__s1,param_1)" (identifier "iVar3") (= "=") (call_expression "strcmp(__s1,param_1)" (identifier "strcmp") (argument_list "(__s1,param_1)" (( "(") (identifier "__s1") (, ",") (identifier "param_1") () ")")))) (; ";")) (if_statement "if (iVar3 == 0) {\n        if (__s == pcVar2) {\n          return __s;\n        }\n        free(pcVar2);\n        return __s;\n      }" (if "if") (parenthesized_expression "(iVar3 == 0)" (( "(") (binary_expression "iVar3 == 0" (identifier "iVar3") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n        if (__s == pcVar2) {\n          return __s;\n        }\n        free(pcVar2);\n        return __s;\n      }" ({ "{") (if_statement "if (__s == pcVar2) {\n          return __s;\n        }" (if "if") (parenthesized_expression "(__s == pcVar2)" (( "(") (binary_expression "__s == pcVar2" (identifier "__s") (== "==") (identifier "pcVar2")) () ")")) (compound_statement "{\n          return __s;\n        }" ({ "{") (return_statement "return __s;" (return "return") (identifier "__s") (; ";")) (} "}"))) (expression_statement "free(pcVar2);" (call_expression "free(pcVar2)" (identifier "free") (argument_list "(pcVar2)" (( "(") (identifier "pcVar2") () ")"))) (; ";")) (return_statement "return __s;" (return "return") (identifier "__s") (; ";")) (} "}"))) (} "}")) (else_clause "else {\n      free(pcVar2);\n      if (__s == (char *)0x0) goto LAB_00014bfc;\nLAB_00014b81:\n      iVar3 = strcmp(__s1,param_1);\n      if (iVar3 == 0) {\n        return __s;\n      }\n      pcVar7 = (char *)0x0;\n    }" (else "else") (compound_statement "{\n      free(pcVar2);\n      if (__s == (char *)0x0) goto LAB_00014bfc;\nLAB_00014b81:\n      iVar3 = strcmp(__s1,param_1);\n      if (iVar3 == 0) {\n        return __s;\n      }\n      pcVar7 = (char *)0x0;\n    }" ({ "{") (expression_statement "free(pcVar2);" (call_expression "free(pcVar2)" (identifier "free") (argument_list "(pcVar2)" (( "(") (identifier "pcVar2") () ")"))) (; ";")) (if_statement "if (__s == (char *)0x0) goto LAB_00014bfc;" (if "if") (parenthesized_expression "(__s == (char *)0x0)" (( "(") (binary_expression "__s == (char *)0x0" (identifier "__s") (== "==") (cast_expression "(char *)0x0" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (goto_statement "goto LAB_00014bfc;" (goto "goto") (statement_identifier "LAB_00014bfc") (; ";"))) (labeled_statement "LAB_00014b81:\n      iVar3 = strcmp(__s1,param_1);" (statement_identifier "LAB_00014b81") (: ":") (expression_statement "iVar3 = strcmp(__s1,param_1);" (assignment_expression "iVar3 = strcmp(__s1,param_1)" (identifier "iVar3") (= "=") (call_expression "strcmp(__s1,param_1)" (identifier "strcmp") (argument_list "(__s1,param_1)" (( "(") (identifier "__s1") (, ",") (identifier "param_1") () ")")))) (; ";"))) (if_statement "if (iVar3 == 0) {\n        return __s;\n      }" (if "if") (parenthesized_expression "(iVar3 == 0)" (( "(") (binary_expression "iVar3 == 0" (identifier "iVar3") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n        return __s;\n      }" ({ "{") (return_statement "return __s;" (return "return") (identifier "__s") (; ";")) (} "}"))) (expression_statement "pcVar7 = (char *)0x0;" (assignment_expression "pcVar7 = (char *)0x0" (identifier "pcVar7") (= "=") (cast_expression "(char *)0x0" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";")) (} "}")))) (expression_statement "cVar1 = FUN_00013fe0();" (assignment_expression "cVar1 = FUN_00013fe0()" (identifier "cVar1") (= "=") (call_expression "FUN_00013fe0()" (identifier "FUN_00013fe0") (argument_list "()" (( "(") () ")")))) (; ";")) (expression_statement "pcVar8 = pcVar7;" (assignment_expression "pcVar8 = pcVar7" (identifier "pcVar8") (= "=") (identifier "pcVar7")) (; ";")) (expression_statement "param_2 = __s;" (assignment_expression "param_2 = __s" (identifier "param_2") (= "=") (identifier "__s")) (; ";")) (expression_statement "local_24 = __s;" (assignment_expression "local_24 = __s" (identifier "local_24") (= "=") (identifier "__s")) (; ";")) (if_statement "if (cVar1 == '\0') goto LAB_00014a00;" (if "if") (parenthesized_expression "(cVar1 == '\0')" (( "(") (binary_expression "cVar1 == '\0'" (identifier "cVar1") (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (goto_statement "goto LAB_00014a00;" (goto "goto") (statement_identifier "LAB_00014a00") (; ";"))) (} "}")))) (expression_statement "free(local_24);" (call_expression "free(local_24)" (identifier "free") (argument_list "(local_24)" (( "(") (identifier "local_24") () ")"))) (; ";")) (labeled_statement "joined_r0x00014a36:\n  if (pcVar7 != (char *)0x0) {\n    free(pcVar7);\n  }" (statement_identifier "joined_r0x00014a36") (: ":") (if_statement "if (pcVar7 != (char *)0x0) {\n    free(pcVar7);\n  }" (if "if") (parenthesized_expression "(pcVar7 != (char *)0x0)" (( "(") (binary_expression "pcVar7 != (char *)0x0" (identifier "pcVar7") (!= "!=") (cast_expression "(char *)0x0" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n    free(pcVar7);\n  }" ({ "{") (expression_statement "free(pcVar7);" (call_expression "free(pcVar7)" (identifier "free") (argument_list "(pcVar7)" (( "(") (identifier "pcVar7") () ")"))) (; ";")) (} "}")))) (return_statement "return pcVar6;" (return "return") (identifier "pcVar6") (; ";")) (} "}")))

/* WARNING: Function: __x86.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */

char * function_1(char *name_ascii,char *var_5)

{
  type_1 _Var1;
  char *__s1;
  char *var_20;
  int var_4;
  size_t var_11;
  size_t var_12;
  char *pcVar6;
  char *var_21;
  char *var_19;
  char *var_8;
  char *var_14;
  
  __s1 = (char *)var_1(0,name_ascii,5);
  var_20 = var_2();
  var_4 = var_3(var_20,"UTF-8");
  pcVar6 = __s1;
  if (var_4 == 0) {
    if (var_5 == (char *)0x0) {
      var_20 = name_ascii;
      var_19 = (char *)0x0;
      var_8 = (char *)0x0;
    }
    else {
      var_20 = var_5;
      var_19 = (char *)0x0;
      var_8 = var_5;
    }
LAB_000149d0:
    var_4 = var_6(__s1,name_ascii);
    if (var_4 == 0) {
      return var_20;
    }
    _Var1 = var_7(__s1,name_ascii);
    if (_Var1) goto joined_r0x00014a36;
    var_14 = (char *)0x0;
    var_21 = var_20;
LAB_00014a00:
    if (((var_5 == (char *)0x0) || (_Var1 = var_7(__s1,var_5), !_Var1))
       && ((var_8 == (char *)0x0 || (_Var1 = var_7(__s1,var_8), !_Var1)))) {
      var_11 = var_9(__s1);
      var_12 = var_9(var_21);
      pcVar6 = (char *)var_10(var_11 + 4 + var_12);
      var_13(pcVar6,1,0xffffffff,"%s (%s)",__s1,var_21);
      if (var_14 != (char *)0x0) {
        var_15(var_14);
      }
      goto joined_r0x00014a36;
    }
    if (var_14 == (char *)0x0) goto joined_r0x00014a36;
  }
  else {
    var_21 = var_16(var_5,"UTF-8",var_20);
    var_11 = var_9(var_20);
    var_19 = (char *)var_10(var_11 + 0xb);
    var_17(var_19,var_20,var_11);
    var_18(var_19 + var_11,"//TRANSLIT",0xb);
    var_20 = var_16(var_5,"UTF-8",var_19);
    var_15(var_19);
    if (var_20 == (char *)0x0) {
      if (var_21 != (char *)0x0) goto LAB_00014b81;
LAB_00014bfc:
      var_5 = (char *)0x0;
      var_20 = name_ascii;
      var_19 = (char *)0x0;
      var_8 = (char *)0x0;
      goto LAB_000149d0;
    }
    var_19 = var_22(var_20,0x3f);
    if (var_19 == (char *)0x0) {
      var_19 = var_20;
      if (var_21 == (char *)0x0) {
        var_5 = (char *)0x0;
        var_8 = var_20;
        goto LAB_000149d0;
      }
      var_4 = var_6(__s1,name_ascii);
      if (var_4 == 0) {
        if (var_21 == var_20) {
          return var_21;
        }
        var_15(var_20);
        return var_21;
      }
    }
    else {
      var_15(var_20);
      if (var_21 == (char *)0x0) goto LAB_00014bfc;
LAB_00014b81:
      var_4 = var_6(__s1,name_ascii);
      if (var_4 == 0) {
        return var_21;
      }
      var_19 = (char *)0x0;
    }
    _Var1 = var_7(__s1,name_ascii);
    var_8 = var_19;
    var_5 = var_21;
    var_14 = var_21;
    if (!_Var1) goto LAB_00014a00;
  }
  var_15(var_14);
joined_r0x00014a36:
  if (var_19 != (char *)0x0) {
    var_15(var_19);
  }
  return pcVar6;
}


(translation_unit (function_definition type: (primitive_type) declarator: (pointer_declarator declarator: (function_declarator declarator: (identifier) parameters: (parameter_list (parameter_declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (parameter_declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier)))))) body: (compound_statement (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (call_expression function: (identifier) arguments: (argument_list (number_literal) (identifier) (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (call_expression function: (identifier) arguments: (argument_list))))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier) (string_literal (string_content)))))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (number_literal)))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (number_literal))))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (identifier)))))) (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier)))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (return_statement (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (char_literal (escape_sequence)))) consequence: (goto_statement label: (statement_identifier))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (labeled_statement label: (statement_identifier) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (number_literal)))) right: (parenthesized_expression (comma_expression left: (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list))) right: (binary_expression left: (identifier) right: (char_literal (escape_sequence))))))) right: (parenthesized_expression (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (number_literal))) right: (parenthesized_expression (comma_expression left: (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list))) right: (binary_expression left: (identifier) right: (char_literal (escape_sequence)))))))))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (call_expression function: (identifier) arguments: (argument_list (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (identifier))))))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (number_literal) (number_literal) (string_literal (string_content)) (identifier) (identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (number_literal)))) consequence: (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier)))))) (goto_statement label: (statement_identifier))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (number_literal)))) consequence: (goto_statement label: (statement_identifier)))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (call_expression function: (identifier) arguments: (argument_list (identifier) (string_literal (string_content)) (identifier)))))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (call_expression function: (identifier) arguments: (argument_list (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier) (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier))))))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (number_literal))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal))))) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (call_expression function: (identifier) arguments: (argument_list (identifier) (string_literal (string_content)) (identifier)))))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (number_literal)))) consequence: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (number_literal)))) consequence: (goto_statement label: (statement_identifier))) (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (number_literal))))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (number_literal)))) (goto_statement label: (statement_identifier)))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier) (number_literal))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (number_literal)))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (number_literal)))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (goto_statement label: (statement_identifier)))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (compound_statement (return_statement (identifier)))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier)))) (return_statement (identifier))))) alternative: (else_clause (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (number_literal)))) consequence: (goto_statement label: (statement_identifier))) (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier)))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (return_statement (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list)))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (char_literal (escape_sequence)))) consequence: (goto_statement label: (statement_identifier)))))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier)))) (labeled_statement label: (statement_identifier) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (number_literal)))) consequence: (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier))))))) (return_statement (identifier)))))

/* WARNING: Function: __i686.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */

char * MASKED(char *param_1,char *param_2)

{
  char cVar1;
  char *__s1;
  char *pcVar2;
  int iVar3;
  size_t sVar4;
  size_t sVar5;
  char *pcVar6;
  char *__s;
  void *__dest;
  char *pcVar7;
  char *pcVar8;
  undefined4 *puVar9;
  char *local_24;
  
  __s1 = (char *)dcgettext(0,param_1,5);
  pcVar2 = (char *)FUN_00017150();
  iVar3 = FUN_00016e00(pcVar2,"UTF-8");
  pcVar6 = __s1;
  if (iVar3 == 0) {
    if (param_2 == (char *)0x0) {
      pcVar2 = param_1;
      pcVar7 = (char *)0x0;
      pcVar8 = (char *)0x0;
    }
    else {
      pcVar2 = param_2;
      pcVar7 = (char *)0x0;
      pcVar8 = param_2;
    }
LAB_000149d0:
    iVar3 = strcmp(__s1,param_1);
    if (iVar3 == 0) {
      return pcVar2;
    }
    cVar1 = FUN_00013fe0();
    if (cVar1 != '\0') goto joined_r0x00014a36;
    local_24 = (char *)0x0;
    __s = pcVar2;
LAB_00014a00:
    if (((param_2 == (char *)0x0) || (cVar1 = FUN_00013fe0(), cVar1 == '\0')) &&
       ((pcVar8 == (char *)0x0 || (cVar1 = FUN_00013fe0(), cVar1 == '\0')))) {
      sVar4 = strlen(__s1);
      sVar5 = strlen(__s);
      pcVar6 = (char *)FUN_00015880(sVar4 + 4 + sVar5);
      __sprintf_chk(pcVar6,1,0xffffffff,"%s (%s)",__s1,__s);
      if (local_24 != (char *)0x0) {
        free(local_24);
      }
      goto joined_r0x00014a36;
    }
    if (local_24 == (char *)0x0) goto joined_r0x00014a36;
  }
  else {
    __s = (char *)FUN_00015d40(param_2,"UTF-8",pcVar2);
    sVar4 = strlen(pcVar2);
    __dest = (void *)FUN_00015880(sVar4 + 0xb);
    memcpy(__dest,pcVar2,sVar4);
    puVar9 = (undefined4 *)(sVar4 + (int)__dest);
    *puVar9 = 0x52542f2f;
    puVar9[1] = 0x4c534e41;
    *(undefined2 *)(puVar9 + 2) = 0x5449;
    *(undefined1 *)((int)puVar9 + 10) = 0;
    pcVar2 = (char *)FUN_00015d40(param_2,"UTF-8",__dest);
    free(__dest);
    if (pcVar2 == (char *)0x0) {
      if (__s != (char *)0x0) goto LAB_00014b81;
LAB_00014bfc:
      param_2 = (char *)0x0;
      pcVar2 = param_1;
      pcVar7 = (char *)0x0;
      pcVar8 = (char *)0x0;
      goto LAB_000149d0;
    }
    pcVar7 = strchr(pcVar2,0x3f);
    if (pcVar7 == (char *)0x0) {
      pcVar7 = pcVar2;
      if (__s == (char *)0x0) {
        param_2 = (char *)0x0;
        pcVar8 = pcVar2;
        goto LAB_000149d0;
      }
      iVar3 = strcmp(__s1,param_1);
      if (iVar3 == 0) {
        if (__s == pcVar2) {
          return __s;
        }
        free(pcVar2);
        return __s;
      }
    }
    else {
      free(pcVar2);
      if (__s == (char *)0x0) goto LAB_00014bfc;
LAB_00014b81:
      iVar3 = strcmp(__s1,param_1);
      if (iVar3 == 0) {
        return __s;
      }
      pcVar7 = (char *)0x0;
    }
    cVar1 = FUN_00013fe0();
    pcVar8 = pcVar7;
    param_2 = __s;
    local_24 = __s;
    if (cVar1 == '\0') goto LAB_00014a00;
  }
  free(local_24);
joined_r0x00014a36:
  if (pcVar7 != (char *)0x0) {
    free(pcVar7);
  }
  return pcVar6;
}

