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

bfd_elf_version_expr *
lang_new_vers_pattern(bfd_elf_version_expr *orig,char *new_name,char *lang,bfd_boolean literal_p)

{
  bool bVar1;
  bool bVar2;
  char cVar3;
  bfd_elf_version_expr *pbVar4;
  int iVar5;
  size_t sVar6;
  char *fmt;
  bool bVar7;
  char *local_30;
  char *local_2c;
  char *local_24;
  
  pbVar4 = (bfd_elf_version_expr *)xmalloc(0xc);
  pbVar4->next = orig;
  pbVar4->field_0x8 = pbVar4->field_0x8 & 0xf8 | 1;
  if (literal_p == 0) {
    sVar6 = strlen(new_name);
    local_24 = (char *)xmalloc(sVar6 + 1);
    cVar3 = *new_name;
    if (cVar3 == '\0') {
LAB_00027970:
      free(local_24);
      local_24 = new_name;
    }
    else {
      local_2c = new_name;
      local_30 = local_24;
      bVar7 = false;
      bVar1 = false;
      do {
        while (bVar2 = bVar7, !bVar2) {
          if ((cVar3 == '?' || cVar3 == '*') || (cVar3 == '[')) {
            free(local_24);
            goto LAB_00027913;
          }
          bVar7 = cVar3 == '\\';
          *local_30 = cVar3;
          local_2c = local_2c + 1;
          local_30 = local_30 + 1;
          cVar3 = *local_2c;
          bVar2 = bVar1;
          if (cVar3 == '\0') goto LAB_000278da;
        }
        local_2c = local_2c + 1;
        local_30[-1] = cVar3;
        cVar3 = *local_2c;
        bVar7 = false;
        bVar1 = bVar2;
      } while (cVar3 != '\0');
LAB_000278da:
      if (!bVar2) goto LAB_00027970;
      *local_30 = '\0';
    }
    pbVar4->pattern = local_24;
  }
  else {
    pbVar4->pattern = new_name;
    if (new_name == (char *)0x0) {
LAB_00027913:
      pbVar4->pattern = new_name;
      pbVar4->field_0x8 = pbVar4->field_0x8 & 0xfe;
    }
  }
  if (lang != (char *)0x0) {
    iVar5 = strcasecmp(lang,"C");
    if (iVar5 != 0) {
      iVar5 = strcasecmp(lang,"C++");
      if (iVar5 == 0) {
        pbVar4->field_0x8 = pbVar4->field_0x8 & 199 | 0x10;
      }
      else {
        iVar5 = strcasecmp(lang,"Java");
        if (iVar5 == 0) {
          pbVar4->field_0x8 = pbVar4->field_0x8 & 199 | 0x20;
        }
        else {
          fmt = (char *)dcgettext(0,"%X%P: unknown language `%s\' in version information\n",5);
          einfo(fmt,lang);
          pbVar4->field_0x8 = pbVar4->field_0x8 & 199 | 8;
        }
      }
      goto LAB_000277cb;
    }
  }
  pbVar4->field_0x8 = pbVar4->field_0x8 & 199 | 8;
LAB_000277cb:
  pbVar4 = ldemul_new_vers_pattern(pbVar4);
  return pbVar4;
}



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

void FUN_00027750(undefined4 param_1,char *param_2,char *param_3,int param_4)

{
  bool bVar1;
  bool bVar2;
  char cVar3;
  undefined4 *puVar4;
  int iVar5;
  size_t sVar6;
  undefined4 uVar7;
  bool bVar8;
  char *local_30;
  char *local_2c;
  char *local_24;
  
  puVar4 = (undefined4 *)xmalloc(0xc);
  *puVar4 = param_1;
  *(byte *)(puVar4 + 2) = *(byte *)(puVar4 + 2) & 0xf8 | 1;
  if (param_4 == 0) {
    sVar6 = strlen(param_2);
    local_24 = (char *)xmalloc(sVar6 + 1);
    cVar3 = *param_2;
    if (cVar3 == '\0') {
LAB_00027970:
      free(local_24);
      local_24 = param_2;
    }
    else {
      local_2c = param_2;
      local_30 = local_24;
      bVar8 = false;
      bVar1 = false;
      do {
        while (bVar2 = bVar8, !bVar2) {
          if ((cVar3 == '?' || cVar3 == '*') || (cVar3 == '[')) {
            free(local_24);
            goto LAB_00027913;
          }
          bVar8 = cVar3 == '\\';
          *local_30 = cVar3;
          local_2c = local_2c + 1;
          local_30 = local_30 + 1;
          cVar3 = *local_2c;
          bVar2 = bVar1;
          if (cVar3 == '\0') goto LAB_000278da;
        }
        local_2c = local_2c + 1;
        local_30[-1] = cVar3;
        cVar3 = *local_2c;
        bVar8 = false;
        bVar1 = bVar2;
      } while (cVar3 != '\0');
LAB_000278da:
      if (!bVar2) goto LAB_00027970;
      *local_30 = '\0';
    }
    puVar4[1] = local_24;
  }
  else {
    puVar4[1] = param_2;
    if (param_2 == (char *)0x0) {
LAB_00027913:
      puVar4[1] = param_2;
      *(byte *)(puVar4 + 2) = *(byte *)(puVar4 + 2) & 0xfe;
    }
  }
  if (param_3 != (char *)0x0) {
    iVar5 = strcasecmp(param_3,"C");
    if (iVar5 != 0) {
      iVar5 = strcasecmp(param_3,"C++");
      if (iVar5 == 0) {
        *(byte *)(puVar4 + 2) = *(byte *)(puVar4 + 2) & 199 | 0x10;
      }
      else {
        iVar5 = strcasecmp(param_3,"Java");
        if (iVar5 == 0) {
          *(byte *)(puVar4 + 2) = *(byte *)(puVar4 + 2) & 199 | 0x20;
        }
        else {
          uVar7 = dcgettext(0,"%X%P: unknown language `%s\' in version information\n",5);
          FUN_00031760(uVar7,param_3);
          *(byte *)(puVar4 + 2) = *(byte *)(puVar4 + 2) & 199 | 8;
        }
      }
      goto LAB_000277cb;
    }
  }
  *(byte *)(puVar4 + 2) = *(byte *)(puVar4 + 2) & 199 | 8;
LAB_000277cb:
  FUN_000306c0(puVar4);
  return;
}


PUSH EBP
PUSH EDI
PUSH ESI
PUSH EBX
CALL 0x00015a80
ADD EBX,0x698a7
SUB ESP,0x38
MOV EBP,dword ptr [ESP + 0x50]
PUSH 0xc
CALL 0x00014cc8
MOV ESI,EAX
MOV EAX,dword ptr [ESP + 0x50]
ADD ESP,0x10
MOV dword ptr [ESI],EAX
MOVZX EAX,byte ptr [ESI + 0x8]
AND EAX,0xfffffff8
OR EAX,0x1
MOV byte ptr [ESI + 0x8],AL
MOV EAX,dword ptr [ESP + 0x4c]
TEST EAX,EAX
JZ 0x00027830
MOV dword ptr [ESI + 0x4],EBP
TEST EBP,EBP
JZ 0x00027913
MOV EDI,dword ptr [ESP + 0x48]
TEST EDI,EDI
JZ 0x000277be
SUB ESP,0x8
LEA EAX,[EBX + 0xfffac585]
PUSH EAX
PUSH dword ptr [ESP + 0x54]
CALL 0x00014780
ADD ESP,0x10
TEST EAX,EAX
JNZ 0x000277e0
MOVZX EAX,byte ptr [ESI + 0x8]
AND EAX,0xffffffc7
OR EAX,0x8
MOV byte ptr [ESI + 0x8],AL
SUB ESP,0xc
PUSH ESI
CALL 0x000306c0
ADD ESP,0x3c
POP EBX
POP ESI
POP EDI
POP EBP
RET
SUB ESP,0x8
LEA EAX,[EBX + 0xfffbb107]
PUSH EAX
PUSH dword ptr [ESP + 0x54]
CALL 0x00014780
ADD ESP,0x10
TEST EAX,EAX
JZ 0x00027920
SUB ESP,0x8
LEA EAX,[EBX + 0xfffbb10b]
PUSH EAX
PUSH dword ptr [ESP + 0x54]
CALL 0x00014780
ADD ESP,0x10
TEST EAX,EAX
JNZ 0x00027938
MOVZX EAX,byte ptr [ESI + 0x8]
AND EAX,0xffffffc7
OR EAX,0x20
MOV byte ptr [ESI + 0x8],AL
JMP 0x000277cb
SUB ESP,0xc
PUSH EBP
CALL 0x00014720
ADD EAX,0x1
MOV dword ptr [ESP],EAX
CALL 0x00014cc8
MOV dword ptr [ESP + 0x28],EAX
MOV EDX,EAX
MOVZX EAX,byte ptr [EBP]
ADD ESP,0x10
TEST AL,AL
JZ 0x00027970
MOV dword ptr [ESP + 0x14],0x0
XOR EDI,EDI
MOV dword ptr [ESP + 0x1c],ESI
MOV dword ptr [ESP + 0x10],EBP
MOV dword ptr [ESP + 0xc],EDX
JMP 0x00027895
MOV ECX,dword ptr [ESP + 0xc]
ADD dword ptr [ESP + 0x10],0x1
MOV dword ptr [ESP + 0x14],EDI
XOR EDI,EDI
MOV byte ptr [ECX + -0x1],AL
MOV EAX,dword ptr [ESP + 0x10]
MOVZX EAX,byte ptr [EAX]
TEST AL,AL
JZ 0x000278da
TEST EDI,EDI
JNZ 0x00027878
CMP AL,0x3f
SETZ CL
CMP AL,0x2a
MOV EDI,ECX
SETZ CL
MOV ESI,ECX
MOV ECX,EDI
MOV EDX,ESI
OR CL,DL
JNZ 0x00027900
CMP AL,0x5b
JZ 0x00027900
MOV EDX,dword ptr [ESP + 0xc]
CMP AL,0x5c
MOV byte ptr [EDX],AL
SETZ AL
MOVZX EAX,AL
ADD dword ptr [ESP + 0x10],0x1
MOV EDI,EAX
LEA EAX,[EDX + 0x1]
MOV dword ptr [ESP + 0xc],EAX
MOV EAX,dword ptr [ESP + 0x10]
MOVZX EAX,byte ptr [EAX]
TEST AL,AL
JNZ 0x00027895
MOV EAX,dword ptr [ESP + 0x14]
MOV ESI,dword ptr [ESP + 0x1c]
MOV EDX,dword ptr [ESP + 0xc]
TEST EAX,EAX
JZ 0x00027970
MOV byte ptr [EDX],0x0
MOV EAX,dword ptr [ESP + 0x18]
MOV dword ptr [ESI + 0x4],EAX
JMP 0x0002779c
MOV ESI,dword ptr [ESP + 0x1c]
SUB ESP,0xc
PUSH dword ptr [ESP + 0x24]
CALL 0x00014cb0
ADD ESP,0x10
MOV dword ptr [ESI + 0x4],EBP
AND byte ptr [ESI + 0x8],0xfe
JMP 0x0002779c
MOVZX EAX,byte ptr [ESI + 0x8]
AND EAX,0xffffffc7
OR EAX,0x10
MOV byte ptr [ESI + 0x8],AL
JMP 0x000277cb
SUB ESP,0x4
LEA EAX,[EBX + 0xfffbb9b0]
PUSH 0x5
PUSH EAX
PUSH 0x0
CALL 0x000142f0
POP EDX
POP ECX
PUSH dword ptr [ESP + 0x50]
PUSH EAX
CALL 0x00031760
MOVZX EAX,byte ptr [ESI + 0x8]
ADD ESP,0x10
AND EAX,0xffffffc7
OR EAX,0x8
MOV byte ptr [ESI + 0x8],AL
JMP 0x000277cb
SUB ESP,0xc
PUSH dword ptr [ESP + 0x24]
CALL 0x00014cb0
ADD ESP,0x10
MOV dword ptr [ESP + 0x18],EBP
JMP 0x000278f1
(translation_unit "/* WARNING: Function: __i686.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */\n\nvoid FUN_00027750(undefined4 param_1,char *param_2,char *param_3,int param_4)\n\n{\n  bool bVar1;\n  bool bVar2;\n  char cVar3;\n  undefined4 *puVar4;\n  int iVar5;\n  size_t sVar6;\n  undefined4 uVar7;\n  bool bVar8;\n  char *local_30;\n  char *local_2c;\n  char *local_24;\n  \n  puVar4 = (undefined4 *)xmalloc(0xc);\n  *puVar4 = param_1;\n  *(byte *)(puVar4 + 2) = *(byte *)(puVar4 + 2) & 0xf8 | 1;\n  if (param_4 == 0) {\n    sVar6 = strlen(param_2);\n    local_24 = (char *)xmalloc(sVar6 + 1);\n    cVar3 = *param_2;\n    if (cVar3 == '\0') {\nLAB_00027970:\n      free(local_24);\n      local_24 = param_2;\n    }\n    else {\n      local_2c = param_2;\n      local_30 = local_24;\n      bVar8 = false;\n      bVar1 = false;\n      do {\n        while (bVar2 = bVar8, !bVar2) {\n          if ((cVar3 == '?' || cVar3 == '*') || (cVar3 == '[')) {\n            free(local_24);\n            goto LAB_00027913;\n          }\n          bVar8 = cVar3 == '\\';\n          *local_30 = cVar3;\n          local_2c = local_2c + 1;\n          local_30 = local_30 + 1;\n          cVar3 = *local_2c;\n          bVar2 = bVar1;\n          if (cVar3 == '\0') goto LAB_000278da;\n        }\n        local_2c = local_2c + 1;\n        local_30[-1] = cVar3;\n        cVar3 = *local_2c;\n        bVar8 = false;\n        bVar1 = bVar2;\n      } while (cVar3 != '\0');\nLAB_000278da:\n      if (!bVar2) goto LAB_00027970;\n      *local_30 = '\0';\n    }\n    puVar4[1] = local_24;\n  }\n  else {\n    puVar4[1] = param_2;\n    if (param_2 == (char *)0x0) {\nLAB_00027913:\n      puVar4[1] = param_2;\n      *(byte *)(puVar4 + 2) = *(byte *)(puVar4 + 2) & 0xfe;\n    }\n  }\n  if (param_3 != (char *)0x0) {\n    iVar5 = strcasecmp(param_3,"C");\n    if (iVar5 != 0) {\n      iVar5 = strcasecmp(param_3,"C++");\n      if (iVar5 == 0) {\n        *(byte *)(puVar4 + 2) = *(byte *)(puVar4 + 2) & 199 | 0x10;\n      }\n      else {\n        iVar5 = strcasecmp(param_3,"Java");\n        if (iVar5 == 0) {\n          *(byte *)(puVar4 + 2) = *(byte *)(puVar4 + 2) & 199 | 0x20;\n        }\n        else {\n          uVar7 = dcgettext(0,"%X%P: unknown language `%s\' in version information\n",5);\n          FUN_00031760(uVar7,param_3);\n          *(byte *)(puVar4 + 2) = *(byte *)(puVar4 + 2) & 199 | 8;\n        }\n      }\n      goto LAB_000277cb;\n    }\n  }\n  *(byte *)(puVar4 + 2) = *(byte *)(puVar4 + 2) & 199 | 8;\nLAB_000277cb:\n  FUN_000306c0(puVar4);\n  return;\n}\n\n" comment (function_definition "void FUN_00027750(undefined4 param_1,char *param_2,char *param_3,int param_4)\n\n{\n  bool bVar1;\n  bool bVar2;\n  char cVar3;\n  undefined4 *puVar4;\n  int iVar5;\n  size_t sVar6;\n  undefined4 uVar7;\n  bool bVar8;\n  char *local_30;\n  char *local_2c;\n  char *local_24;\n  \n  puVar4 = (undefined4 *)xmalloc(0xc);\n  *puVar4 = param_1;\n  *(byte *)(puVar4 + 2) = *(byte *)(puVar4 + 2) & 0xf8 | 1;\n  if (param_4 == 0) {\n    sVar6 = strlen(param_2);\n    local_24 = (char *)xmalloc(sVar6 + 1);\n    cVar3 = *param_2;\n    if (cVar3 == '\0') {\nLAB_00027970:\n      free(local_24);\n      local_24 = param_2;\n    }\n    else {\n      local_2c = param_2;\n      local_30 = local_24;\n      bVar8 = false;\n      bVar1 = false;\n      do {\n        while (bVar2 = bVar8, !bVar2) {\n          if ((cVar3 == '?' || cVar3 == '*') || (cVar3 == '[')) {\n            free(local_24);\n            goto LAB_00027913;\n          }\n          bVar8 = cVar3 == '\\';\n          *local_30 = cVar3;\n          local_2c = local_2c + 1;\n          local_30 = local_30 + 1;\n          cVar3 = *local_2c;\n          bVar2 = bVar1;\n          if (cVar3 == '\0') goto LAB_000278da;\n        }\n        local_2c = local_2c + 1;\n        local_30[-1] = cVar3;\n        cVar3 = *local_2c;\n        bVar8 = false;\n        bVar1 = bVar2;\n      } while (cVar3 != '\0');\nLAB_000278da:\n      if (!bVar2) goto LAB_00027970;\n      *local_30 = '\0';\n    }\n    puVar4[1] = local_24;\n  }\n  else {\n    puVar4[1] = param_2;\n    if (param_2 == (char *)0x0) {\nLAB_00027913:\n      puVar4[1] = param_2;\n      *(byte *)(puVar4 + 2) = *(byte *)(puVar4 + 2) & 0xfe;\n    }\n  }\n  if (param_3 != (char *)0x0) {\n    iVar5 = strcasecmp(param_3,"C");\n    if (iVar5 != 0) {\n      iVar5 = strcasecmp(param_3,"C++");\n      if (iVar5 == 0) {\n        *(byte *)(puVar4 + 2) = *(byte *)(puVar4 + 2) & 199 | 0x10;\n      }\n      else {\n        iVar5 = strcasecmp(param_3,"Java");\n        if (iVar5 == 0) {\n          *(byte *)(puVar4 + 2) = *(byte *)(puVar4 + 2) & 199 | 0x20;\n        }\n        else {\n          uVar7 = dcgettext(0,"%X%P: unknown language `%s\' in version information\n",5);\n          FUN_00031760(uVar7,param_3);\n          *(byte *)(puVar4 + 2) = *(byte *)(puVar4 + 2) & 199 | 8;\n        }\n      }\n      goto LAB_000277cb;\n    }\n  }\n  *(byte *)(puVar4 + 2) = *(byte *)(puVar4 + 2) & 199 | 8;\nLAB_000277cb:\n  FUN_000306c0(puVar4);\n  return;\n}" primitive_type (function_declarator "FUN_00027750(undefined4 param_1,char *param_2,char *param_3,int param_4)" identifier (parameter_list "(undefined4 param_1,char *param_2,char *param_3,int param_4)" ( (parameter_declaration "undefined4 param_1" type_identifier identifier) , (parameter_declaration "char *param_2" primitive_type (pointer_declarator "*param_2" * identifier)) , (parameter_declaration "char *param_3" primitive_type (pointer_declarator "*param_3" * identifier)) , (parameter_declaration "int param_4" primitive_type identifier) ))) (compound_statement "{\n  bool bVar1;\n  bool bVar2;\n  char cVar3;\n  undefined4 *puVar4;\n  int iVar5;\n  size_t sVar6;\n  undefined4 uVar7;\n  bool bVar8;\n  char *local_30;\n  char *local_2c;\n  char *local_24;\n  \n  puVar4 = (undefined4 *)xmalloc(0xc);\n  *puVar4 = param_1;\n  *(byte *)(puVar4 + 2) = *(byte *)(puVar4 + 2) & 0xf8 | 1;\n  if (param_4 == 0) {\n    sVar6 = strlen(param_2);\n    local_24 = (char *)xmalloc(sVar6 + 1);\n    cVar3 = *param_2;\n    if (cVar3 == '\0') {\nLAB_00027970:\n      free(local_24);\n      local_24 = param_2;\n    }\n    else {\n      local_2c = param_2;\n      local_30 = local_24;\n      bVar8 = false;\n      bVar1 = false;\n      do {\n        while (bVar2 = bVar8, !bVar2) {\n          if ((cVar3 == '?' || cVar3 == '*') || (cVar3 == '[')) {\n            free(local_24);\n            goto LAB_00027913;\n          }\n          bVar8 = cVar3 == '\\';\n          *local_30 = cVar3;\n          local_2c = local_2c + 1;\n          local_30 = local_30 + 1;\n          cVar3 = *local_2c;\n          bVar2 = bVar1;\n          if (cVar3 == '\0') goto LAB_000278da;\n        }\n        local_2c = local_2c + 1;\n        local_30[-1] = cVar3;\n        cVar3 = *local_2c;\n        bVar8 = false;\n        bVar1 = bVar2;\n      } while (cVar3 != '\0');\nLAB_000278da:\n      if (!bVar2) goto LAB_00027970;\n      *local_30 = '\0';\n    }\n    puVar4[1] = local_24;\n  }\n  else {\n    puVar4[1] = param_2;\n    if (param_2 == (char *)0x0) {\nLAB_00027913:\n      puVar4[1] = param_2;\n      *(byte *)(puVar4 + 2) = *(byte *)(puVar4 + 2) & 0xfe;\n    }\n  }\n  if (param_3 != (char *)0x0) {\n    iVar5 = strcasecmp(param_3,"C");\n    if (iVar5 != 0) {\n      iVar5 = strcasecmp(param_3,"C++");\n      if (iVar5 == 0) {\n        *(byte *)(puVar4 + 2) = *(byte *)(puVar4 + 2) & 199 | 0x10;\n      }\n      else {\n        iVar5 = strcasecmp(param_3,"Java");\n        if (iVar5 == 0) {\n          *(byte *)(puVar4 + 2) = *(byte *)(puVar4 + 2) & 199 | 0x20;\n        }\n        else {\n          uVar7 = dcgettext(0,"%X%P: unknown language `%s\' in version information\n",5);\n          FUN_00031760(uVar7,param_3);\n          *(byte *)(puVar4 + 2) = *(byte *)(puVar4 + 2) & 199 | 8;\n        }\n      }\n      goto LAB_000277cb;\n    }\n  }\n  *(byte *)(puVar4 + 2) = *(byte *)(puVar4 + 2) & 199 | 8;\nLAB_000277cb:\n  FUN_000306c0(puVar4);\n  return;\n}" { (declaration "bool bVar1;" primitive_type identifier ;) (declaration "bool bVar2;" primitive_type identifier ;) (declaration "char cVar3;" primitive_type identifier ;) (declaration "undefined4 *puVar4;" type_identifier (pointer_declarator "*puVar4" * identifier) ;) (declaration "int iVar5;" primitive_type identifier ;) (declaration "size_t sVar6;" primitive_type identifier ;) (declaration "undefined4 uVar7;" type_identifier identifier ;) (declaration "bool bVar8;" primitive_type identifier ;) (declaration "char *local_30;" primitive_type (pointer_declarator "*local_30" * identifier) ;) (declaration "char *local_2c;" primitive_type (pointer_declarator "*local_2c" * identifier) ;) (declaration "char *local_24;" primitive_type (pointer_declarator "*local_24" * identifier) ;) (expression_statement "puVar4 = (undefined4 *)xmalloc(0xc);" (assignment_expression "puVar4 = (undefined4 *)xmalloc(0xc)" identifier = (cast_expression "(undefined4 *)xmalloc(0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "xmalloc(0xc)" identifier (argument_list "(0xc)" ( number_literal ))))) ;) (expression_statement "*puVar4 = param_1;" (assignment_expression "*puVar4 = param_1" (pointer_expression "*puVar4" * identifier) = identifier) ;) (expression_statement "*(byte *)(puVar4 + 2) = *(byte *)(puVar4 + 2) & 0xf8 | 1;" (assignment_expression "*(byte *)(puVar4 + 2) = *(byte *)(puVar4 + 2) & 0xf8 | 1" (pointer_expression "*(byte *)(puVar4 + 2)" * (cast_expression "(byte *)(puVar4 + 2)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar4 + 2)" ( (binary_expression "puVar4 + 2" identifier + number_literal) )))) = (binary_expression "*(byte *)(puVar4 + 2) & 0xf8 | 1" (binary_expression "*(byte *)(puVar4 + 2) & 0xf8" (pointer_expression "*(byte *)(puVar4 + 2)" * (cast_expression "(byte *)(puVar4 + 2)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar4 + 2)" ( (binary_expression "puVar4 + 2" identifier + number_literal) )))) & number_literal) | number_literal)) ;) (if_statement "if (param_4 == 0) {\n    sVar6 = strlen(param_2);\n    local_24 = (char *)xmalloc(sVar6 + 1);\n    cVar3 = *param_2;\n    if (cVar3 == '\0') {\nLAB_00027970:\n      free(local_24);\n      local_24 = param_2;\n    }\n    else {\n      local_2c = param_2;\n      local_30 = local_24;\n      bVar8 = false;\n      bVar1 = false;\n      do {\n        while (bVar2 = bVar8, !bVar2) {\n          if ((cVar3 == '?' || cVar3 == '*') || (cVar3 == '[')) {\n            free(local_24);\n            goto LAB_00027913;\n          }\n          bVar8 = cVar3 == '\\';\n          *local_30 = cVar3;\n          local_2c = local_2c + 1;\n          local_30 = local_30 + 1;\n          cVar3 = *local_2c;\n          bVar2 = bVar1;\n          if (cVar3 == '\0') goto LAB_000278da;\n        }\n        local_2c = local_2c + 1;\n        local_30[-1] = cVar3;\n        cVar3 = *local_2c;\n        bVar8 = false;\n        bVar1 = bVar2;\n      } while (cVar3 != '\0');\nLAB_000278da:\n      if (!bVar2) goto LAB_00027970;\n      *local_30 = '\0';\n    }\n    puVar4[1] = local_24;\n  }\n  else {\n    puVar4[1] = param_2;\n    if (param_2 == (char *)0x0) {\nLAB_00027913:\n      puVar4[1] = param_2;\n      *(byte *)(puVar4 + 2) = *(byte *)(puVar4 + 2) & 0xfe;\n    }\n  }" if (parenthesized_expression "(param_4 == 0)" ( (binary_expression "param_4 == 0" identifier == number_literal) )) (compound_statement "{\n    sVar6 = strlen(param_2);\n    local_24 = (char *)xmalloc(sVar6 + 1);\n    cVar3 = *param_2;\n    if (cVar3 == '\0') {\nLAB_00027970:\n      free(local_24);\n      local_24 = param_2;\n    }\n    else {\n      local_2c = param_2;\n      local_30 = local_24;\n      bVar8 = false;\n      bVar1 = false;\n      do {\n        while (bVar2 = bVar8, !bVar2) {\n          if ((cVar3 == '?' || cVar3 == '*') || (cVar3 == '[')) {\n            free(local_24);\n            goto LAB_00027913;\n          }\n          bVar8 = cVar3 == '\\';\n          *local_30 = cVar3;\n          local_2c = local_2c + 1;\n          local_30 = local_30 + 1;\n          cVar3 = *local_2c;\n          bVar2 = bVar1;\n          if (cVar3 == '\0') goto LAB_000278da;\n        }\n        local_2c = local_2c + 1;\n        local_30[-1] = cVar3;\n        cVar3 = *local_2c;\n        bVar8 = false;\n        bVar1 = bVar2;\n      } while (cVar3 != '\0');\nLAB_000278da:\n      if (!bVar2) goto LAB_00027970;\n      *local_30 = '\0';\n    }\n    puVar4[1] = local_24;\n  }" { (expression_statement "sVar6 = strlen(param_2);" (assignment_expression "sVar6 = strlen(param_2)" identifier = (call_expression "strlen(param_2)" identifier (argument_list "(param_2)" ( identifier )))) ;) (expression_statement "local_24 = (char *)xmalloc(sVar6 + 1);" (assignment_expression "local_24 = (char *)xmalloc(sVar6 + 1)" identifier = (cast_expression "(char *)xmalloc(sVar6 + 1)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "xmalloc(sVar6 + 1)" identifier (argument_list "(sVar6 + 1)" ( (binary_expression "sVar6 + 1" identifier + number_literal) ))))) ;) (expression_statement "cVar3 = *param_2;" (assignment_expression "cVar3 = *param_2" identifier = (pointer_expression "*param_2" * identifier)) ;) (if_statement "if (cVar3 == '\0') {\nLAB_00027970:\n      free(local_24);\n      local_24 = param_2;\n    }\n    else {\n      local_2c = param_2;\n      local_30 = local_24;\n      bVar8 = false;\n      bVar1 = false;\n      do {\n        while (bVar2 = bVar8, !bVar2) {\n          if ((cVar3 == '?' || cVar3 == '*') || (cVar3 == '[')) {\n            free(local_24);\n            goto LAB_00027913;\n          }\n          bVar8 = cVar3 == '\\';\n          *local_30 = cVar3;\n          local_2c = local_2c + 1;\n          local_30 = local_30 + 1;\n          cVar3 = *local_2c;\n          bVar2 = bVar1;\n          if (cVar3 == '\0') goto LAB_000278da;\n        }\n        local_2c = local_2c + 1;\n        local_30[-1] = cVar3;\n        cVar3 = *local_2c;\n        bVar8 = false;\n        bVar1 = bVar2;\n      } while (cVar3 != '\0');\nLAB_000278da:\n      if (!bVar2) goto LAB_00027970;\n      *local_30 = '\0';\n    }" if (parenthesized_expression "(cVar3 == '\0')" ( (binary_expression "cVar3 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\nLAB_00027970:\n      free(local_24);\n      local_24 = param_2;\n    }" { (labeled_statement "LAB_00027970:\n      free(local_24);" statement_identifier : (expression_statement "free(local_24);" (call_expression "free(local_24)" identifier (argument_list "(local_24)" ( identifier ))) ;)) (expression_statement "local_24 = param_2;" (assignment_expression "local_24 = param_2" identifier = identifier) ;) }) (else_clause "else {\n      local_2c = param_2;\n      local_30 = local_24;\n      bVar8 = false;\n      bVar1 = false;\n      do {\n        while (bVar2 = bVar8, !bVar2) {\n          if ((cVar3 == '?' || cVar3 == '*') || (cVar3 == '[')) {\n            free(local_24);\n            goto LAB_00027913;\n          }\n          bVar8 = cVar3 == '\\';\n          *local_30 = cVar3;\n          local_2c = local_2c + 1;\n          local_30 = local_30 + 1;\n          cVar3 = *local_2c;\n          bVar2 = bVar1;\n          if (cVar3 == '\0') goto LAB_000278da;\n        }\n        local_2c = local_2c + 1;\n        local_30[-1] = cVar3;\n        cVar3 = *local_2c;\n        bVar8 = false;\n        bVar1 = bVar2;\n      } while (cVar3 != '\0');\nLAB_000278da:\n      if (!bVar2) goto LAB_00027970;\n      *local_30 = '\0';\n    }" else (compound_statement "{\n      local_2c = param_2;\n      local_30 = local_24;\n      bVar8 = false;\n      bVar1 = false;\n      do {\n        while (bVar2 = bVar8, !bVar2) {\n          if ((cVar3 == '?' || cVar3 == '*') || (cVar3 == '[')) {\n            free(local_24);\n            goto LAB_00027913;\n          }\n          bVar8 = cVar3 == '\\';\n          *local_30 = cVar3;\n          local_2c = local_2c + 1;\n          local_30 = local_30 + 1;\n          cVar3 = *local_2c;\n          bVar2 = bVar1;\n          if (cVar3 == '\0') goto LAB_000278da;\n        }\n        local_2c = local_2c + 1;\n        local_30[-1] = cVar3;\n        cVar3 = *local_2c;\n        bVar8 = false;\n        bVar1 = bVar2;\n      } while (cVar3 != '\0');\nLAB_000278da:\n      if (!bVar2) goto LAB_00027970;\n      *local_30 = '\0';\n    }" { (expression_statement "local_2c = param_2;" (assignment_expression "local_2c = param_2" identifier = identifier) ;) (expression_statement "local_30 = local_24;" (assignment_expression "local_30 = local_24" identifier = identifier) ;) (expression_statement "bVar8 = false;" (assignment_expression "bVar8 = false" identifier = false) ;) (expression_statement "bVar1 = false;" (assignment_expression "bVar1 = false" identifier = false) ;) (do_statement "do {\n        while (bVar2 = bVar8, !bVar2) {\n          if ((cVar3 == '?' || cVar3 == '*') || (cVar3 == '[')) {\n            free(local_24);\n            goto LAB_00027913;\n          }\n          bVar8 = cVar3 == '\\';\n          *local_30 = cVar3;\n          local_2c = local_2c + 1;\n          local_30 = local_30 + 1;\n          cVar3 = *local_2c;\n          bVar2 = bVar1;\n          if (cVar3 == '\0') goto LAB_000278da;\n        }\n        local_2c = local_2c + 1;\n        local_30[-1] = cVar3;\n        cVar3 = *local_2c;\n        bVar8 = false;\n        bVar1 = bVar2;\n      } while (cVar3 != '\0');" do (compound_statement "{\n        while (bVar2 = bVar8, !bVar2) {\n          if ((cVar3 == '?' || cVar3 == '*') || (cVar3 == '[')) {\n            free(local_24);\n            goto LAB_00027913;\n          }\n          bVar8 = cVar3 == '\\';\n          *local_30 = cVar3;\n          local_2c = local_2c + 1;\n          local_30 = local_30 + 1;\n          cVar3 = *local_2c;\n          bVar2 = bVar1;\n          if (cVar3 == '\0') goto LAB_000278da;\n        }\n        local_2c = local_2c + 1;\n        local_30[-1] = cVar3;\n        cVar3 = *local_2c;\n        bVar8 = false;\n        bVar1 = bVar2;\n      }" { (while_statement "while (bVar2 = bVar8, !bVar2) {\n          if ((cVar3 == '?' || cVar3 == '*') || (cVar3 == '[')) {\n            free(local_24);\n            goto LAB_00027913;\n          }\n          bVar8 = cVar3 == '\\';\n          *local_30 = cVar3;\n          local_2c = local_2c + 1;\n          local_30 = local_30 + 1;\n          cVar3 = *local_2c;\n          bVar2 = bVar1;\n          if (cVar3 == '\0') goto LAB_000278da;\n        }" while (parenthesized_expression "(bVar2 = bVar8, !bVar2)" ( (comma_expression "bVar2 = bVar8, !bVar2" (assignment_expression "bVar2 = bVar8" identifier = identifier) , (unary_expression "!bVar2" ! identifier)) )) (compound_statement "{\n          if ((cVar3 == '?' || cVar3 == '*') || (cVar3 == '[')) {\n            free(local_24);\n            goto LAB_00027913;\n          }\n          bVar8 = cVar3 == '\\';\n          *local_30 = cVar3;\n          local_2c = local_2c + 1;\n          local_30 = local_30 + 1;\n          cVar3 = *local_2c;\n          bVar2 = bVar1;\n          if (cVar3 == '\0') goto LAB_000278da;\n        }" { (if_statement "if ((cVar3 == '?' || cVar3 == '*') || (cVar3 == '[')) {\n            free(local_24);\n            goto LAB_00027913;\n          }" if (parenthesized_expression "((cVar3 == '?' || cVar3 == '*') || (cVar3 == '['))" ( (binary_expression "(cVar3 == '?' || cVar3 == '*') || (cVar3 == '[')" (parenthesized_expression "(cVar3 == '?' || cVar3 == '*')" ( (binary_expression "cVar3 == '?' || cVar3 == '*'" (binary_expression "cVar3 == '?'" identifier == (char_literal "'?'" ' character ')) || (binary_expression "cVar3 == '*'" identifier == (char_literal "'*'" ' character '))) )) || (parenthesized_expression "(cVar3 == '[')" ( (binary_expression "cVar3 == '['" identifier == (char_literal "'['" ' character ')) ))) )) (compound_statement "{\n            free(local_24);\n            goto LAB_00027913;\n          }" { (expression_statement "free(local_24);" (call_expression "free(local_24)" identifier (argument_list "(local_24)" ( identifier ))) ;) (goto_statement "goto LAB_00027913;" goto statement_identifier ;) })) (expression_statement "bVar8 = cVar3 == '\\';" (assignment_expression "bVar8 = cVar3 == '\\'" identifier = (binary_expression "cVar3 == '\\'" identifier == (char_literal "'\\'" ' escape_sequence '))) ;) (expression_statement "*local_30 = cVar3;" (assignment_expression "*local_30 = cVar3" (pointer_expression "*local_30" * identifier) = identifier) ;) (expression_statement "local_2c = local_2c + 1;" (assignment_expression "local_2c = local_2c + 1" identifier = (binary_expression "local_2c + 1" identifier + number_literal)) ;) (expression_statement "local_30 = local_30 + 1;" (assignment_expression "local_30 = local_30 + 1" identifier = (binary_expression "local_30 + 1" identifier + number_literal)) ;) (expression_statement "cVar3 = *local_2c;" (assignment_expression "cVar3 = *local_2c" identifier = (pointer_expression "*local_2c" * identifier)) ;) (expression_statement "bVar2 = bVar1;" (assignment_expression "bVar2 = bVar1" identifier = identifier) ;) (if_statement "if (cVar3 == '\0') goto LAB_000278da;" if (parenthesized_expression "(cVar3 == '\0')" ( (binary_expression "cVar3 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence ')) )) (goto_statement "goto LAB_000278da;" goto statement_identifier ;)) })) (expression_statement "local_2c = local_2c + 1;" (assignment_expression "local_2c = local_2c + 1" identifier = (binary_expression "local_2c + 1" identifier + number_literal)) ;) (expression_statement "local_30[-1] = cVar3;" (assignment_expression "local_30[-1] = cVar3" (subscript_expression "local_30[-1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "cVar3 = *local_2c;" (assignment_expression "cVar3 = *local_2c" identifier = (pointer_expression "*local_2c" * identifier)) ;) (expression_statement "bVar8 = false;" (assignment_expression "bVar8 = false" identifier = false) ;) (expression_statement "bVar1 = bVar2;" (assignment_expression "bVar1 = bVar2" identifier = identifier) ;) }) while (parenthesized_expression "(cVar3 != '\0')" ( (binary_expression "cVar3 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) ;) (labeled_statement "LAB_000278da:\n      if (!bVar2) goto LAB_00027970;" statement_identifier : (if_statement "if (!bVar2) goto LAB_00027970;" if (parenthesized_expression "(!bVar2)" ( (unary_expression "!bVar2" ! identifier) )) (goto_statement "goto LAB_00027970;" goto statement_identifier ;))) (expression_statement "*local_30 = '\0';" (assignment_expression "*local_30 = '\0'" (pointer_expression "*local_30" * identifier) = (char_literal "'\0'" ' escape_sequence ')) ;) }))) (expression_statement "puVar4[1] = local_24;" (assignment_expression "puVar4[1] = local_24" (subscript_expression "puVar4[1]" identifier [ number_literal ]) = identifier) ;) }) (else_clause "else {\n    puVar4[1] = param_2;\n    if (param_2 == (char *)0x0) {\nLAB_00027913:\n      puVar4[1] = param_2;\n      *(byte *)(puVar4 + 2) = *(byte *)(puVar4 + 2) & 0xfe;\n    }\n  }" else (compound_statement "{\n    puVar4[1] = param_2;\n    if (param_2 == (char *)0x0) {\nLAB_00027913:\n      puVar4[1] = param_2;\n      *(byte *)(puVar4 + 2) = *(byte *)(puVar4 + 2) & 0xfe;\n    }\n  }" { (expression_statement "puVar4[1] = param_2;" (assignment_expression "puVar4[1] = param_2" (subscript_expression "puVar4[1]" identifier [ number_literal ]) = identifier) ;) (if_statement "if (param_2 == (char *)0x0) {\nLAB_00027913:\n      puVar4[1] = param_2;\n      *(byte *)(puVar4 + 2) = *(byte *)(puVar4 + 2) & 0xfe;\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 "{\nLAB_00027913:\n      puVar4[1] = param_2;\n      *(byte *)(puVar4 + 2) = *(byte *)(puVar4 + 2) & 0xfe;\n    }" { (labeled_statement "LAB_00027913:\n      puVar4[1] = param_2;" statement_identifier : (expression_statement "puVar4[1] = param_2;" (assignment_expression "puVar4[1] = param_2" (subscript_expression "puVar4[1]" identifier [ number_literal ]) = identifier) ;)) (expression_statement "*(byte *)(puVar4 + 2) = *(byte *)(puVar4 + 2) & 0xfe;" (assignment_expression "*(byte *)(puVar4 + 2) = *(byte *)(puVar4 + 2) & 0xfe" (pointer_expression "*(byte *)(puVar4 + 2)" * (cast_expression "(byte *)(puVar4 + 2)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar4 + 2)" ( (binary_expression "puVar4 + 2" identifier + number_literal) )))) = (binary_expression "*(byte *)(puVar4 + 2) & 0xfe" (pointer_expression "*(byte *)(puVar4 + 2)" * (cast_expression "(byte *)(puVar4 + 2)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar4 + 2)" ( (binary_expression "puVar4 + 2" identifier + number_literal) )))) & number_literal)) ;) })) }))) (if_statement "if (param_3 != (char *)0x0) {\n    iVar5 = strcasecmp(param_3,"C");\n    if (iVar5 != 0) {\n      iVar5 = strcasecmp(param_3,"C++");\n      if (iVar5 == 0) {\n        *(byte *)(puVar4 + 2) = *(byte *)(puVar4 + 2) & 199 | 0x10;\n      }\n      else {\n        iVar5 = strcasecmp(param_3,"Java");\n        if (iVar5 == 0) {\n          *(byte *)(puVar4 + 2) = *(byte *)(puVar4 + 2) & 199 | 0x20;\n        }\n        else {\n          uVar7 = dcgettext(0,"%X%P: unknown language `%s\' in version information\n",5);\n          FUN_00031760(uVar7,param_3);\n          *(byte *)(puVar4 + 2) = *(byte *)(puVar4 + 2) & 199 | 8;\n        }\n      }\n      goto LAB_000277cb;\n    }\n  }" if (parenthesized_expression "(param_3 != (char *)0x0)" ( (binary_expression "param_3 != (char *)0x0" identifier != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    iVar5 = strcasecmp(param_3,"C");\n    if (iVar5 != 0) {\n      iVar5 = strcasecmp(param_3,"C++");\n      if (iVar5 == 0) {\n        *(byte *)(puVar4 + 2) = *(byte *)(puVar4 + 2) & 199 | 0x10;\n      }\n      else {\n        iVar5 = strcasecmp(param_3,"Java");\n        if (iVar5 == 0) {\n          *(byte *)(puVar4 + 2) = *(byte *)(puVar4 + 2) & 199 | 0x20;\n        }\n        else {\n          uVar7 = dcgettext(0,"%X%P: unknown language `%s\' in version information\n",5);\n          FUN_00031760(uVar7,param_3);\n          *(byte *)(puVar4 + 2) = *(byte *)(puVar4 + 2) & 199 | 8;\n        }\n      }\n      goto LAB_000277cb;\n    }\n  }" { (expression_statement "iVar5 = strcasecmp(param_3,"C");" (assignment_expression "iVar5 = strcasecmp(param_3,"C")" identifier = (call_expression "strcasecmp(param_3,"C")" identifier (argument_list "(param_3,"C")" ( identifier , (string_literal ""C"" " string_content ") )))) ;) (if_statement "if (iVar5 != 0) {\n      iVar5 = strcasecmp(param_3,"C++");\n      if (iVar5 == 0) {\n        *(byte *)(puVar4 + 2) = *(byte *)(puVar4 + 2) & 199 | 0x10;\n      }\n      else {\n        iVar5 = strcasecmp(param_3,"Java");\n        if (iVar5 == 0) {\n          *(byte *)(puVar4 + 2) = *(byte *)(puVar4 + 2) & 199 | 0x20;\n        }\n        else {\n          uVar7 = dcgettext(0,"%X%P: unknown language `%s\' in version information\n",5);\n          FUN_00031760(uVar7,param_3);\n          *(byte *)(puVar4 + 2) = *(byte *)(puVar4 + 2) & 199 | 8;\n        }\n      }\n      goto LAB_000277cb;\n    }" if (parenthesized_expression "(iVar5 != 0)" ( (binary_expression "iVar5 != 0" identifier != number_literal) )) (compound_statement "{\n      iVar5 = strcasecmp(param_3,"C++");\n      if (iVar5 == 0) {\n        *(byte *)(puVar4 + 2) = *(byte *)(puVar4 + 2) & 199 | 0x10;\n      }\n      else {\n        iVar5 = strcasecmp(param_3,"Java");\n        if (iVar5 == 0) {\n          *(byte *)(puVar4 + 2) = *(byte *)(puVar4 + 2) & 199 | 0x20;\n        }\n        else {\n          uVar7 = dcgettext(0,"%X%P: unknown language `%s\' in version information\n",5);\n          FUN_00031760(uVar7,param_3);\n          *(byte *)(puVar4 + 2) = *(byte *)(puVar4 + 2) & 199 | 8;\n        }\n      }\n      goto LAB_000277cb;\n    }" { (expression_statement "iVar5 = strcasecmp(param_3,"C++");" (assignment_expression "iVar5 = strcasecmp(param_3,"C++")" identifier = (call_expression "strcasecmp(param_3,"C++")" identifier (argument_list "(param_3,"C++")" ( identifier , (string_literal ""C++"" " string_content ") )))) ;) (if_statement "if (iVar5 == 0) {\n        *(byte *)(puVar4 + 2) = *(byte *)(puVar4 + 2) & 199 | 0x10;\n      }\n      else {\n        iVar5 = strcasecmp(param_3,"Java");\n        if (iVar5 == 0) {\n          *(byte *)(puVar4 + 2) = *(byte *)(puVar4 + 2) & 199 | 0x20;\n        }\n        else {\n          uVar7 = dcgettext(0,"%X%P: unknown language `%s\' in version information\n",5);\n          FUN_00031760(uVar7,param_3);\n          *(byte *)(puVar4 + 2) = *(byte *)(puVar4 + 2) & 199 | 8;\n        }\n      }" if (parenthesized_expression "(iVar5 == 0)" ( (binary_expression "iVar5 == 0" identifier == number_literal) )) (compound_statement "{\n        *(byte *)(puVar4 + 2) = *(byte *)(puVar4 + 2) & 199 | 0x10;\n      }" { (expression_statement "*(byte *)(puVar4 + 2) = *(byte *)(puVar4 + 2) & 199 | 0x10;" (assignment_expression "*(byte *)(puVar4 + 2) = *(byte *)(puVar4 + 2) & 199 | 0x10" (pointer_expression "*(byte *)(puVar4 + 2)" * (cast_expression "(byte *)(puVar4 + 2)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar4 + 2)" ( (binary_expression "puVar4 + 2" identifier + number_literal) )))) = (binary_expression "*(byte *)(puVar4 + 2) & 199 | 0x10" (binary_expression "*(byte *)(puVar4 + 2) & 199" (pointer_expression "*(byte *)(puVar4 + 2)" * (cast_expression "(byte *)(puVar4 + 2)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar4 + 2)" ( (binary_expression "puVar4 + 2" identifier + number_literal) )))) & number_literal) | number_literal)) ;) }) (else_clause "else {\n        iVar5 = strcasecmp(param_3,"Java");\n        if (iVar5 == 0) {\n          *(byte *)(puVar4 + 2) = *(byte *)(puVar4 + 2) & 199 | 0x20;\n        }\n        else {\n          uVar7 = dcgettext(0,"%X%P: unknown language `%s\' in version information\n",5);\n          FUN_00031760(uVar7,param_3);\n          *(byte *)(puVar4 + 2) = *(byte *)(puVar4 + 2) & 199 | 8;\n        }\n      }" else (compound_statement "{\n        iVar5 = strcasecmp(param_3,"Java");\n        if (iVar5 == 0) {\n          *(byte *)(puVar4 + 2) = *(byte *)(puVar4 + 2) & 199 | 0x20;\n        }\n        else {\n          uVar7 = dcgettext(0,"%X%P: unknown language `%s\' in version information\n",5);\n          FUN_00031760(uVar7,param_3);\n          *(byte *)(puVar4 + 2) = *(byte *)(puVar4 + 2) & 199 | 8;\n        }\n      }" { (expression_statement "iVar5 = strcasecmp(param_3,"Java");" (assignment_expression "iVar5 = strcasecmp(param_3,"Java")" identifier = (call_expression "strcasecmp(param_3,"Java")" identifier (argument_list "(param_3,"Java")" ( identifier , (string_literal ""Java"" " string_content ") )))) ;) (if_statement "if (iVar5 == 0) {\n          *(byte *)(puVar4 + 2) = *(byte *)(puVar4 + 2) & 199 | 0x20;\n        }\n        else {\n          uVar7 = dcgettext(0,"%X%P: unknown language `%s\' in version information\n",5);\n          FUN_00031760(uVar7,param_3);\n          *(byte *)(puVar4 + 2) = *(byte *)(puVar4 + 2) & 199 | 8;\n        }" if (parenthesized_expression "(iVar5 == 0)" ( (binary_expression "iVar5 == 0" identifier == number_literal) )) (compound_statement "{\n          *(byte *)(puVar4 + 2) = *(byte *)(puVar4 + 2) & 199 | 0x20;\n        }" { (expression_statement "*(byte *)(puVar4 + 2) = *(byte *)(puVar4 + 2) & 199 | 0x20;" (assignment_expression "*(byte *)(puVar4 + 2) = *(byte *)(puVar4 + 2) & 199 | 0x20" (pointer_expression "*(byte *)(puVar4 + 2)" * (cast_expression "(byte *)(puVar4 + 2)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar4 + 2)" ( (binary_expression "puVar4 + 2" identifier + number_literal) )))) = (binary_expression "*(byte *)(puVar4 + 2) & 199 | 0x20" (binary_expression "*(byte *)(puVar4 + 2) & 199" (pointer_expression "*(byte *)(puVar4 + 2)" * (cast_expression "(byte *)(puVar4 + 2)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar4 + 2)" ( (binary_expression "puVar4 + 2" identifier + number_literal) )))) & number_literal) | number_literal)) ;) }) (else_clause "else {\n          uVar7 = dcgettext(0,"%X%P: unknown language `%s\' in version information\n",5);\n          FUN_00031760(uVar7,param_3);\n          *(byte *)(puVar4 + 2) = *(byte *)(puVar4 + 2) & 199 | 8;\n        }" else (compound_statement "{\n          uVar7 = dcgettext(0,"%X%P: unknown language `%s\' in version information\n",5);\n          FUN_00031760(uVar7,param_3);\n          *(byte *)(puVar4 + 2) = *(byte *)(puVar4 + 2) & 199 | 8;\n        }" { (expression_statement "uVar7 = dcgettext(0,"%X%P: unknown language `%s\' in version information\n",5);" (assignment_expression "uVar7 = dcgettext(0,"%X%P: unknown language `%s\' in version information\n",5)" identifier = (call_expression "dcgettext(0,"%X%P: unknown language `%s\' in version information\n",5)" identifier (argument_list "(0,"%X%P: unknown language `%s\' in version information\n",5)" ( number_literal , (string_literal ""%X%P: unknown language `%s\' in version information\n"" " string_content escape_sequence string_content escape_sequence ") , number_literal )))) ;) (expression_statement "FUN_00031760(uVar7,param_3);" (call_expression "FUN_00031760(uVar7,param_3)" identifier (argument_list "(uVar7,param_3)" ( identifier , identifier ))) ;) (expression_statement "*(byte *)(puVar4 + 2) = *(byte *)(puVar4 + 2) & 199 | 8;" (assignment_expression "*(byte *)(puVar4 + 2) = *(byte *)(puVar4 + 2) & 199 | 8" (pointer_expression "*(byte *)(puVar4 + 2)" * (cast_expression "(byte *)(puVar4 + 2)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar4 + 2)" ( (binary_expression "puVar4 + 2" identifier + number_literal) )))) = (binary_expression "*(byte *)(puVar4 + 2) & 199 | 8" (binary_expression "*(byte *)(puVar4 + 2) & 199" (pointer_expression "*(byte *)(puVar4 + 2)" * (cast_expression "(byte *)(puVar4 + 2)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar4 + 2)" ( (binary_expression "puVar4 + 2" identifier + number_literal) )))) & number_literal) | number_literal)) ;) }))) }))) (goto_statement "goto LAB_000277cb;" goto statement_identifier ;) })) })) (expression_statement "*(byte *)(puVar4 + 2) = *(byte *)(puVar4 + 2) & 199 | 8;" (assignment_expression "*(byte *)(puVar4 + 2) = *(byte *)(puVar4 + 2) & 199 | 8" (pointer_expression "*(byte *)(puVar4 + 2)" * (cast_expression "(byte *)(puVar4 + 2)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar4 + 2)" ( (binary_expression "puVar4 + 2" identifier + number_literal) )))) = (binary_expression "*(byte *)(puVar4 + 2) & 199 | 8" (binary_expression "*(byte *)(puVar4 + 2) & 199" (pointer_expression "*(byte *)(puVar4 + 2)" * (cast_expression "(byte *)(puVar4 + 2)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar4 + 2)" ( (binary_expression "puVar4 + 2" identifier + number_literal) )))) & number_literal) | number_literal)) ;) (labeled_statement "LAB_000277cb:\n  FUN_000306c0(puVar4);" statement_identifier : (expression_statement "FUN_000306c0(puVar4);" (call_expression "FUN_000306c0(puVar4)" identifier (argument_list "(puVar4)" ( identifier ))) ;)) (return_statement "return;" return ;) })))
(translation_unit "/* WARNING: Function: __x86.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */\n/* WARNING: Unknown calling convention */\n\nbfd_elf_version_expr *\nlang_new_vers_pattern(bfd_elf_version_expr *orig,char *new_name,char *lang,bfd_boolean literal_p)\n\n{\n  bool bVar1;\n  bool bVar2;\n  char cVar3;\n  bfd_elf_version_expr *pbVar4;\n  int iVar5;\n  size_t sVar6;\n  char *fmt;\n  bool bVar7;\n  char *local_30;\n  char *local_2c;\n  char *local_24;\n  \n  pbVar4 = (bfd_elf_version_expr *)xmalloc(0xc);\n  pbVar4->next = orig;\n  pbVar4->field_0x8 = pbVar4->field_0x8 & 0xf8 | 1;\n  if (literal_p == 0) {\n    sVar6 = strlen(new_name);\n    local_24 = (char *)xmalloc(sVar6 + 1);\n    cVar3 = *new_name;\n    if (cVar3 == '\0') {\nLAB_00027970:\n      free(local_24);\n      local_24 = new_name;\n    }\n    else {\n      local_2c = new_name;\n      local_30 = local_24;\n      bVar7 = false;\n      bVar1 = false;\n      do {\n        while (bVar2 = bVar7, !bVar2) {\n          if ((cVar3 == '?' || cVar3 == '*') || (cVar3 == '[')) {\n            free(local_24);\n            goto LAB_00027913;\n          }\n          bVar7 = cVar3 == '\\';\n          *local_30 = cVar3;\n          local_2c = local_2c + 1;\n          local_30 = local_30 + 1;\n          cVar3 = *local_2c;\n          bVar2 = bVar1;\n          if (cVar3 == '\0') goto LAB_000278da;\n        }\n        local_2c = local_2c + 1;\n        local_30[-1] = cVar3;\n        cVar3 = *local_2c;\n        bVar7 = false;\n        bVar1 = bVar2;\n      } while (cVar3 != '\0');\nLAB_000278da:\n      if (!bVar2) goto LAB_00027970;\n      *local_30 = '\0';\n    }\n    pbVar4->pattern = local_24;\n  }\n  else {\n    pbVar4->pattern = new_name;\n    if (new_name == (char *)0x0) {\nLAB_00027913:\n      pbVar4->pattern = new_name;\n      pbVar4->field_0x8 = pbVar4->field_0x8 & 0xfe;\n    }\n  }\n  if (lang != (char *)0x0) {\n    iVar5 = strcasecmp(lang,"C");\n    if (iVar5 != 0) {\n      iVar5 = strcasecmp(lang,"C++");\n      if (iVar5 == 0) {\n        pbVar4->field_0x8 = pbVar4->field_0x8 & 199 | 0x10;\n      }\n      else {\n        iVar5 = strcasecmp(lang,"Java");\n        if (iVar5 == 0) {\n          pbVar4->field_0x8 = pbVar4->field_0x8 & 199 | 0x20;\n        }\n        else {\n          fmt = (char *)dcgettext(0,"%X%P: unknown language `%s\' in version information\n",5);\n          einfo(fmt,lang);\n          pbVar4->field_0x8 = pbVar4->field_0x8 & 199 | 8;\n        }\n      }\n      goto LAB_000277cb;\n    }\n  }\n  pbVar4->field_0x8 = pbVar4->field_0x8 & 199 | 8;\nLAB_000277cb:\n  pbVar4 = ldemul_new_vers_pattern(pbVar4);\n  return pbVar4;\n}\n\n" comment comment (function_definition "bfd_elf_version_expr *\nlang_new_vers_pattern(bfd_elf_version_expr *orig,char *new_name,char *lang,bfd_boolean literal_p)\n\n{\n  bool bVar1;\n  bool bVar2;\n  char cVar3;\n  bfd_elf_version_expr *pbVar4;\n  int iVar5;\n  size_t sVar6;\n  char *fmt;\n  bool bVar7;\n  char *local_30;\n  char *local_2c;\n  char *local_24;\n  \n  pbVar4 = (bfd_elf_version_expr *)xmalloc(0xc);\n  pbVar4->next = orig;\n  pbVar4->field_0x8 = pbVar4->field_0x8 & 0xf8 | 1;\n  if (literal_p == 0) {\n    sVar6 = strlen(new_name);\n    local_24 = (char *)xmalloc(sVar6 + 1);\n    cVar3 = *new_name;\n    if (cVar3 == '\0') {\nLAB_00027970:\n      free(local_24);\n      local_24 = new_name;\n    }\n    else {\n      local_2c = new_name;\n      local_30 = local_24;\n      bVar7 = false;\n      bVar1 = false;\n      do {\n        while (bVar2 = bVar7, !bVar2) {\n          if ((cVar3 == '?' || cVar3 == '*') || (cVar3 == '[')) {\n            free(local_24);\n            goto LAB_00027913;\n          }\n          bVar7 = cVar3 == '\\';\n          *local_30 = cVar3;\n          local_2c = local_2c + 1;\n          local_30 = local_30 + 1;\n          cVar3 = *local_2c;\n          bVar2 = bVar1;\n          if (cVar3 == '\0') goto LAB_000278da;\n        }\n        local_2c = local_2c + 1;\n        local_30[-1] = cVar3;\n        cVar3 = *local_2c;\n        bVar7 = false;\n        bVar1 = bVar2;\n      } while (cVar3 != '\0');\nLAB_000278da:\n      if (!bVar2) goto LAB_00027970;\n      *local_30 = '\0';\n    }\n    pbVar4->pattern = local_24;\n  }\n  else {\n    pbVar4->pattern = new_name;\n    if (new_name == (char *)0x0) {\nLAB_00027913:\n      pbVar4->pattern = new_name;\n      pbVar4->field_0x8 = pbVar4->field_0x8 & 0xfe;\n    }\n  }\n  if (lang != (char *)0x0) {\n    iVar5 = strcasecmp(lang,"C");\n    if (iVar5 != 0) {\n      iVar5 = strcasecmp(lang,"C++");\n      if (iVar5 == 0) {\n        pbVar4->field_0x8 = pbVar4->field_0x8 & 199 | 0x10;\n      }\n      else {\n        iVar5 = strcasecmp(lang,"Java");\n        if (iVar5 == 0) {\n          pbVar4->field_0x8 = pbVar4->field_0x8 & 199 | 0x20;\n        }\n        else {\n          fmt = (char *)dcgettext(0,"%X%P: unknown language `%s\' in version information\n",5);\n          einfo(fmt,lang);\n          pbVar4->field_0x8 = pbVar4->field_0x8 & 199 | 8;\n        }\n      }\n      goto LAB_000277cb;\n    }\n  }\n  pbVar4->field_0x8 = pbVar4->field_0x8 & 199 | 8;\nLAB_000277cb:\n  pbVar4 = ldemul_new_vers_pattern(pbVar4);\n  return pbVar4;\n}" type_identifier (pointer_declarator "*\nlang_new_vers_pattern(bfd_elf_version_expr *orig,char *new_name,char *lang,bfd_boolean literal_p)" * (function_declarator "lang_new_vers_pattern(bfd_elf_version_expr *orig,char *new_name,char *lang,bfd_boolean literal_p)" identifier (parameter_list "(bfd_elf_version_expr *orig,char *new_name,char *lang,bfd_boolean literal_p)" ( (parameter_declaration "bfd_elf_version_expr *orig" type_identifier (pointer_declarator "*orig" * identifier)) , (parameter_declaration "char *new_name" primitive_type (pointer_declarator "*new_name" * identifier)) , (parameter_declaration "char *lang" primitive_type (pointer_declarator "*lang" * identifier)) , (parameter_declaration "bfd_boolean literal_p" type_identifier identifier) )))) (compound_statement "{\n  bool bVar1;\n  bool bVar2;\n  char cVar3;\n  bfd_elf_version_expr *pbVar4;\n  int iVar5;\n  size_t sVar6;\n  char *fmt;\n  bool bVar7;\n  char *local_30;\n  char *local_2c;\n  char *local_24;\n  \n  pbVar4 = (bfd_elf_version_expr *)xmalloc(0xc);\n  pbVar4->next = orig;\n  pbVar4->field_0x8 = pbVar4->field_0x8 & 0xf8 | 1;\n  if (literal_p == 0) {\n    sVar6 = strlen(new_name);\n    local_24 = (char *)xmalloc(sVar6 + 1);\n    cVar3 = *new_name;\n    if (cVar3 == '\0') {\nLAB_00027970:\n      free(local_24);\n      local_24 = new_name;\n    }\n    else {\n      local_2c = new_name;\n      local_30 = local_24;\n      bVar7 = false;\n      bVar1 = false;\n      do {\n        while (bVar2 = bVar7, !bVar2) {\n          if ((cVar3 == '?' || cVar3 == '*') || (cVar3 == '[')) {\n            free(local_24);\n            goto LAB_00027913;\n          }\n          bVar7 = cVar3 == '\\';\n          *local_30 = cVar3;\n          local_2c = local_2c + 1;\n          local_30 = local_30 + 1;\n          cVar3 = *local_2c;\n          bVar2 = bVar1;\n          if (cVar3 == '\0') goto LAB_000278da;\n        }\n        local_2c = local_2c + 1;\n        local_30[-1] = cVar3;\n        cVar3 = *local_2c;\n        bVar7 = false;\n        bVar1 = bVar2;\n      } while (cVar3 != '\0');\nLAB_000278da:\n      if (!bVar2) goto LAB_00027970;\n      *local_30 = '\0';\n    }\n    pbVar4->pattern = local_24;\n  }\n  else {\n    pbVar4->pattern = new_name;\n    if (new_name == (char *)0x0) {\nLAB_00027913:\n      pbVar4->pattern = new_name;\n      pbVar4->field_0x8 = pbVar4->field_0x8 & 0xfe;\n    }\n  }\n  if (lang != (char *)0x0) {\n    iVar5 = strcasecmp(lang,"C");\n    if (iVar5 != 0) {\n      iVar5 = strcasecmp(lang,"C++");\n      if (iVar5 == 0) {\n        pbVar4->field_0x8 = pbVar4->field_0x8 & 199 | 0x10;\n      }\n      else {\n        iVar5 = strcasecmp(lang,"Java");\n        if (iVar5 == 0) {\n          pbVar4->field_0x8 = pbVar4->field_0x8 & 199 | 0x20;\n        }\n        else {\n          fmt = (char *)dcgettext(0,"%X%P: unknown language `%s\' in version information\n",5);\n          einfo(fmt,lang);\n          pbVar4->field_0x8 = pbVar4->field_0x8 & 199 | 8;\n        }\n      }\n      goto LAB_000277cb;\n    }\n  }\n  pbVar4->field_0x8 = pbVar4->field_0x8 & 199 | 8;\nLAB_000277cb:\n  pbVar4 = ldemul_new_vers_pattern(pbVar4);\n  return pbVar4;\n}" { (declaration "bool bVar1;" primitive_type identifier ;) (declaration "bool bVar2;" primitive_type identifier ;) (declaration "char cVar3;" primitive_type identifier ;) (declaration "bfd_elf_version_expr *pbVar4;" type_identifier (pointer_declarator "*pbVar4" * identifier) ;) (declaration "int iVar5;" primitive_type identifier ;) (declaration "size_t sVar6;" primitive_type identifier ;) (declaration "char *fmt;" primitive_type (pointer_declarator "*fmt" * identifier) ;) (declaration "bool bVar7;" primitive_type identifier ;) (declaration "char *local_30;" primitive_type (pointer_declarator "*local_30" * identifier) ;) (declaration "char *local_2c;" primitive_type (pointer_declarator "*local_2c" * identifier) ;) (declaration "char *local_24;" primitive_type (pointer_declarator "*local_24" * identifier) ;) (expression_statement "pbVar4 = (bfd_elf_version_expr *)xmalloc(0xc);" (assignment_expression "pbVar4 = (bfd_elf_version_expr *)xmalloc(0xc)" identifier = (cast_expression "(bfd_elf_version_expr *)xmalloc(0xc)" ( (type_descriptor "bfd_elf_version_expr *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "xmalloc(0xc)" identifier (argument_list "(0xc)" ( number_literal ))))) ;) (expression_statement "pbVar4->next = orig;" (assignment_expression "pbVar4->next = orig" (field_expression "pbVar4->next" identifier -> field_identifier) = identifier) ;) (expression_statement "pbVar4->field_0x8 = pbVar4->field_0x8 & 0xf8 | 1;" (assignment_expression "pbVar4->field_0x8 = pbVar4->field_0x8 & 0xf8 | 1" (field_expression "pbVar4->field_0x8" identifier -> field_identifier) = (binary_expression "pbVar4->field_0x8 & 0xf8 | 1" (binary_expression "pbVar4->field_0x8 & 0xf8" (field_expression "pbVar4->field_0x8" identifier -> field_identifier) & number_literal) | number_literal)) ;) (if_statement "if (literal_p == 0) {\n    sVar6 = strlen(new_name);\n    local_24 = (char *)xmalloc(sVar6 + 1);\n    cVar3 = *new_name;\n    if (cVar3 == '\0') {\nLAB_00027970:\n      free(local_24);\n      local_24 = new_name;\n    }\n    else {\n      local_2c = new_name;\n      local_30 = local_24;\n      bVar7 = false;\n      bVar1 = false;\n      do {\n        while (bVar2 = bVar7, !bVar2) {\n          if ((cVar3 == '?' || cVar3 == '*') || (cVar3 == '[')) {\n            free(local_24);\n            goto LAB_00027913;\n          }\n          bVar7 = cVar3 == '\\';\n          *local_30 = cVar3;\n          local_2c = local_2c + 1;\n          local_30 = local_30 + 1;\n          cVar3 = *local_2c;\n          bVar2 = bVar1;\n          if (cVar3 == '\0') goto LAB_000278da;\n        }\n        local_2c = local_2c + 1;\n        local_30[-1] = cVar3;\n        cVar3 = *local_2c;\n        bVar7 = false;\n        bVar1 = bVar2;\n      } while (cVar3 != '\0');\nLAB_000278da:\n      if (!bVar2) goto LAB_00027970;\n      *local_30 = '\0';\n    }\n    pbVar4->pattern = local_24;\n  }\n  else {\n    pbVar4->pattern = new_name;\n    if (new_name == (char *)0x0) {\nLAB_00027913:\n      pbVar4->pattern = new_name;\n      pbVar4->field_0x8 = pbVar4->field_0x8 & 0xfe;\n    }\n  }" if (parenthesized_expression "(literal_p == 0)" ( (binary_expression "literal_p == 0" identifier == number_literal) )) (compound_statement "{\n    sVar6 = strlen(new_name);\n    local_24 = (char *)xmalloc(sVar6 + 1);\n    cVar3 = *new_name;\n    if (cVar3 == '\0') {\nLAB_00027970:\n      free(local_24);\n      local_24 = new_name;\n    }\n    else {\n      local_2c = new_name;\n      local_30 = local_24;\n      bVar7 = false;\n      bVar1 = false;\n      do {\n        while (bVar2 = bVar7, !bVar2) {\n          if ((cVar3 == '?' || cVar3 == '*') || (cVar3 == '[')) {\n            free(local_24);\n            goto LAB_00027913;\n          }\n          bVar7 = cVar3 == '\\';\n          *local_30 = cVar3;\n          local_2c = local_2c + 1;\n          local_30 = local_30 + 1;\n          cVar3 = *local_2c;\n          bVar2 = bVar1;\n          if (cVar3 == '\0') goto LAB_000278da;\n        }\n        local_2c = local_2c + 1;\n        local_30[-1] = cVar3;\n        cVar3 = *local_2c;\n        bVar7 = false;\n        bVar1 = bVar2;\n      } while (cVar3 != '\0');\nLAB_000278da:\n      if (!bVar2) goto LAB_00027970;\n      *local_30 = '\0';\n    }\n    pbVar4->pattern = local_24;\n  }" { (expression_statement "sVar6 = strlen(new_name);" (assignment_expression "sVar6 = strlen(new_name)" identifier = (call_expression "strlen(new_name)" identifier (argument_list "(new_name)" ( identifier )))) ;) (expression_statement "local_24 = (char *)xmalloc(sVar6 + 1);" (assignment_expression "local_24 = (char *)xmalloc(sVar6 + 1)" identifier = (cast_expression "(char *)xmalloc(sVar6 + 1)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "xmalloc(sVar6 + 1)" identifier (argument_list "(sVar6 + 1)" ( (binary_expression "sVar6 + 1" identifier + number_literal) ))))) ;) (expression_statement "cVar3 = *new_name;" (assignment_expression "cVar3 = *new_name" identifier = (pointer_expression "*new_name" * identifier)) ;) (if_statement "if (cVar3 == '\0') {\nLAB_00027970:\n      free(local_24);\n      local_24 = new_name;\n    }\n    else {\n      local_2c = new_name;\n      local_30 = local_24;\n      bVar7 = false;\n      bVar1 = false;\n      do {\n        while (bVar2 = bVar7, !bVar2) {\n          if ((cVar3 == '?' || cVar3 == '*') || (cVar3 == '[')) {\n            free(local_24);\n            goto LAB_00027913;\n          }\n          bVar7 = cVar3 == '\\';\n          *local_30 = cVar3;\n          local_2c = local_2c + 1;\n          local_30 = local_30 + 1;\n          cVar3 = *local_2c;\n          bVar2 = bVar1;\n          if (cVar3 == '\0') goto LAB_000278da;\n        }\n        local_2c = local_2c + 1;\n        local_30[-1] = cVar3;\n        cVar3 = *local_2c;\n        bVar7 = false;\n        bVar1 = bVar2;\n      } while (cVar3 != '\0');\nLAB_000278da:\n      if (!bVar2) goto LAB_00027970;\n      *local_30 = '\0';\n    }" if (parenthesized_expression "(cVar3 == '\0')" ( (binary_expression "cVar3 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\nLAB_00027970:\n      free(local_24);\n      local_24 = new_name;\n    }" { (labeled_statement "LAB_00027970:\n      free(local_24);" statement_identifier : (expression_statement "free(local_24);" (call_expression "free(local_24)" identifier (argument_list "(local_24)" ( identifier ))) ;)) (expression_statement "local_24 = new_name;" (assignment_expression "local_24 = new_name" identifier = identifier) ;) }) (else_clause "else {\n      local_2c = new_name;\n      local_30 = local_24;\n      bVar7 = false;\n      bVar1 = false;\n      do {\n        while (bVar2 = bVar7, !bVar2) {\n          if ((cVar3 == '?' || cVar3 == '*') || (cVar3 == '[')) {\n            free(local_24);\n            goto LAB_00027913;\n          }\n          bVar7 = cVar3 == '\\';\n          *local_30 = cVar3;\n          local_2c = local_2c + 1;\n          local_30 = local_30 + 1;\n          cVar3 = *local_2c;\n          bVar2 = bVar1;\n          if (cVar3 == '\0') goto LAB_000278da;\n        }\n        local_2c = local_2c + 1;\n        local_30[-1] = cVar3;\n        cVar3 = *local_2c;\n        bVar7 = false;\n        bVar1 = bVar2;\n      } while (cVar3 != '\0');\nLAB_000278da:\n      if (!bVar2) goto LAB_00027970;\n      *local_30 = '\0';\n    }" else (compound_statement "{\n      local_2c = new_name;\n      local_30 = local_24;\n      bVar7 = false;\n      bVar1 = false;\n      do {\n        while (bVar2 = bVar7, !bVar2) {\n          if ((cVar3 == '?' || cVar3 == '*') || (cVar3 == '[')) {\n            free(local_24);\n            goto LAB_00027913;\n          }\n          bVar7 = cVar3 == '\\';\n          *local_30 = cVar3;\n          local_2c = local_2c + 1;\n          local_30 = local_30 + 1;\n          cVar3 = *local_2c;\n          bVar2 = bVar1;\n          if (cVar3 == '\0') goto LAB_000278da;\n        }\n        local_2c = local_2c + 1;\n        local_30[-1] = cVar3;\n        cVar3 = *local_2c;\n        bVar7 = false;\n        bVar1 = bVar2;\n      } while (cVar3 != '\0');\nLAB_000278da:\n      if (!bVar2) goto LAB_00027970;\n      *local_30 = '\0';\n    }" { (expression_statement "local_2c = new_name;" (assignment_expression "local_2c = new_name" identifier = identifier) ;) (expression_statement "local_30 = local_24;" (assignment_expression "local_30 = local_24" identifier = identifier) ;) (expression_statement "bVar7 = false;" (assignment_expression "bVar7 = false" identifier = false) ;) (expression_statement "bVar1 = false;" (assignment_expression "bVar1 = false" identifier = false) ;) (do_statement "do {\n        while (bVar2 = bVar7, !bVar2) {\n          if ((cVar3 == '?' || cVar3 == '*') || (cVar3 == '[')) {\n            free(local_24);\n            goto LAB_00027913;\n          }\n          bVar7 = cVar3 == '\\';\n          *local_30 = cVar3;\n          local_2c = local_2c + 1;\n          local_30 = local_30 + 1;\n          cVar3 = *local_2c;\n          bVar2 = bVar1;\n          if (cVar3 == '\0') goto LAB_000278da;\n        }\n        local_2c = local_2c + 1;\n        local_30[-1] = cVar3;\n        cVar3 = *local_2c;\n        bVar7 = false;\n        bVar1 = bVar2;\n      } while (cVar3 != '\0');" do (compound_statement "{\n        while (bVar2 = bVar7, !bVar2) {\n          if ((cVar3 == '?' || cVar3 == '*') || (cVar3 == '[')) {\n            free(local_24);\n            goto LAB_00027913;\n          }\n          bVar7 = cVar3 == '\\';\n          *local_30 = cVar3;\n          local_2c = local_2c + 1;\n          local_30 = local_30 + 1;\n          cVar3 = *local_2c;\n          bVar2 = bVar1;\n          if (cVar3 == '\0') goto LAB_000278da;\n        }\n        local_2c = local_2c + 1;\n        local_30[-1] = cVar3;\n        cVar3 = *local_2c;\n        bVar7 = false;\n        bVar1 = bVar2;\n      }" { (while_statement "while (bVar2 = bVar7, !bVar2) {\n          if ((cVar3 == '?' || cVar3 == '*') || (cVar3 == '[')) {\n            free(local_24);\n            goto LAB_00027913;\n          }\n          bVar7 = cVar3 == '\\';\n          *local_30 = cVar3;\n          local_2c = local_2c + 1;\n          local_30 = local_30 + 1;\n          cVar3 = *local_2c;\n          bVar2 = bVar1;\n          if (cVar3 == '\0') goto LAB_000278da;\n        }" while (parenthesized_expression "(bVar2 = bVar7, !bVar2)" ( (comma_expression "bVar2 = bVar7, !bVar2" (assignment_expression "bVar2 = bVar7" identifier = identifier) , (unary_expression "!bVar2" ! identifier)) )) (compound_statement "{\n          if ((cVar3 == '?' || cVar3 == '*') || (cVar3 == '[')) {\n            free(local_24);\n            goto LAB_00027913;\n          }\n          bVar7 = cVar3 == '\\';\n          *local_30 = cVar3;\n          local_2c = local_2c + 1;\n          local_30 = local_30 + 1;\n          cVar3 = *local_2c;\n          bVar2 = bVar1;\n          if (cVar3 == '\0') goto LAB_000278da;\n        }" { (if_statement "if ((cVar3 == '?' || cVar3 == '*') || (cVar3 == '[')) {\n            free(local_24);\n            goto LAB_00027913;\n          }" if (parenthesized_expression "((cVar3 == '?' || cVar3 == '*') || (cVar3 == '['))" ( (binary_expression "(cVar3 == '?' || cVar3 == '*') || (cVar3 == '[')" (parenthesized_expression "(cVar3 == '?' || cVar3 == '*')" ( (binary_expression "cVar3 == '?' || cVar3 == '*'" (binary_expression "cVar3 == '?'" identifier == (char_literal "'?'" ' character ')) || (binary_expression "cVar3 == '*'" identifier == (char_literal "'*'" ' character '))) )) || (parenthesized_expression "(cVar3 == '[')" ( (binary_expression "cVar3 == '['" identifier == (char_literal "'['" ' character ')) ))) )) (compound_statement "{\n            free(local_24);\n            goto LAB_00027913;\n          }" { (expression_statement "free(local_24);" (call_expression "free(local_24)" identifier (argument_list "(local_24)" ( identifier ))) ;) (goto_statement "goto LAB_00027913;" goto statement_identifier ;) })) (expression_statement "bVar7 = cVar3 == '\\';" (assignment_expression "bVar7 = cVar3 == '\\'" identifier = (binary_expression "cVar3 == '\\'" identifier == (char_literal "'\\'" ' escape_sequence '))) ;) (expression_statement "*local_30 = cVar3;" (assignment_expression "*local_30 = cVar3" (pointer_expression "*local_30" * identifier) = identifier) ;) (expression_statement "local_2c = local_2c + 1;" (assignment_expression "local_2c = local_2c + 1" identifier = (binary_expression "local_2c + 1" identifier + number_literal)) ;) (expression_statement "local_30 = local_30 + 1;" (assignment_expression "local_30 = local_30 + 1" identifier = (binary_expression "local_30 + 1" identifier + number_literal)) ;) (expression_statement "cVar3 = *local_2c;" (assignment_expression "cVar3 = *local_2c" identifier = (pointer_expression "*local_2c" * identifier)) ;) (expression_statement "bVar2 = bVar1;" (assignment_expression "bVar2 = bVar1" identifier = identifier) ;) (if_statement "if (cVar3 == '\0') goto LAB_000278da;" if (parenthesized_expression "(cVar3 == '\0')" ( (binary_expression "cVar3 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence ')) )) (goto_statement "goto LAB_000278da;" goto statement_identifier ;)) })) (expression_statement "local_2c = local_2c + 1;" (assignment_expression "local_2c = local_2c + 1" identifier = (binary_expression "local_2c + 1" identifier + number_literal)) ;) (expression_statement "local_30[-1] = cVar3;" (assignment_expression "local_30[-1] = cVar3" (subscript_expression "local_30[-1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "cVar3 = *local_2c;" (assignment_expression "cVar3 = *local_2c" identifier = (pointer_expression "*local_2c" * identifier)) ;) (expression_statement "bVar7 = false;" (assignment_expression "bVar7 = false" identifier = false) ;) (expression_statement "bVar1 = bVar2;" (assignment_expression "bVar1 = bVar2" identifier = identifier) ;) }) while (parenthesized_expression "(cVar3 != '\0')" ( (binary_expression "cVar3 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) ;) (labeled_statement "LAB_000278da:\n      if (!bVar2) goto LAB_00027970;" statement_identifier : (if_statement "if (!bVar2) goto LAB_00027970;" if (parenthesized_expression "(!bVar2)" ( (unary_expression "!bVar2" ! identifier) )) (goto_statement "goto LAB_00027970;" goto statement_identifier ;))) (expression_statement "*local_30 = '\0';" (assignment_expression "*local_30 = '\0'" (pointer_expression "*local_30" * identifier) = (char_literal "'\0'" ' escape_sequence ')) ;) }))) (expression_statement "pbVar4->pattern = local_24;" (assignment_expression "pbVar4->pattern = local_24" (field_expression "pbVar4->pattern" identifier -> field_identifier) = identifier) ;) }) (else_clause "else {\n    pbVar4->pattern = new_name;\n    if (new_name == (char *)0x0) {\nLAB_00027913:\n      pbVar4->pattern = new_name;\n      pbVar4->field_0x8 = pbVar4->field_0x8 & 0xfe;\n    }\n  }" else (compound_statement "{\n    pbVar4->pattern = new_name;\n    if (new_name == (char *)0x0) {\nLAB_00027913:\n      pbVar4->pattern = new_name;\n      pbVar4->field_0x8 = pbVar4->field_0x8 & 0xfe;\n    }\n  }" { (expression_statement "pbVar4->pattern = new_name;" (assignment_expression "pbVar4->pattern = new_name" (field_expression "pbVar4->pattern" identifier -> field_identifier) = identifier) ;) (if_statement "if (new_name == (char *)0x0) {\nLAB_00027913:\n      pbVar4->pattern = new_name;\n      pbVar4->field_0x8 = pbVar4->field_0x8 & 0xfe;\n    }" if (parenthesized_expression "(new_name == (char *)0x0)" ( (binary_expression "new_name == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\nLAB_00027913:\n      pbVar4->pattern = new_name;\n      pbVar4->field_0x8 = pbVar4->field_0x8 & 0xfe;\n    }" { (labeled_statement "LAB_00027913:\n      pbVar4->pattern = new_name;" statement_identifier : (expression_statement "pbVar4->pattern = new_name;" (assignment_expression "pbVar4->pattern = new_name" (field_expression "pbVar4->pattern" identifier -> field_identifier) = identifier) ;)) (expression_statement "pbVar4->field_0x8 = pbVar4->field_0x8 & 0xfe;" (assignment_expression "pbVar4->field_0x8 = pbVar4->field_0x8 & 0xfe" (field_expression "pbVar4->field_0x8" identifier -> field_identifier) = (binary_expression "pbVar4->field_0x8 & 0xfe" (field_expression "pbVar4->field_0x8" identifier -> field_identifier) & number_literal)) ;) })) }))) (if_statement "if (lang != (char *)0x0) {\n    iVar5 = strcasecmp(lang,"C");\n    if (iVar5 != 0) {\n      iVar5 = strcasecmp(lang,"C++");\n      if (iVar5 == 0) {\n        pbVar4->field_0x8 = pbVar4->field_0x8 & 199 | 0x10;\n      }\n      else {\n        iVar5 = strcasecmp(lang,"Java");\n        if (iVar5 == 0) {\n          pbVar4->field_0x8 = pbVar4->field_0x8 & 199 | 0x20;\n        }\n        else {\n          fmt = (char *)dcgettext(0,"%X%P: unknown language `%s\' in version information\n",5);\n          einfo(fmt,lang);\n          pbVar4->field_0x8 = pbVar4->field_0x8 & 199 | 8;\n        }\n      }\n      goto LAB_000277cb;\n    }\n  }" if (parenthesized_expression "(lang != (char *)0x0)" ( (binary_expression "lang != (char *)0x0" identifier != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    iVar5 = strcasecmp(lang,"C");\n    if (iVar5 != 0) {\n      iVar5 = strcasecmp(lang,"C++");\n      if (iVar5 == 0) {\n        pbVar4->field_0x8 = pbVar4->field_0x8 & 199 | 0x10;\n      }\n      else {\n        iVar5 = strcasecmp(lang,"Java");\n        if (iVar5 == 0) {\n          pbVar4->field_0x8 = pbVar4->field_0x8 & 199 | 0x20;\n        }\n        else {\n          fmt = (char *)dcgettext(0,"%X%P: unknown language `%s\' in version information\n",5);\n          einfo(fmt,lang);\n          pbVar4->field_0x8 = pbVar4->field_0x8 & 199 | 8;\n        }\n      }\n      goto LAB_000277cb;\n    }\n  }" { (expression_statement "iVar5 = strcasecmp(lang,"C");" (assignment_expression "iVar5 = strcasecmp(lang,"C")" identifier = (call_expression "strcasecmp(lang,"C")" identifier (argument_list "(lang,"C")" ( identifier , (string_literal ""C"" " string_content ") )))) ;) (if_statement "if (iVar5 != 0) {\n      iVar5 = strcasecmp(lang,"C++");\n      if (iVar5 == 0) {\n        pbVar4->field_0x8 = pbVar4->field_0x8 & 199 | 0x10;\n      }\n      else {\n        iVar5 = strcasecmp(lang,"Java");\n        if (iVar5 == 0) {\n          pbVar4->field_0x8 = pbVar4->field_0x8 & 199 | 0x20;\n        }\n        else {\n          fmt = (char *)dcgettext(0,"%X%P: unknown language `%s\' in version information\n",5);\n          einfo(fmt,lang);\n          pbVar4->field_0x8 = pbVar4->field_0x8 & 199 | 8;\n        }\n      }\n      goto LAB_000277cb;\n    }" if (parenthesized_expression "(iVar5 != 0)" ( (binary_expression "iVar5 != 0" identifier != number_literal) )) (compound_statement "{\n      iVar5 = strcasecmp(lang,"C++");\n      if (iVar5 == 0) {\n        pbVar4->field_0x8 = pbVar4->field_0x8 & 199 | 0x10;\n      }\n      else {\n        iVar5 = strcasecmp(lang,"Java");\n        if (iVar5 == 0) {\n          pbVar4->field_0x8 = pbVar4->field_0x8 & 199 | 0x20;\n        }\n        else {\n          fmt = (char *)dcgettext(0,"%X%P: unknown language `%s\' in version information\n",5);\n          einfo(fmt,lang);\n          pbVar4->field_0x8 = pbVar4->field_0x8 & 199 | 8;\n        }\n      }\n      goto LAB_000277cb;\n    }" { (expression_statement "iVar5 = strcasecmp(lang,"C++");" (assignment_expression "iVar5 = strcasecmp(lang,"C++")" identifier = (call_expression "strcasecmp(lang,"C++")" identifier (argument_list "(lang,"C++")" ( identifier , (string_literal ""C++"" " string_content ") )))) ;) (if_statement "if (iVar5 == 0) {\n        pbVar4->field_0x8 = pbVar4->field_0x8 & 199 | 0x10;\n      }\n      else {\n        iVar5 = strcasecmp(lang,"Java");\n        if (iVar5 == 0) {\n          pbVar4->field_0x8 = pbVar4->field_0x8 & 199 | 0x20;\n        }\n        else {\n          fmt = (char *)dcgettext(0,"%X%P: unknown language `%s\' in version information\n",5);\n          einfo(fmt,lang);\n          pbVar4->field_0x8 = pbVar4->field_0x8 & 199 | 8;\n        }\n      }" if (parenthesized_expression "(iVar5 == 0)" ( (binary_expression "iVar5 == 0" identifier == number_literal) )) (compound_statement "{\n        pbVar4->field_0x8 = pbVar4->field_0x8 & 199 | 0x10;\n      }" { (expression_statement "pbVar4->field_0x8 = pbVar4->field_0x8 & 199 | 0x10;" (assignment_expression "pbVar4->field_0x8 = pbVar4->field_0x8 & 199 | 0x10" (field_expression "pbVar4->field_0x8" identifier -> field_identifier) = (binary_expression "pbVar4->field_0x8 & 199 | 0x10" (binary_expression "pbVar4->field_0x8 & 199" (field_expression "pbVar4->field_0x8" identifier -> field_identifier) & number_literal) | number_literal)) ;) }) (else_clause "else {\n        iVar5 = strcasecmp(lang,"Java");\n        if (iVar5 == 0) {\n          pbVar4->field_0x8 = pbVar4->field_0x8 & 199 | 0x20;\n        }\n        else {\n          fmt = (char *)dcgettext(0,"%X%P: unknown language `%s\' in version information\n",5);\n          einfo(fmt,lang);\n          pbVar4->field_0x8 = pbVar4->field_0x8 & 199 | 8;\n        }\n      }" else (compound_statement "{\n        iVar5 = strcasecmp(lang,"Java");\n        if (iVar5 == 0) {\n          pbVar4->field_0x8 = pbVar4->field_0x8 & 199 | 0x20;\n        }\n        else {\n          fmt = (char *)dcgettext(0,"%X%P: unknown language `%s\' in version information\n",5);\n          einfo(fmt,lang);\n          pbVar4->field_0x8 = pbVar4->field_0x8 & 199 | 8;\n        }\n      }" { (expression_statement "iVar5 = strcasecmp(lang,"Java");" (assignment_expression "iVar5 = strcasecmp(lang,"Java")" identifier = (call_expression "strcasecmp(lang,"Java")" identifier (argument_list "(lang,"Java")" ( identifier , (string_literal ""Java"" " string_content ") )))) ;) (if_statement "if (iVar5 == 0) {\n          pbVar4->field_0x8 = pbVar4->field_0x8 & 199 | 0x20;\n        }\n        else {\n          fmt = (char *)dcgettext(0,"%X%P: unknown language `%s\' in version information\n",5);\n          einfo(fmt,lang);\n          pbVar4->field_0x8 = pbVar4->field_0x8 & 199 | 8;\n        }" if (parenthesized_expression "(iVar5 == 0)" ( (binary_expression "iVar5 == 0" identifier == number_literal) )) (compound_statement "{\n          pbVar4->field_0x8 = pbVar4->field_0x8 & 199 | 0x20;\n        }" { (expression_statement "pbVar4->field_0x8 = pbVar4->field_0x8 & 199 | 0x20;" (assignment_expression "pbVar4->field_0x8 = pbVar4->field_0x8 & 199 | 0x20" (field_expression "pbVar4->field_0x8" identifier -> field_identifier) = (binary_expression "pbVar4->field_0x8 & 199 | 0x20" (binary_expression "pbVar4->field_0x8 & 199" (field_expression "pbVar4->field_0x8" identifier -> field_identifier) & number_literal) | number_literal)) ;) }) (else_clause "else {\n          fmt = (char *)dcgettext(0,"%X%P: unknown language `%s\' in version information\n",5);\n          einfo(fmt,lang);\n          pbVar4->field_0x8 = pbVar4->field_0x8 & 199 | 8;\n        }" else (compound_statement "{\n          fmt = (char *)dcgettext(0,"%X%P: unknown language `%s\' in version information\n",5);\n          einfo(fmt,lang);\n          pbVar4->field_0x8 = pbVar4->field_0x8 & 199 | 8;\n        }" { (expression_statement "fmt = (char *)dcgettext(0,"%X%P: unknown language `%s\' in version information\n",5);" (assignment_expression "fmt = (char *)dcgettext(0,"%X%P: unknown language `%s\' in version information\n",5)" identifier = (cast_expression "(char *)dcgettext(0,"%X%P: unknown language `%s\' in version information\n",5)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "dcgettext(0,"%X%P: unknown language `%s\' in version information\n",5)" identifier (argument_list "(0,"%X%P: unknown language `%s\' in version information\n",5)" ( number_literal , (string_literal ""%X%P: unknown language `%s\' in version information\n"" " string_content escape_sequence string_content escape_sequence ") , number_literal ))))) ;) (expression_statement "einfo(fmt,lang);" (call_expression "einfo(fmt,lang)" identifier (argument_list "(fmt,lang)" ( identifier , identifier ))) ;) (expression_statement "pbVar4->field_0x8 = pbVar4->field_0x8 & 199 | 8;" (assignment_expression "pbVar4->field_0x8 = pbVar4->field_0x8 & 199 | 8" (field_expression "pbVar4->field_0x8" identifier -> field_identifier) = (binary_expression "pbVar4->field_0x8 & 199 | 8" (binary_expression "pbVar4->field_0x8 & 199" (field_expression "pbVar4->field_0x8" identifier -> field_identifier) & number_literal) | number_literal)) ;) }))) }))) (goto_statement "goto LAB_000277cb;" goto statement_identifier ;) })) })) (expression_statement "pbVar4->field_0x8 = pbVar4->field_0x8 & 199 | 8;" (assignment_expression "pbVar4->field_0x8 = pbVar4->field_0x8 & 199 | 8" (field_expression "pbVar4->field_0x8" identifier -> field_identifier) = (binary_expression "pbVar4->field_0x8 & 199 | 8" (binary_expression "pbVar4->field_0x8 & 199" (field_expression "pbVar4->field_0x8" identifier -> field_identifier) & number_literal) | number_literal)) ;) (labeled_statement "LAB_000277cb:\n  pbVar4 = ldemul_new_vers_pattern(pbVar4);" statement_identifier : (expression_statement "pbVar4 = ldemul_new_vers_pattern(pbVar4);" (assignment_expression "pbVar4 = ldemul_new_vers_pattern(pbVar4)" identifier = (call_expression "ldemul_new_vers_pattern(pbVar4)" identifier (argument_list "(pbVar4)" ( identifier )))) ;)) (return_statement "return pbVar4;" return identifier ;) })))
(translation_unit "void FUN_00027750(undefined4 param_1,char *param_2,char *param_3,int param_4)\n\n{\n  bool bVar1;\n  bool bVar2;\n  char cVar3;\n  undefined4 *puVar4;\n  int iVar5;\n  size_t sVar6;\n  undefined4 uVar7;\n  bool bVar8;\n  char *local_30;\n  char *local_2c;\n  char *local_24;\n  \n  puVar4 = (undefined4 *)xmalloc(0xc);\n  *puVar4 = param_1;\n  *(byte *)(puVar4 + 2) = *(byte *)(puVar4 + 2) & 0xf8 | 1;\n  if (param_4 == 0) {\n    sVar6 = strlen(param_2);\n    local_24 = (char *)xmalloc(sVar6 + 1);\n    cVar3 = *param_2;\n    if (cVar3 == '\0') {\nLAB_00027970:\n      free(local_24);\n      local_24 = param_2;\n    }\n    else {\n      local_2c = param_2;\n      local_30 = local_24;\n      bVar8 = false;\n      bVar1 = false;\n      do {\n        while (bVar2 = bVar8, !bVar2) {\n          if ((cVar3 == '?' || cVar3 == '*') || (cVar3 == '[')) {\n            free(local_24);\n            goto LAB_00027913;\n          }\n          bVar8 = cVar3 == '\\';\n          *local_30 = cVar3;\n          local_2c = local_2c + 1;\n          local_30 = local_30 + 1;\n          cVar3 = *local_2c;\n          bVar2 = bVar1;\n          if (cVar3 == '\0') goto LAB_000278da;\n        }\n        local_2c = local_2c + 1;\n        local_30[-1] = cVar3;\n        cVar3 = *local_2c;\n        bVar8 = false;\n        bVar1 = bVar2;\n      } while (cVar3 != '\0');\nLAB_000278da:\n      if (!bVar2) goto LAB_00027970;\n      *local_30 = '\0';\n    }\n    puVar4[1] = local_24;\n  }\n  else {\n    puVar4[1] = param_2;\n    if (param_2 == (char *)0x0) {\nLAB_00027913:\n      puVar4[1] = param_2;\n      *(byte *)(puVar4 + 2) = *(byte *)(puVar4 + 2) & 0xfe;\n    }\n  }\n  if (param_3 != (char *)0x0) {\n    iVar5 = strcasecmp(param_3,"C");\n    if (iVar5 != 0) {\n      iVar5 = strcasecmp(param_3,"C++");\n      if (iVar5 == 0) {\n        *(byte *)(puVar4 + 2) = *(byte *)(puVar4 + 2) & 199 | 0x10;\n      }\n      else {\n        iVar5 = strcasecmp(param_3,"Java");\n        if (iVar5 == 0) {\n          *(byte *)(puVar4 + 2) = *(byte *)(puVar4 + 2) & 199 | 0x20;\n        }\n        else {\n          uVar7 = dcgettext(0,"%X%P: unknown language `%s\' in version information\n",5);\n          FUN_00031760(uVar7,param_3);\n          *(byte *)(puVar4 + 2) = *(byte *)(puVar4 + 2) & 199 | 8;\n        }\n      }\n      goto LAB_000277cb;\n    }\n  }\n  *(byte *)(puVar4 + 2) = *(byte *)(puVar4 + 2) & 199 | 8;\nLAB_000277cb:\n  FUN_000306c0(puVar4);\n  return;\n}\n\n" (function_definition "void FUN_00027750(undefined4 param_1,char *param_2,char *param_3,int param_4)\n\n{\n  bool bVar1;\n  bool bVar2;\n  char cVar3;\n  undefined4 *puVar4;\n  int iVar5;\n  size_t sVar6;\n  undefined4 uVar7;\n  bool bVar8;\n  char *local_30;\n  char *local_2c;\n  char *local_24;\n  \n  puVar4 = (undefined4 *)xmalloc(0xc);\n  *puVar4 = param_1;\n  *(byte *)(puVar4 + 2) = *(byte *)(puVar4 + 2) & 0xf8 | 1;\n  if (param_4 == 0) {\n    sVar6 = strlen(param_2);\n    local_24 = (char *)xmalloc(sVar6 + 1);\n    cVar3 = *param_2;\n    if (cVar3 == '\0') {\nLAB_00027970:\n      free(local_24);\n      local_24 = param_2;\n    }\n    else {\n      local_2c = param_2;\n      local_30 = local_24;\n      bVar8 = false;\n      bVar1 = false;\n      do {\n        while (bVar2 = bVar8, !bVar2) {\n          if ((cVar3 == '?' || cVar3 == '*') || (cVar3 == '[')) {\n            free(local_24);\n            goto LAB_00027913;\n          }\n          bVar8 = cVar3 == '\\';\n          *local_30 = cVar3;\n          local_2c = local_2c + 1;\n          local_30 = local_30 + 1;\n          cVar3 = *local_2c;\n          bVar2 = bVar1;\n          if (cVar3 == '\0') goto LAB_000278da;\n        }\n        local_2c = local_2c + 1;\n        local_30[-1] = cVar3;\n        cVar3 = *local_2c;\n        bVar8 = false;\n        bVar1 = bVar2;\n      } while (cVar3 != '\0');\nLAB_000278da:\n      if (!bVar2) goto LAB_00027970;\n      *local_30 = '\0';\n    }\n    puVar4[1] = local_24;\n  }\n  else {\n    puVar4[1] = param_2;\n    if (param_2 == (char *)0x0) {\nLAB_00027913:\n      puVar4[1] = param_2;\n      *(byte *)(puVar4 + 2) = *(byte *)(puVar4 + 2) & 0xfe;\n    }\n  }\n  if (param_3 != (char *)0x0) {\n    iVar5 = strcasecmp(param_3,"C");\n    if (iVar5 != 0) {\n      iVar5 = strcasecmp(param_3,"C++");\n      if (iVar5 == 0) {\n        *(byte *)(puVar4 + 2) = *(byte *)(puVar4 + 2) & 199 | 0x10;\n      }\n      else {\n        iVar5 = strcasecmp(param_3,"Java");\n        if (iVar5 == 0) {\n          *(byte *)(puVar4 + 2) = *(byte *)(puVar4 + 2) & 199 | 0x20;\n        }\n        else {\n          uVar7 = dcgettext(0,"%X%P: unknown language `%s\' in version information\n",5);\n          FUN_00031760(uVar7,param_3);\n          *(byte *)(puVar4 + 2) = *(byte *)(puVar4 + 2) & 199 | 8;\n        }\n      }\n      goto LAB_000277cb;\n    }\n  }\n  *(byte *)(puVar4 + 2) = *(byte *)(puVar4 + 2) & 199 | 8;\nLAB_000277cb:\n  FUN_000306c0(puVar4);\n  return;\n}" primitive_type (function_declarator "FUN_00027750(undefined4 param_1,char *param_2,char *param_3,int param_4)" identifier (parameter_list "(undefined4 param_1,char *param_2,char *param_3,int param_4)" ( (parameter_declaration "undefined4 param_1" type_identifier identifier) , (parameter_declaration "char *param_2" primitive_type (pointer_declarator "*param_2" * identifier)) , (parameter_declaration "char *param_3" primitive_type (pointer_declarator "*param_3" * identifier)) , (parameter_declaration "int param_4" primitive_type identifier) ))) (compound_statement "{\n  bool bVar1;\n  bool bVar2;\n  char cVar3;\n  undefined4 *puVar4;\n  int iVar5;\n  size_t sVar6;\n  undefined4 uVar7;\n  bool bVar8;\n  char *local_30;\n  char *local_2c;\n  char *local_24;\n  \n  puVar4 = (undefined4 *)xmalloc(0xc);\n  *puVar4 = param_1;\n  *(byte *)(puVar4 + 2) = *(byte *)(puVar4 + 2) & 0xf8 | 1;\n  if (param_4 == 0) {\n    sVar6 = strlen(param_2);\n    local_24 = (char *)xmalloc(sVar6 + 1);\n    cVar3 = *param_2;\n    if (cVar3 == '\0') {\nLAB_00027970:\n      free(local_24);\n      local_24 = param_2;\n    }\n    else {\n      local_2c = param_2;\n      local_30 = local_24;\n      bVar8 = false;\n      bVar1 = false;\n      do {\n        while (bVar2 = bVar8, !bVar2) {\n          if ((cVar3 == '?' || cVar3 == '*') || (cVar3 == '[')) {\n            free(local_24);\n            goto LAB_00027913;\n          }\n          bVar8 = cVar3 == '\\';\n          *local_30 = cVar3;\n          local_2c = local_2c + 1;\n          local_30 = local_30 + 1;\n          cVar3 = *local_2c;\n          bVar2 = bVar1;\n          if (cVar3 == '\0') goto LAB_000278da;\n        }\n        local_2c = local_2c + 1;\n        local_30[-1] = cVar3;\n        cVar3 = *local_2c;\n        bVar8 = false;\n        bVar1 = bVar2;\n      } while (cVar3 != '\0');\nLAB_000278da:\n      if (!bVar2) goto LAB_00027970;\n      *local_30 = '\0';\n    }\n    puVar4[1] = local_24;\n  }\n  else {\n    puVar4[1] = param_2;\n    if (param_2 == (char *)0x0) {\nLAB_00027913:\n      puVar4[1] = param_2;\n      *(byte *)(puVar4 + 2) = *(byte *)(puVar4 + 2) & 0xfe;\n    }\n  }\n  if (param_3 != (char *)0x0) {\n    iVar5 = strcasecmp(param_3,"C");\n    if (iVar5 != 0) {\n      iVar5 = strcasecmp(param_3,"C++");\n      if (iVar5 == 0) {\n        *(byte *)(puVar4 + 2) = *(byte *)(puVar4 + 2) & 199 | 0x10;\n      }\n      else {\n        iVar5 = strcasecmp(param_3,"Java");\n        if (iVar5 == 0) {\n          *(byte *)(puVar4 + 2) = *(byte *)(puVar4 + 2) & 199 | 0x20;\n        }\n        else {\n          uVar7 = dcgettext(0,"%X%P: unknown language `%s\' in version information\n",5);\n          FUN_00031760(uVar7,param_3);\n          *(byte *)(puVar4 + 2) = *(byte *)(puVar4 + 2) & 199 | 8;\n        }\n      }\n      goto LAB_000277cb;\n    }\n  }\n  *(byte *)(puVar4 + 2) = *(byte *)(puVar4 + 2) & 199 | 8;\nLAB_000277cb:\n  FUN_000306c0(puVar4);\n  return;\n}" { (declaration "bool bVar1;" primitive_type identifier ;) (declaration "bool bVar2;" primitive_type identifier ;) (declaration "char cVar3;" primitive_type identifier ;) (declaration "undefined4 *puVar4;" type_identifier (pointer_declarator "*puVar4" * identifier) ;) (declaration "int iVar5;" primitive_type identifier ;) (declaration "size_t sVar6;" primitive_type identifier ;) (declaration "undefined4 uVar7;" type_identifier identifier ;) (declaration "bool bVar8;" primitive_type identifier ;) (declaration "char *local_30;" primitive_type (pointer_declarator "*local_30" * identifier) ;) (declaration "char *local_2c;" primitive_type (pointer_declarator "*local_2c" * identifier) ;) (declaration "char *local_24;" primitive_type (pointer_declarator "*local_24" * identifier) ;) (expression_statement "puVar4 = (undefined4 *)xmalloc(0xc);" (assignment_expression "puVar4 = (undefined4 *)xmalloc(0xc)" identifier = (cast_expression "(undefined4 *)xmalloc(0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "xmalloc(0xc)" identifier (argument_list "(0xc)" ( number_literal ))))) ;) (expression_statement "*puVar4 = param_1;" (assignment_expression "*puVar4 = param_1" (pointer_expression "*puVar4" * identifier) = identifier) ;) (expression_statement "*(byte *)(puVar4 + 2) = *(byte *)(puVar4 + 2) & 0xf8 | 1;" (assignment_expression "*(byte *)(puVar4 + 2) = *(byte *)(puVar4 + 2) & 0xf8 | 1" (pointer_expression "*(byte *)(puVar4 + 2)" * (cast_expression "(byte *)(puVar4 + 2)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar4 + 2)" ( (binary_expression "puVar4 + 2" identifier + number_literal) )))) = (binary_expression "*(byte *)(puVar4 + 2) & 0xf8 | 1" (binary_expression "*(byte *)(puVar4 + 2) & 0xf8" (pointer_expression "*(byte *)(puVar4 + 2)" * (cast_expression "(byte *)(puVar4 + 2)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar4 + 2)" ( (binary_expression "puVar4 + 2" identifier + number_literal) )))) & number_literal) | number_literal)) ;) (if_statement "if (param_4 == 0) {\n    sVar6 = strlen(param_2);\n    local_24 = (char *)xmalloc(sVar6 + 1);\n    cVar3 = *param_2;\n    if (cVar3 == '\0') {\nLAB_00027970:\n      free(local_24);\n      local_24 = param_2;\n    }\n    else {\n      local_2c = param_2;\n      local_30 = local_24;\n      bVar8 = false;\n      bVar1 = false;\n      do {\n        while (bVar2 = bVar8, !bVar2) {\n          if ((cVar3 == '?' || cVar3 == '*') || (cVar3 == '[')) {\n            free(local_24);\n            goto LAB_00027913;\n          }\n          bVar8 = cVar3 == '\\';\n          *local_30 = cVar3;\n          local_2c = local_2c + 1;\n          local_30 = local_30 + 1;\n          cVar3 = *local_2c;\n          bVar2 = bVar1;\n          if (cVar3 == '\0') goto LAB_000278da;\n        }\n        local_2c = local_2c + 1;\n        local_30[-1] = cVar3;\n        cVar3 = *local_2c;\n        bVar8 = false;\n        bVar1 = bVar2;\n      } while (cVar3 != '\0');\nLAB_000278da:\n      if (!bVar2) goto LAB_00027970;\n      *local_30 = '\0';\n    }\n    puVar4[1] = local_24;\n  }\n  else {\n    puVar4[1] = param_2;\n    if (param_2 == (char *)0x0) {\nLAB_00027913:\n      puVar4[1] = param_2;\n      *(byte *)(puVar4 + 2) = *(byte *)(puVar4 + 2) & 0xfe;\n    }\n  }" if (parenthesized_expression "(param_4 == 0)" ( (binary_expression "param_4 == 0" identifier == number_literal) )) (compound_statement "{\n    sVar6 = strlen(param_2);\n    local_24 = (char *)xmalloc(sVar6 + 1);\n    cVar3 = *param_2;\n    if (cVar3 == '\0') {\nLAB_00027970:\n      free(local_24);\n      local_24 = param_2;\n    }\n    else {\n      local_2c = param_2;\n      local_30 = local_24;\n      bVar8 = false;\n      bVar1 = false;\n      do {\n        while (bVar2 = bVar8, !bVar2) {\n          if ((cVar3 == '?' || cVar3 == '*') || (cVar3 == '[')) {\n            free(local_24);\n            goto LAB_00027913;\n          }\n          bVar8 = cVar3 == '\\';\n          *local_30 = cVar3;\n          local_2c = local_2c + 1;\n          local_30 = local_30 + 1;\n          cVar3 = *local_2c;\n          bVar2 = bVar1;\n          if (cVar3 == '\0') goto LAB_000278da;\n        }\n        local_2c = local_2c + 1;\n        local_30[-1] = cVar3;\n        cVar3 = *local_2c;\n        bVar8 = false;\n        bVar1 = bVar2;\n      } while (cVar3 != '\0');\nLAB_000278da:\n      if (!bVar2) goto LAB_00027970;\n      *local_30 = '\0';\n    }\n    puVar4[1] = local_24;\n  }" { (expression_statement "sVar6 = strlen(param_2);" (assignment_expression "sVar6 = strlen(param_2)" identifier = (call_expression "strlen(param_2)" identifier (argument_list "(param_2)" ( identifier )))) ;) (expression_statement "local_24 = (char *)xmalloc(sVar6 + 1);" (assignment_expression "local_24 = (char *)xmalloc(sVar6 + 1)" identifier = (cast_expression "(char *)xmalloc(sVar6 + 1)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "xmalloc(sVar6 + 1)" identifier (argument_list "(sVar6 + 1)" ( (binary_expression "sVar6 + 1" identifier + number_literal) ))))) ;) (expression_statement "cVar3 = *param_2;" (assignment_expression "cVar3 = *param_2" identifier = (pointer_expression "*param_2" * identifier)) ;) (if_statement "if (cVar3 == '\0') {\nLAB_00027970:\n      free(local_24);\n      local_24 = param_2;\n    }\n    else {\n      local_2c = param_2;\n      local_30 = local_24;\n      bVar8 = false;\n      bVar1 = false;\n      do {\n        while (bVar2 = bVar8, !bVar2) {\n          if ((cVar3 == '?' || cVar3 == '*') || (cVar3 == '[')) {\n            free(local_24);\n            goto LAB_00027913;\n          }\n          bVar8 = cVar3 == '\\';\n          *local_30 = cVar3;\n          local_2c = local_2c + 1;\n          local_30 = local_30 + 1;\n          cVar3 = *local_2c;\n          bVar2 = bVar1;\n          if (cVar3 == '\0') goto LAB_000278da;\n        }\n        local_2c = local_2c + 1;\n        local_30[-1] = cVar3;\n        cVar3 = *local_2c;\n        bVar8 = false;\n        bVar1 = bVar2;\n      } while (cVar3 != '\0');\nLAB_000278da:\n      if (!bVar2) goto LAB_00027970;\n      *local_30 = '\0';\n    }" if (parenthesized_expression "(cVar3 == '\0')" ( (binary_expression "cVar3 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\nLAB_00027970:\n      free(local_24);\n      local_24 = param_2;\n    }" { (labeled_statement "LAB_00027970:\n      free(local_24);" statement_identifier : (expression_statement "free(local_24);" (call_expression "free(local_24)" identifier (argument_list "(local_24)" ( identifier ))) ;)) (expression_statement "local_24 = param_2;" (assignment_expression "local_24 = param_2" identifier = identifier) ;) }) (else_clause "else {\n      local_2c = param_2;\n      local_30 = local_24;\n      bVar8 = false;\n      bVar1 = false;\n      do {\n        while (bVar2 = bVar8, !bVar2) {\n          if ((cVar3 == '?' || cVar3 == '*') || (cVar3 == '[')) {\n            free(local_24);\n            goto LAB_00027913;\n          }\n          bVar8 = cVar3 == '\\';\n          *local_30 = cVar3;\n          local_2c = local_2c + 1;\n          local_30 = local_30 + 1;\n          cVar3 = *local_2c;\n          bVar2 = bVar1;\n          if (cVar3 == '\0') goto LAB_000278da;\n        }\n        local_2c = local_2c + 1;\n        local_30[-1] = cVar3;\n        cVar3 = *local_2c;\n        bVar8 = false;\n        bVar1 = bVar2;\n      } while (cVar3 != '\0');\nLAB_000278da:\n      if (!bVar2) goto LAB_00027970;\n      *local_30 = '\0';\n    }" else (compound_statement "{\n      local_2c = param_2;\n      local_30 = local_24;\n      bVar8 = false;\n      bVar1 = false;\n      do {\n        while (bVar2 = bVar8, !bVar2) {\n          if ((cVar3 == '?' || cVar3 == '*') || (cVar3 == '[')) {\n            free(local_24);\n            goto LAB_00027913;\n          }\n          bVar8 = cVar3 == '\\';\n          *local_30 = cVar3;\n          local_2c = local_2c + 1;\n          local_30 = local_30 + 1;\n          cVar3 = *local_2c;\n          bVar2 = bVar1;\n          if (cVar3 == '\0') goto LAB_000278da;\n        }\n        local_2c = local_2c + 1;\n        local_30[-1] = cVar3;\n        cVar3 = *local_2c;\n        bVar8 = false;\n        bVar1 = bVar2;\n      } while (cVar3 != '\0');\nLAB_000278da:\n      if (!bVar2) goto LAB_00027970;\n      *local_30 = '\0';\n    }" { (expression_statement "local_2c = param_2;" (assignment_expression "local_2c = param_2" identifier = identifier) ;) (expression_statement "local_30 = local_24;" (assignment_expression "local_30 = local_24" identifier = identifier) ;) (expression_statement "bVar8 = false;" (assignment_expression "bVar8 = false" identifier = false) ;) (expression_statement "bVar1 = false;" (assignment_expression "bVar1 = false" identifier = false) ;) (do_statement "do {\n        while (bVar2 = bVar8, !bVar2) {\n          if ((cVar3 == '?' || cVar3 == '*') || (cVar3 == '[')) {\n            free(local_24);\n            goto LAB_00027913;\n          }\n          bVar8 = cVar3 == '\\';\n          *local_30 = cVar3;\n          local_2c = local_2c + 1;\n          local_30 = local_30 + 1;\n          cVar3 = *local_2c;\n          bVar2 = bVar1;\n          if (cVar3 == '\0') goto LAB_000278da;\n        }\n        local_2c = local_2c + 1;\n        local_30[-1] = cVar3;\n        cVar3 = *local_2c;\n        bVar8 = false;\n        bVar1 = bVar2;\n      } while (cVar3 != '\0');" do (compound_statement "{\n        while (bVar2 = bVar8, !bVar2) {\n          if ((cVar3 == '?' || cVar3 == '*') || (cVar3 == '[')) {\n            free(local_24);\n            goto LAB_00027913;\n          }\n          bVar8 = cVar3 == '\\';\n          *local_30 = cVar3;\n          local_2c = local_2c + 1;\n          local_30 = local_30 + 1;\n          cVar3 = *local_2c;\n          bVar2 = bVar1;\n          if (cVar3 == '\0') goto LAB_000278da;\n        }\n        local_2c = local_2c + 1;\n        local_30[-1] = cVar3;\n        cVar3 = *local_2c;\n        bVar8 = false;\n        bVar1 = bVar2;\n      }" { (while_statement "while (bVar2 = bVar8, !bVar2) {\n          if ((cVar3 == '?' || cVar3 == '*') || (cVar3 == '[')) {\n            free(local_24);\n            goto LAB_00027913;\n          }\n          bVar8 = cVar3 == '\\';\n          *local_30 = cVar3;\n          local_2c = local_2c + 1;\n          local_30 = local_30 + 1;\n          cVar3 = *local_2c;\n          bVar2 = bVar1;\n          if (cVar3 == '\0') goto LAB_000278da;\n        }" while (parenthesized_expression "(bVar2 = bVar8, !bVar2)" ( (comma_expression "bVar2 = bVar8, !bVar2" (assignment_expression "bVar2 = bVar8" identifier = identifier) , (unary_expression "!bVar2" ! identifier)) )) (compound_statement "{\n          if ((cVar3 == '?' || cVar3 == '*') || (cVar3 == '[')) {\n            free(local_24);\n            goto LAB_00027913;\n          }\n          bVar8 = cVar3 == '\\';\n          *local_30 = cVar3;\n          local_2c = local_2c + 1;\n          local_30 = local_30 + 1;\n          cVar3 = *local_2c;\n          bVar2 = bVar1;\n          if (cVar3 == '\0') goto LAB_000278da;\n        }" { (if_statement "if ((cVar3 == '?' || cVar3 == '*') || (cVar3 == '[')) {\n            free(local_24);\n            goto LAB_00027913;\n          }" if (parenthesized_expression "((cVar3 == '?' || cVar3 == '*') || (cVar3 == '['))" ( (binary_expression "(cVar3 == '?' || cVar3 == '*') || (cVar3 == '[')" (parenthesized_expression "(cVar3 == '?' || cVar3 == '*')" ( (binary_expression "cVar3 == '?' || cVar3 == '*'" (binary_expression "cVar3 == '?'" identifier == (char_literal "'?'" ' character ')) || (binary_expression "cVar3 == '*'" identifier == (char_literal "'*'" ' character '))) )) || (parenthesized_expression "(cVar3 == '[')" ( (binary_expression "cVar3 == '['" identifier == (char_literal "'['" ' character ')) ))) )) (compound_statement "{\n            free(local_24);\n            goto LAB_00027913;\n          }" { (expression_statement "free(local_24);" (call_expression "free(local_24)" identifier (argument_list "(local_24)" ( identifier ))) ;) (goto_statement "goto LAB_00027913;" goto statement_identifier ;) })) (expression_statement "bVar8 = cVar3 == '\\';" (assignment_expression "bVar8 = cVar3 == '\\'" identifier = (binary_expression "cVar3 == '\\'" identifier == (char_literal "'\\'" ' escape_sequence '))) ;) (expression_statement "*local_30 = cVar3;" (assignment_expression "*local_30 = cVar3" (pointer_expression "*local_30" * identifier) = identifier) ;) (expression_statement "local_2c = local_2c + 1;" (assignment_expression "local_2c = local_2c + 1" identifier = (binary_expression "local_2c + 1" identifier + number_literal)) ;) (expression_statement "local_30 = local_30 + 1;" (assignment_expression "local_30 = local_30 + 1" identifier = (binary_expression "local_30 + 1" identifier + number_literal)) ;) (expression_statement "cVar3 = *local_2c;" (assignment_expression "cVar3 = *local_2c" identifier = (pointer_expression "*local_2c" * identifier)) ;) (expression_statement "bVar2 = bVar1;" (assignment_expression "bVar2 = bVar1" identifier = identifier) ;) (if_statement "if (cVar3 == '\0') goto LAB_000278da;" if (parenthesized_expression "(cVar3 == '\0')" ( (binary_expression "cVar3 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence ')) )) (goto_statement "goto LAB_000278da;" goto statement_identifier ;)) })) (expression_statement "local_2c = local_2c + 1;" (assignment_expression "local_2c = local_2c + 1" identifier = (binary_expression "local_2c + 1" identifier + number_literal)) ;) (expression_statement "local_30[-1] = cVar3;" (assignment_expression "local_30[-1] = cVar3" (subscript_expression "local_30[-1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "cVar3 = *local_2c;" (assignment_expression "cVar3 = *local_2c" identifier = (pointer_expression "*local_2c" * identifier)) ;) (expression_statement "bVar8 = false;" (assignment_expression "bVar8 = false" identifier = false) ;) (expression_statement "bVar1 = bVar2;" (assignment_expression "bVar1 = bVar2" identifier = identifier) ;) }) while (parenthesized_expression "(cVar3 != '\0')" ( (binary_expression "cVar3 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) ;) (labeled_statement "LAB_000278da:\n      if (!bVar2) goto LAB_00027970;" statement_identifier : (if_statement "if (!bVar2) goto LAB_00027970;" if (parenthesized_expression "(!bVar2)" ( (unary_expression "!bVar2" ! identifier) )) (goto_statement "goto LAB_00027970;" goto statement_identifier ;))) (expression_statement "*local_30 = '\0';" (assignment_expression "*local_30 = '\0'" (pointer_expression "*local_30" * identifier) = (char_literal "'\0'" ' escape_sequence ')) ;) }))) (expression_statement "puVar4[1] = local_24;" (assignment_expression "puVar4[1] = local_24" (subscript_expression "puVar4[1]" identifier [ number_literal ]) = identifier) ;) }) (else_clause "else {\n    puVar4[1] = param_2;\n    if (param_2 == (char *)0x0) {\nLAB_00027913:\n      puVar4[1] = param_2;\n      *(byte *)(puVar4 + 2) = *(byte *)(puVar4 + 2) & 0xfe;\n    }\n  }" else (compound_statement "{\n    puVar4[1] = param_2;\n    if (param_2 == (char *)0x0) {\nLAB_00027913:\n      puVar4[1] = param_2;\n      *(byte *)(puVar4 + 2) = *(byte *)(puVar4 + 2) & 0xfe;\n    }\n  }" { (expression_statement "puVar4[1] = param_2;" (assignment_expression "puVar4[1] = param_2" (subscript_expression "puVar4[1]" identifier [ number_literal ]) = identifier) ;) (if_statement "if (param_2 == (char *)0x0) {\nLAB_00027913:\n      puVar4[1] = param_2;\n      *(byte *)(puVar4 + 2) = *(byte *)(puVar4 + 2) & 0xfe;\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 "{\nLAB_00027913:\n      puVar4[1] = param_2;\n      *(byte *)(puVar4 + 2) = *(byte *)(puVar4 + 2) & 0xfe;\n    }" { (labeled_statement "LAB_00027913:\n      puVar4[1] = param_2;" statement_identifier : (expression_statement "puVar4[1] = param_2;" (assignment_expression "puVar4[1] = param_2" (subscript_expression "puVar4[1]" identifier [ number_literal ]) = identifier) ;)) (expression_statement "*(byte *)(puVar4 + 2) = *(byte *)(puVar4 + 2) & 0xfe;" (assignment_expression "*(byte *)(puVar4 + 2) = *(byte *)(puVar4 + 2) & 0xfe" (pointer_expression "*(byte *)(puVar4 + 2)" * (cast_expression "(byte *)(puVar4 + 2)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar4 + 2)" ( (binary_expression "puVar4 + 2" identifier + number_literal) )))) = (binary_expression "*(byte *)(puVar4 + 2) & 0xfe" (pointer_expression "*(byte *)(puVar4 + 2)" * (cast_expression "(byte *)(puVar4 + 2)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar4 + 2)" ( (binary_expression "puVar4 + 2" identifier + number_literal) )))) & number_literal)) ;) })) }))) (if_statement "if (param_3 != (char *)0x0) {\n    iVar5 = strcasecmp(param_3,"C");\n    if (iVar5 != 0) {\n      iVar5 = strcasecmp(param_3,"C++");\n      if (iVar5 == 0) {\n        *(byte *)(puVar4 + 2) = *(byte *)(puVar4 + 2) & 199 | 0x10;\n      }\n      else {\n        iVar5 = strcasecmp(param_3,"Java");\n        if (iVar5 == 0) {\n          *(byte *)(puVar4 + 2) = *(byte *)(puVar4 + 2) & 199 | 0x20;\n        }\n        else {\n          uVar7 = dcgettext(0,"%X%P: unknown language `%s\' in version information\n",5);\n          FUN_00031760(uVar7,param_3);\n          *(byte *)(puVar4 + 2) = *(byte *)(puVar4 + 2) & 199 | 8;\n        }\n      }\n      goto LAB_000277cb;\n    }\n  }" if (parenthesized_expression "(param_3 != (char *)0x0)" ( (binary_expression "param_3 != (char *)0x0" identifier != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    iVar5 = strcasecmp(param_3,"C");\n    if (iVar5 != 0) {\n      iVar5 = strcasecmp(param_3,"C++");\n      if (iVar5 == 0) {\n        *(byte *)(puVar4 + 2) = *(byte *)(puVar4 + 2) & 199 | 0x10;\n      }\n      else {\n        iVar5 = strcasecmp(param_3,"Java");\n        if (iVar5 == 0) {\n          *(byte *)(puVar4 + 2) = *(byte *)(puVar4 + 2) & 199 | 0x20;\n        }\n        else {\n          uVar7 = dcgettext(0,"%X%P: unknown language `%s\' in version information\n",5);\n          FUN_00031760(uVar7,param_3);\n          *(byte *)(puVar4 + 2) = *(byte *)(puVar4 + 2) & 199 | 8;\n        }\n      }\n      goto LAB_000277cb;\n    }\n  }" { (expression_statement "iVar5 = strcasecmp(param_3,"C");" (assignment_expression "iVar5 = strcasecmp(param_3,"C")" identifier = (call_expression "strcasecmp(param_3,"C")" identifier (argument_list "(param_3,"C")" ( identifier , (string_literal ""C"" " string_content ") )))) ;) (if_statement "if (iVar5 != 0) {\n      iVar5 = strcasecmp(param_3,"C++");\n      if (iVar5 == 0) {\n        *(byte *)(puVar4 + 2) = *(byte *)(puVar4 + 2) & 199 | 0x10;\n      }\n      else {\n        iVar5 = strcasecmp(param_3,"Java");\n        if (iVar5 == 0) {\n          *(byte *)(puVar4 + 2) = *(byte *)(puVar4 + 2) & 199 | 0x20;\n        }\n        else {\n          uVar7 = dcgettext(0,"%X%P: unknown language `%s\' in version information\n",5);\n          FUN_00031760(uVar7,param_3);\n          *(byte *)(puVar4 + 2) = *(byte *)(puVar4 + 2) & 199 | 8;\n        }\n      }\n      goto LAB_000277cb;\n    }" if (parenthesized_expression "(iVar5 != 0)" ( (binary_expression "iVar5 != 0" identifier != number_literal) )) (compound_statement "{\n      iVar5 = strcasecmp(param_3,"C++");\n      if (iVar5 == 0) {\n        *(byte *)(puVar4 + 2) = *(byte *)(puVar4 + 2) & 199 | 0x10;\n      }\n      else {\n        iVar5 = strcasecmp(param_3,"Java");\n        if (iVar5 == 0) {\n          *(byte *)(puVar4 + 2) = *(byte *)(puVar4 + 2) & 199 | 0x20;\n        }\n        else {\n          uVar7 = dcgettext(0,"%X%P: unknown language `%s\' in version information\n",5);\n          FUN_00031760(uVar7,param_3);\n          *(byte *)(puVar4 + 2) = *(byte *)(puVar4 + 2) & 199 | 8;\n        }\n      }\n      goto LAB_000277cb;\n    }" { (expression_statement "iVar5 = strcasecmp(param_3,"C++");" (assignment_expression "iVar5 = strcasecmp(param_3,"C++")" identifier = (call_expression "strcasecmp(param_3,"C++")" identifier (argument_list "(param_3,"C++")" ( identifier , (string_literal ""C++"" " string_content ") )))) ;) (if_statement "if (iVar5 == 0) {\n        *(byte *)(puVar4 + 2) = *(byte *)(puVar4 + 2) & 199 | 0x10;\n      }\n      else {\n        iVar5 = strcasecmp(param_3,"Java");\n        if (iVar5 == 0) {\n          *(byte *)(puVar4 + 2) = *(byte *)(puVar4 + 2) & 199 | 0x20;\n        }\n        else {\n          uVar7 = dcgettext(0,"%X%P: unknown language `%s\' in version information\n",5);\n          FUN_00031760(uVar7,param_3);\n          *(byte *)(puVar4 + 2) = *(byte *)(puVar4 + 2) & 199 | 8;\n        }\n      }" if (parenthesized_expression "(iVar5 == 0)" ( (binary_expression "iVar5 == 0" identifier == number_literal) )) (compound_statement "{\n        *(byte *)(puVar4 + 2) = *(byte *)(puVar4 + 2) & 199 | 0x10;\n      }" { (expression_statement "*(byte *)(puVar4 + 2) = *(byte *)(puVar4 + 2) & 199 | 0x10;" (assignment_expression "*(byte *)(puVar4 + 2) = *(byte *)(puVar4 + 2) & 199 | 0x10" (pointer_expression "*(byte *)(puVar4 + 2)" * (cast_expression "(byte *)(puVar4 + 2)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar4 + 2)" ( (binary_expression "puVar4 + 2" identifier + number_literal) )))) = (binary_expression "*(byte *)(puVar4 + 2) & 199 | 0x10" (binary_expression "*(byte *)(puVar4 + 2) & 199" (pointer_expression "*(byte *)(puVar4 + 2)" * (cast_expression "(byte *)(puVar4 + 2)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar4 + 2)" ( (binary_expression "puVar4 + 2" identifier + number_literal) )))) & number_literal) | number_literal)) ;) }) (else_clause "else {\n        iVar5 = strcasecmp(param_3,"Java");\n        if (iVar5 == 0) {\n          *(byte *)(puVar4 + 2) = *(byte *)(puVar4 + 2) & 199 | 0x20;\n        }\n        else {\n          uVar7 = dcgettext(0,"%X%P: unknown language `%s\' in version information\n",5);\n          FUN_00031760(uVar7,param_3);\n          *(byte *)(puVar4 + 2) = *(byte *)(puVar4 + 2) & 199 | 8;\n        }\n      }" else (compound_statement "{\n        iVar5 = strcasecmp(param_3,"Java");\n        if (iVar5 == 0) {\n          *(byte *)(puVar4 + 2) = *(byte *)(puVar4 + 2) & 199 | 0x20;\n        }\n        else {\n          uVar7 = dcgettext(0,"%X%P: unknown language `%s\' in version information\n",5);\n          FUN_00031760(uVar7,param_3);\n          *(byte *)(puVar4 + 2) = *(byte *)(puVar4 + 2) & 199 | 8;\n        }\n      }" { (expression_statement "iVar5 = strcasecmp(param_3,"Java");" (assignment_expression "iVar5 = strcasecmp(param_3,"Java")" identifier = (call_expression "strcasecmp(param_3,"Java")" identifier (argument_list "(param_3,"Java")" ( identifier , (string_literal ""Java"" " string_content ") )))) ;) (if_statement "if (iVar5 == 0) {\n          *(byte *)(puVar4 + 2) = *(byte *)(puVar4 + 2) & 199 | 0x20;\n        }\n        else {\n          uVar7 = dcgettext(0,"%X%P: unknown language `%s\' in version information\n",5);\n          FUN_00031760(uVar7,param_3);\n          *(byte *)(puVar4 + 2) = *(byte *)(puVar4 + 2) & 199 | 8;\n        }" if (parenthesized_expression "(iVar5 == 0)" ( (binary_expression "iVar5 == 0" identifier == number_literal) )) (compound_statement "{\n          *(byte *)(puVar4 + 2) = *(byte *)(puVar4 + 2) & 199 | 0x20;\n        }" { (expression_statement "*(byte *)(puVar4 + 2) = *(byte *)(puVar4 + 2) & 199 | 0x20;" (assignment_expression "*(byte *)(puVar4 + 2) = *(byte *)(puVar4 + 2) & 199 | 0x20" (pointer_expression "*(byte *)(puVar4 + 2)" * (cast_expression "(byte *)(puVar4 + 2)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar4 + 2)" ( (binary_expression "puVar4 + 2" identifier + number_literal) )))) = (binary_expression "*(byte *)(puVar4 + 2) & 199 | 0x20" (binary_expression "*(byte *)(puVar4 + 2) & 199" (pointer_expression "*(byte *)(puVar4 + 2)" * (cast_expression "(byte *)(puVar4 + 2)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar4 + 2)" ( (binary_expression "puVar4 + 2" identifier + number_literal) )))) & number_literal) | number_literal)) ;) }) (else_clause "else {\n          uVar7 = dcgettext(0,"%X%P: unknown language `%s\' in version information\n",5);\n          FUN_00031760(uVar7,param_3);\n          *(byte *)(puVar4 + 2) = *(byte *)(puVar4 + 2) & 199 | 8;\n        }" else (compound_statement "{\n          uVar7 = dcgettext(0,"%X%P: unknown language `%s\' in version information\n",5);\n          FUN_00031760(uVar7,param_3);\n          *(byte *)(puVar4 + 2) = *(byte *)(puVar4 + 2) & 199 | 8;\n        }" { (expression_statement "uVar7 = dcgettext(0,"%X%P: unknown language `%s\' in version information\n",5);" (assignment_expression "uVar7 = dcgettext(0,"%X%P: unknown language `%s\' in version information\n",5)" identifier = (call_expression "dcgettext(0,"%X%P: unknown language `%s\' in version information\n",5)" identifier (argument_list "(0,"%X%P: unknown language `%s\' in version information\n",5)" ( number_literal , (string_literal ""%X%P: unknown language `%s\' in version information\n"" " string_content escape_sequence string_content escape_sequence ") , number_literal )))) ;) (expression_statement "FUN_00031760(uVar7,param_3);" (call_expression "FUN_00031760(uVar7,param_3)" identifier (argument_list "(uVar7,param_3)" ( identifier , identifier ))) ;) (expression_statement "*(byte *)(puVar4 + 2) = *(byte *)(puVar4 + 2) & 199 | 8;" (assignment_expression "*(byte *)(puVar4 + 2) = *(byte *)(puVar4 + 2) & 199 | 8" (pointer_expression "*(byte *)(puVar4 + 2)" * (cast_expression "(byte *)(puVar4 + 2)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar4 + 2)" ( (binary_expression "puVar4 + 2" identifier + number_literal) )))) = (binary_expression "*(byte *)(puVar4 + 2) & 199 | 8" (binary_expression "*(byte *)(puVar4 + 2) & 199" (pointer_expression "*(byte *)(puVar4 + 2)" * (cast_expression "(byte *)(puVar4 + 2)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar4 + 2)" ( (binary_expression "puVar4 + 2" identifier + number_literal) )))) & number_literal) | number_literal)) ;) }))) }))) (goto_statement "goto LAB_000277cb;" goto statement_identifier ;) })) })) (expression_statement "*(byte *)(puVar4 + 2) = *(byte *)(puVar4 + 2) & 199 | 8;" (assignment_expression "*(byte *)(puVar4 + 2) = *(byte *)(puVar4 + 2) & 199 | 8" (pointer_expression "*(byte *)(puVar4 + 2)" * (cast_expression "(byte *)(puVar4 + 2)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar4 + 2)" ( (binary_expression "puVar4 + 2" identifier + number_literal) )))) = (binary_expression "*(byte *)(puVar4 + 2) & 199 | 8" (binary_expression "*(byte *)(puVar4 + 2) & 199" (pointer_expression "*(byte *)(puVar4 + 2)" * (cast_expression "(byte *)(puVar4 + 2)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar4 + 2)" ( (binary_expression "puVar4 + 2" identifier + number_literal) )))) & number_literal) | number_literal)) ;) (labeled_statement "LAB_000277cb:\n  FUN_000306c0(puVar4);" statement_identifier : (expression_statement "FUN_000306c0(puVar4);" (call_expression "FUN_000306c0(puVar4)" identifier (argument_list "(puVar4)" ( identifier ))) ;)) (return_statement "return;" return ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE IDENT) ))) (compound_statement { (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE 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) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( LIT ))))) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) & LIT) | LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (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 (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (char_literal ' escape_sequence ')) )) (compound_statement { (labeled_statement statement_identifier : (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;)) (expression_statement (assignment_expression IDENT = IDENT) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = BOOL) ;) (expression_statement (assignment_expression IDENT = BOOL) ;) (do_statement do (compound_statement { (while_statement while (parenthesized_expression ( (comma_expression (assignment_expression IDENT = IDENT) , (unary_expression ! IDENT)) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (binary_expression IDENT == (char_literal ' character ')) || (binary_expression IDENT == (char_literal ' character '))) )) || (parenthesized_expression ( (binary_expression IDENT == (char_literal ' character ')) ))) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT == (char_literal ' escape_sequence '))) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * 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 (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = BOOL) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) }) while (parenthesized_expression ( (binary_expression IDENT != (char_literal ' escape_sequence ')) )) ;) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (unary_expression ! IDENT) )) (goto_statement goto statement_identifier ;))) (expression_statement (assignment_expression (pointer_expression * IDENT) = (char_literal ' escape_sequence ')) ;) }))) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (labeled_statement statement_identifier : (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;)) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) & 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 = (call_expression IDENT (argument_list ( IDENT , (string_literal " string_content ") )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , (string_literal " string_content ") )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) & LIT) | LIT)) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , (string_literal " string_content ") )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) & LIT) | LIT)) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( LIT , (string_literal " string_content escape_sequence string_content escape_sequence ") , LIT )))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT ))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) & LIT) | LIT)) ;) }))) }))) (goto_statement goto statement_identifier ;) })) })) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) & LIT) | LIT)) ;) (labeled_statement statement_identifier : (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;)) (return_statement return ;) })))
(function_definition "void FUN_00027750(undefined4 param_1,char *param_2,char *param_3,int param_4)\n\n{\n  bool bVar1;\n  bool bVar2;\n  char cVar3;\n  undefined4 *puVar4;\n  int iVar5;\n  size_t sVar6;\n  undefined4 uVar7;\n  bool bVar8;\n  char *local_30;\n  char *local_2c;\n  char *local_24;\n  \n  puVar4 = (undefined4 *)xmalloc(0xc);\n  *puVar4 = param_1;\n  *(byte *)(puVar4 + 2) = *(byte *)(puVar4 + 2) & 0xf8 | 1;\n  if (param_4 == 0) {\n    sVar6 = strlen(param_2);\n    local_24 = (char *)xmalloc(sVar6 + 1);\n    cVar3 = *param_2;\n    if (cVar3 == '\0') {\nLAB_00027970:\n      free(local_24);\n      local_24 = param_2;\n    }\n    else {\n      local_2c = param_2;\n      local_30 = local_24;\n      bVar8 = false;\n      bVar1 = false;\n      do {\n        while (bVar2 = bVar8, !bVar2) {\n          if ((cVar3 == '?' || cVar3 == '*') || (cVar3 == '[')) {\n            free(local_24);\n            goto LAB_00027913;\n          }\n          bVar8 = cVar3 == '\\';\n          *local_30 = cVar3;\n          local_2c = local_2c + 1;\n          local_30 = local_30 + 1;\n          cVar3 = *local_2c;\n          bVar2 = bVar1;\n          if (cVar3 == '\0') goto LAB_000278da;\n        }\n        local_2c = local_2c + 1;\n        local_30[-1] = cVar3;\n        cVar3 = *local_2c;\n        bVar8 = false;\n        bVar1 = bVar2;\n      } while (cVar3 != '\0');\nLAB_000278da:\n      if (!bVar2) goto LAB_00027970;\n      *local_30 = '\0';\n    }\n    puVar4[1] = local_24;\n  }\n  else {\n    puVar4[1] = param_2;\n    if (param_2 == (char *)0x0) {\nLAB_00027913:\n      puVar4[1] = param_2;\n      *(byte *)(puVar4 + 2) = *(byte *)(puVar4 + 2) & 0xfe;\n    }\n  }\n  if (param_3 != (char *)0x0) {\n    iVar5 = strcasecmp(param_3,"C");\n    if (iVar5 != 0) {\n      iVar5 = strcasecmp(param_3,"C++");\n      if (iVar5 == 0) {\n        *(byte *)(puVar4 + 2) = *(byte *)(puVar4 + 2) & 199 | 0x10;\n      }\n      else {\n        iVar5 = strcasecmp(param_3,"Java");\n        if (iVar5 == 0) {\n          *(byte *)(puVar4 + 2) = *(byte *)(puVar4 + 2) & 199 | 0x20;\n        }\n        else {\n          uVar7 = dcgettext(0,"%X%P: unknown language `%s\' in version information\n",5);\n          FUN_00031760(uVar7,param_3);\n          *(byte *)(puVar4 + 2) = *(byte *)(puVar4 + 2) & 199 | 8;\n        }\n      }\n      goto LAB_000277cb;\n    }\n  }\n  *(byte *)(puVar4 + 2) = *(byte *)(puVar4 + 2) & 199 | 8;\nLAB_000277cb:\n  FUN_000306c0(puVar4);\n  return;\n}" (primitive_type "void") (function_declarator "FUN_00027750(undefined4 param_1,char *param_2,char *param_3,int param_4)" (identifier "FUN_00027750") (parameter_list "(undefined4 param_1,char *param_2,char *param_3,int param_4)" (( "(") (parameter_declaration "undefined4 param_1" (type_identifier "undefined4") (identifier "param_1")) (, ",") (parameter_declaration "char *param_2" (primitive_type "char") (pointer_declarator "*param_2" (* "*") (identifier "param_2"))) (, ",") (parameter_declaration "char *param_3" (primitive_type "char") (pointer_declarator "*param_3" (* "*") (identifier "param_3"))) (, ",") (parameter_declaration "int param_4" (primitive_type "int") (identifier "param_4")) () ")"))) (compound_statement "{\n  bool bVar1;\n  bool bVar2;\n  char cVar3;\n  undefined4 *puVar4;\n  int iVar5;\n  size_t sVar6;\n  undefined4 uVar7;\n  bool bVar8;\n  char *local_30;\n  char *local_2c;\n  char *local_24;\n  \n  puVar4 = (undefined4 *)xmalloc(0xc);\n  *puVar4 = param_1;\n  *(byte *)(puVar4 + 2) = *(byte *)(puVar4 + 2) & 0xf8 | 1;\n  if (param_4 == 0) {\n    sVar6 = strlen(param_2);\n    local_24 = (char *)xmalloc(sVar6 + 1);\n    cVar3 = *param_2;\n    if (cVar3 == '\0') {\nLAB_00027970:\n      free(local_24);\n      local_24 = param_2;\n    }\n    else {\n      local_2c = param_2;\n      local_30 = local_24;\n      bVar8 = false;\n      bVar1 = false;\n      do {\n        while (bVar2 = bVar8, !bVar2) {\n          if ((cVar3 == '?' || cVar3 == '*') || (cVar3 == '[')) {\n            free(local_24);\n            goto LAB_00027913;\n          }\n          bVar8 = cVar3 == '\\';\n          *local_30 = cVar3;\n          local_2c = local_2c + 1;\n          local_30 = local_30 + 1;\n          cVar3 = *local_2c;\n          bVar2 = bVar1;\n          if (cVar3 == '\0') goto LAB_000278da;\n        }\n        local_2c = local_2c + 1;\n        local_30[-1] = cVar3;\n        cVar3 = *local_2c;\n        bVar8 = false;\n        bVar1 = bVar2;\n      } while (cVar3 != '\0');\nLAB_000278da:\n      if (!bVar2) goto LAB_00027970;\n      *local_30 = '\0';\n    }\n    puVar4[1] = local_24;\n  }\n  else {\n    puVar4[1] = param_2;\n    if (param_2 == (char *)0x0) {\nLAB_00027913:\n      puVar4[1] = param_2;\n      *(byte *)(puVar4 + 2) = *(byte *)(puVar4 + 2) & 0xfe;\n    }\n  }\n  if (param_3 != (char *)0x0) {\n    iVar5 = strcasecmp(param_3,"C");\n    if (iVar5 != 0) {\n      iVar5 = strcasecmp(param_3,"C++");\n      if (iVar5 == 0) {\n        *(byte *)(puVar4 + 2) = *(byte *)(puVar4 + 2) & 199 | 0x10;\n      }\n      else {\n        iVar5 = strcasecmp(param_3,"Java");\n        if (iVar5 == 0) {\n          *(byte *)(puVar4 + 2) = *(byte *)(puVar4 + 2) & 199 | 0x20;\n        }\n        else {\n          uVar7 = dcgettext(0,"%X%P: unknown language `%s\' in version information\n",5);\n          FUN_00031760(uVar7,param_3);\n          *(byte *)(puVar4 + 2) = *(byte *)(puVar4 + 2) & 199 | 8;\n        }\n      }\n      goto LAB_000277cb;\n    }\n  }\n  *(byte *)(puVar4 + 2) = *(byte *)(puVar4 + 2) & 199 | 8;\nLAB_000277cb:\n  FUN_000306c0(puVar4);\n  return;\n}" ({ "{") (declaration "bool bVar1;" (primitive_type "bool") (identifier "bVar1") (; ";")) (declaration "bool bVar2;" (primitive_type "bool") (identifier "bVar2") (; ";")) (declaration "char cVar3;" (primitive_type "char") (identifier "cVar3") (; ";")) (declaration "undefined4 *puVar4;" (type_identifier "undefined4") (pointer_declarator "*puVar4" (* "*") (identifier "puVar4")) (; ";")) (declaration "int iVar5;" (primitive_type "int") (identifier "iVar5") (; ";")) (declaration "size_t sVar6;" (primitive_type "size_t") (identifier "sVar6") (; ";")) (declaration "undefined4 uVar7;" (type_identifier "undefined4") (identifier "uVar7") (; ";")) (declaration "bool bVar8;" (primitive_type "bool") (identifier "bVar8") (; ";")) (declaration "char *local_30;" (primitive_type "char") (pointer_declarator "*local_30" (* "*") (identifier "local_30")) (; ";")) (declaration "char *local_2c;" (primitive_type "char") (pointer_declarator "*local_2c" (* "*") (identifier "local_2c")) (; ";")) (declaration "char *local_24;" (primitive_type "char") (pointer_declarator "*local_24" (* "*") (identifier "local_24")) (; ";")) (expression_statement "puVar4 = (undefined4 *)xmalloc(0xc);" (assignment_expression "puVar4 = (undefined4 *)xmalloc(0xc)" (identifier "puVar4") (= "=") (cast_expression "(undefined4 *)xmalloc(0xc)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "xmalloc(0xc)" (identifier "xmalloc") (argument_list "(0xc)" (( "(") (number_literal "0xc") () ")"))))) (; ";")) (expression_statement "*puVar4 = param_1;" (assignment_expression "*puVar4 = param_1" (pointer_expression "*puVar4" (* "*") (identifier "puVar4")) (= "=") (identifier "param_1")) (; ";")) (expression_statement "*(byte *)(puVar4 + 2) = *(byte *)(puVar4 + 2) & 0xf8 | 1;" (assignment_expression "*(byte *)(puVar4 + 2) = *(byte *)(puVar4 + 2) & 0xf8 | 1" (pointer_expression "*(byte *)(puVar4 + 2)" (* "*") (cast_expression "(byte *)(puVar4 + 2)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar4 + 2)" (( "(") (binary_expression "puVar4 + 2" (identifier "puVar4") (+ "+") (number_literal "2")) () ")")))) (= "=") (binary_expression "*(byte *)(puVar4 + 2) & 0xf8 | 1" (binary_expression "*(byte *)(puVar4 + 2) & 0xf8" (pointer_expression "*(byte *)(puVar4 + 2)" (* "*") (cast_expression "(byte *)(puVar4 + 2)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar4 + 2)" (( "(") (binary_expression "puVar4 + 2" (identifier "puVar4") (+ "+") (number_literal "2")) () ")")))) (& "&") (number_literal "0xf8")) (| "|") (number_literal "1"))) (; ";")) (if_statement "if (param_4 == 0) {\n    sVar6 = strlen(param_2);\n    local_24 = (char *)xmalloc(sVar6 + 1);\n    cVar3 = *param_2;\n    if (cVar3 == '\0') {\nLAB_00027970:\n      free(local_24);\n      local_24 = param_2;\n    }\n    else {\n      local_2c = param_2;\n      local_30 = local_24;\n      bVar8 = false;\n      bVar1 = false;\n      do {\n        while (bVar2 = bVar8, !bVar2) {\n          if ((cVar3 == '?' || cVar3 == '*') || (cVar3 == '[')) {\n            free(local_24);\n            goto LAB_00027913;\n          }\n          bVar8 = cVar3 == '\\';\n          *local_30 = cVar3;\n          local_2c = local_2c + 1;\n          local_30 = local_30 + 1;\n          cVar3 = *local_2c;\n          bVar2 = bVar1;\n          if (cVar3 == '\0') goto LAB_000278da;\n        }\n        local_2c = local_2c + 1;\n        local_30[-1] = cVar3;\n        cVar3 = *local_2c;\n        bVar8 = false;\n        bVar1 = bVar2;\n      } while (cVar3 != '\0');\nLAB_000278da:\n      if (!bVar2) goto LAB_00027970;\n      *local_30 = '\0';\n    }\n    puVar4[1] = local_24;\n  }\n  else {\n    puVar4[1] = param_2;\n    if (param_2 == (char *)0x0) {\nLAB_00027913:\n      puVar4[1] = param_2;\n      *(byte *)(puVar4 + 2) = *(byte *)(puVar4 + 2) & 0xfe;\n    }\n  }" (if "if") (parenthesized_expression "(param_4 == 0)" (( "(") (binary_expression "param_4 == 0" (identifier "param_4") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n    sVar6 = strlen(param_2);\n    local_24 = (char *)xmalloc(sVar6 + 1);\n    cVar3 = *param_2;\n    if (cVar3 == '\0') {\nLAB_00027970:\n      free(local_24);\n      local_24 = param_2;\n    }\n    else {\n      local_2c = param_2;\n      local_30 = local_24;\n      bVar8 = false;\n      bVar1 = false;\n      do {\n        while (bVar2 = bVar8, !bVar2) {\n          if ((cVar3 == '?' || cVar3 == '*') || (cVar3 == '[')) {\n            free(local_24);\n            goto LAB_00027913;\n          }\n          bVar8 = cVar3 == '\\';\n          *local_30 = cVar3;\n          local_2c = local_2c + 1;\n          local_30 = local_30 + 1;\n          cVar3 = *local_2c;\n          bVar2 = bVar1;\n          if (cVar3 == '\0') goto LAB_000278da;\n        }\n        local_2c = local_2c + 1;\n        local_30[-1] = cVar3;\n        cVar3 = *local_2c;\n        bVar8 = false;\n        bVar1 = bVar2;\n      } while (cVar3 != '\0');\nLAB_000278da:\n      if (!bVar2) goto LAB_00027970;\n      *local_30 = '\0';\n    }\n    puVar4[1] = local_24;\n  }" ({ "{") (expression_statement "sVar6 = strlen(param_2);" (assignment_expression "sVar6 = strlen(param_2)" (identifier "sVar6") (= "=") (call_expression "strlen(param_2)" (identifier "strlen") (argument_list "(param_2)" (( "(") (identifier "param_2") () ")")))) (; ";")) (expression_statement "local_24 = (char *)xmalloc(sVar6 + 1);" (assignment_expression "local_24 = (char *)xmalloc(sVar6 + 1)" (identifier "local_24") (= "=") (cast_expression "(char *)xmalloc(sVar6 + 1)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "xmalloc(sVar6 + 1)" (identifier "xmalloc") (argument_list "(sVar6 + 1)" (( "(") (binary_expression "sVar6 + 1" (identifier "sVar6") (+ "+") (number_literal "1")) () ")"))))) (; ";")) (expression_statement "cVar3 = *param_2;" (assignment_expression "cVar3 = *param_2" (identifier "cVar3") (= "=") (pointer_expression "*param_2" (* "*") (identifier "param_2"))) (; ";")) (if_statement "if (cVar3 == '\0') {\nLAB_00027970:\n      free(local_24);\n      local_24 = param_2;\n    }\n    else {\n      local_2c = param_2;\n      local_30 = local_24;\n      bVar8 = false;\n      bVar1 = false;\n      do {\n        while (bVar2 = bVar8, !bVar2) {\n          if ((cVar3 == '?' || cVar3 == '*') || (cVar3 == '[')) {\n            free(local_24);\n            goto LAB_00027913;\n          }\n          bVar8 = cVar3 == '\\';\n          *local_30 = cVar3;\n          local_2c = local_2c + 1;\n          local_30 = local_30 + 1;\n          cVar3 = *local_2c;\n          bVar2 = bVar1;\n          if (cVar3 == '\0') goto LAB_000278da;\n        }\n        local_2c = local_2c + 1;\n        local_30[-1] = cVar3;\n        cVar3 = *local_2c;\n        bVar8 = false;\n        bVar1 = bVar2;\n      } while (cVar3 != '\0');\nLAB_000278da:\n      if (!bVar2) goto LAB_00027970;\n      *local_30 = '\0';\n    }" (if "if") (parenthesized_expression "(cVar3 == '\0')" (( "(") (binary_expression "cVar3 == '\0'" (identifier "cVar3") (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\nLAB_00027970:\n      free(local_24);\n      local_24 = param_2;\n    }" ({ "{") (labeled_statement "LAB_00027970:\n      free(local_24);" (statement_identifier "LAB_00027970") (: ":") (expression_statement "free(local_24);" (call_expression "free(local_24)" (identifier "free") (argument_list "(local_24)" (( "(") (identifier "local_24") () ")"))) (; ";"))) (expression_statement "local_24 = param_2;" (assignment_expression "local_24 = param_2" (identifier "local_24") (= "=") (identifier "param_2")) (; ";")) (} "}")) (else_clause "else {\n      local_2c = param_2;\n      local_30 = local_24;\n      bVar8 = false;\n      bVar1 = false;\n      do {\n        while (bVar2 = bVar8, !bVar2) {\n          if ((cVar3 == '?' || cVar3 == '*') || (cVar3 == '[')) {\n            free(local_24);\n            goto LAB_00027913;\n          }\n          bVar8 = cVar3 == '\\';\n          *local_30 = cVar3;\n          local_2c = local_2c + 1;\n          local_30 = local_30 + 1;\n          cVar3 = *local_2c;\n          bVar2 = bVar1;\n          if (cVar3 == '\0') goto LAB_000278da;\n        }\n        local_2c = local_2c + 1;\n        local_30[-1] = cVar3;\n        cVar3 = *local_2c;\n        bVar8 = false;\n        bVar1 = bVar2;\n      } while (cVar3 != '\0');\nLAB_000278da:\n      if (!bVar2) goto LAB_00027970;\n      *local_30 = '\0';\n    }" (else "else") (compound_statement "{\n      local_2c = param_2;\n      local_30 = local_24;\n      bVar8 = false;\n      bVar1 = false;\n      do {\n        while (bVar2 = bVar8, !bVar2) {\n          if ((cVar3 == '?' || cVar3 == '*') || (cVar3 == '[')) {\n            free(local_24);\n            goto LAB_00027913;\n          }\n          bVar8 = cVar3 == '\\';\n          *local_30 = cVar3;\n          local_2c = local_2c + 1;\n          local_30 = local_30 + 1;\n          cVar3 = *local_2c;\n          bVar2 = bVar1;\n          if (cVar3 == '\0') goto LAB_000278da;\n        }\n        local_2c = local_2c + 1;\n        local_30[-1] = cVar3;\n        cVar3 = *local_2c;\n        bVar8 = false;\n        bVar1 = bVar2;\n      } while (cVar3 != '\0');\nLAB_000278da:\n      if (!bVar2) goto LAB_00027970;\n      *local_30 = '\0';\n    }" ({ "{") (expression_statement "local_2c = param_2;" (assignment_expression "local_2c = param_2" (identifier "local_2c") (= "=") (identifier "param_2")) (; ";")) (expression_statement "local_30 = local_24;" (assignment_expression "local_30 = local_24" (identifier "local_30") (= "=") (identifier "local_24")) (; ";")) (expression_statement "bVar8 = false;" (assignment_expression "bVar8 = false" (identifier "bVar8") (= "=") (false "false")) (; ";")) (expression_statement "bVar1 = false;" (assignment_expression "bVar1 = false" (identifier "bVar1") (= "=") (false "false")) (; ";")) (do_statement "do {\n        while (bVar2 = bVar8, !bVar2) {\n          if ((cVar3 == '?' || cVar3 == '*') || (cVar3 == '[')) {\n            free(local_24);\n            goto LAB_00027913;\n          }\n          bVar8 = cVar3 == '\\';\n          *local_30 = cVar3;\n          local_2c = local_2c + 1;\n          local_30 = local_30 + 1;\n          cVar3 = *local_2c;\n          bVar2 = bVar1;\n          if (cVar3 == '\0') goto LAB_000278da;\n        }\n        local_2c = local_2c + 1;\n        local_30[-1] = cVar3;\n        cVar3 = *local_2c;\n        bVar8 = false;\n        bVar1 = bVar2;\n      } while (cVar3 != '\0');" (do "do") (compound_statement "{\n        while (bVar2 = bVar8, !bVar2) {\n          if ((cVar3 == '?' || cVar3 == '*') || (cVar3 == '[')) {\n            free(local_24);\n            goto LAB_00027913;\n          }\n          bVar8 = cVar3 == '\\';\n          *local_30 = cVar3;\n          local_2c = local_2c + 1;\n          local_30 = local_30 + 1;\n          cVar3 = *local_2c;\n          bVar2 = bVar1;\n          if (cVar3 == '\0') goto LAB_000278da;\n        }\n        local_2c = local_2c + 1;\n        local_30[-1] = cVar3;\n        cVar3 = *local_2c;\n        bVar8 = false;\n        bVar1 = bVar2;\n      }" ({ "{") (while_statement "while (bVar2 = bVar8, !bVar2) {\n          if ((cVar3 == '?' || cVar3 == '*') || (cVar3 == '[')) {\n            free(local_24);\n            goto LAB_00027913;\n          }\n          bVar8 = cVar3 == '\\';\n          *local_30 = cVar3;\n          local_2c = local_2c + 1;\n          local_30 = local_30 + 1;\n          cVar3 = *local_2c;\n          bVar2 = bVar1;\n          if (cVar3 == '\0') goto LAB_000278da;\n        }" (while "while") (parenthesized_expression "(bVar2 = bVar8, !bVar2)" (( "(") (comma_expression "bVar2 = bVar8, !bVar2" (assignment_expression "bVar2 = bVar8" (identifier "bVar2") (= "=") (identifier "bVar8")) (, ",") (unary_expression "!bVar2" (! "!") (identifier "bVar2"))) () ")")) (compound_statement "{\n          if ((cVar3 == '?' || cVar3 == '*') || (cVar3 == '[')) {\n            free(local_24);\n            goto LAB_00027913;\n          }\n          bVar8 = cVar3 == '\\';\n          *local_30 = cVar3;\n          local_2c = local_2c + 1;\n          local_30 = local_30 + 1;\n          cVar3 = *local_2c;\n          bVar2 = bVar1;\n          if (cVar3 == '\0') goto LAB_000278da;\n        }" ({ "{") (if_statement "if ((cVar3 == '?' || cVar3 == '*') || (cVar3 == '[')) {\n            free(local_24);\n            goto LAB_00027913;\n          }" (if "if") (parenthesized_expression "((cVar3 == '?' || cVar3 == '*') || (cVar3 == '['))" (( "(") (binary_expression "(cVar3 == '?' || cVar3 == '*') || (cVar3 == '[')" (parenthesized_expression "(cVar3 == '?' || cVar3 == '*')" (( "(") (binary_expression "cVar3 == '?' || cVar3 == '*'" (binary_expression "cVar3 == '?'" (identifier "cVar3") (== "==") (char_literal "'?'" (' "'") (character "?") (' "'"))) (|| "||") (binary_expression "cVar3 == '*'" (identifier "cVar3") (== "==") (char_literal "'*'" (' "'") (character "*") (' "'")))) () ")")) (|| "||") (parenthesized_expression "(cVar3 == '[')" (( "(") (binary_expression "cVar3 == '['" (identifier "cVar3") (== "==") (char_literal "'['" (' "'") (character "[") (' "'"))) () ")"))) () ")")) (compound_statement "{\n            free(local_24);\n            goto LAB_00027913;\n          }" ({ "{") (expression_statement "free(local_24);" (call_expression "free(local_24)" (identifier "free") (argument_list "(local_24)" (( "(") (identifier "local_24") () ")"))) (; ";")) (goto_statement "goto LAB_00027913;" (goto "goto") (statement_identifier "LAB_00027913") (; ";")) (} "}"))) (expression_statement "bVar8 = cVar3 == '\\';" (assignment_expression "bVar8 = cVar3 == '\\'" (identifier "bVar8") (= "=") (binary_expression "cVar3 == '\\'" (identifier "cVar3") (== "==") (char_literal "'\\'" (' "'") (escape_sequence "\\") (' "'")))) (; ";")) (expression_statement "*local_30 = cVar3;" (assignment_expression "*local_30 = cVar3" (pointer_expression "*local_30" (* "*") (identifier "local_30")) (= "=") (identifier "cVar3")) (; ";")) (expression_statement "local_2c = local_2c + 1;" (assignment_expression "local_2c = local_2c + 1" (identifier "local_2c") (= "=") (binary_expression "local_2c + 1" (identifier "local_2c") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "local_30 = local_30 + 1;" (assignment_expression "local_30 = local_30 + 1" (identifier "local_30") (= "=") (binary_expression "local_30 + 1" (identifier "local_30") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "cVar3 = *local_2c;" (assignment_expression "cVar3 = *local_2c" (identifier "cVar3") (= "=") (pointer_expression "*local_2c" (* "*") (identifier "local_2c"))) (; ";")) (expression_statement "bVar2 = bVar1;" (assignment_expression "bVar2 = bVar1" (identifier "bVar2") (= "=") (identifier "bVar1")) (; ";")) (if_statement "if (cVar3 == '\0') goto LAB_000278da;" (if "if") (parenthesized_expression "(cVar3 == '\0')" (( "(") (binary_expression "cVar3 == '\0'" (identifier "cVar3") (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (goto_statement "goto LAB_000278da;" (goto "goto") (statement_identifier "LAB_000278da") (; ";"))) (} "}"))) (expression_statement "local_2c = local_2c + 1;" (assignment_expression "local_2c = local_2c + 1" (identifier "local_2c") (= "=") (binary_expression "local_2c + 1" (identifier "local_2c") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "local_30[-1] = cVar3;" (assignment_expression "local_30[-1] = cVar3" (subscript_expression "local_30[-1]" (identifier "local_30") ([ "[") (number_literal "-1") (] "]")) (= "=") (identifier "cVar3")) (; ";")) (expression_statement "cVar3 = *local_2c;" (assignment_expression "cVar3 = *local_2c" (identifier "cVar3") (= "=") (pointer_expression "*local_2c" (* "*") (identifier "local_2c"))) (; ";")) (expression_statement "bVar8 = false;" (assignment_expression "bVar8 = false" (identifier "bVar8") (= "=") (false "false")) (; ";")) (expression_statement "bVar1 = bVar2;" (assignment_expression "bVar1 = bVar2" (identifier "bVar1") (= "=") (identifier "bVar2")) (; ";")) (} "}")) (while "while") (parenthesized_expression "(cVar3 != '\0')" (( "(") (binary_expression "cVar3 != '\0'" (identifier "cVar3") (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (; ";")) (labeled_statement "LAB_000278da:\n      if (!bVar2) goto LAB_00027970;" (statement_identifier "LAB_000278da") (: ":") (if_statement "if (!bVar2) goto LAB_00027970;" (if "if") (parenthesized_expression "(!bVar2)" (( "(") (unary_expression "!bVar2" (! "!") (identifier "bVar2")) () ")")) (goto_statement "goto LAB_00027970;" (goto "goto") (statement_identifier "LAB_00027970") (; ";")))) (expression_statement "*local_30 = '\0';" (assignment_expression "*local_30 = '\0'" (pointer_expression "*local_30" (* "*") (identifier "local_30")) (= "=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) (; ";")) (} "}")))) (expression_statement "puVar4[1] = local_24;" (assignment_expression "puVar4[1] = local_24" (subscript_expression "puVar4[1]" (identifier "puVar4") ([ "[") (number_literal "1") (] "]")) (= "=") (identifier "local_24")) (; ";")) (} "}")) (else_clause "else {\n    puVar4[1] = param_2;\n    if (param_2 == (char *)0x0) {\nLAB_00027913:\n      puVar4[1] = param_2;\n      *(byte *)(puVar4 + 2) = *(byte *)(puVar4 + 2) & 0xfe;\n    }\n  }" (else "else") (compound_statement "{\n    puVar4[1] = param_2;\n    if (param_2 == (char *)0x0) {\nLAB_00027913:\n      puVar4[1] = param_2;\n      *(byte *)(puVar4 + 2) = *(byte *)(puVar4 + 2) & 0xfe;\n    }\n  }" ({ "{") (expression_statement "puVar4[1] = param_2;" (assignment_expression "puVar4[1] = param_2" (subscript_expression "puVar4[1]" (identifier "puVar4") ([ "[") (number_literal "1") (] "]")) (= "=") (identifier "param_2")) (; ";")) (if_statement "if (param_2 == (char *)0x0) {\nLAB_00027913:\n      puVar4[1] = param_2;\n      *(byte *)(puVar4 + 2) = *(byte *)(puVar4 + 2) & 0xfe;\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 "{\nLAB_00027913:\n      puVar4[1] = param_2;\n      *(byte *)(puVar4 + 2) = *(byte *)(puVar4 + 2) & 0xfe;\n    }" ({ "{") (labeled_statement "LAB_00027913:\n      puVar4[1] = param_2;" (statement_identifier "LAB_00027913") (: ":") (expression_statement "puVar4[1] = param_2;" (assignment_expression "puVar4[1] = param_2" (subscript_expression "puVar4[1]" (identifier "puVar4") ([ "[") (number_literal "1") (] "]")) (= "=") (identifier "param_2")) (; ";"))) (expression_statement "*(byte *)(puVar4 + 2) = *(byte *)(puVar4 + 2) & 0xfe;" (assignment_expression "*(byte *)(puVar4 + 2) = *(byte *)(puVar4 + 2) & 0xfe" (pointer_expression "*(byte *)(puVar4 + 2)" (* "*") (cast_expression "(byte *)(puVar4 + 2)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar4 + 2)" (( "(") (binary_expression "puVar4 + 2" (identifier "puVar4") (+ "+") (number_literal "2")) () ")")))) (= "=") (binary_expression "*(byte *)(puVar4 + 2) & 0xfe" (pointer_expression "*(byte *)(puVar4 + 2)" (* "*") (cast_expression "(byte *)(puVar4 + 2)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar4 + 2)" (( "(") (binary_expression "puVar4 + 2" (identifier "puVar4") (+ "+") (number_literal "2")) () ")")))) (& "&") (number_literal "0xfe"))) (; ";")) (} "}"))) (} "}")))) (if_statement "if (param_3 != (char *)0x0) {\n    iVar5 = strcasecmp(param_3,"C");\n    if (iVar5 != 0) {\n      iVar5 = strcasecmp(param_3,"C++");\n      if (iVar5 == 0) {\n        *(byte *)(puVar4 + 2) = *(byte *)(puVar4 + 2) & 199 | 0x10;\n      }\n      else {\n        iVar5 = strcasecmp(param_3,"Java");\n        if (iVar5 == 0) {\n          *(byte *)(puVar4 + 2) = *(byte *)(puVar4 + 2) & 199 | 0x20;\n        }\n        else {\n          uVar7 = dcgettext(0,"%X%P: unknown language `%s\' in version information\n",5);\n          FUN_00031760(uVar7,param_3);\n          *(byte *)(puVar4 + 2) = *(byte *)(puVar4 + 2) & 199 | 8;\n        }\n      }\n      goto LAB_000277cb;\n    }\n  }" (if "if") (parenthesized_expression "(param_3 != (char *)0x0)" (( "(") (binary_expression "param_3 != (char *)0x0" (identifier "param_3") (!= "!=") (cast_expression "(char *)0x0" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n    iVar5 = strcasecmp(param_3,"C");\n    if (iVar5 != 0) {\n      iVar5 = strcasecmp(param_3,"C++");\n      if (iVar5 == 0) {\n        *(byte *)(puVar4 + 2) = *(byte *)(puVar4 + 2) & 199 | 0x10;\n      }\n      else {\n        iVar5 = strcasecmp(param_3,"Java");\n        if (iVar5 == 0) {\n          *(byte *)(puVar4 + 2) = *(byte *)(puVar4 + 2) & 199 | 0x20;\n        }\n        else {\n          uVar7 = dcgettext(0,"%X%P: unknown language `%s\' in version information\n",5);\n          FUN_00031760(uVar7,param_3);\n          *(byte *)(puVar4 + 2) = *(byte *)(puVar4 + 2) & 199 | 8;\n        }\n      }\n      goto LAB_000277cb;\n    }\n  }" ({ "{") (expression_statement "iVar5 = strcasecmp(param_3,"C");" (assignment_expression "iVar5 = strcasecmp(param_3,"C")" (identifier "iVar5") (= "=") (call_expression "strcasecmp(param_3,"C")" (identifier "strcasecmp") (argument_list "(param_3,"C")" (( "(") (identifier "param_3") (, ",") (string_literal ""C"" (" """) (string_content "C") (" """)) () ")")))) (; ";")) (if_statement "if (iVar5 != 0) {\n      iVar5 = strcasecmp(param_3,"C++");\n      if (iVar5 == 0) {\n        *(byte *)(puVar4 + 2) = *(byte *)(puVar4 + 2) & 199 | 0x10;\n      }\n      else {\n        iVar5 = strcasecmp(param_3,"Java");\n        if (iVar5 == 0) {\n          *(byte *)(puVar4 + 2) = *(byte *)(puVar4 + 2) & 199 | 0x20;\n        }\n        else {\n          uVar7 = dcgettext(0,"%X%P: unknown language `%s\' in version information\n",5);\n          FUN_00031760(uVar7,param_3);\n          *(byte *)(puVar4 + 2) = *(byte *)(puVar4 + 2) & 199 | 8;\n        }\n      }\n      goto LAB_000277cb;\n    }" (if "if") (parenthesized_expression "(iVar5 != 0)" (( "(") (binary_expression "iVar5 != 0" (identifier "iVar5") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n      iVar5 = strcasecmp(param_3,"C++");\n      if (iVar5 == 0) {\n        *(byte *)(puVar4 + 2) = *(byte *)(puVar4 + 2) & 199 | 0x10;\n      }\n      else {\n        iVar5 = strcasecmp(param_3,"Java");\n        if (iVar5 == 0) {\n          *(byte *)(puVar4 + 2) = *(byte *)(puVar4 + 2) & 199 | 0x20;\n        }\n        else {\n          uVar7 = dcgettext(0,"%X%P: unknown language `%s\' in version information\n",5);\n          FUN_00031760(uVar7,param_3);\n          *(byte *)(puVar4 + 2) = *(byte *)(puVar4 + 2) & 199 | 8;\n        }\n      }\n      goto LAB_000277cb;\n    }" ({ "{") (expression_statement "iVar5 = strcasecmp(param_3,"C++");" (assignment_expression "iVar5 = strcasecmp(param_3,"C++")" (identifier "iVar5") (= "=") (call_expression "strcasecmp(param_3,"C++")" (identifier "strcasecmp") (argument_list "(param_3,"C++")" (( "(") (identifier "param_3") (, ",") (string_literal ""C++"" (" """) (string_content "C++") (" """)) () ")")))) (; ";")) (if_statement "if (iVar5 == 0) {\n        *(byte *)(puVar4 + 2) = *(byte *)(puVar4 + 2) & 199 | 0x10;\n      }\n      else {\n        iVar5 = strcasecmp(param_3,"Java");\n        if (iVar5 == 0) {\n          *(byte *)(puVar4 + 2) = *(byte *)(puVar4 + 2) & 199 | 0x20;\n        }\n        else {\n          uVar7 = dcgettext(0,"%X%P: unknown language `%s\' in version information\n",5);\n          FUN_00031760(uVar7,param_3);\n          *(byte *)(puVar4 + 2) = *(byte *)(puVar4 + 2) & 199 | 8;\n        }\n      }" (if "if") (parenthesized_expression "(iVar5 == 0)" (( "(") (binary_expression "iVar5 == 0" (identifier "iVar5") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n        *(byte *)(puVar4 + 2) = *(byte *)(puVar4 + 2) & 199 | 0x10;\n      }" ({ "{") (expression_statement "*(byte *)(puVar4 + 2) = *(byte *)(puVar4 + 2) & 199 | 0x10;" (assignment_expression "*(byte *)(puVar4 + 2) = *(byte *)(puVar4 + 2) & 199 | 0x10" (pointer_expression "*(byte *)(puVar4 + 2)" (* "*") (cast_expression "(byte *)(puVar4 + 2)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar4 + 2)" (( "(") (binary_expression "puVar4 + 2" (identifier "puVar4") (+ "+") (number_literal "2")) () ")")))) (= "=") (binary_expression "*(byte *)(puVar4 + 2) & 199 | 0x10" (binary_expression "*(byte *)(puVar4 + 2) & 199" (pointer_expression "*(byte *)(puVar4 + 2)" (* "*") (cast_expression "(byte *)(puVar4 + 2)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar4 + 2)" (( "(") (binary_expression "puVar4 + 2" (identifier "puVar4") (+ "+") (number_literal "2")) () ")")))) (& "&") (number_literal "199")) (| "|") (number_literal "0x10"))) (; ";")) (} "}")) (else_clause "else {\n        iVar5 = strcasecmp(param_3,"Java");\n        if (iVar5 == 0) {\n          *(byte *)(puVar4 + 2) = *(byte *)(puVar4 + 2) & 199 | 0x20;\n        }\n        else {\n          uVar7 = dcgettext(0,"%X%P: unknown language `%s\' in version information\n",5);\n          FUN_00031760(uVar7,param_3);\n          *(byte *)(puVar4 + 2) = *(byte *)(puVar4 + 2) & 199 | 8;\n        }\n      }" (else "else") (compound_statement "{\n        iVar5 = strcasecmp(param_3,"Java");\n        if (iVar5 == 0) {\n          *(byte *)(puVar4 + 2) = *(byte *)(puVar4 + 2) & 199 | 0x20;\n        }\n        else {\n          uVar7 = dcgettext(0,"%X%P: unknown language `%s\' in version information\n",5);\n          FUN_00031760(uVar7,param_3);\n          *(byte *)(puVar4 + 2) = *(byte *)(puVar4 + 2) & 199 | 8;\n        }\n      }" ({ "{") (expression_statement "iVar5 = strcasecmp(param_3,"Java");" (assignment_expression "iVar5 = strcasecmp(param_3,"Java")" (identifier "iVar5") (= "=") (call_expression "strcasecmp(param_3,"Java")" (identifier "strcasecmp") (argument_list "(param_3,"Java")" (( "(") (identifier "param_3") (, ",") (string_literal ""Java"" (" """) (string_content "Java") (" """)) () ")")))) (; ";")) (if_statement "if (iVar5 == 0) {\n          *(byte *)(puVar4 + 2) = *(byte *)(puVar4 + 2) & 199 | 0x20;\n        }\n        else {\n          uVar7 = dcgettext(0,"%X%P: unknown language `%s\' in version information\n",5);\n          FUN_00031760(uVar7,param_3);\n          *(byte *)(puVar4 + 2) = *(byte *)(puVar4 + 2) & 199 | 8;\n        }" (if "if") (parenthesized_expression "(iVar5 == 0)" (( "(") (binary_expression "iVar5 == 0" (identifier "iVar5") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n          *(byte *)(puVar4 + 2) = *(byte *)(puVar4 + 2) & 199 | 0x20;\n        }" ({ "{") (expression_statement "*(byte *)(puVar4 + 2) = *(byte *)(puVar4 + 2) & 199 | 0x20;" (assignment_expression "*(byte *)(puVar4 + 2) = *(byte *)(puVar4 + 2) & 199 | 0x20" (pointer_expression "*(byte *)(puVar4 + 2)" (* "*") (cast_expression "(byte *)(puVar4 + 2)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar4 + 2)" (( "(") (binary_expression "puVar4 + 2" (identifier "puVar4") (+ "+") (number_literal "2")) () ")")))) (= "=") (binary_expression "*(byte *)(puVar4 + 2) & 199 | 0x20" (binary_expression "*(byte *)(puVar4 + 2) & 199" (pointer_expression "*(byte *)(puVar4 + 2)" (* "*") (cast_expression "(byte *)(puVar4 + 2)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar4 + 2)" (( "(") (binary_expression "puVar4 + 2" (identifier "puVar4") (+ "+") (number_literal "2")) () ")")))) (& "&") (number_literal "199")) (| "|") (number_literal "0x20"))) (; ";")) (} "}")) (else_clause "else {\n          uVar7 = dcgettext(0,"%X%P: unknown language `%s\' in version information\n",5);\n          FUN_00031760(uVar7,param_3);\n          *(byte *)(puVar4 + 2) = *(byte *)(puVar4 + 2) & 199 | 8;\n        }" (else "else") (compound_statement "{\n          uVar7 = dcgettext(0,"%X%P: unknown language `%s\' in version information\n",5);\n          FUN_00031760(uVar7,param_3);\n          *(byte *)(puVar4 + 2) = *(byte *)(puVar4 + 2) & 199 | 8;\n        }" ({ "{") (expression_statement "uVar7 = dcgettext(0,"%X%P: unknown language `%s\' in version information\n",5);" (assignment_expression "uVar7 = dcgettext(0,"%X%P: unknown language `%s\' in version information\n",5)" (identifier "uVar7") (= "=") (call_expression "dcgettext(0,"%X%P: unknown language `%s\' in version information\n",5)" (identifier "dcgettext") (argument_list "(0,"%X%P: unknown language `%s\' in version information\n",5)" (( "(") (number_literal "0") (, ",") (string_literal ""%X%P: unknown language `%s\' in version information\n"" (" """) (string_content "%X%P: unknown language `%s") (escape_sequence "\'") (string_content " in version information") (escape_sequence "\n") (" """)) (, ",") (number_literal "5") () ")")))) (; ";")) (expression_statement "FUN_00031760(uVar7,param_3);" (call_expression "FUN_00031760(uVar7,param_3)" (identifier "FUN_00031760") (argument_list "(uVar7,param_3)" (( "(") (identifier "uVar7") (, ",") (identifier "param_3") () ")"))) (; ";")) (expression_statement "*(byte *)(puVar4 + 2) = *(byte *)(puVar4 + 2) & 199 | 8;" (assignment_expression "*(byte *)(puVar4 + 2) = *(byte *)(puVar4 + 2) & 199 | 8" (pointer_expression "*(byte *)(puVar4 + 2)" (* "*") (cast_expression "(byte *)(puVar4 + 2)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar4 + 2)" (( "(") (binary_expression "puVar4 + 2" (identifier "puVar4") (+ "+") (number_literal "2")) () ")")))) (= "=") (binary_expression "*(byte *)(puVar4 + 2) & 199 | 8" (binary_expression "*(byte *)(puVar4 + 2) & 199" (pointer_expression "*(byte *)(puVar4 + 2)" (* "*") (cast_expression "(byte *)(puVar4 + 2)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar4 + 2)" (( "(") (binary_expression "puVar4 + 2" (identifier "puVar4") (+ "+") (number_literal "2")) () ")")))) (& "&") (number_literal "199")) (| "|") (number_literal "8"))) (; ";")) (} "}")))) (} "}")))) (goto_statement "goto LAB_000277cb;" (goto "goto") (statement_identifier "LAB_000277cb") (; ";")) (} "}"))) (} "}"))) (expression_statement "*(byte *)(puVar4 + 2) = *(byte *)(puVar4 + 2) & 199 | 8;" (assignment_expression "*(byte *)(puVar4 + 2) = *(byte *)(puVar4 + 2) & 199 | 8" (pointer_expression "*(byte *)(puVar4 + 2)" (* "*") (cast_expression "(byte *)(puVar4 + 2)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar4 + 2)" (( "(") (binary_expression "puVar4 + 2" (identifier "puVar4") (+ "+") (number_literal "2")) () ")")))) (= "=") (binary_expression "*(byte *)(puVar4 + 2) & 199 | 8" (binary_expression "*(byte *)(puVar4 + 2) & 199" (pointer_expression "*(byte *)(puVar4 + 2)" (* "*") (cast_expression "(byte *)(puVar4 + 2)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar4 + 2)" (( "(") (binary_expression "puVar4 + 2" (identifier "puVar4") (+ "+") (number_literal "2")) () ")")))) (& "&") (number_literal "199")) (| "|") (number_literal "8"))) (; ";")) (labeled_statement "LAB_000277cb:\n  FUN_000306c0(puVar4);" (statement_identifier "LAB_000277cb") (: ":") (expression_statement "FUN_000306c0(puVar4);" (call_expression "FUN_000306c0(puVar4)" (identifier "FUN_000306c0") (argument_list "(puVar4)" (( "(") (identifier "puVar4") () ")"))) (; ";"))) (return_statement "return;" (return "return") (; ";")) (} "}")))

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

type_1 *
function_1(type_1 *orig,char *var_9,char *var_10,type_2 var_2)

{
  bool bVar1;
  bool bVar2;
  char var_5;
  type_1 *pbVar4;
  int var_12;
  size_t var_4;
  char *fmt;
  bool bVar7;
  char *var_8;
  char *var_7;
  char *local_24;
  
  pbVar4 = (type_1 *)var_1(0xc);
  pbVar4->next = orig;
  pbVar4->field_0x8 = pbVar4->field_0x8 & 0xf8 | 1;
  if (var_2 == 0) {
    var_4 = var_3(var_9);
    local_24 = (char *)var_1(var_4 + 1);
    var_5 = *var_9;
    if (var_5 == '\0') {
LAB_00027970:
      var_6(local_24);
      local_24 = var_9;
    }
    else {
      var_7 = var_9;
      var_8 = local_24;
      bVar7 = false;
      bVar1 = false;
      do {
        while (bVar2 = bVar7, !bVar2) {
          if ((var_5 == '?' || var_5 == '*') || (var_5 == '[')) {
            var_6(local_24);
            goto LAB_00027913;
          }
          bVar7 = var_5 == '\\';
          *var_8 = var_5;
          var_7 = var_7 + 1;
          var_8 = var_8 + 1;
          var_5 = *var_7;
          bVar2 = bVar1;
          if (var_5 == '\0') goto LAB_000278da;
        }
        var_7 = var_7 + 1;
        var_8[-1] = var_5;
        var_5 = *var_7;
        bVar7 = false;
        bVar1 = bVar2;
      } while (var_5 != '\0');
LAB_000278da:
      if (!bVar2) goto LAB_00027970;
      *var_8 = '\0';
    }
    pbVar4->pattern = local_24;
  }
  else {
    pbVar4->pattern = var_9;
    if (var_9 == (char *)0x0) {
LAB_00027913:
      pbVar4->pattern = var_9;
      pbVar4->field_0x8 = pbVar4->field_0x8 & 0xfe;
    }
  }
  if (var_10 != (char *)0x0) {
    var_12 = var_11(var_10,"C");
    if (var_12 != 0) {
      var_12 = var_11(var_10,"C++");
      if (var_12 == 0) {
        pbVar4->field_0x8 = pbVar4->field_0x8 & 199 | 0x10;
      }
      else {
        var_12 = var_11(var_10,"Java");
        if (var_12 == 0) {
          pbVar4->field_0x8 = pbVar4->field_0x8 & 199 | 0x20;
        }
        else {
          fmt = (char *)var_13(0,"%X%P: unknown language `%s\' in version information\n",5);
          var_14(fmt,var_10);
          pbVar4->field_0x8 = pbVar4->field_0x8 & 199 | 8;
        }
      }
      goto LAB_000277cb;
    }
  }
  pbVar4->field_0x8 = pbVar4->field_0x8 & 199 | 8;
LAB_000277cb:
  pbVar4 = var_15(pbVar4);
  return pbVar4;
}


(translation_unit (function_definition type: (primitive_type) declarator: (function_declarator declarator: (identifier) parameters: (parameter_list (parameter_declaration type: (type_identifier) declarator: (identifier)) (parameter_declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (parameter_declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (parameter_declaration type: (primitive_type) declarator: (identifier)))) body: (compound_statement (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (type_identifier) 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))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (call_expression function: (identifier) arguments: (argument_list (number_literal)))))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (identifier))) (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: (binary_expression left: (binary_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)) right: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) 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: (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 (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (char_literal (escape_sequence)))) consequence: (compound_statement (labeled_statement label: (statement_identifier) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (identifier)))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (false))) (expression_statement (assignment_expression left: (identifier) right: (false))) (do_statement body: (compound_statement (while_statement condition: (parenthesized_expression (comma_expression left: (assignment_expression left: (identifier) right: (identifier)) right: (unary_expression argument: (identifier)))) body: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (char_literal (character))) right: (binary_expression left: (identifier) right: (char_literal (character))))) right: (parenthesized_expression (binary_expression left: (identifier) right: (char_literal (character)))))) consequence: (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier)))) (goto_statement label: (statement_identifier)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (char_literal (escape_sequence))))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (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 (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (false))) (expression_statement (assignment_expression left: (identifier) right: (identifier)))) condition: (parenthesized_expression (binary_expression left: (identifier) right: (char_literal (escape_sequence))))) (labeled_statement label: (statement_identifier) (if_statement condition: (parenthesized_expression (unary_expression argument: (identifier))) consequence: (goto_statement label: (statement_identifier)))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (char_literal (escape_sequence))))))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (identifier)))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) 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 (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (identifier)))) (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: (binary_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))))))))) (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: (call_expression function: (identifier) arguments: (argument_list (identifier) (string_literal (string_content)))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier) (string_literal (string_content)))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (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: (binary_expression left: (binary_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)) right: (number_literal))))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier) (string_literal (string_content)))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (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: (binary_expression left: (binary_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)) right: (number_literal))))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (number_literal) (string_literal (string_content) (escape_sequence) (string_content) (escape_sequence)) (number_literal))))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier)))) (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: (binary_expression left: (binary_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)) right: (number_literal)))))))))) (goto_statement label: (statement_identifier)))))) (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: (binary_expression left: (binary_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)) right: (number_literal)))) (labeled_statement label: (statement_identifier) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier))))) (return_statement))))

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

void MASKED(undefined4 param_1,char *param_2,char *param_3,int param_4)

{
  bool bVar1;
  bool bVar2;
  char cVar3;
  undefined4 *puVar4;
  int iVar5;
  size_t sVar6;
  undefined4 uVar7;
  bool bVar8;
  char *local_30;
  char *local_2c;
  char *local_24;
  
  puVar4 = (undefined4 *)xmalloc(0xc);
  *puVar4 = param_1;
  *(byte *)(puVar4 + 2) = *(byte *)(puVar4 + 2) & 0xf8 | 1;
  if (param_4 == 0) {
    sVar6 = strlen(param_2);
    local_24 = (char *)xmalloc(sVar6 + 1);
    cVar3 = *param_2;
    if (cVar3 == '\0') {
LAB_00027970:
      free(local_24);
      local_24 = param_2;
    }
    else {
      local_2c = param_2;
      local_30 = local_24;
      bVar8 = false;
      bVar1 = false;
      do {
        while (bVar2 = bVar8, !bVar2) {
          if ((cVar3 == '?' || cVar3 == '*') || (cVar3 == '[')) {
            free(local_24);
            goto LAB_00027913;
          }
          bVar8 = cVar3 == '\\';
          *local_30 = cVar3;
          local_2c = local_2c + 1;
          local_30 = local_30 + 1;
          cVar3 = *local_2c;
          bVar2 = bVar1;
          if (cVar3 == '\0') goto LAB_000278da;
        }
        local_2c = local_2c + 1;
        local_30[-1] = cVar3;
        cVar3 = *local_2c;
        bVar8 = false;
        bVar1 = bVar2;
      } while (cVar3 != '\0');
LAB_000278da:
      if (!bVar2) goto LAB_00027970;
      *local_30 = '\0';
    }
    puVar4[1] = local_24;
  }
  else {
    puVar4[1] = param_2;
    if (param_2 == (char *)0x0) {
LAB_00027913:
      puVar4[1] = param_2;
      *(byte *)(puVar4 + 2) = *(byte *)(puVar4 + 2) & 0xfe;
    }
  }
  if (param_3 != (char *)0x0) {
    iVar5 = strcasecmp(param_3,"C");
    if (iVar5 != 0) {
      iVar5 = strcasecmp(param_3,"C++");
      if (iVar5 == 0) {
        *(byte *)(puVar4 + 2) = *(byte *)(puVar4 + 2) & 199 | 0x10;
      }
      else {
        iVar5 = strcasecmp(param_3,"Java");
        if (iVar5 == 0) {
          *(byte *)(puVar4 + 2) = *(byte *)(puVar4 + 2) & 199 | 0x20;
        }
        else {
          uVar7 = dcgettext(0,"%X%P: unknown language `%s\' in version information\n",5);
          FUN_00031760(uVar7,param_3);
          *(byte *)(puVar4 + 2) = *(byte *)(puVar4 + 2) & 199 | 8;
        }
      }
      goto LAB_000277cb;
    }
  }
  *(byte *)(puVar4 + 2) = *(byte *)(puVar4 + 2) & 199 | 8;
LAB_000277cb:
  FUN_000306c0(puVar4);
  return;
}

