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

char * define_macro(size_t idx,sb *in,sb *label,_func_size_t_sb_ptr *get_line,char *file,uint line,
                   char **namep)

{
  undefined *puVar1;
  macro_entry *macro;
  hash_control *phVar2;
  size_t sVar3;
  int iVar4;
  char *pcVar5;
  uint uVar6;
  void *pvVar7;
  byte *pbVar8;
  char *pcVar9;
  sb name;
  
  pcVar9 = (char *)0x0;
  macro = (macro_entry *)xmalloc(0x24);
  sb_new((sb *)macro);
  sb_new(&name);
  macro->formal_count = 0;
  macro->file = file;
  macro->formals = (formal_entry *)0x0;
  macro->line = line;
  phVar2 = hash_new_sized(7);
  macro->formal_hash = phVar2;
  sVar3 = sb_skip_white(idx,in);
  iVar4 = buffer_and_nest("MACRO","ENDM",(sb *)macro,get_line);
  if (iVar4 == 0) {
    pcVar9 = (char *)dcgettext(0,"unexpected end of file in macro `%s\' definition",5);
  }
  if ((label == (sb *)0x0) || (label->len == 0)) {
    sVar3 = get_token(sVar3,in,(sb *)&in->len,&name);
    pcVar5 = sb_terminate(&name);
    macro->name = pcVar5;
    if (name.len == 0) {
      pcVar9 = (char *)dcgettext(0,"Missing macro name",5);
    }
    uVar6 = sb_skip_white(sVar3,in);
    sVar3 = sb_skip_comma(uVar6,in);
    if ((uVar6 == sVar3) || (sVar3 < in->len)) {
      uVar6 = do_formals(macro,sVar3,in);
    }
joined_r0x00029999:
    if ((pcVar9 == (char *)0x0) && (uVar6 < in->len)) {
      pcVar9 = (char *)dcgettext(0,"Bad parameter list for macro `%s\'",5);
    }
  }
  else {
    sb_add_sb(&name,label);
    pcVar5 = sb_terminate(&name);
    macro->name = pcVar5;
    if ((in->len <= sVar3) || (in->ptr[sVar3] != '(')) {
      uVar6 = do_formals(macro,sVar3,in);
      goto joined_r0x00029999;
    }
    uVar6 = do_formals(macro,sVar3 + 1,in);
    if ((uVar6 < in->len) && (in->ptr[uVar6] == ')')) {
      uVar6 = sb_skip_white(uVar6 + 1,in);
      goto joined_r0x00029999;
    }
    if (pcVar9 == (char *)0x0) {
      pcVar9 = (char *)dcgettext(0,"missing `)\' after formals in macro definition `%s\'",5);
      goto joined_r0x00029999;
    }
  }
  puVar1 = PTR__sch_tolower_00067fbc;
  if (name.len != 0) {
    uVar6 = 0;
    do {
      pbVar8 = (byte *)(name.ptr + uVar6);
      uVar6 = uVar6 + 1;
      *pbVar8 = puVar1[*pbVar8];
    } while (uVar6 < name.len);
  }
  pvVar7 = hash_find(macro_hash,macro->name);
  if (pvVar7 != (void *)0x0) {
    pcVar9 = (char *)dcgettext(0,"Macro `%s\' was already defined",5);
  }
  if (pcVar9 == (char *)0x0) {
    pcVar9 = hash_jam(macro_hash,macro->name,macro);
    if (namep != (char **)0x0) goto LAB_0002994c;
  }
  else {
    if (namep == (char **)0x0) goto LAB_00029970;
LAB_0002994c:
    *namep = macro->name;
  }
  if (pcVar9 == (char *)0x0) {
    macro_defined = 1;
    return (char *)0x0;
  }
LAB_00029970:
  free_macro(macro);
  return pcVar9;
}



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

int FUN_000297c0(undefined4 param_1,int *param_2,int param_3,undefined4 param_4,undefined4 param_5,
                undefined4 param_6,undefined4 *param_7)

{
  undefined *puVar1;
  int iVar2;
  undefined4 uVar3;
  uint uVar4;
  int iVar5;
  undefined4 uVar6;
  uint uVar7;
  byte *pbVar8;
  int iVar9;
  int local_28;
  uint local_24;
  undefined4 uStack_14;
  
  iVar9 = 0;
  uStack_14 = 0x297cb;
  iVar2 = xmalloc(0x24);
  FUN_00034180(iVar2);
  FUN_00034180(&local_28);
  *(undefined4 *)(iVar2 + 0xc) = 0;
  *(undefined4 *)(iVar2 + 0x1c) = param_5;
  *(undefined4 *)(iVar2 + 0x10) = 0;
  *(undefined4 *)(iVar2 + 0x20) = param_6;
  uVar3 = FUN_00024010(7);
  *(undefined4 *)(iVar2 + 0x14) = uVar3;
  uVar4 = FUN_00034370(param_1,param_2);
  iVar5 = FUN_000292d0("MACRO",&DAT_0004deda,iVar2,param_4);
  if (iVar5 == 0) {
    iVar9 = dcgettext(0,"unexpected end of file in macro `%s\' definition",5);
  }
  if ((param_3 == 0) || (*(int *)(param_3 + 4) == 0)) {
    uVar3 = FUN_00027b70(&local_28);
    uVar6 = FUN_00034360(&local_28);
    *(undefined4 *)(iVar2 + 0x18) = uVar6;
    if (local_24 == 0) {
      iVar9 = dcgettext(0,"Missing macro name",5);
    }
    uVar4 = FUN_00034370(uVar3,param_2);
    uVar7 = FUN_000343b0(uVar4,param_2);
    if ((uVar4 == uVar7) || (uVar7 < (uint)param_2[1])) {
      uVar4 = FUN_00028da0();
    }
joined_r0x00029999:
    if ((iVar9 == 0) && (uVar4 < (uint)param_2[1])) {
      iVar9 = dcgettext(0,"Bad parameter list for macro `%s\'",5);
    }
  }
  else {
    FUN_000341e0(&local_28,param_3);
    uVar3 = FUN_00034360(&local_28);
    *(undefined4 *)(iVar2 + 0x18) = uVar3;
    if (((uint)param_2[1] <= uVar4) || (*(char *)(*param_2 + uVar4) != '(')) {
      uVar4 = FUN_00028da0();
      goto joined_r0x00029999;
    }
    uVar4 = FUN_00028da0();
    if ((uVar4 < (uint)param_2[1]) && (*(char *)(*param_2 + uVar4) == ')')) {
      uVar4 = FUN_00034370(uVar4 + 1,param_2);
      goto joined_r0x00029999;
    }
    if (iVar9 == 0) {
      iVar9 = dcgettext(0,"missing `)\' after formals in macro definition `%s\'",5);
      goto joined_r0x00029999;
    }
  }
  puVar1 = PTR__sch_tolower_00067fbc;
  if (local_24 != 0) {
    uVar4 = 0;
    do {
      pbVar8 = (byte *)(local_28 + uVar4);
      uVar4 = uVar4 + 1;
      *pbVar8 = puVar1[*pbVar8];
    } while (uVar4 < local_24);
  }
  iVar5 = FUN_000243a0(DAT_00070fc0,*(undefined4 *)(iVar2 + 0x18));
  if (iVar5 != 0) {
    iVar9 = dcgettext(0,"Macro `%s\' was already defined",5);
  }
  if (iVar9 == 0) {
    iVar9 = FUN_00024250(DAT_00070fc0,*(undefined4 *)(iVar2 + 0x18),iVar2);
    if (param_7 != (undefined4 *)0x0) goto LAB_0002994c;
  }
  else {
    if (param_7 == (undefined4 *)0x0) goto LAB_00029970;
LAB_0002994c:
    *param_7 = *(undefined4 *)(iVar2 + 0x18);
  }
  if (iVar9 == 0) {
    DAT_00070fbc = 1;
    return 0;
  }
LAB_00029970:
  FUN_00027b20();
  return iVar9;
}


PUSH EBP
PUSH EDI
XOR EDI,EDI
PUSH ESI
PUSH EBX
CALL 0x00015020
ADD EBX,0x3e835
SUB ESP,0x38
PUSH 0x24
CALL 0x000137b0
MOV dword ptr [ESP],EAX
MOV ESI,EAX
CALL 0x00034180
POP EAX
LEA EBP,[ESP + 0x20]
PUSH EBP
CALL 0x00034180
MOV EAX,dword ptr [ESP + 0x60]
MOV dword ptr [ESP],0x7
MOV dword ptr [ESI + 0xc],0x0
MOV dword ptr [ESI + 0x1c],EAX
MOV EAX,dword ptr [ESP + 0x64]
MOV dword ptr [ESI + 0x10],0x0
MOV dword ptr [ESI + 0x20],EAX
CALL 0x00024010
MOV dword ptr [ESI + 0x14],EAX
POP EAX
POP EDX
PUSH dword ptr [ESP + 0x4c]
PUSH dword ptr [ESP + 0x4c]
CALL 0x00034370
MOV dword ptr [ESP + 0x1c],EAX
LEA EAX,[EBX + 0xfffe5eda]
PUSH dword ptr [ESP + 0x5c]
PUSH ESI
PUSH EAX
LEA EAX,[EBX + 0xfffe5edf]
PUSH EAX
CALL 0x000292d0
ADD ESP,0x20
TEST EAX,EAX
JZ 0x000299f0
MOV EAX,dword ptr [ESP + 0x48]
TEST EAX,EAX
JZ 0x00029868
MOV EAX,dword ptr [ESP + 0x48]
MOV EAX,dword ptr [EAX + 0x4]
TEST EAX,EAX
JNZ 0x00029a10
MOV EAX,dword ptr [ESP + 0x44]
SUB ESP,0xc
PUSH EBP
MOV EDX,dword ptr [ESP + 0x54]
LEA ECX,[EAX + 0x4]
MOV EAX,dword ptr [ESP + 0x1c]
CALL 0x00027b70
MOV dword ptr [ESP],EBP
MOV dword ptr [ESP + 0x1c],EAX
CALL 0x00034360
ADD ESP,0x10
MOV ECX,dword ptr [ESP + 0x18]
MOV dword ptr [ESI + 0x18],EAX
TEST ECX,ECX
JZ 0x000299d0
SUB ESP,0x8
PUSH dword ptr [ESP + 0x4c]
PUSH dword ptr [ESP + 0x18]
CALL 0x00034370
MOV EBP,EAX
POP EAX
POP EDX
PUSH dword ptr [ESP + 0x4c]
PUSH EBP
CALL 0x000343b0
ADD ESP,0x10
CMP EBP,EAX
JZ 0x00029988
MOV ECX,dword ptr [ESP + 0x44]
CMP dword ptr [ECX + 0x4],EAX
JA 0x00029988
TEST EDI,EDI
JZ 0x0002999f
MOV ECX,dword ptr [ESP + 0x18]
TEST ECX,ECX
JZ 0x00029909
MOV EBP,dword ptr [EBX + 0xffffffbc]
XOR EAX,EAX
LEA ESI,[ESI]
MOV EDX,dword ptr [ESP + 0x14]
ADD EDX,EAX
ADD EAX,0x1
MOVZX ECX,byte ptr [EDX]
MOVZX ECX,byte ptr [EBP + ECX*0x1]
MOV byte ptr [EDX],CL
CMP dword ptr [ESP + 0x18],EAX
JA 0x000298f0
LEA EBP,[EBX + 0x8fc0]
SUB ESP,0x8
PUSH dword ptr [ESI + 0x18]
PUSH dword ptr [EBP]
CALL 0x000243a0
ADD ESP,0x10
TEST EAX,EAX
JZ 0x0002993c
SUB ESP,0x4
LEA EAX,[EBX + 0xfffe6140]
PUSH 0x5
PUSH EAX
PUSH 0x0
CALL 0x000131b0
ADD ESP,0x10
MOV EDI,EAX
TEST EDI,EDI
JZ 0x00029a60
MOV EAX,dword ptr [ESP + 0x58]
TEST EAX,EAX
JZ 0x00029970
MOV EAX,dword ptr [ESI + 0x18]
MOV ECX,dword ptr [ESP + 0x58]
MOV dword ptr [ECX],EAX
TEST EDI,EDI
JNZ 0x00029970
LEA EAX,[EBX + 0x8fbc]
MOV dword ptr [EAX],0x1
ADD ESP,0x2c
MOV EAX,EDI
POP EBX
POP ESI
POP EDI
POP EBP
RET
MOV EAX,ESI
CALL 0x00027b20
ADD ESP,0x2c
MOV EAX,EDI
POP EBX
POP ESI
POP EDI
POP EBP
RET
MOV ECX,dword ptr [ESP + 0x44]
MOV EDX,EAX
MOV EAX,ESI
CALL 0x00028da0
MOV EBP,EAX
TEST EDI,EDI
JNZ 0x000298dc
MOV EAX,dword ptr [ESP + 0x44]
CMP dword ptr [EAX + 0x4],EBP
JBE 0x000298dc
SUB ESP,0x4
LEA EAX,[EBX + 0xfffe611c]
PUSH 0x5
PUSH EAX
PUSH 0x0
CALL 0x000131b0
ADD ESP,0x10
MOV EDI,EAX
JMP 0x000298dc
SUB ESP,0x4
LEA EAX,[EBX + 0xfffe5ee5]
PUSH 0x5
PUSH EAX
PUSH 0x0
CALL 0x000131b0
ADD ESP,0x10
MOV EDI,EAX
JMP 0x0002989e
SUB ESP,0x4
LEA EAX,[EBX + 0xfffe60b8]
PUSH 0x5
PUSH EAX
PUSH 0x0
CALL 0x000131b0
ADD ESP,0x10
MOV EDI,EAX
JMP 0x00029851
SUB ESP,0x8
PUSH dword ptr [ESP + 0x50]
PUSH EBP
CALL 0x000341e0
MOV dword ptr [ESP],EBP
CALL 0x00034360
ADD ESP,0x10
MOV ECX,dword ptr [ESP + 0xc]
MOV dword ptr [ESI + 0x18],EAX
MOV EAX,dword ptr [ESP + 0x44]
CMP dword ptr [EAX + 0x4],ECX
JBE 0x00029a40
MOV EAX,dword ptr [EAX]
CMP byte ptr [EAX + ECX*0x1],0x28
JZ 0x00029a85
MOV ECX,dword ptr [ESP + 0x44]
MOV EDX,dword ptr [ESP + 0xc]
MOV EAX,ESI
CALL 0x00028da0
MOV EBP,EAX
JMP 0x000298d4
SUB ESP,0x4
PUSH ESI
PUSH dword ptr [ESI + 0x18]
PUSH dword ptr [EBP]
CALL 0x00024250
ADD ESP,0x10
MOV EDX,dword ptr [ESP + 0x58]
MOV EDI,EAX
TEST EDX,EDX
JNZ 0x0002994c
JMP 0x00029955
MOV EDX,ECX
MOV ECX,dword ptr [ESP + 0x44]
MOV EAX,ESI
ADD EDX,0x1
CALL 0x00028da0
MOV EBP,EAX
MOV EAX,dword ptr [ESP + 0x44]
CMP dword ptr [EAX + 0x4],EBP
JBE 0x00029aa8
MOV EAX,dword ptr [EAX]
CMP byte ptr [EAX + EBP*0x1],0x29
JZ 0x00029acd
TEST EDI,EDI
JNZ 0x000298dc
SUB ESP,0x4
LEA EAX,[EBX + 0xfffe60e8]
PUSH 0x5
PUSH EAX
PUSH 0x0
CALL 0x000131b0
ADD ESP,0x10
MOV EDI,EAX
JMP 0x000298d4
SUB ESP,0x8
ADD EBP,0x1
PUSH dword ptr [ESP + 0x4c]
PUSH EBP
CALL 0x00034370
ADD ESP,0x10
MOV EBP,EAX
JMP 0x000298d4
(translation_unit "/* WARNING: Function: __i686.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */\n\nint FUN_000297c0(undefined4 param_1,int *param_2,int param_3,undefined4 param_4,undefined4 param_5,\n                undefined4 param_6,undefined4 *param_7)\n\n{\n  undefined *puVar1;\n  int iVar2;\n  undefined4 uVar3;\n  uint uVar4;\n  int iVar5;\n  undefined4 uVar6;\n  uint uVar7;\n  byte *pbVar8;\n  int iVar9;\n  int local_28;\n  uint local_24;\n  undefined4 uStack_14;\n  \n  iVar9 = 0;\n  uStack_14 = 0x297cb;\n  iVar2 = xmalloc(0x24);\n  FUN_00034180(iVar2);\n  FUN_00034180(&local_28);\n  *(undefined4 *)(iVar2 + 0xc) = 0;\n  *(undefined4 *)(iVar2 + 0x1c) = param_5;\n  *(undefined4 *)(iVar2 + 0x10) = 0;\n  *(undefined4 *)(iVar2 + 0x20) = param_6;\n  uVar3 = FUN_00024010(7);\n  *(undefined4 *)(iVar2 + 0x14) = uVar3;\n  uVar4 = FUN_00034370(param_1,param_2);\n  iVar5 = FUN_000292d0("MACRO",&DAT_0004deda,iVar2,param_4);\n  if (iVar5 == 0) {\n    iVar9 = dcgettext(0,"unexpected end of file in macro `%s\' definition",5);\n  }\n  if ((param_3 == 0) || (*(int *)(param_3 + 4) == 0)) {\n    uVar3 = FUN_00027b70(&local_28);\n    uVar6 = FUN_00034360(&local_28);\n    *(undefined4 *)(iVar2 + 0x18) = uVar6;\n    if (local_24 == 0) {\n      iVar9 = dcgettext(0,"Missing macro name",5);\n    }\n    uVar4 = FUN_00034370(uVar3,param_2);\n    uVar7 = FUN_000343b0(uVar4,param_2);\n    if ((uVar4 == uVar7) || (uVar7 < (uint)param_2[1])) {\n      uVar4 = FUN_00028da0();\n    }\njoined_r0x00029999:\n    if ((iVar9 == 0) && (uVar4 < (uint)param_2[1])) {\n      iVar9 = dcgettext(0,"Bad parameter list for macro `%s\'",5);\n    }\n  }\n  else {\n    FUN_000341e0(&local_28,param_3);\n    uVar3 = FUN_00034360(&local_28);\n    *(undefined4 *)(iVar2 + 0x18) = uVar3;\n    if (((uint)param_2[1] <= uVar4) || (*(char *)(*param_2 + uVar4) != '(')) {\n      uVar4 = FUN_00028da0();\n      goto joined_r0x00029999;\n    }\n    uVar4 = FUN_00028da0();\n    if ((uVar4 < (uint)param_2[1]) && (*(char *)(*param_2 + uVar4) == ')')) {\n      uVar4 = FUN_00034370(uVar4 + 1,param_2);\n      goto joined_r0x00029999;\n    }\n    if (iVar9 == 0) {\n      iVar9 = dcgettext(0,"missing `)\' after formals in macro definition `%s\'",5);\n      goto joined_r0x00029999;\n    }\n  }\n  puVar1 = PTR__sch_tolower_00067fbc;\n  if (local_24 != 0) {\n    uVar4 = 0;\n    do {\n      pbVar8 = (byte *)(local_28 + uVar4);\n      uVar4 = uVar4 + 1;\n      *pbVar8 = puVar1[*pbVar8];\n    } while (uVar4 < local_24);\n  }\n  iVar5 = FUN_000243a0(DAT_00070fc0,*(undefined4 *)(iVar2 + 0x18));\n  if (iVar5 != 0) {\n    iVar9 = dcgettext(0,"Macro `%s\' was already defined",5);\n  }\n  if (iVar9 == 0) {\n    iVar9 = FUN_00024250(DAT_00070fc0,*(undefined4 *)(iVar2 + 0x18),iVar2);\n    if (param_7 != (undefined4 *)0x0) goto LAB_0002994c;\n  }\n  else {\n    if (param_7 == (undefined4 *)0x0) goto LAB_00029970;\nLAB_0002994c:\n    *param_7 = *(undefined4 *)(iVar2 + 0x18);\n  }\n  if (iVar9 == 0) {\n    DAT_00070fbc = 1;\n    return 0;\n  }\nLAB_00029970:\n  FUN_00027b20();\n  return iVar9;\n}\n\n" comment (function_definition "int FUN_000297c0(undefined4 param_1,int *param_2,int param_3,undefined4 param_4,undefined4 param_5,\n                undefined4 param_6,undefined4 *param_7)\n\n{\n  undefined *puVar1;\n  int iVar2;\n  undefined4 uVar3;\n  uint uVar4;\n  int iVar5;\n  undefined4 uVar6;\n  uint uVar7;\n  byte *pbVar8;\n  int iVar9;\n  int local_28;\n  uint local_24;\n  undefined4 uStack_14;\n  \n  iVar9 = 0;\n  uStack_14 = 0x297cb;\n  iVar2 = xmalloc(0x24);\n  FUN_00034180(iVar2);\n  FUN_00034180(&local_28);\n  *(undefined4 *)(iVar2 + 0xc) = 0;\n  *(undefined4 *)(iVar2 + 0x1c) = param_5;\n  *(undefined4 *)(iVar2 + 0x10) = 0;\n  *(undefined4 *)(iVar2 + 0x20) = param_6;\n  uVar3 = FUN_00024010(7);\n  *(undefined4 *)(iVar2 + 0x14) = uVar3;\n  uVar4 = FUN_00034370(param_1,param_2);\n  iVar5 = FUN_000292d0("MACRO",&DAT_0004deda,iVar2,param_4);\n  if (iVar5 == 0) {\n    iVar9 = dcgettext(0,"unexpected end of file in macro `%s\' definition",5);\n  }\n  if ((param_3 == 0) || (*(int *)(param_3 + 4) == 0)) {\n    uVar3 = FUN_00027b70(&local_28);\n    uVar6 = FUN_00034360(&local_28);\n    *(undefined4 *)(iVar2 + 0x18) = uVar6;\n    if (local_24 == 0) {\n      iVar9 = dcgettext(0,"Missing macro name",5);\n    }\n    uVar4 = FUN_00034370(uVar3,param_2);\n    uVar7 = FUN_000343b0(uVar4,param_2);\n    if ((uVar4 == uVar7) || (uVar7 < (uint)param_2[1])) {\n      uVar4 = FUN_00028da0();\n    }\njoined_r0x00029999:\n    if ((iVar9 == 0) && (uVar4 < (uint)param_2[1])) {\n      iVar9 = dcgettext(0,"Bad parameter list for macro `%s\'",5);\n    }\n  }\n  else {\n    FUN_000341e0(&local_28,param_3);\n    uVar3 = FUN_00034360(&local_28);\n    *(undefined4 *)(iVar2 + 0x18) = uVar3;\n    if (((uint)param_2[1] <= uVar4) || (*(char *)(*param_2 + uVar4) != '(')) {\n      uVar4 = FUN_00028da0();\n      goto joined_r0x00029999;\n    }\n    uVar4 = FUN_00028da0();\n    if ((uVar4 < (uint)param_2[1]) && (*(char *)(*param_2 + uVar4) == ')')) {\n      uVar4 = FUN_00034370(uVar4 + 1,param_2);\n      goto joined_r0x00029999;\n    }\n    if (iVar9 == 0) {\n      iVar9 = dcgettext(0,"missing `)\' after formals in macro definition `%s\'",5);\n      goto joined_r0x00029999;\n    }\n  }\n  puVar1 = PTR__sch_tolower_00067fbc;\n  if (local_24 != 0) {\n    uVar4 = 0;\n    do {\n      pbVar8 = (byte *)(local_28 + uVar4);\n      uVar4 = uVar4 + 1;\n      *pbVar8 = puVar1[*pbVar8];\n    } while (uVar4 < local_24);\n  }\n  iVar5 = FUN_000243a0(DAT_00070fc0,*(undefined4 *)(iVar2 + 0x18));\n  if (iVar5 != 0) {\n    iVar9 = dcgettext(0,"Macro `%s\' was already defined",5);\n  }\n  if (iVar9 == 0) {\n    iVar9 = FUN_00024250(DAT_00070fc0,*(undefined4 *)(iVar2 + 0x18),iVar2);\n    if (param_7 != (undefined4 *)0x0) goto LAB_0002994c;\n  }\n  else {\n    if (param_7 == (undefined4 *)0x0) goto LAB_00029970;\nLAB_0002994c:\n    *param_7 = *(undefined4 *)(iVar2 + 0x18);\n  }\n  if (iVar9 == 0) {\n    DAT_00070fbc = 1;\n    return 0;\n  }\nLAB_00029970:\n  FUN_00027b20();\n  return iVar9;\n}" primitive_type (function_declarator "FUN_000297c0(undefined4 param_1,int *param_2,int param_3,undefined4 param_4,undefined4 param_5,\n                undefined4 param_6,undefined4 *param_7)" identifier (parameter_list "(undefined4 param_1,int *param_2,int param_3,undefined4 param_4,undefined4 param_5,\n                undefined4 param_6,undefined4 *param_7)" ( (parameter_declaration "undefined4 param_1" type_identifier identifier) , (parameter_declaration "int *param_2" primitive_type (pointer_declarator "*param_2" * identifier)) , (parameter_declaration "int param_3" primitive_type identifier) , (parameter_declaration "undefined4 param_4" type_identifier identifier) , (parameter_declaration "undefined4 param_5" type_identifier identifier) , (parameter_declaration "undefined4 param_6" type_identifier identifier) , (parameter_declaration "undefined4 *param_7" type_identifier (pointer_declarator "*param_7" * identifier)) ))) (compound_statement "{\n  undefined *puVar1;\n  int iVar2;\n  undefined4 uVar3;\n  uint uVar4;\n  int iVar5;\n  undefined4 uVar6;\n  uint uVar7;\n  byte *pbVar8;\n  int iVar9;\n  int local_28;\n  uint local_24;\n  undefined4 uStack_14;\n  \n  iVar9 = 0;\n  uStack_14 = 0x297cb;\n  iVar2 = xmalloc(0x24);\n  FUN_00034180(iVar2);\n  FUN_00034180(&local_28);\n  *(undefined4 *)(iVar2 + 0xc) = 0;\n  *(undefined4 *)(iVar2 + 0x1c) = param_5;\n  *(undefined4 *)(iVar2 + 0x10) = 0;\n  *(undefined4 *)(iVar2 + 0x20) = param_6;\n  uVar3 = FUN_00024010(7);\n  *(undefined4 *)(iVar2 + 0x14) = uVar3;\n  uVar4 = FUN_00034370(param_1,param_2);\n  iVar5 = FUN_000292d0("MACRO",&DAT_0004deda,iVar2,param_4);\n  if (iVar5 == 0) {\n    iVar9 = dcgettext(0,"unexpected end of file in macro `%s\' definition",5);\n  }\n  if ((param_3 == 0) || (*(int *)(param_3 + 4) == 0)) {\n    uVar3 = FUN_00027b70(&local_28);\n    uVar6 = FUN_00034360(&local_28);\n    *(undefined4 *)(iVar2 + 0x18) = uVar6;\n    if (local_24 == 0) {\n      iVar9 = dcgettext(0,"Missing macro name",5);\n    }\n    uVar4 = FUN_00034370(uVar3,param_2);\n    uVar7 = FUN_000343b0(uVar4,param_2);\n    if ((uVar4 == uVar7) || (uVar7 < (uint)param_2[1])) {\n      uVar4 = FUN_00028da0();\n    }\njoined_r0x00029999:\n    if ((iVar9 == 0) && (uVar4 < (uint)param_2[1])) {\n      iVar9 = dcgettext(0,"Bad parameter list for macro `%s\'",5);\n    }\n  }\n  else {\n    FUN_000341e0(&local_28,param_3);\n    uVar3 = FUN_00034360(&local_28);\n    *(undefined4 *)(iVar2 + 0x18) = uVar3;\n    if (((uint)param_2[1] <= uVar4) || (*(char *)(*param_2 + uVar4) != '(')) {\n      uVar4 = FUN_00028da0();\n      goto joined_r0x00029999;\n    }\n    uVar4 = FUN_00028da0();\n    if ((uVar4 < (uint)param_2[1]) && (*(char *)(*param_2 + uVar4) == ')')) {\n      uVar4 = FUN_00034370(uVar4 + 1,param_2);\n      goto joined_r0x00029999;\n    }\n    if (iVar9 == 0) {\n      iVar9 = dcgettext(0,"missing `)\' after formals in macro definition `%s\'",5);\n      goto joined_r0x00029999;\n    }\n  }\n  puVar1 = PTR__sch_tolower_00067fbc;\n  if (local_24 != 0) {\n    uVar4 = 0;\n    do {\n      pbVar8 = (byte *)(local_28 + uVar4);\n      uVar4 = uVar4 + 1;\n      *pbVar8 = puVar1[*pbVar8];\n    } while (uVar4 < local_24);\n  }\n  iVar5 = FUN_000243a0(DAT_00070fc0,*(undefined4 *)(iVar2 + 0x18));\n  if (iVar5 != 0) {\n    iVar9 = dcgettext(0,"Macro `%s\' was already defined",5);\n  }\n  if (iVar9 == 0) {\n    iVar9 = FUN_00024250(DAT_00070fc0,*(undefined4 *)(iVar2 + 0x18),iVar2);\n    if (param_7 != (undefined4 *)0x0) goto LAB_0002994c;\n  }\n  else {\n    if (param_7 == (undefined4 *)0x0) goto LAB_00029970;\nLAB_0002994c:\n    *param_7 = *(undefined4 *)(iVar2 + 0x18);\n  }\n  if (iVar9 == 0) {\n    DAT_00070fbc = 1;\n    return 0;\n  }\nLAB_00029970:\n  FUN_00027b20();\n  return iVar9;\n}" { (declaration "undefined *puVar1;" type_identifier (pointer_declarator "*puVar1" * identifier) ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "undefined4 uVar3;" type_identifier identifier ;) (declaration "uint uVar4;" type_identifier identifier ;) (declaration "int iVar5;" primitive_type identifier ;) (declaration "undefined4 uVar6;" type_identifier identifier ;) (declaration "uint uVar7;" type_identifier identifier ;) (declaration "byte *pbVar8;" type_identifier (pointer_declarator "*pbVar8" * identifier) ;) (declaration "int iVar9;" primitive_type identifier ;) (declaration "int local_28;" primitive_type identifier ;) (declaration "uint local_24;" type_identifier identifier ;) (declaration "undefined4 uStack_14;" type_identifier identifier ;) (expression_statement "iVar9 = 0;" (assignment_expression "iVar9 = 0" identifier = number_literal) ;) (expression_statement "uStack_14 = 0x297cb;" (assignment_expression "uStack_14 = 0x297cb" identifier = number_literal) ;) (expression_statement "iVar2 = xmalloc(0x24);" (assignment_expression "iVar2 = xmalloc(0x24)" identifier = (call_expression "xmalloc(0x24)" identifier (argument_list "(0x24)" ( number_literal )))) ;) (expression_statement "FUN_00034180(iVar2);" (call_expression "FUN_00034180(iVar2)" identifier (argument_list "(iVar2)" ( identifier ))) ;) (expression_statement "FUN_00034180(&local_28);" (call_expression "FUN_00034180(&local_28)" identifier (argument_list "(&local_28)" ( (pointer_expression "&local_28" & identifier) ))) ;) (expression_statement "*(undefined4 *)(iVar2 + 0xc) = 0;" (assignment_expression "*(undefined4 *)(iVar2 + 0xc) = 0" (pointer_expression "*(undefined4 *)(iVar2 + 0xc)" * (cast_expression "(undefined4 *)(iVar2 + 0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 0xc)" ( (binary_expression "iVar2 + 0xc" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined4 *)(iVar2 + 0x1c) = param_5;" (assignment_expression "*(undefined4 *)(iVar2 + 0x1c) = param_5" (pointer_expression "*(undefined4 *)(iVar2 + 0x1c)" * (cast_expression "(undefined4 *)(iVar2 + 0x1c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 0x1c)" ( (binary_expression "iVar2 + 0x1c" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(iVar2 + 0x10) = 0;" (assignment_expression "*(undefined4 *)(iVar2 + 0x10) = 0" (pointer_expression "*(undefined4 *)(iVar2 + 0x10)" * (cast_expression "(undefined4 *)(iVar2 + 0x10)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 0x10)" ( (binary_expression "iVar2 + 0x10" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined4 *)(iVar2 + 0x20) = param_6;" (assignment_expression "*(undefined4 *)(iVar2 + 0x20) = param_6" (pointer_expression "*(undefined4 *)(iVar2 + 0x20)" * (cast_expression "(undefined4 *)(iVar2 + 0x20)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 0x20)" ( (binary_expression "iVar2 + 0x20" identifier + number_literal) )))) = identifier) ;) (expression_statement "uVar3 = FUN_00024010(7);" (assignment_expression "uVar3 = FUN_00024010(7)" identifier = (call_expression "FUN_00024010(7)" identifier (argument_list "(7)" ( number_literal )))) ;) (expression_statement "*(undefined4 *)(iVar2 + 0x14) = uVar3;" (assignment_expression "*(undefined4 *)(iVar2 + 0x14) = uVar3" (pointer_expression "*(undefined4 *)(iVar2 + 0x14)" * (cast_expression "(undefined4 *)(iVar2 + 0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 0x14)" ( (binary_expression "iVar2 + 0x14" identifier + number_literal) )))) = identifier) ;) (expression_statement "uVar4 = FUN_00034370(param_1,param_2);" (assignment_expression "uVar4 = FUN_00034370(param_1,param_2)" identifier = (call_expression "FUN_00034370(param_1,param_2)" identifier (argument_list "(param_1,param_2)" ( identifier , identifier )))) ;) (expression_statement "iVar5 = FUN_000292d0("MACRO",&DAT_0004deda,iVar2,param_4);" (assignment_expression "iVar5 = FUN_000292d0("MACRO",&DAT_0004deda,iVar2,param_4)" identifier = (call_expression "FUN_000292d0("MACRO",&DAT_0004deda,iVar2,param_4)" identifier (argument_list "("MACRO",&DAT_0004deda,iVar2,param_4)" ( (string_literal ""MACRO"" " string_content ") , (pointer_expression "&DAT_0004deda" & identifier) , identifier , identifier )))) ;) (if_statement "if (iVar5 == 0) {\n    iVar9 = dcgettext(0,"unexpected end of file in macro `%s\' definition",5);\n  }" if (parenthesized_expression "(iVar5 == 0)" ( (binary_expression "iVar5 == 0" identifier == number_literal) )) (compound_statement "{\n    iVar9 = dcgettext(0,"unexpected end of file in macro `%s\' definition",5);\n  }" { (expression_statement "iVar9 = dcgettext(0,"unexpected end of file in macro `%s\' definition",5);" (assignment_expression "iVar9 = dcgettext(0,"unexpected end of file in macro `%s\' definition",5)" identifier = (call_expression "dcgettext(0,"unexpected end of file in macro `%s\' definition",5)" identifier (argument_list "(0,"unexpected end of file in macro `%s\' definition",5)" ( number_literal , (string_literal ""unexpected end of file in macro `%s\' definition"" " string_content escape_sequence string_content ") , number_literal )))) ;) })) (if_statement "if ((param_3 == 0) || (*(int *)(param_3 + 4) == 0)) {\n    uVar3 = FUN_00027b70(&local_28);\n    uVar6 = FUN_00034360(&local_28);\n    *(undefined4 *)(iVar2 + 0x18) = uVar6;\n    if (local_24 == 0) {\n      iVar9 = dcgettext(0,"Missing macro name",5);\n    }\n    uVar4 = FUN_00034370(uVar3,param_2);\n    uVar7 = FUN_000343b0(uVar4,param_2);\n    if ((uVar4 == uVar7) || (uVar7 < (uint)param_2[1])) {\n      uVar4 = FUN_00028da0();\n    }\njoined_r0x00029999:\n    if ((iVar9 == 0) && (uVar4 < (uint)param_2[1])) {\n      iVar9 = dcgettext(0,"Bad parameter list for macro `%s\'",5);\n    }\n  }\n  else {\n    FUN_000341e0(&local_28,param_3);\n    uVar3 = FUN_00034360(&local_28);\n    *(undefined4 *)(iVar2 + 0x18) = uVar3;\n    if (((uint)param_2[1] <= uVar4) || (*(char *)(*param_2 + uVar4) != '(')) {\n      uVar4 = FUN_00028da0();\n      goto joined_r0x00029999;\n    }\n    uVar4 = FUN_00028da0();\n    if ((uVar4 < (uint)param_2[1]) && (*(char *)(*param_2 + uVar4) == ')')) {\n      uVar4 = FUN_00034370(uVar4 + 1,param_2);\n      goto joined_r0x00029999;\n    }\n    if (iVar9 == 0) {\n      iVar9 = dcgettext(0,"missing `)\' after formals in macro definition `%s\'",5);\n      goto joined_r0x00029999;\n    }\n  }" if (parenthesized_expression "((param_3 == 0) || (*(int *)(param_3 + 4) == 0))" ( (binary_expression "(param_3 == 0) || (*(int *)(param_3 + 4) == 0)" (parenthesized_expression "(param_3 == 0)" ( (binary_expression "param_3 == 0" identifier == number_literal) )) || (parenthesized_expression "(*(int *)(param_3 + 4) == 0)" ( (binary_expression "*(int *)(param_3 + 4) == 0" (pointer_expression "*(int *)(param_3 + 4)" * (cast_expression "(int *)(param_3 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 4)" ( (binary_expression "param_3 + 4" identifier + number_literal) )))) == number_literal) ))) )) (compound_statement "{\n    uVar3 = FUN_00027b70(&local_28);\n    uVar6 = FUN_00034360(&local_28);\n    *(undefined4 *)(iVar2 + 0x18) = uVar6;\n    if (local_24 == 0) {\n      iVar9 = dcgettext(0,"Missing macro name",5);\n    }\n    uVar4 = FUN_00034370(uVar3,param_2);\n    uVar7 = FUN_000343b0(uVar4,param_2);\n    if ((uVar4 == uVar7) || (uVar7 < (uint)param_2[1])) {\n      uVar4 = FUN_00028da0();\n    }\njoined_r0x00029999:\n    if ((iVar9 == 0) && (uVar4 < (uint)param_2[1])) {\n      iVar9 = dcgettext(0,"Bad parameter list for macro `%s\'",5);\n    }\n  }" { (expression_statement "uVar3 = FUN_00027b70(&local_28);" (assignment_expression "uVar3 = FUN_00027b70(&local_28)" identifier = (call_expression "FUN_00027b70(&local_28)" identifier (argument_list "(&local_28)" ( (pointer_expression "&local_28" & identifier) )))) ;) (expression_statement "uVar6 = FUN_00034360(&local_28);" (assignment_expression "uVar6 = FUN_00034360(&local_28)" identifier = (call_expression "FUN_00034360(&local_28)" identifier (argument_list "(&local_28)" ( (pointer_expression "&local_28" & identifier) )))) ;) (expression_statement "*(undefined4 *)(iVar2 + 0x18) = uVar6;" (assignment_expression "*(undefined4 *)(iVar2 + 0x18) = uVar6" (pointer_expression "*(undefined4 *)(iVar2 + 0x18)" * (cast_expression "(undefined4 *)(iVar2 + 0x18)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 0x18)" ( (binary_expression "iVar2 + 0x18" identifier + number_literal) )))) = identifier) ;) (if_statement "if (local_24 == 0) {\n      iVar9 = dcgettext(0,"Missing macro name",5);\n    }" if (parenthesized_expression "(local_24 == 0)" ( (binary_expression "local_24 == 0" identifier == number_literal) )) (compound_statement "{\n      iVar9 = dcgettext(0,"Missing macro name",5);\n    }" { (expression_statement "iVar9 = dcgettext(0,"Missing macro name",5);" (assignment_expression "iVar9 = dcgettext(0,"Missing macro name",5)" identifier = (call_expression "dcgettext(0,"Missing macro name",5)" identifier (argument_list "(0,"Missing macro name",5)" ( number_literal , (string_literal ""Missing macro name"" " string_content ") , number_literal )))) ;) })) (expression_statement "uVar4 = FUN_00034370(uVar3,param_2);" (assignment_expression "uVar4 = FUN_00034370(uVar3,param_2)" identifier = (call_expression "FUN_00034370(uVar3,param_2)" identifier (argument_list "(uVar3,param_2)" ( identifier , identifier )))) ;) (expression_statement "uVar7 = FUN_000343b0(uVar4,param_2);" (assignment_expression "uVar7 = FUN_000343b0(uVar4,param_2)" identifier = (call_expression "FUN_000343b0(uVar4,param_2)" identifier (argument_list "(uVar4,param_2)" ( identifier , identifier )))) ;) (if_statement "if ((uVar4 == uVar7) || (uVar7 < (uint)param_2[1])) {\n      uVar4 = FUN_00028da0();\n    }" if (parenthesized_expression "((uVar4 == uVar7) || (uVar7 < (uint)param_2[1]))" ( (binary_expression "(uVar4 == uVar7) || (uVar7 < (uint)param_2[1])" (parenthesized_expression "(uVar4 == uVar7)" ( (binary_expression "uVar4 == uVar7" identifier == identifier) )) || (parenthesized_expression "(uVar7 < (uint)param_2[1])" ( (binary_expression "uVar7 < (uint)param_2[1]" identifier < (cast_expression "(uint)param_2[1]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "param_2[1]" identifier [ number_literal ]))) ))) )) (compound_statement "{\n      uVar4 = FUN_00028da0();\n    }" { (expression_statement "uVar4 = FUN_00028da0();" (assignment_expression "uVar4 = FUN_00028da0()" identifier = (call_expression "FUN_00028da0()" identifier (argument_list "()" ( )))) ;) })) (labeled_statement "joined_r0x00029999:\n    if ((iVar9 == 0) && (uVar4 < (uint)param_2[1])) {\n      iVar9 = dcgettext(0,"Bad parameter list for macro `%s\'",5);\n    }" statement_identifier : (if_statement "if ((iVar9 == 0) && (uVar4 < (uint)param_2[1])) {\n      iVar9 = dcgettext(0,"Bad parameter list for macro `%s\'",5);\n    }" if (parenthesized_expression "((iVar9 == 0) && (uVar4 < (uint)param_2[1]))" ( (binary_expression "(iVar9 == 0) && (uVar4 < (uint)param_2[1])" (parenthesized_expression "(iVar9 == 0)" ( (binary_expression "iVar9 == 0" identifier == number_literal) )) && (parenthesized_expression "(uVar4 < (uint)param_2[1])" ( (binary_expression "uVar4 < (uint)param_2[1]" identifier < (cast_expression "(uint)param_2[1]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "param_2[1]" identifier [ number_literal ]))) ))) )) (compound_statement "{\n      iVar9 = dcgettext(0,"Bad parameter list for macro `%s\'",5);\n    }" { (expression_statement "iVar9 = dcgettext(0,"Bad parameter list for macro `%s\'",5);" (assignment_expression "iVar9 = dcgettext(0,"Bad parameter list for macro `%s\'",5)" identifier = (call_expression "dcgettext(0,"Bad parameter list for macro `%s\'",5)" identifier (argument_list "(0,"Bad parameter list for macro `%s\'",5)" ( number_literal , (string_literal ""Bad parameter list for macro `%s\'"" " string_content escape_sequence ") , number_literal )))) ;) }))) }) (else_clause "else {\n    FUN_000341e0(&local_28,param_3);\n    uVar3 = FUN_00034360(&local_28);\n    *(undefined4 *)(iVar2 + 0x18) = uVar3;\n    if (((uint)param_2[1] <= uVar4) || (*(char *)(*param_2 + uVar4) != '(')) {\n      uVar4 = FUN_00028da0();\n      goto joined_r0x00029999;\n    }\n    uVar4 = FUN_00028da0();\n    if ((uVar4 < (uint)param_2[1]) && (*(char *)(*param_2 + uVar4) == ')')) {\n      uVar4 = FUN_00034370(uVar4 + 1,param_2);\n      goto joined_r0x00029999;\n    }\n    if (iVar9 == 0) {\n      iVar9 = dcgettext(0,"missing `)\' after formals in macro definition `%s\'",5);\n      goto joined_r0x00029999;\n    }\n  }" else (compound_statement "{\n    FUN_000341e0(&local_28,param_3);\n    uVar3 = FUN_00034360(&local_28);\n    *(undefined4 *)(iVar2 + 0x18) = uVar3;\n    if (((uint)param_2[1] <= uVar4) || (*(char *)(*param_2 + uVar4) != '(')) {\n      uVar4 = FUN_00028da0();\n      goto joined_r0x00029999;\n    }\n    uVar4 = FUN_00028da0();\n    if ((uVar4 < (uint)param_2[1]) && (*(char *)(*param_2 + uVar4) == ')')) {\n      uVar4 = FUN_00034370(uVar4 + 1,param_2);\n      goto joined_r0x00029999;\n    }\n    if (iVar9 == 0) {\n      iVar9 = dcgettext(0,"missing `)\' after formals in macro definition `%s\'",5);\n      goto joined_r0x00029999;\n    }\n  }" { (expression_statement "FUN_000341e0(&local_28,param_3);" (call_expression "FUN_000341e0(&local_28,param_3)" identifier (argument_list "(&local_28,param_3)" ( (pointer_expression "&local_28" & identifier) , identifier ))) ;) (expression_statement "uVar3 = FUN_00034360(&local_28);" (assignment_expression "uVar3 = FUN_00034360(&local_28)" identifier = (call_expression "FUN_00034360(&local_28)" identifier (argument_list "(&local_28)" ( (pointer_expression "&local_28" & identifier) )))) ;) (expression_statement "*(undefined4 *)(iVar2 + 0x18) = uVar3;" (assignment_expression "*(undefined4 *)(iVar2 + 0x18) = uVar3" (pointer_expression "*(undefined4 *)(iVar2 + 0x18)" * (cast_expression "(undefined4 *)(iVar2 + 0x18)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 0x18)" ( (binary_expression "iVar2 + 0x18" identifier + number_literal) )))) = identifier) ;) (if_statement "if (((uint)param_2[1] <= uVar4) || (*(char *)(*param_2 + uVar4) != '(')) {\n      uVar4 = FUN_00028da0();\n      goto joined_r0x00029999;\n    }" if (parenthesized_expression "(((uint)param_2[1] <= uVar4) || (*(char *)(*param_2 + uVar4) != '('))" ( (binary_expression "((uint)param_2[1] <= uVar4) || (*(char *)(*param_2 + uVar4) != '(')" (parenthesized_expression "((uint)param_2[1] <= uVar4)" ( (binary_expression "(uint)param_2[1] <= uVar4" (cast_expression "(uint)param_2[1]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "param_2[1]" identifier [ number_literal ])) <= identifier) )) || (parenthesized_expression "(*(char *)(*param_2 + uVar4) != '(')" ( (binary_expression "*(char *)(*param_2 + uVar4) != '('" (pointer_expression "*(char *)(*param_2 + uVar4)" * (cast_expression "(char *)(*param_2 + uVar4)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*param_2 + uVar4)" ( (binary_expression "*param_2 + uVar4" (pointer_expression "*param_2" * identifier) + identifier) )))) != (char_literal "'('" ' character ')) ))) )) (compound_statement "{\n      uVar4 = FUN_00028da0();\n      goto joined_r0x00029999;\n    }" { (expression_statement "uVar4 = FUN_00028da0();" (assignment_expression "uVar4 = FUN_00028da0()" identifier = (call_expression "FUN_00028da0()" identifier (argument_list "()" ( )))) ;) (goto_statement "goto joined_r0x00029999;" goto statement_identifier ;) })) (expression_statement "uVar4 = FUN_00028da0();" (assignment_expression "uVar4 = FUN_00028da0()" identifier = (call_expression "FUN_00028da0()" identifier (argument_list "()" ( )))) ;) (if_statement "if ((uVar4 < (uint)param_2[1]) && (*(char *)(*param_2 + uVar4) == ')')) {\n      uVar4 = FUN_00034370(uVar4 + 1,param_2);\n      goto joined_r0x00029999;\n    }" if (parenthesized_expression "((uVar4 < (uint)param_2[1]) && (*(char *)(*param_2 + uVar4) == ')'))" ( (binary_expression "(uVar4 < (uint)param_2[1]) && (*(char *)(*param_2 + uVar4) == ')')" (parenthesized_expression "(uVar4 < (uint)param_2[1])" ( (binary_expression "uVar4 < (uint)param_2[1]" identifier < (cast_expression "(uint)param_2[1]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "param_2[1]" identifier [ number_literal ]))) )) && (parenthesized_expression "(*(char *)(*param_2 + uVar4) == ')')" ( (binary_expression "*(char *)(*param_2 + uVar4) == ')'" (pointer_expression "*(char *)(*param_2 + uVar4)" * (cast_expression "(char *)(*param_2 + uVar4)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*param_2 + uVar4)" ( (binary_expression "*param_2 + uVar4" (pointer_expression "*param_2" * identifier) + identifier) )))) == (char_literal "')'" ' character ')) ))) )) (compound_statement "{\n      uVar4 = FUN_00034370(uVar4 + 1,param_2);\n      goto joined_r0x00029999;\n    }" { (expression_statement "uVar4 = FUN_00034370(uVar4 + 1,param_2);" (assignment_expression "uVar4 = FUN_00034370(uVar4 + 1,param_2)" identifier = (call_expression "FUN_00034370(uVar4 + 1,param_2)" identifier (argument_list "(uVar4 + 1,param_2)" ( (binary_expression "uVar4 + 1" identifier + number_literal) , identifier )))) ;) (goto_statement "goto joined_r0x00029999;" goto statement_identifier ;) })) (if_statement "if (iVar9 == 0) {\n      iVar9 = dcgettext(0,"missing `)\' after formals in macro definition `%s\'",5);\n      goto joined_r0x00029999;\n    }" if (parenthesized_expression "(iVar9 == 0)" ( (binary_expression "iVar9 == 0" identifier == number_literal) )) (compound_statement "{\n      iVar9 = dcgettext(0,"missing `)\' after formals in macro definition `%s\'",5);\n      goto joined_r0x00029999;\n    }" { (expression_statement "iVar9 = dcgettext(0,"missing `)\' after formals in macro definition `%s\'",5);" (assignment_expression "iVar9 = dcgettext(0,"missing `)\' after formals in macro definition `%s\'",5)" identifier = (call_expression "dcgettext(0,"missing `)\' after formals in macro definition `%s\'",5)" identifier (argument_list "(0,"missing `)\' after formals in macro definition `%s\'",5)" ( number_literal , (string_literal ""missing `)\' after formals in macro definition `%s\'"" " string_content escape_sequence string_content escape_sequence ") , number_literal )))) ;) (goto_statement "goto joined_r0x00029999;" goto statement_identifier ;) })) }))) (expression_statement "puVar1 = PTR__sch_tolower_00067fbc;" (assignment_expression "puVar1 = PTR__sch_tolower_00067fbc" identifier = identifier) ;) (if_statement "if (local_24 != 0) {\n    uVar4 = 0;\n    do {\n      pbVar8 = (byte *)(local_28 + uVar4);\n      uVar4 = uVar4 + 1;\n      *pbVar8 = puVar1[*pbVar8];\n    } while (uVar4 < local_24);\n  }" if (parenthesized_expression "(local_24 != 0)" ( (binary_expression "local_24 != 0" identifier != number_literal) )) (compound_statement "{\n    uVar4 = 0;\n    do {\n      pbVar8 = (byte *)(local_28 + uVar4);\n      uVar4 = uVar4 + 1;\n      *pbVar8 = puVar1[*pbVar8];\n    } while (uVar4 < local_24);\n  }" { (expression_statement "uVar4 = 0;" (assignment_expression "uVar4 = 0" identifier = number_literal) ;) (do_statement "do {\n      pbVar8 = (byte *)(local_28 + uVar4);\n      uVar4 = uVar4 + 1;\n      *pbVar8 = puVar1[*pbVar8];\n    } while (uVar4 < local_24);" do (compound_statement "{\n      pbVar8 = (byte *)(local_28 + uVar4);\n      uVar4 = uVar4 + 1;\n      *pbVar8 = puVar1[*pbVar8];\n    }" { (expression_statement "pbVar8 = (byte *)(local_28 + uVar4);" (assignment_expression "pbVar8 = (byte *)(local_28 + uVar4)" identifier = (cast_expression "(byte *)(local_28 + uVar4)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_28 + uVar4)" ( (binary_expression "local_28 + uVar4" identifier + identifier) )))) ;) (expression_statement "uVar4 = uVar4 + 1;" (assignment_expression "uVar4 = uVar4 + 1" identifier = (binary_expression "uVar4 + 1" identifier + number_literal)) ;) (expression_statement "*pbVar8 = puVar1[*pbVar8];" (assignment_expression "*pbVar8 = puVar1[*pbVar8]" (pointer_expression "*pbVar8" * identifier) = (subscript_expression "puVar1[*pbVar8]" identifier [ (pointer_expression "*pbVar8" * identifier) ])) ;) }) while (parenthesized_expression "(uVar4 < local_24)" ( (binary_expression "uVar4 < local_24" identifier < identifier) )) ;) })) (expression_statement "iVar5 = FUN_000243a0(DAT_00070fc0,*(undefined4 *)(iVar2 + 0x18));" (assignment_expression "iVar5 = FUN_000243a0(DAT_00070fc0,*(undefined4 *)(iVar2 + 0x18))" identifier = (call_expression "FUN_000243a0(DAT_00070fc0,*(undefined4 *)(iVar2 + 0x18))" identifier (argument_list "(DAT_00070fc0,*(undefined4 *)(iVar2 + 0x18))" ( identifier , (pointer_expression "*(undefined4 *)(iVar2 + 0x18)" * (cast_expression "(undefined4 *)(iVar2 + 0x18)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 0x18)" ( (binary_expression "iVar2 + 0x18" identifier + number_literal) )))) )))) ;) (if_statement "if (iVar5 != 0) {\n    iVar9 = dcgettext(0,"Macro `%s\' was already defined",5);\n  }" if (parenthesized_expression "(iVar5 != 0)" ( (binary_expression "iVar5 != 0" identifier != number_literal) )) (compound_statement "{\n    iVar9 = dcgettext(0,"Macro `%s\' was already defined",5);\n  }" { (expression_statement "iVar9 = dcgettext(0,"Macro `%s\' was already defined",5);" (assignment_expression "iVar9 = dcgettext(0,"Macro `%s\' was already defined",5)" identifier = (call_expression "dcgettext(0,"Macro `%s\' was already defined",5)" identifier (argument_list "(0,"Macro `%s\' was already defined",5)" ( number_literal , (string_literal ""Macro `%s\' was already defined"" " string_content escape_sequence string_content ") , number_literal )))) ;) })) (if_statement "if (iVar9 == 0) {\n    iVar9 = FUN_00024250(DAT_00070fc0,*(undefined4 *)(iVar2 + 0x18),iVar2);\n    if (param_7 != (undefined4 *)0x0) goto LAB_0002994c;\n  }\n  else {\n    if (param_7 == (undefined4 *)0x0) goto LAB_00029970;\nLAB_0002994c:\n    *param_7 = *(undefined4 *)(iVar2 + 0x18);\n  }" if (parenthesized_expression "(iVar9 == 0)" ( (binary_expression "iVar9 == 0" identifier == number_literal) )) (compound_statement "{\n    iVar9 = FUN_00024250(DAT_00070fc0,*(undefined4 *)(iVar2 + 0x18),iVar2);\n    if (param_7 != (undefined4 *)0x0) goto LAB_0002994c;\n  }" { (expression_statement "iVar9 = FUN_00024250(DAT_00070fc0,*(undefined4 *)(iVar2 + 0x18),iVar2);" (assignment_expression "iVar9 = FUN_00024250(DAT_00070fc0,*(undefined4 *)(iVar2 + 0x18),iVar2)" identifier = (call_expression "FUN_00024250(DAT_00070fc0,*(undefined4 *)(iVar2 + 0x18),iVar2)" identifier (argument_list "(DAT_00070fc0,*(undefined4 *)(iVar2 + 0x18),iVar2)" ( identifier , (pointer_expression "*(undefined4 *)(iVar2 + 0x18)" * (cast_expression "(undefined4 *)(iVar2 + 0x18)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 0x18)" ( (binary_expression "iVar2 + 0x18" identifier + number_literal) )))) , identifier )))) ;) (if_statement "if (param_7 != (undefined4 *)0x0) goto LAB_0002994c;" if (parenthesized_expression "(param_7 != (undefined4 *)0x0)" ( (binary_expression "param_7 != (undefined4 *)0x0" identifier != (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_0002994c;" goto statement_identifier ;)) }) (else_clause "else {\n    if (param_7 == (undefined4 *)0x0) goto LAB_00029970;\nLAB_0002994c:\n    *param_7 = *(undefined4 *)(iVar2 + 0x18);\n  }" else (compound_statement "{\n    if (param_7 == (undefined4 *)0x0) goto LAB_00029970;\nLAB_0002994c:\n    *param_7 = *(undefined4 *)(iVar2 + 0x18);\n  }" { (if_statement "if (param_7 == (undefined4 *)0x0) goto LAB_00029970;" if (parenthesized_expression "(param_7 == (undefined4 *)0x0)" ( (binary_expression "param_7 == (undefined4 *)0x0" identifier == (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_00029970;" goto statement_identifier ;)) (labeled_statement "LAB_0002994c:\n    *param_7 = *(undefined4 *)(iVar2 + 0x18);" statement_identifier : (expression_statement "*param_7 = *(undefined4 *)(iVar2 + 0x18);" (assignment_expression "*param_7 = *(undefined4 *)(iVar2 + 0x18)" (pointer_expression "*param_7" * identifier) = (pointer_expression "*(undefined4 *)(iVar2 + 0x18)" * (cast_expression "(undefined4 *)(iVar2 + 0x18)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 0x18)" ( (binary_expression "iVar2 + 0x18" identifier + number_literal) ))))) ;)) }))) (if_statement "if (iVar9 == 0) {\n    DAT_00070fbc = 1;\n    return 0;\n  }" if (parenthesized_expression "(iVar9 == 0)" ( (binary_expression "iVar9 == 0" identifier == number_literal) )) (compound_statement "{\n    DAT_00070fbc = 1;\n    return 0;\n  }" { (expression_statement "DAT_00070fbc = 1;" (assignment_expression "DAT_00070fbc = 1" identifier = number_literal) ;) (return_statement "return 0;" return number_literal ;) })) (labeled_statement "LAB_00029970:\n  FUN_00027b20();" statement_identifier : (expression_statement "FUN_00027b20();" (call_expression "FUN_00027b20()" identifier (argument_list "()" ( ))) ;)) (return_statement "return iVar9;" return identifier ;) })))
(translation_unit "/* WARNING: Function: __x86.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */\n\nchar * define_macro(size_t idx,sb *in,sb *label,_func_size_t_sb_ptr *get_line,char *file,uint line,\n                   char **namep)\n\n{\n  undefined *puVar1;\n  macro_entry *macro;\n  hash_control *phVar2;\n  size_t sVar3;\n  int iVar4;\n  char *pcVar5;\n  uint uVar6;\n  void *pvVar7;\n  byte *pbVar8;\n  char *pcVar9;\n  sb name;\n  \n  pcVar9 = (char *)0x0;\n  macro = (macro_entry *)xmalloc(0x24);\n  sb_new((sb *)macro);\n  sb_new(&name);\n  macro->formal_count = 0;\n  macro->file = file;\n  macro->formals = (formal_entry *)0x0;\n  macro->line = line;\n  phVar2 = hash_new_sized(7);\n  macro->formal_hash = phVar2;\n  sVar3 = sb_skip_white(idx,in);\n  iVar4 = buffer_and_nest("MACRO","ENDM",(sb *)macro,get_line);\n  if (iVar4 == 0) {\n    pcVar9 = (char *)dcgettext(0,"unexpected end of file in macro `%s\' definition",5);\n  }\n  if ((label == (sb *)0x0) || (label->len == 0)) {\n    sVar3 = get_token(sVar3,in,(sb *)&in->len,&name);\n    pcVar5 = sb_terminate(&name);\n    macro->name = pcVar5;\n    if (name.len == 0) {\n      pcVar9 = (char *)dcgettext(0,"Missing macro name",5);\n    }\n    uVar6 = sb_skip_white(sVar3,in);\n    sVar3 = sb_skip_comma(uVar6,in);\n    if ((uVar6 == sVar3) || (sVar3 < in->len)) {\n      uVar6 = do_formals(macro,sVar3,in);\n    }\njoined_r0x00029999:\n    if ((pcVar9 == (char *)0x0) && (uVar6 < in->len)) {\n      pcVar9 = (char *)dcgettext(0,"Bad parameter list for macro `%s\'",5);\n    }\n  }\n  else {\n    sb_add_sb(&name,label);\n    pcVar5 = sb_terminate(&name);\n    macro->name = pcVar5;\n    if ((in->len <= sVar3) || (in->ptr[sVar3] != '(')) {\n      uVar6 = do_formals(macro,sVar3,in);\n      goto joined_r0x00029999;\n    }\n    uVar6 = do_formals(macro,sVar3 + 1,in);\n    if ((uVar6 < in->len) && (in->ptr[uVar6] == ')')) {\n      uVar6 = sb_skip_white(uVar6 + 1,in);\n      goto joined_r0x00029999;\n    }\n    if (pcVar9 == (char *)0x0) {\n      pcVar9 = (char *)dcgettext(0,"missing `)\' after formals in macro definition `%s\'",5);\n      goto joined_r0x00029999;\n    }\n  }\n  puVar1 = PTR__sch_tolower_00067fbc;\n  if (name.len != 0) {\n    uVar6 = 0;\n    do {\n      pbVar8 = (byte *)(name.ptr + uVar6);\n      uVar6 = uVar6 + 1;\n      *pbVar8 = puVar1[*pbVar8];\n    } while (uVar6 < name.len);\n  }\n  pvVar7 = hash_find(macro_hash,macro->name);\n  if (pvVar7 != (void *)0x0) {\n    pcVar9 = (char *)dcgettext(0,"Macro `%s\' was already defined",5);\n  }\n  if (pcVar9 == (char *)0x0) {\n    pcVar9 = hash_jam(macro_hash,macro->name,macro);\n    if (namep != (char **)0x0) goto LAB_0002994c;\n  }\n  else {\n    if (namep == (char **)0x0) goto LAB_00029970;\nLAB_0002994c:\n    *namep = macro->name;\n  }\n  if (pcVar9 == (char *)0x0) {\n    macro_defined = 1;\n    return (char *)0x0;\n  }\nLAB_00029970:\n  free_macro(macro);\n  return pcVar9;\n}\n\n" comment (function_definition "char * define_macro(size_t idx,sb *in,sb *label,_func_size_t_sb_ptr *get_line,char *file,uint line,\n                   char **namep)\n\n{\n  undefined *puVar1;\n  macro_entry *macro;\n  hash_control *phVar2;\n  size_t sVar3;\n  int iVar4;\n  char *pcVar5;\n  uint uVar6;\n  void *pvVar7;\n  byte *pbVar8;\n  char *pcVar9;\n  sb name;\n  \n  pcVar9 = (char *)0x0;\n  macro = (macro_entry *)xmalloc(0x24);\n  sb_new((sb *)macro);\n  sb_new(&name);\n  macro->formal_count = 0;\n  macro->file = file;\n  macro->formals = (formal_entry *)0x0;\n  macro->line = line;\n  phVar2 = hash_new_sized(7);\n  macro->formal_hash = phVar2;\n  sVar3 = sb_skip_white(idx,in);\n  iVar4 = buffer_and_nest("MACRO","ENDM",(sb *)macro,get_line);\n  if (iVar4 == 0) {\n    pcVar9 = (char *)dcgettext(0,"unexpected end of file in macro `%s\' definition",5);\n  }\n  if ((label == (sb *)0x0) || (label->len == 0)) {\n    sVar3 = get_token(sVar3,in,(sb *)&in->len,&name);\n    pcVar5 = sb_terminate(&name);\n    macro->name = pcVar5;\n    if (name.len == 0) {\n      pcVar9 = (char *)dcgettext(0,"Missing macro name",5);\n    }\n    uVar6 = sb_skip_white(sVar3,in);\n    sVar3 = sb_skip_comma(uVar6,in);\n    if ((uVar6 == sVar3) || (sVar3 < in->len)) {\n      uVar6 = do_formals(macro,sVar3,in);\n    }\njoined_r0x00029999:\n    if ((pcVar9 == (char *)0x0) && (uVar6 < in->len)) {\n      pcVar9 = (char *)dcgettext(0,"Bad parameter list for macro `%s\'",5);\n    }\n  }\n  else {\n    sb_add_sb(&name,label);\n    pcVar5 = sb_terminate(&name);\n    macro->name = pcVar5;\n    if ((in->len <= sVar3) || (in->ptr[sVar3] != '(')) {\n      uVar6 = do_formals(macro,sVar3,in);\n      goto joined_r0x00029999;\n    }\n    uVar6 = do_formals(macro,sVar3 + 1,in);\n    if ((uVar6 < in->len) && (in->ptr[uVar6] == ')')) {\n      uVar6 = sb_skip_white(uVar6 + 1,in);\n      goto joined_r0x00029999;\n    }\n    if (pcVar9 == (char *)0x0) {\n      pcVar9 = (char *)dcgettext(0,"missing `)\' after formals in macro definition `%s\'",5);\n      goto joined_r0x00029999;\n    }\n  }\n  puVar1 = PTR__sch_tolower_00067fbc;\n  if (name.len != 0) {\n    uVar6 = 0;\n    do {\n      pbVar8 = (byte *)(name.ptr + uVar6);\n      uVar6 = uVar6 + 1;\n      *pbVar8 = puVar1[*pbVar8];\n    } while (uVar6 < name.len);\n  }\n  pvVar7 = hash_find(macro_hash,macro->name);\n  if (pvVar7 != (void *)0x0) {\n    pcVar9 = (char *)dcgettext(0,"Macro `%s\' was already defined",5);\n  }\n  if (pcVar9 == (char *)0x0) {\n    pcVar9 = hash_jam(macro_hash,macro->name,macro);\n    if (namep != (char **)0x0) goto LAB_0002994c;\n  }\n  else {\n    if (namep == (char **)0x0) goto LAB_00029970;\nLAB_0002994c:\n    *namep = macro->name;\n  }\n  if (pcVar9 == (char *)0x0) {\n    macro_defined = 1;\n    return (char *)0x0;\n  }\nLAB_00029970:\n  free_macro(macro);\n  return pcVar9;\n}" primitive_type (pointer_declarator "* define_macro(size_t idx,sb *in,sb *label,_func_size_t_sb_ptr *get_line,char *file,uint line,\n                   char **namep)" * (function_declarator "define_macro(size_t idx,sb *in,sb *label,_func_size_t_sb_ptr *get_line,char *file,uint line,\n                   char **namep)" identifier (parameter_list "(size_t idx,sb *in,sb *label,_func_size_t_sb_ptr *get_line,char *file,uint line,\n                   char **namep)" ( (parameter_declaration "size_t idx" primitive_type identifier) , (parameter_declaration "sb *in" type_identifier (pointer_declarator "*in" * identifier)) , (parameter_declaration "sb *label" type_identifier (pointer_declarator "*label" * identifier)) , (parameter_declaration "_func_size_t_sb_ptr *get_line" type_identifier (pointer_declarator "*get_line" * identifier)) , (parameter_declaration "char *file" primitive_type (pointer_declarator "*file" * identifier)) , (parameter_declaration "uint line" type_identifier identifier) , (parameter_declaration "char **namep" primitive_type (pointer_declarator "**namep" * (pointer_declarator "*namep" * identifier))) )))) (compound_statement "{\n  undefined *puVar1;\n  macro_entry *macro;\n  hash_control *phVar2;\n  size_t sVar3;\n  int iVar4;\n  char *pcVar5;\n  uint uVar6;\n  void *pvVar7;\n  byte *pbVar8;\n  char *pcVar9;\n  sb name;\n  \n  pcVar9 = (char *)0x0;\n  macro = (macro_entry *)xmalloc(0x24);\n  sb_new((sb *)macro);\n  sb_new(&name);\n  macro->formal_count = 0;\n  macro->file = file;\n  macro->formals = (formal_entry *)0x0;\n  macro->line = line;\n  phVar2 = hash_new_sized(7);\n  macro->formal_hash = phVar2;\n  sVar3 = sb_skip_white(idx,in);\n  iVar4 = buffer_and_nest("MACRO","ENDM",(sb *)macro,get_line);\n  if (iVar4 == 0) {\n    pcVar9 = (char *)dcgettext(0,"unexpected end of file in macro `%s\' definition",5);\n  }\n  if ((label == (sb *)0x0) || (label->len == 0)) {\n    sVar3 = get_token(sVar3,in,(sb *)&in->len,&name);\n    pcVar5 = sb_terminate(&name);\n    macro->name = pcVar5;\n    if (name.len == 0) {\n      pcVar9 = (char *)dcgettext(0,"Missing macro name",5);\n    }\n    uVar6 = sb_skip_white(sVar3,in);\n    sVar3 = sb_skip_comma(uVar6,in);\n    if ((uVar6 == sVar3) || (sVar3 < in->len)) {\n      uVar6 = do_formals(macro,sVar3,in);\n    }\njoined_r0x00029999:\n    if ((pcVar9 == (char *)0x0) && (uVar6 < in->len)) {\n      pcVar9 = (char *)dcgettext(0,"Bad parameter list for macro `%s\'",5);\n    }\n  }\n  else {\n    sb_add_sb(&name,label);\n    pcVar5 = sb_terminate(&name);\n    macro->name = pcVar5;\n    if ((in->len <= sVar3) || (in->ptr[sVar3] != '(')) {\n      uVar6 = do_formals(macro,sVar3,in);\n      goto joined_r0x00029999;\n    }\n    uVar6 = do_formals(macro,sVar3 + 1,in);\n    if ((uVar6 < in->len) && (in->ptr[uVar6] == ')')) {\n      uVar6 = sb_skip_white(uVar6 + 1,in);\n      goto joined_r0x00029999;\n    }\n    if (pcVar9 == (char *)0x0) {\n      pcVar9 = (char *)dcgettext(0,"missing `)\' after formals in macro definition `%s\'",5);\n      goto joined_r0x00029999;\n    }\n  }\n  puVar1 = PTR__sch_tolower_00067fbc;\n  if (name.len != 0) {\n    uVar6 = 0;\n    do {\n      pbVar8 = (byte *)(name.ptr + uVar6);\n      uVar6 = uVar6 + 1;\n      *pbVar8 = puVar1[*pbVar8];\n    } while (uVar6 < name.len);\n  }\n  pvVar7 = hash_find(macro_hash,macro->name);\n  if (pvVar7 != (void *)0x0) {\n    pcVar9 = (char *)dcgettext(0,"Macro `%s\' was already defined",5);\n  }\n  if (pcVar9 == (char *)0x0) {\n    pcVar9 = hash_jam(macro_hash,macro->name,macro);\n    if (namep != (char **)0x0) goto LAB_0002994c;\n  }\n  else {\n    if (namep == (char **)0x0) goto LAB_00029970;\nLAB_0002994c:\n    *namep = macro->name;\n  }\n  if (pcVar9 == (char *)0x0) {\n    macro_defined = 1;\n    return (char *)0x0;\n  }\nLAB_00029970:\n  free_macro(macro);\n  return pcVar9;\n}" { (declaration "undefined *puVar1;" type_identifier (pointer_declarator "*puVar1" * identifier) ;) (declaration "macro_entry *macro;" type_identifier (pointer_declarator "*macro" * identifier) ;) (declaration "hash_control *phVar2;" type_identifier (pointer_declarator "*phVar2" * identifier) ;) (declaration "size_t sVar3;" primitive_type identifier ;) (declaration "int iVar4;" primitive_type identifier ;) (declaration "char *pcVar5;" primitive_type (pointer_declarator "*pcVar5" * identifier) ;) (declaration "uint uVar6;" type_identifier identifier ;) (declaration "void *pvVar7;" primitive_type (pointer_declarator "*pvVar7" * identifier) ;) (declaration "byte *pbVar8;" type_identifier (pointer_declarator "*pbVar8" * identifier) ;) (declaration "char *pcVar9;" primitive_type (pointer_declarator "*pcVar9" * identifier) ;) (declaration "sb name;" type_identifier identifier ;) (expression_statement "pcVar9 = (char *)0x0;" (assignment_expression "pcVar9 = (char *)0x0" identifier = (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "macro = (macro_entry *)xmalloc(0x24);" (assignment_expression "macro = (macro_entry *)xmalloc(0x24)" identifier = (cast_expression "(macro_entry *)xmalloc(0x24)" ( (type_descriptor "macro_entry *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "xmalloc(0x24)" identifier (argument_list "(0x24)" ( number_literal ))))) ;) (expression_statement "sb_new((sb *)macro);" (call_expression "sb_new((sb *)macro)" identifier (argument_list "((sb *)macro)" ( (cast_expression "(sb *)macro" ( (type_descriptor "sb *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) ))) ;) (expression_statement "sb_new(&name);" (call_expression "sb_new(&name)" identifier (argument_list "(&name)" ( (pointer_expression "&name" & identifier) ))) ;) (expression_statement "macro->formal_count = 0;" (assignment_expression "macro->formal_count = 0" (field_expression "macro->formal_count" identifier -> field_identifier) = number_literal) ;) (expression_statement "macro->file = file;" (assignment_expression "macro->file = file" (field_expression "macro->file" identifier -> field_identifier) = identifier) ;) (expression_statement "macro->formals = (formal_entry *)0x0;" (assignment_expression "macro->formals = (formal_entry *)0x0" (field_expression "macro->formals" identifier -> field_identifier) = (cast_expression "(formal_entry *)0x0" ( (type_descriptor "formal_entry *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "macro->line = line;" (assignment_expression "macro->line = line" (field_expression "macro->line" identifier -> field_identifier) = identifier) ;) (expression_statement "phVar2 = hash_new_sized(7);" (assignment_expression "phVar2 = hash_new_sized(7)" identifier = (call_expression "hash_new_sized(7)" identifier (argument_list "(7)" ( number_literal )))) ;) (expression_statement "macro->formal_hash = phVar2;" (assignment_expression "macro->formal_hash = phVar2" (field_expression "macro->formal_hash" identifier -> field_identifier) = identifier) ;) (expression_statement "sVar3 = sb_skip_white(idx,in);" (assignment_expression "sVar3 = sb_skip_white(idx,in)" identifier = (call_expression "sb_skip_white(idx,in)" identifier (argument_list "(idx,in)" ( identifier , identifier )))) ;) (expression_statement "iVar4 = buffer_and_nest("MACRO","ENDM",(sb *)macro,get_line);" (assignment_expression "iVar4 = buffer_and_nest("MACRO","ENDM",(sb *)macro,get_line)" identifier = (call_expression "buffer_and_nest("MACRO","ENDM",(sb *)macro,get_line)" identifier (argument_list "("MACRO","ENDM",(sb *)macro,get_line)" ( (string_literal ""MACRO"" " string_content ") , (string_literal ""ENDM"" " string_content ") , (cast_expression "(sb *)macro" ( (type_descriptor "sb *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) , identifier )))) ;) (if_statement "if (iVar4 == 0) {\n    pcVar9 = (char *)dcgettext(0,"unexpected end of file in macro `%s\' definition",5);\n  }" if (parenthesized_expression "(iVar4 == 0)" ( (binary_expression "iVar4 == 0" identifier == number_literal) )) (compound_statement "{\n    pcVar9 = (char *)dcgettext(0,"unexpected end of file in macro `%s\' definition",5);\n  }" { (expression_statement "pcVar9 = (char *)dcgettext(0,"unexpected end of file in macro `%s\' definition",5);" (assignment_expression "pcVar9 = (char *)dcgettext(0,"unexpected end of file in macro `%s\' definition",5)" identifier = (cast_expression "(char *)dcgettext(0,"unexpected end of file in macro `%s\' definition",5)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "dcgettext(0,"unexpected end of file in macro `%s\' definition",5)" identifier (argument_list "(0,"unexpected end of file in macro `%s\' definition",5)" ( number_literal , (string_literal ""unexpected end of file in macro `%s\' definition"" " string_content escape_sequence string_content ") , number_literal ))))) ;) })) (if_statement "if ((label == (sb *)0x0) || (label->len == 0)) {\n    sVar3 = get_token(sVar3,in,(sb *)&in->len,&name);\n    pcVar5 = sb_terminate(&name);\n    macro->name = pcVar5;\n    if (name.len == 0) {\n      pcVar9 = (char *)dcgettext(0,"Missing macro name",5);\n    }\n    uVar6 = sb_skip_white(sVar3,in);\n    sVar3 = sb_skip_comma(uVar6,in);\n    if ((uVar6 == sVar3) || (sVar3 < in->len)) {\n      uVar6 = do_formals(macro,sVar3,in);\n    }\njoined_r0x00029999:\n    if ((pcVar9 == (char *)0x0) && (uVar6 < in->len)) {\n      pcVar9 = (char *)dcgettext(0,"Bad parameter list for macro `%s\'",5);\n    }\n  }\n  else {\n    sb_add_sb(&name,label);\n    pcVar5 = sb_terminate(&name);\n    macro->name = pcVar5;\n    if ((in->len <= sVar3) || (in->ptr[sVar3] != '(')) {\n      uVar6 = do_formals(macro,sVar3,in);\n      goto joined_r0x00029999;\n    }\n    uVar6 = do_formals(macro,sVar3 + 1,in);\n    if ((uVar6 < in->len) && (in->ptr[uVar6] == ')')) {\n      uVar6 = sb_skip_white(uVar6 + 1,in);\n      goto joined_r0x00029999;\n    }\n    if (pcVar9 == (char *)0x0) {\n      pcVar9 = (char *)dcgettext(0,"missing `)\' after formals in macro definition `%s\'",5);\n      goto joined_r0x00029999;\n    }\n  }" if (parenthesized_expression "((label == (sb *)0x0) || (label->len == 0))" ( (binary_expression "(label == (sb *)0x0) || (label->len == 0)" (parenthesized_expression "(label == (sb *)0x0)" ( (binary_expression "label == (sb *)0x0" identifier == (cast_expression "(sb *)0x0" ( (type_descriptor "sb *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) || (parenthesized_expression "(label->len == 0)" ( (binary_expression "label->len == 0" (field_expression "label->len" identifier -> field_identifier) == number_literal) ))) )) (compound_statement "{\n    sVar3 = get_token(sVar3,in,(sb *)&in->len,&name);\n    pcVar5 = sb_terminate(&name);\n    macro->name = pcVar5;\n    if (name.len == 0) {\n      pcVar9 = (char *)dcgettext(0,"Missing macro name",5);\n    }\n    uVar6 = sb_skip_white(sVar3,in);\n    sVar3 = sb_skip_comma(uVar6,in);\n    if ((uVar6 == sVar3) || (sVar3 < in->len)) {\n      uVar6 = do_formals(macro,sVar3,in);\n    }\njoined_r0x00029999:\n    if ((pcVar9 == (char *)0x0) && (uVar6 < in->len)) {\n      pcVar9 = (char *)dcgettext(0,"Bad parameter list for macro `%s\'",5);\n    }\n  }" { (expression_statement "sVar3 = get_token(sVar3,in,(sb *)&in->len,&name);" (assignment_expression "sVar3 = get_token(sVar3,in,(sb *)&in->len,&name)" identifier = (call_expression "get_token(sVar3,in,(sb *)&in->len,&name)" identifier (argument_list "(sVar3,in,(sb *)&in->len,&name)" ( identifier , identifier , (cast_expression "(sb *)&in->len" ( (type_descriptor "sb *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&in->len" & (field_expression "in->len" identifier -> field_identifier))) , (pointer_expression "&name" & identifier) )))) ;) (expression_statement "pcVar5 = sb_terminate(&name);" (assignment_expression "pcVar5 = sb_terminate(&name)" identifier = (call_expression "sb_terminate(&name)" identifier (argument_list "(&name)" ( (pointer_expression "&name" & identifier) )))) ;) (expression_statement "macro->name = pcVar5;" (assignment_expression "macro->name = pcVar5" (field_expression "macro->name" identifier -> field_identifier) = identifier) ;) (if_statement "if (name.len == 0) {\n      pcVar9 = (char *)dcgettext(0,"Missing macro name",5);\n    }" if (parenthesized_expression "(name.len == 0)" ( (binary_expression "name.len == 0" (field_expression "name.len" identifier . field_identifier) == number_literal) )) (compound_statement "{\n      pcVar9 = (char *)dcgettext(0,"Missing macro name",5);\n    }" { (expression_statement "pcVar9 = (char *)dcgettext(0,"Missing macro name",5);" (assignment_expression "pcVar9 = (char *)dcgettext(0,"Missing macro name",5)" identifier = (cast_expression "(char *)dcgettext(0,"Missing macro name",5)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "dcgettext(0,"Missing macro name",5)" identifier (argument_list "(0,"Missing macro name",5)" ( number_literal , (string_literal ""Missing macro name"" " string_content ") , number_literal ))))) ;) })) (expression_statement "uVar6 = sb_skip_white(sVar3,in);" (assignment_expression "uVar6 = sb_skip_white(sVar3,in)" identifier = (call_expression "sb_skip_white(sVar3,in)" identifier (argument_list "(sVar3,in)" ( identifier , identifier )))) ;) (expression_statement "sVar3 = sb_skip_comma(uVar6,in);" (assignment_expression "sVar3 = sb_skip_comma(uVar6,in)" identifier = (call_expression "sb_skip_comma(uVar6,in)" identifier (argument_list "(uVar6,in)" ( identifier , identifier )))) ;) (if_statement "if ((uVar6 == sVar3) || (sVar3 < in->len)) {\n      uVar6 = do_formals(macro,sVar3,in);\n    }" if (parenthesized_expression "((uVar6 == sVar3) || (sVar3 < in->len))" ( (binary_expression "(uVar6 == sVar3) || (sVar3 < in->len)" (parenthesized_expression "(uVar6 == sVar3)" ( (binary_expression "uVar6 == sVar3" identifier == identifier) )) || (parenthesized_expression "(sVar3 < in->len)" ( (binary_expression "sVar3 < in->len" identifier < (field_expression "in->len" identifier -> field_identifier)) ))) )) (compound_statement "{\n      uVar6 = do_formals(macro,sVar3,in);\n    }" { (expression_statement "uVar6 = do_formals(macro,sVar3,in);" (assignment_expression "uVar6 = do_formals(macro,sVar3,in)" identifier = (call_expression "do_formals(macro,sVar3,in)" identifier (argument_list "(macro,sVar3,in)" ( identifier , identifier , identifier )))) ;) })) (labeled_statement "joined_r0x00029999:\n    if ((pcVar9 == (char *)0x0) && (uVar6 < in->len)) {\n      pcVar9 = (char *)dcgettext(0,"Bad parameter list for macro `%s\'",5);\n    }" statement_identifier : (if_statement "if ((pcVar9 == (char *)0x0) && (uVar6 < in->len)) {\n      pcVar9 = (char *)dcgettext(0,"Bad parameter list for macro `%s\'",5);\n    }" if (parenthesized_expression "((pcVar9 == (char *)0x0) && (uVar6 < in->len))" ( (binary_expression "(pcVar9 == (char *)0x0) && (uVar6 < in->len)" (parenthesized_expression "(pcVar9 == (char *)0x0)" ( (binary_expression "pcVar9 == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) && (parenthesized_expression "(uVar6 < in->len)" ( (binary_expression "uVar6 < in->len" identifier < (field_expression "in->len" identifier -> field_identifier)) ))) )) (compound_statement "{\n      pcVar9 = (char *)dcgettext(0,"Bad parameter list for macro `%s\'",5);\n    }" { (expression_statement "pcVar9 = (char *)dcgettext(0,"Bad parameter list for macro `%s\'",5);" (assignment_expression "pcVar9 = (char *)dcgettext(0,"Bad parameter list for macro `%s\'",5)" identifier = (cast_expression "(char *)dcgettext(0,"Bad parameter list for macro `%s\'",5)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "dcgettext(0,"Bad parameter list for macro `%s\'",5)" identifier (argument_list "(0,"Bad parameter list for macro `%s\'",5)" ( number_literal , (string_literal ""Bad parameter list for macro `%s\'"" " string_content escape_sequence ") , number_literal ))))) ;) }))) }) (else_clause "else {\n    sb_add_sb(&name,label);\n    pcVar5 = sb_terminate(&name);\n    macro->name = pcVar5;\n    if ((in->len <= sVar3) || (in->ptr[sVar3] != '(')) {\n      uVar6 = do_formals(macro,sVar3,in);\n      goto joined_r0x00029999;\n    }\n    uVar6 = do_formals(macro,sVar3 + 1,in);\n    if ((uVar6 < in->len) && (in->ptr[uVar6] == ')')) {\n      uVar6 = sb_skip_white(uVar6 + 1,in);\n      goto joined_r0x00029999;\n    }\n    if (pcVar9 == (char *)0x0) {\n      pcVar9 = (char *)dcgettext(0,"missing `)\' after formals in macro definition `%s\'",5);\n      goto joined_r0x00029999;\n    }\n  }" else (compound_statement "{\n    sb_add_sb(&name,label);\n    pcVar5 = sb_terminate(&name);\n    macro->name = pcVar5;\n    if ((in->len <= sVar3) || (in->ptr[sVar3] != '(')) {\n      uVar6 = do_formals(macro,sVar3,in);\n      goto joined_r0x00029999;\n    }\n    uVar6 = do_formals(macro,sVar3 + 1,in);\n    if ((uVar6 < in->len) && (in->ptr[uVar6] == ')')) {\n      uVar6 = sb_skip_white(uVar6 + 1,in);\n      goto joined_r0x00029999;\n    }\n    if (pcVar9 == (char *)0x0) {\n      pcVar9 = (char *)dcgettext(0,"missing `)\' after formals in macro definition `%s\'",5);\n      goto joined_r0x00029999;\n    }\n  }" { (expression_statement "sb_add_sb(&name,label);" (call_expression "sb_add_sb(&name,label)" identifier (argument_list "(&name,label)" ( (pointer_expression "&name" & identifier) , identifier ))) ;) (expression_statement "pcVar5 = sb_terminate(&name);" (assignment_expression "pcVar5 = sb_terminate(&name)" identifier = (call_expression "sb_terminate(&name)" identifier (argument_list "(&name)" ( (pointer_expression "&name" & identifier) )))) ;) (expression_statement "macro->name = pcVar5;" (assignment_expression "macro->name = pcVar5" (field_expression "macro->name" identifier -> field_identifier) = identifier) ;) (if_statement "if ((in->len <= sVar3) || (in->ptr[sVar3] != '(')) {\n      uVar6 = do_formals(macro,sVar3,in);\n      goto joined_r0x00029999;\n    }" if (parenthesized_expression "((in->len <= sVar3) || (in->ptr[sVar3] != '('))" ( (binary_expression "(in->len <= sVar3) || (in->ptr[sVar3] != '(')" (parenthesized_expression "(in->len <= sVar3)" ( (binary_expression "in->len <= sVar3" (field_expression "in->len" identifier -> field_identifier) <= identifier) )) || (parenthesized_expression "(in->ptr[sVar3] != '(')" ( (binary_expression "in->ptr[sVar3] != '('" (subscript_expression "in->ptr[sVar3]" (field_expression "in->ptr" identifier -> field_identifier) [ identifier ]) != (char_literal "'('" ' character ')) ))) )) (compound_statement "{\n      uVar6 = do_formals(macro,sVar3,in);\n      goto joined_r0x00029999;\n    }" { (expression_statement "uVar6 = do_formals(macro,sVar3,in);" (assignment_expression "uVar6 = do_formals(macro,sVar3,in)" identifier = (call_expression "do_formals(macro,sVar3,in)" identifier (argument_list "(macro,sVar3,in)" ( identifier , identifier , identifier )))) ;) (goto_statement "goto joined_r0x00029999;" goto statement_identifier ;) })) (expression_statement "uVar6 = do_formals(macro,sVar3 + 1,in);" (assignment_expression "uVar6 = do_formals(macro,sVar3 + 1,in)" identifier = (call_expression "do_formals(macro,sVar3 + 1,in)" identifier (argument_list "(macro,sVar3 + 1,in)" ( identifier , (binary_expression "sVar3 + 1" identifier + number_literal) , identifier )))) ;) (if_statement "if ((uVar6 < in->len) && (in->ptr[uVar6] == ')')) {\n      uVar6 = sb_skip_white(uVar6 + 1,in);\n      goto joined_r0x00029999;\n    }" if (parenthesized_expression "((uVar6 < in->len) && (in->ptr[uVar6] == ')'))" ( (binary_expression "(uVar6 < in->len) && (in->ptr[uVar6] == ')')" (parenthesized_expression "(uVar6 < in->len)" ( (binary_expression "uVar6 < in->len" identifier < (field_expression "in->len" identifier -> field_identifier)) )) && (parenthesized_expression "(in->ptr[uVar6] == ')')" ( (binary_expression "in->ptr[uVar6] == ')'" (subscript_expression "in->ptr[uVar6]" (field_expression "in->ptr" identifier -> field_identifier) [ identifier ]) == (char_literal "')'" ' character ')) ))) )) (compound_statement "{\n      uVar6 = sb_skip_white(uVar6 + 1,in);\n      goto joined_r0x00029999;\n    }" { (expression_statement "uVar6 = sb_skip_white(uVar6 + 1,in);" (assignment_expression "uVar6 = sb_skip_white(uVar6 + 1,in)" identifier = (call_expression "sb_skip_white(uVar6 + 1,in)" identifier (argument_list "(uVar6 + 1,in)" ( (binary_expression "uVar6 + 1" identifier + number_literal) , identifier )))) ;) (goto_statement "goto joined_r0x00029999;" goto statement_identifier ;) })) (if_statement "if (pcVar9 == (char *)0x0) {\n      pcVar9 = (char *)dcgettext(0,"missing `)\' after formals in macro definition `%s\'",5);\n      goto joined_r0x00029999;\n    }" if (parenthesized_expression "(pcVar9 == (char *)0x0)" ( (binary_expression "pcVar9 == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      pcVar9 = (char *)dcgettext(0,"missing `)\' after formals in macro definition `%s\'",5);\n      goto joined_r0x00029999;\n    }" { (expression_statement "pcVar9 = (char *)dcgettext(0,"missing `)\' after formals in macro definition `%s\'",5);" (assignment_expression "pcVar9 = (char *)dcgettext(0,"missing `)\' after formals in macro definition `%s\'",5)" identifier = (cast_expression "(char *)dcgettext(0,"missing `)\' after formals in macro definition `%s\'",5)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "dcgettext(0,"missing `)\' after formals in macro definition `%s\'",5)" identifier (argument_list "(0,"missing `)\' after formals in macro definition `%s\'",5)" ( number_literal , (string_literal ""missing `)\' after formals in macro definition `%s\'"" " string_content escape_sequence string_content escape_sequence ") , number_literal ))))) ;) (goto_statement "goto joined_r0x00029999;" goto statement_identifier ;) })) }))) (expression_statement "puVar1 = PTR__sch_tolower_00067fbc;" (assignment_expression "puVar1 = PTR__sch_tolower_00067fbc" identifier = identifier) ;) (if_statement "if (name.len != 0) {\n    uVar6 = 0;\n    do {\n      pbVar8 = (byte *)(name.ptr + uVar6);\n      uVar6 = uVar6 + 1;\n      *pbVar8 = puVar1[*pbVar8];\n    } while (uVar6 < name.len);\n  }" if (parenthesized_expression "(name.len != 0)" ( (binary_expression "name.len != 0" (field_expression "name.len" identifier . field_identifier) != number_literal) )) (compound_statement "{\n    uVar6 = 0;\n    do {\n      pbVar8 = (byte *)(name.ptr + uVar6);\n      uVar6 = uVar6 + 1;\n      *pbVar8 = puVar1[*pbVar8];\n    } while (uVar6 < name.len);\n  }" { (expression_statement "uVar6 = 0;" (assignment_expression "uVar6 = 0" identifier = number_literal) ;) (do_statement "do {\n      pbVar8 = (byte *)(name.ptr + uVar6);\n      uVar6 = uVar6 + 1;\n      *pbVar8 = puVar1[*pbVar8];\n    } while (uVar6 < name.len);" do (compound_statement "{\n      pbVar8 = (byte *)(name.ptr + uVar6);\n      uVar6 = uVar6 + 1;\n      *pbVar8 = puVar1[*pbVar8];\n    }" { (expression_statement "pbVar8 = (byte *)(name.ptr + uVar6);" (assignment_expression "pbVar8 = (byte *)(name.ptr + uVar6)" identifier = (cast_expression "(byte *)(name.ptr + uVar6)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(name.ptr + uVar6)" ( (binary_expression "name.ptr + uVar6" (field_expression "name.ptr" identifier . field_identifier) + identifier) )))) ;) (expression_statement "uVar6 = uVar6 + 1;" (assignment_expression "uVar6 = uVar6 + 1" identifier = (binary_expression "uVar6 + 1" identifier + number_literal)) ;) (expression_statement "*pbVar8 = puVar1[*pbVar8];" (assignment_expression "*pbVar8 = puVar1[*pbVar8]" (pointer_expression "*pbVar8" * identifier) = (subscript_expression "puVar1[*pbVar8]" identifier [ (pointer_expression "*pbVar8" * identifier) ])) ;) }) while (parenthesized_expression "(uVar6 < name.len)" ( (binary_expression "uVar6 < name.len" identifier < (field_expression "name.len" identifier . field_identifier)) )) ;) })) (expression_statement "pvVar7 = hash_find(macro_hash,macro->name);" (assignment_expression "pvVar7 = hash_find(macro_hash,macro->name)" identifier = (call_expression "hash_find(macro_hash,macro->name)" identifier (argument_list "(macro_hash,macro->name)" ( identifier , (field_expression "macro->name" identifier -> field_identifier) )))) ;) (if_statement "if (pvVar7 != (void *)0x0) {\n    pcVar9 = (char *)dcgettext(0,"Macro `%s\' was already defined",5);\n  }" if (parenthesized_expression "(pvVar7 != (void *)0x0)" ( (binary_expression "pvVar7 != (void *)0x0" identifier != (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    pcVar9 = (char *)dcgettext(0,"Macro `%s\' was already defined",5);\n  }" { (expression_statement "pcVar9 = (char *)dcgettext(0,"Macro `%s\' was already defined",5);" (assignment_expression "pcVar9 = (char *)dcgettext(0,"Macro `%s\' was already defined",5)" identifier = (cast_expression "(char *)dcgettext(0,"Macro `%s\' was already defined",5)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "dcgettext(0,"Macro `%s\' was already defined",5)" identifier (argument_list "(0,"Macro `%s\' was already defined",5)" ( number_literal , (string_literal ""Macro `%s\' was already defined"" " string_content escape_sequence string_content ") , number_literal ))))) ;) })) (if_statement "if (pcVar9 == (char *)0x0) {\n    pcVar9 = hash_jam(macro_hash,macro->name,macro);\n    if (namep != (char **)0x0) goto LAB_0002994c;\n  }\n  else {\n    if (namep == (char **)0x0) goto LAB_00029970;\nLAB_0002994c:\n    *namep = macro->name;\n  }" if (parenthesized_expression "(pcVar9 == (char *)0x0)" ( (binary_expression "pcVar9 == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    pcVar9 = hash_jam(macro_hash,macro->name,macro);\n    if (namep != (char **)0x0) goto LAB_0002994c;\n  }" { (expression_statement "pcVar9 = hash_jam(macro_hash,macro->name,macro);" (assignment_expression "pcVar9 = hash_jam(macro_hash,macro->name,macro)" identifier = (call_expression "hash_jam(macro_hash,macro->name,macro)" identifier (argument_list "(macro_hash,macro->name,macro)" ( identifier , (field_expression "macro->name" identifier -> field_identifier) , identifier )))) ;) (if_statement "if (namep != (char **)0x0) goto LAB_0002994c;" if (parenthesized_expression "(namep != (char **)0x0)" ( (binary_expression "namep != (char **)0x0" identifier != (cast_expression "(char **)0x0" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) number_literal)) )) (goto_statement "goto LAB_0002994c;" goto statement_identifier ;)) }) (else_clause "else {\n    if (namep == (char **)0x0) goto LAB_00029970;\nLAB_0002994c:\n    *namep = macro->name;\n  }" else (compound_statement "{\n    if (namep == (char **)0x0) goto LAB_00029970;\nLAB_0002994c:\n    *namep = macro->name;\n  }" { (if_statement "if (namep == (char **)0x0) goto LAB_00029970;" if (parenthesized_expression "(namep == (char **)0x0)" ( (binary_expression "namep == (char **)0x0" identifier == (cast_expression "(char **)0x0" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) number_literal)) )) (goto_statement "goto LAB_00029970;" goto statement_identifier ;)) (labeled_statement "LAB_0002994c:\n    *namep = macro->name;" statement_identifier : (expression_statement "*namep = macro->name;" (assignment_expression "*namep = macro->name" (pointer_expression "*namep" * identifier) = (field_expression "macro->name" identifier -> field_identifier)) ;)) }))) (if_statement "if (pcVar9 == (char *)0x0) {\n    macro_defined = 1;\n    return (char *)0x0;\n  }" if (parenthesized_expression "(pcVar9 == (char *)0x0)" ( (binary_expression "pcVar9 == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    macro_defined = 1;\n    return (char *)0x0;\n  }" { (expression_statement "macro_defined = 1;" (assignment_expression "macro_defined = 1" identifier = number_literal) ;) (return_statement "return (char *)0x0;" return (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal) ;) })) (labeled_statement "LAB_00029970:\n  free_macro(macro);" statement_identifier : (expression_statement "free_macro(macro);" (call_expression "free_macro(macro)" identifier (argument_list "(macro)" ( identifier ))) ;)) (return_statement "return pcVar9;" return identifier ;) })))
(translation_unit "int FUN_000297c0(undefined4 param_1,int *param_2,int param_3,undefined4 param_4,undefined4 param_5,\n                undefined4 param_6,undefined4 *param_7)\n\n{\n  undefined *puVar1;\n  int iVar2;\n  undefined4 uVar3;\n  uint uVar4;\n  int iVar5;\n  undefined4 uVar6;\n  uint uVar7;\n  byte *pbVar8;\n  int iVar9;\n  int local_28;\n  uint local_24;\n  undefined4 uStack_14;\n  \n  iVar9 = 0;\n  uStack_14 = 0x297cb;\n  iVar2 = xmalloc(0x24);\n  FUN_00034180(iVar2);\n  FUN_00034180(&local_28);\n  *(undefined4 *)(iVar2 + 0xc) = 0;\n  *(undefined4 *)(iVar2 + 0x1c) = param_5;\n  *(undefined4 *)(iVar2 + 0x10) = 0;\n  *(undefined4 *)(iVar2 + 0x20) = param_6;\n  uVar3 = FUN_00024010(7);\n  *(undefined4 *)(iVar2 + 0x14) = uVar3;\n  uVar4 = FUN_00034370(param_1,param_2);\n  iVar5 = FUN_000292d0("MACRO",&DAT_0004deda,iVar2,param_4);\n  if (iVar5 == 0) {\n    iVar9 = dcgettext(0,"unexpected end of file in macro `%s\' definition",5);\n  }\n  if ((param_3 == 0) || (*(int *)(param_3 + 4) == 0)) {\n    uVar3 = FUN_00027b70(&local_28);\n    uVar6 = FUN_00034360(&local_28);\n    *(undefined4 *)(iVar2 + 0x18) = uVar6;\n    if (local_24 == 0) {\n      iVar9 = dcgettext(0,"Missing macro name",5);\n    }\n    uVar4 = FUN_00034370(uVar3,param_2);\n    uVar7 = FUN_000343b0(uVar4,param_2);\n    if ((uVar4 == uVar7) || (uVar7 < (uint)param_2[1])) {\n      uVar4 = FUN_00028da0();\n    }\njoined_r0x00029999:\n    if ((iVar9 == 0) && (uVar4 < (uint)param_2[1])) {\n      iVar9 = dcgettext(0,"Bad parameter list for macro `%s\'",5);\n    }\n  }\n  else {\n    FUN_000341e0(&local_28,param_3);\n    uVar3 = FUN_00034360(&local_28);\n    *(undefined4 *)(iVar2 + 0x18) = uVar3;\n    if (((uint)param_2[1] <= uVar4) || (*(char *)(*param_2 + uVar4) != '(')) {\n      uVar4 = FUN_00028da0();\n      goto joined_r0x00029999;\n    }\n    uVar4 = FUN_00028da0();\n    if ((uVar4 < (uint)param_2[1]) && (*(char *)(*param_2 + uVar4) == ')')) {\n      uVar4 = FUN_00034370(uVar4 + 1,param_2);\n      goto joined_r0x00029999;\n    }\n    if (iVar9 == 0) {\n      iVar9 = dcgettext(0,"missing `)\' after formals in macro definition `%s\'",5);\n      goto joined_r0x00029999;\n    }\n  }\n  puVar1 = PTR__sch_tolower_00067fbc;\n  if (local_24 != 0) {\n    uVar4 = 0;\n    do {\n      pbVar8 = (byte *)(local_28 + uVar4);\n      uVar4 = uVar4 + 1;\n      *pbVar8 = puVar1[*pbVar8];\n    } while (uVar4 < local_24);\n  }\n  iVar5 = FUN_000243a0(DAT_00070fc0,*(undefined4 *)(iVar2 + 0x18));\n  if (iVar5 != 0) {\n    iVar9 = dcgettext(0,"Macro `%s\' was already defined",5);\n  }\n  if (iVar9 == 0) {\n    iVar9 = FUN_00024250(DAT_00070fc0,*(undefined4 *)(iVar2 + 0x18),iVar2);\n    if (param_7 != (undefined4 *)0x0) goto LAB_0002994c;\n  }\n  else {\n    if (param_7 == (undefined4 *)0x0) goto LAB_00029970;\nLAB_0002994c:\n    *param_7 = *(undefined4 *)(iVar2 + 0x18);\n  }\n  if (iVar9 == 0) {\n    DAT_00070fbc = 1;\n    return 0;\n  }\nLAB_00029970:\n  FUN_00027b20();\n  return iVar9;\n}\n\n" (function_definition "int FUN_000297c0(undefined4 param_1,int *param_2,int param_3,undefined4 param_4,undefined4 param_5,\n                undefined4 param_6,undefined4 *param_7)\n\n{\n  undefined *puVar1;\n  int iVar2;\n  undefined4 uVar3;\n  uint uVar4;\n  int iVar5;\n  undefined4 uVar6;\n  uint uVar7;\n  byte *pbVar8;\n  int iVar9;\n  int local_28;\n  uint local_24;\n  undefined4 uStack_14;\n  \n  iVar9 = 0;\n  uStack_14 = 0x297cb;\n  iVar2 = xmalloc(0x24);\n  FUN_00034180(iVar2);\n  FUN_00034180(&local_28);\n  *(undefined4 *)(iVar2 + 0xc) = 0;\n  *(undefined4 *)(iVar2 + 0x1c) = param_5;\n  *(undefined4 *)(iVar2 + 0x10) = 0;\n  *(undefined4 *)(iVar2 + 0x20) = param_6;\n  uVar3 = FUN_00024010(7);\n  *(undefined4 *)(iVar2 + 0x14) = uVar3;\n  uVar4 = FUN_00034370(param_1,param_2);\n  iVar5 = FUN_000292d0("MACRO",&DAT_0004deda,iVar2,param_4);\n  if (iVar5 == 0) {\n    iVar9 = dcgettext(0,"unexpected end of file in macro `%s\' definition",5);\n  }\n  if ((param_3 == 0) || (*(int *)(param_3 + 4) == 0)) {\n    uVar3 = FUN_00027b70(&local_28);\n    uVar6 = FUN_00034360(&local_28);\n    *(undefined4 *)(iVar2 + 0x18) = uVar6;\n    if (local_24 == 0) {\n      iVar9 = dcgettext(0,"Missing macro name",5);\n    }\n    uVar4 = FUN_00034370(uVar3,param_2);\n    uVar7 = FUN_000343b0(uVar4,param_2);\n    if ((uVar4 == uVar7) || (uVar7 < (uint)param_2[1])) {\n      uVar4 = FUN_00028da0();\n    }\njoined_r0x00029999:\n    if ((iVar9 == 0) && (uVar4 < (uint)param_2[1])) {\n      iVar9 = dcgettext(0,"Bad parameter list for macro `%s\'",5);\n    }\n  }\n  else {\n    FUN_000341e0(&local_28,param_3);\n    uVar3 = FUN_00034360(&local_28);\n    *(undefined4 *)(iVar2 + 0x18) = uVar3;\n    if (((uint)param_2[1] <= uVar4) || (*(char *)(*param_2 + uVar4) != '(')) {\n      uVar4 = FUN_00028da0();\n      goto joined_r0x00029999;\n    }\n    uVar4 = FUN_00028da0();\n    if ((uVar4 < (uint)param_2[1]) && (*(char *)(*param_2 + uVar4) == ')')) {\n      uVar4 = FUN_00034370(uVar4 + 1,param_2);\n      goto joined_r0x00029999;\n    }\n    if (iVar9 == 0) {\n      iVar9 = dcgettext(0,"missing `)\' after formals in macro definition `%s\'",5);\n      goto joined_r0x00029999;\n    }\n  }\n  puVar1 = PTR__sch_tolower_00067fbc;\n  if (local_24 != 0) {\n    uVar4 = 0;\n    do {\n      pbVar8 = (byte *)(local_28 + uVar4);\n      uVar4 = uVar4 + 1;\n      *pbVar8 = puVar1[*pbVar8];\n    } while (uVar4 < local_24);\n  }\n  iVar5 = FUN_000243a0(DAT_00070fc0,*(undefined4 *)(iVar2 + 0x18));\n  if (iVar5 != 0) {\n    iVar9 = dcgettext(0,"Macro `%s\' was already defined",5);\n  }\n  if (iVar9 == 0) {\n    iVar9 = FUN_00024250(DAT_00070fc0,*(undefined4 *)(iVar2 + 0x18),iVar2);\n    if (param_7 != (undefined4 *)0x0) goto LAB_0002994c;\n  }\n  else {\n    if (param_7 == (undefined4 *)0x0) goto LAB_00029970;\nLAB_0002994c:\n    *param_7 = *(undefined4 *)(iVar2 + 0x18);\n  }\n  if (iVar9 == 0) {\n    DAT_00070fbc = 1;\n    return 0;\n  }\nLAB_00029970:\n  FUN_00027b20();\n  return iVar9;\n}" primitive_type (function_declarator "FUN_000297c0(undefined4 param_1,int *param_2,int param_3,undefined4 param_4,undefined4 param_5,\n                undefined4 param_6,undefined4 *param_7)" identifier (parameter_list "(undefined4 param_1,int *param_2,int param_3,undefined4 param_4,undefined4 param_5,\n                undefined4 param_6,undefined4 *param_7)" ( (parameter_declaration "undefined4 param_1" type_identifier identifier) , (parameter_declaration "int *param_2" primitive_type (pointer_declarator "*param_2" * identifier)) , (parameter_declaration "int param_3" primitive_type identifier) , (parameter_declaration "undefined4 param_4" type_identifier identifier) , (parameter_declaration "undefined4 param_5" type_identifier identifier) , (parameter_declaration "undefined4 param_6" type_identifier identifier) , (parameter_declaration "undefined4 *param_7" type_identifier (pointer_declarator "*param_7" * identifier)) ))) (compound_statement "{\n  undefined *puVar1;\n  int iVar2;\n  undefined4 uVar3;\n  uint uVar4;\n  int iVar5;\n  undefined4 uVar6;\n  uint uVar7;\n  byte *pbVar8;\n  int iVar9;\n  int local_28;\n  uint local_24;\n  undefined4 uStack_14;\n  \n  iVar9 = 0;\n  uStack_14 = 0x297cb;\n  iVar2 = xmalloc(0x24);\n  FUN_00034180(iVar2);\n  FUN_00034180(&local_28);\n  *(undefined4 *)(iVar2 + 0xc) = 0;\n  *(undefined4 *)(iVar2 + 0x1c) = param_5;\n  *(undefined4 *)(iVar2 + 0x10) = 0;\n  *(undefined4 *)(iVar2 + 0x20) = param_6;\n  uVar3 = FUN_00024010(7);\n  *(undefined4 *)(iVar2 + 0x14) = uVar3;\n  uVar4 = FUN_00034370(param_1,param_2);\n  iVar5 = FUN_000292d0("MACRO",&DAT_0004deda,iVar2,param_4);\n  if (iVar5 == 0) {\n    iVar9 = dcgettext(0,"unexpected end of file in macro `%s\' definition",5);\n  }\n  if ((param_3 == 0) || (*(int *)(param_3 + 4) == 0)) {\n    uVar3 = FUN_00027b70(&local_28);\n    uVar6 = FUN_00034360(&local_28);\n    *(undefined4 *)(iVar2 + 0x18) = uVar6;\n    if (local_24 == 0) {\n      iVar9 = dcgettext(0,"Missing macro name",5);\n    }\n    uVar4 = FUN_00034370(uVar3,param_2);\n    uVar7 = FUN_000343b0(uVar4,param_2);\n    if ((uVar4 == uVar7) || (uVar7 < (uint)param_2[1])) {\n      uVar4 = FUN_00028da0();\n    }\njoined_r0x00029999:\n    if ((iVar9 == 0) && (uVar4 < (uint)param_2[1])) {\n      iVar9 = dcgettext(0,"Bad parameter list for macro `%s\'",5);\n    }\n  }\n  else {\n    FUN_000341e0(&local_28,param_3);\n    uVar3 = FUN_00034360(&local_28);\n    *(undefined4 *)(iVar2 + 0x18) = uVar3;\n    if (((uint)param_2[1] <= uVar4) || (*(char *)(*param_2 + uVar4) != '(')) {\n      uVar4 = FUN_00028da0();\n      goto joined_r0x00029999;\n    }\n    uVar4 = FUN_00028da0();\n    if ((uVar4 < (uint)param_2[1]) && (*(char *)(*param_2 + uVar4) == ')')) {\n      uVar4 = FUN_00034370(uVar4 + 1,param_2);\n      goto joined_r0x00029999;\n    }\n    if (iVar9 == 0) {\n      iVar9 = dcgettext(0,"missing `)\' after formals in macro definition `%s\'",5);\n      goto joined_r0x00029999;\n    }\n  }\n  puVar1 = PTR__sch_tolower_00067fbc;\n  if (local_24 != 0) {\n    uVar4 = 0;\n    do {\n      pbVar8 = (byte *)(local_28 + uVar4);\n      uVar4 = uVar4 + 1;\n      *pbVar8 = puVar1[*pbVar8];\n    } while (uVar4 < local_24);\n  }\n  iVar5 = FUN_000243a0(DAT_00070fc0,*(undefined4 *)(iVar2 + 0x18));\n  if (iVar5 != 0) {\n    iVar9 = dcgettext(0,"Macro `%s\' was already defined",5);\n  }\n  if (iVar9 == 0) {\n    iVar9 = FUN_00024250(DAT_00070fc0,*(undefined4 *)(iVar2 + 0x18),iVar2);\n    if (param_7 != (undefined4 *)0x0) goto LAB_0002994c;\n  }\n  else {\n    if (param_7 == (undefined4 *)0x0) goto LAB_00029970;\nLAB_0002994c:\n    *param_7 = *(undefined4 *)(iVar2 + 0x18);\n  }\n  if (iVar9 == 0) {\n    DAT_00070fbc = 1;\n    return 0;\n  }\nLAB_00029970:\n  FUN_00027b20();\n  return iVar9;\n}" { (declaration "undefined *puVar1;" type_identifier (pointer_declarator "*puVar1" * identifier) ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "undefined4 uVar3;" type_identifier identifier ;) (declaration "uint uVar4;" type_identifier identifier ;) (declaration "int iVar5;" primitive_type identifier ;) (declaration "undefined4 uVar6;" type_identifier identifier ;) (declaration "uint uVar7;" type_identifier identifier ;) (declaration "byte *pbVar8;" type_identifier (pointer_declarator "*pbVar8" * identifier) ;) (declaration "int iVar9;" primitive_type identifier ;) (declaration "int local_28;" primitive_type identifier ;) (declaration "uint local_24;" type_identifier identifier ;) (declaration "undefined4 uStack_14;" type_identifier identifier ;) (expression_statement "iVar9 = 0;" (assignment_expression "iVar9 = 0" identifier = number_literal) ;) (expression_statement "uStack_14 = 0x297cb;" (assignment_expression "uStack_14 = 0x297cb" identifier = number_literal) ;) (expression_statement "iVar2 = xmalloc(0x24);" (assignment_expression "iVar2 = xmalloc(0x24)" identifier = (call_expression "xmalloc(0x24)" identifier (argument_list "(0x24)" ( number_literal )))) ;) (expression_statement "FUN_00034180(iVar2);" (call_expression "FUN_00034180(iVar2)" identifier (argument_list "(iVar2)" ( identifier ))) ;) (expression_statement "FUN_00034180(&local_28);" (call_expression "FUN_00034180(&local_28)" identifier (argument_list "(&local_28)" ( (pointer_expression "&local_28" & identifier) ))) ;) (expression_statement "*(undefined4 *)(iVar2 + 0xc) = 0;" (assignment_expression "*(undefined4 *)(iVar2 + 0xc) = 0" (pointer_expression "*(undefined4 *)(iVar2 + 0xc)" * (cast_expression "(undefined4 *)(iVar2 + 0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 0xc)" ( (binary_expression "iVar2 + 0xc" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined4 *)(iVar2 + 0x1c) = param_5;" (assignment_expression "*(undefined4 *)(iVar2 + 0x1c) = param_5" (pointer_expression "*(undefined4 *)(iVar2 + 0x1c)" * (cast_expression "(undefined4 *)(iVar2 + 0x1c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 0x1c)" ( (binary_expression "iVar2 + 0x1c" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(iVar2 + 0x10) = 0;" (assignment_expression "*(undefined4 *)(iVar2 + 0x10) = 0" (pointer_expression "*(undefined4 *)(iVar2 + 0x10)" * (cast_expression "(undefined4 *)(iVar2 + 0x10)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 0x10)" ( (binary_expression "iVar2 + 0x10" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined4 *)(iVar2 + 0x20) = param_6;" (assignment_expression "*(undefined4 *)(iVar2 + 0x20) = param_6" (pointer_expression "*(undefined4 *)(iVar2 + 0x20)" * (cast_expression "(undefined4 *)(iVar2 + 0x20)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 0x20)" ( (binary_expression "iVar2 + 0x20" identifier + number_literal) )))) = identifier) ;) (expression_statement "uVar3 = FUN_00024010(7);" (assignment_expression "uVar3 = FUN_00024010(7)" identifier = (call_expression "FUN_00024010(7)" identifier (argument_list "(7)" ( number_literal )))) ;) (expression_statement "*(undefined4 *)(iVar2 + 0x14) = uVar3;" (assignment_expression "*(undefined4 *)(iVar2 + 0x14) = uVar3" (pointer_expression "*(undefined4 *)(iVar2 + 0x14)" * (cast_expression "(undefined4 *)(iVar2 + 0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 0x14)" ( (binary_expression "iVar2 + 0x14" identifier + number_literal) )))) = identifier) ;) (expression_statement "uVar4 = FUN_00034370(param_1,param_2);" (assignment_expression "uVar4 = FUN_00034370(param_1,param_2)" identifier = (call_expression "FUN_00034370(param_1,param_2)" identifier (argument_list "(param_1,param_2)" ( identifier , identifier )))) ;) (expression_statement "iVar5 = FUN_000292d0("MACRO",&DAT_0004deda,iVar2,param_4);" (assignment_expression "iVar5 = FUN_000292d0("MACRO",&DAT_0004deda,iVar2,param_4)" identifier = (call_expression "FUN_000292d0("MACRO",&DAT_0004deda,iVar2,param_4)" identifier (argument_list "("MACRO",&DAT_0004deda,iVar2,param_4)" ( (string_literal ""MACRO"" " string_content ") , (pointer_expression "&DAT_0004deda" & identifier) , identifier , identifier )))) ;) (if_statement "if (iVar5 == 0) {\n    iVar9 = dcgettext(0,"unexpected end of file in macro `%s\' definition",5);\n  }" if (parenthesized_expression "(iVar5 == 0)" ( (binary_expression "iVar5 == 0" identifier == number_literal) )) (compound_statement "{\n    iVar9 = dcgettext(0,"unexpected end of file in macro `%s\' definition",5);\n  }" { (expression_statement "iVar9 = dcgettext(0,"unexpected end of file in macro `%s\' definition",5);" (assignment_expression "iVar9 = dcgettext(0,"unexpected end of file in macro `%s\' definition",5)" identifier = (call_expression "dcgettext(0,"unexpected end of file in macro `%s\' definition",5)" identifier (argument_list "(0,"unexpected end of file in macro `%s\' definition",5)" ( number_literal , (string_literal ""unexpected end of file in macro `%s\' definition"" " string_content escape_sequence string_content ") , number_literal )))) ;) })) (if_statement "if ((param_3 == 0) || (*(int *)(param_3 + 4) == 0)) {\n    uVar3 = FUN_00027b70(&local_28);\n    uVar6 = FUN_00034360(&local_28);\n    *(undefined4 *)(iVar2 + 0x18) = uVar6;\n    if (local_24 == 0) {\n      iVar9 = dcgettext(0,"Missing macro name",5);\n    }\n    uVar4 = FUN_00034370(uVar3,param_2);\n    uVar7 = FUN_000343b0(uVar4,param_2);\n    if ((uVar4 == uVar7) || (uVar7 < (uint)param_2[1])) {\n      uVar4 = FUN_00028da0();\n    }\njoined_r0x00029999:\n    if ((iVar9 == 0) && (uVar4 < (uint)param_2[1])) {\n      iVar9 = dcgettext(0,"Bad parameter list for macro `%s\'",5);\n    }\n  }\n  else {\n    FUN_000341e0(&local_28,param_3);\n    uVar3 = FUN_00034360(&local_28);\n    *(undefined4 *)(iVar2 + 0x18) = uVar3;\n    if (((uint)param_2[1] <= uVar4) || (*(char *)(*param_2 + uVar4) != '(')) {\n      uVar4 = FUN_00028da0();\n      goto joined_r0x00029999;\n    }\n    uVar4 = FUN_00028da0();\n    if ((uVar4 < (uint)param_2[1]) && (*(char *)(*param_2 + uVar4) == ')')) {\n      uVar4 = FUN_00034370(uVar4 + 1,param_2);\n      goto joined_r0x00029999;\n    }\n    if (iVar9 == 0) {\n      iVar9 = dcgettext(0,"missing `)\' after formals in macro definition `%s\'",5);\n      goto joined_r0x00029999;\n    }\n  }" if (parenthesized_expression "((param_3 == 0) || (*(int *)(param_3 + 4) == 0))" ( (binary_expression "(param_3 == 0) || (*(int *)(param_3 + 4) == 0)" (parenthesized_expression "(param_3 == 0)" ( (binary_expression "param_3 == 0" identifier == number_literal) )) || (parenthesized_expression "(*(int *)(param_3 + 4) == 0)" ( (binary_expression "*(int *)(param_3 + 4) == 0" (pointer_expression "*(int *)(param_3 + 4)" * (cast_expression "(int *)(param_3 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 4)" ( (binary_expression "param_3 + 4" identifier + number_literal) )))) == number_literal) ))) )) (compound_statement "{\n    uVar3 = FUN_00027b70(&local_28);\n    uVar6 = FUN_00034360(&local_28);\n    *(undefined4 *)(iVar2 + 0x18) = uVar6;\n    if (local_24 == 0) {\n      iVar9 = dcgettext(0,"Missing macro name",5);\n    }\n    uVar4 = FUN_00034370(uVar3,param_2);\n    uVar7 = FUN_000343b0(uVar4,param_2);\n    if ((uVar4 == uVar7) || (uVar7 < (uint)param_2[1])) {\n      uVar4 = FUN_00028da0();\n    }\njoined_r0x00029999:\n    if ((iVar9 == 0) && (uVar4 < (uint)param_2[1])) {\n      iVar9 = dcgettext(0,"Bad parameter list for macro `%s\'",5);\n    }\n  }" { (expression_statement "uVar3 = FUN_00027b70(&local_28);" (assignment_expression "uVar3 = FUN_00027b70(&local_28)" identifier = (call_expression "FUN_00027b70(&local_28)" identifier (argument_list "(&local_28)" ( (pointer_expression "&local_28" & identifier) )))) ;) (expression_statement "uVar6 = FUN_00034360(&local_28);" (assignment_expression "uVar6 = FUN_00034360(&local_28)" identifier = (call_expression "FUN_00034360(&local_28)" identifier (argument_list "(&local_28)" ( (pointer_expression "&local_28" & identifier) )))) ;) (expression_statement "*(undefined4 *)(iVar2 + 0x18) = uVar6;" (assignment_expression "*(undefined4 *)(iVar2 + 0x18) = uVar6" (pointer_expression "*(undefined4 *)(iVar2 + 0x18)" * (cast_expression "(undefined4 *)(iVar2 + 0x18)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 0x18)" ( (binary_expression "iVar2 + 0x18" identifier + number_literal) )))) = identifier) ;) (if_statement "if (local_24 == 0) {\n      iVar9 = dcgettext(0,"Missing macro name",5);\n    }" if (parenthesized_expression "(local_24 == 0)" ( (binary_expression "local_24 == 0" identifier == number_literal) )) (compound_statement "{\n      iVar9 = dcgettext(0,"Missing macro name",5);\n    }" { (expression_statement "iVar9 = dcgettext(0,"Missing macro name",5);" (assignment_expression "iVar9 = dcgettext(0,"Missing macro name",5)" identifier = (call_expression "dcgettext(0,"Missing macro name",5)" identifier (argument_list "(0,"Missing macro name",5)" ( number_literal , (string_literal ""Missing macro name"" " string_content ") , number_literal )))) ;) })) (expression_statement "uVar4 = FUN_00034370(uVar3,param_2);" (assignment_expression "uVar4 = FUN_00034370(uVar3,param_2)" identifier = (call_expression "FUN_00034370(uVar3,param_2)" identifier (argument_list "(uVar3,param_2)" ( identifier , identifier )))) ;) (expression_statement "uVar7 = FUN_000343b0(uVar4,param_2);" (assignment_expression "uVar7 = FUN_000343b0(uVar4,param_2)" identifier = (call_expression "FUN_000343b0(uVar4,param_2)" identifier (argument_list "(uVar4,param_2)" ( identifier , identifier )))) ;) (if_statement "if ((uVar4 == uVar7) || (uVar7 < (uint)param_2[1])) {\n      uVar4 = FUN_00028da0();\n    }" if (parenthesized_expression "((uVar4 == uVar7) || (uVar7 < (uint)param_2[1]))" ( (binary_expression "(uVar4 == uVar7) || (uVar7 < (uint)param_2[1])" (parenthesized_expression "(uVar4 == uVar7)" ( (binary_expression "uVar4 == uVar7" identifier == identifier) )) || (parenthesized_expression "(uVar7 < (uint)param_2[1])" ( (binary_expression "uVar7 < (uint)param_2[1]" identifier < (cast_expression "(uint)param_2[1]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "param_2[1]" identifier [ number_literal ]))) ))) )) (compound_statement "{\n      uVar4 = FUN_00028da0();\n    }" { (expression_statement "uVar4 = FUN_00028da0();" (assignment_expression "uVar4 = FUN_00028da0()" identifier = (call_expression "FUN_00028da0()" identifier (argument_list "()" ( )))) ;) })) (labeled_statement "joined_r0x00029999:\n    if ((iVar9 == 0) && (uVar4 < (uint)param_2[1])) {\n      iVar9 = dcgettext(0,"Bad parameter list for macro `%s\'",5);\n    }" statement_identifier : (if_statement "if ((iVar9 == 0) && (uVar4 < (uint)param_2[1])) {\n      iVar9 = dcgettext(0,"Bad parameter list for macro `%s\'",5);\n    }" if (parenthesized_expression "((iVar9 == 0) && (uVar4 < (uint)param_2[1]))" ( (binary_expression "(iVar9 == 0) && (uVar4 < (uint)param_2[1])" (parenthesized_expression "(iVar9 == 0)" ( (binary_expression "iVar9 == 0" identifier == number_literal) )) && (parenthesized_expression "(uVar4 < (uint)param_2[1])" ( (binary_expression "uVar4 < (uint)param_2[1]" identifier < (cast_expression "(uint)param_2[1]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "param_2[1]" identifier [ number_literal ]))) ))) )) (compound_statement "{\n      iVar9 = dcgettext(0,"Bad parameter list for macro `%s\'",5);\n    }" { (expression_statement "iVar9 = dcgettext(0,"Bad parameter list for macro `%s\'",5);" (assignment_expression "iVar9 = dcgettext(0,"Bad parameter list for macro `%s\'",5)" identifier = (call_expression "dcgettext(0,"Bad parameter list for macro `%s\'",5)" identifier (argument_list "(0,"Bad parameter list for macro `%s\'",5)" ( number_literal , (string_literal ""Bad parameter list for macro `%s\'"" " string_content escape_sequence ") , number_literal )))) ;) }))) }) (else_clause "else {\n    FUN_000341e0(&local_28,param_3);\n    uVar3 = FUN_00034360(&local_28);\n    *(undefined4 *)(iVar2 + 0x18) = uVar3;\n    if (((uint)param_2[1] <= uVar4) || (*(char *)(*param_2 + uVar4) != '(')) {\n      uVar4 = FUN_00028da0();\n      goto joined_r0x00029999;\n    }\n    uVar4 = FUN_00028da0();\n    if ((uVar4 < (uint)param_2[1]) && (*(char *)(*param_2 + uVar4) == ')')) {\n      uVar4 = FUN_00034370(uVar4 + 1,param_2);\n      goto joined_r0x00029999;\n    }\n    if (iVar9 == 0) {\n      iVar9 = dcgettext(0,"missing `)\' after formals in macro definition `%s\'",5);\n      goto joined_r0x00029999;\n    }\n  }" else (compound_statement "{\n    FUN_000341e0(&local_28,param_3);\n    uVar3 = FUN_00034360(&local_28);\n    *(undefined4 *)(iVar2 + 0x18) = uVar3;\n    if (((uint)param_2[1] <= uVar4) || (*(char *)(*param_2 + uVar4) != '(')) {\n      uVar4 = FUN_00028da0();\n      goto joined_r0x00029999;\n    }\n    uVar4 = FUN_00028da0();\n    if ((uVar4 < (uint)param_2[1]) && (*(char *)(*param_2 + uVar4) == ')')) {\n      uVar4 = FUN_00034370(uVar4 + 1,param_2);\n      goto joined_r0x00029999;\n    }\n    if (iVar9 == 0) {\n      iVar9 = dcgettext(0,"missing `)\' after formals in macro definition `%s\'",5);\n      goto joined_r0x00029999;\n    }\n  }" { (expression_statement "FUN_000341e0(&local_28,param_3);" (call_expression "FUN_000341e0(&local_28,param_3)" identifier (argument_list "(&local_28,param_3)" ( (pointer_expression "&local_28" & identifier) , identifier ))) ;) (expression_statement "uVar3 = FUN_00034360(&local_28);" (assignment_expression "uVar3 = FUN_00034360(&local_28)" identifier = (call_expression "FUN_00034360(&local_28)" identifier (argument_list "(&local_28)" ( (pointer_expression "&local_28" & identifier) )))) ;) (expression_statement "*(undefined4 *)(iVar2 + 0x18) = uVar3;" (assignment_expression "*(undefined4 *)(iVar2 + 0x18) = uVar3" (pointer_expression "*(undefined4 *)(iVar2 + 0x18)" * (cast_expression "(undefined4 *)(iVar2 + 0x18)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 0x18)" ( (binary_expression "iVar2 + 0x18" identifier + number_literal) )))) = identifier) ;) (if_statement "if (((uint)param_2[1] <= uVar4) || (*(char *)(*param_2 + uVar4) != '(')) {\n      uVar4 = FUN_00028da0();\n      goto joined_r0x00029999;\n    }" if (parenthesized_expression "(((uint)param_2[1] <= uVar4) || (*(char *)(*param_2 + uVar4) != '('))" ( (binary_expression "((uint)param_2[1] <= uVar4) || (*(char *)(*param_2 + uVar4) != '(')" (parenthesized_expression "((uint)param_2[1] <= uVar4)" ( (binary_expression "(uint)param_2[1] <= uVar4" (cast_expression "(uint)param_2[1]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "param_2[1]" identifier [ number_literal ])) <= identifier) )) || (parenthesized_expression "(*(char *)(*param_2 + uVar4) != '(')" ( (binary_expression "*(char *)(*param_2 + uVar4) != '('" (pointer_expression "*(char *)(*param_2 + uVar4)" * (cast_expression "(char *)(*param_2 + uVar4)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*param_2 + uVar4)" ( (binary_expression "*param_2 + uVar4" (pointer_expression "*param_2" * identifier) + identifier) )))) != (char_literal "'('" ' character ')) ))) )) (compound_statement "{\n      uVar4 = FUN_00028da0();\n      goto joined_r0x00029999;\n    }" { (expression_statement "uVar4 = FUN_00028da0();" (assignment_expression "uVar4 = FUN_00028da0()" identifier = (call_expression "FUN_00028da0()" identifier (argument_list "()" ( )))) ;) (goto_statement "goto joined_r0x00029999;" goto statement_identifier ;) })) (expression_statement "uVar4 = FUN_00028da0();" (assignment_expression "uVar4 = FUN_00028da0()" identifier = (call_expression "FUN_00028da0()" identifier (argument_list "()" ( )))) ;) (if_statement "if ((uVar4 < (uint)param_2[1]) && (*(char *)(*param_2 + uVar4) == ')')) {\n      uVar4 = FUN_00034370(uVar4 + 1,param_2);\n      goto joined_r0x00029999;\n    }" if (parenthesized_expression "((uVar4 < (uint)param_2[1]) && (*(char *)(*param_2 + uVar4) == ')'))" ( (binary_expression "(uVar4 < (uint)param_2[1]) && (*(char *)(*param_2 + uVar4) == ')')" (parenthesized_expression "(uVar4 < (uint)param_2[1])" ( (binary_expression "uVar4 < (uint)param_2[1]" identifier < (cast_expression "(uint)param_2[1]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "param_2[1]" identifier [ number_literal ]))) )) && (parenthesized_expression "(*(char *)(*param_2 + uVar4) == ')')" ( (binary_expression "*(char *)(*param_2 + uVar4) == ')'" (pointer_expression "*(char *)(*param_2 + uVar4)" * (cast_expression "(char *)(*param_2 + uVar4)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*param_2 + uVar4)" ( (binary_expression "*param_2 + uVar4" (pointer_expression "*param_2" * identifier) + identifier) )))) == (char_literal "')'" ' character ')) ))) )) (compound_statement "{\n      uVar4 = FUN_00034370(uVar4 + 1,param_2);\n      goto joined_r0x00029999;\n    }" { (expression_statement "uVar4 = FUN_00034370(uVar4 + 1,param_2);" (assignment_expression "uVar4 = FUN_00034370(uVar4 + 1,param_2)" identifier = (call_expression "FUN_00034370(uVar4 + 1,param_2)" identifier (argument_list "(uVar4 + 1,param_2)" ( (binary_expression "uVar4 + 1" identifier + number_literal) , identifier )))) ;) (goto_statement "goto joined_r0x00029999;" goto statement_identifier ;) })) (if_statement "if (iVar9 == 0) {\n      iVar9 = dcgettext(0,"missing `)\' after formals in macro definition `%s\'",5);\n      goto joined_r0x00029999;\n    }" if (parenthesized_expression "(iVar9 == 0)" ( (binary_expression "iVar9 == 0" identifier == number_literal) )) (compound_statement "{\n      iVar9 = dcgettext(0,"missing `)\' after formals in macro definition `%s\'",5);\n      goto joined_r0x00029999;\n    }" { (expression_statement "iVar9 = dcgettext(0,"missing `)\' after formals in macro definition `%s\'",5);" (assignment_expression "iVar9 = dcgettext(0,"missing `)\' after formals in macro definition `%s\'",5)" identifier = (call_expression "dcgettext(0,"missing `)\' after formals in macro definition `%s\'",5)" identifier (argument_list "(0,"missing `)\' after formals in macro definition `%s\'",5)" ( number_literal , (string_literal ""missing `)\' after formals in macro definition `%s\'"" " string_content escape_sequence string_content escape_sequence ") , number_literal )))) ;) (goto_statement "goto joined_r0x00029999;" goto statement_identifier ;) })) }))) (expression_statement "puVar1 = PTR__sch_tolower_00067fbc;" (assignment_expression "puVar1 = PTR__sch_tolower_00067fbc" identifier = identifier) ;) (if_statement "if (local_24 != 0) {\n    uVar4 = 0;\n    do {\n      pbVar8 = (byte *)(local_28 + uVar4);\n      uVar4 = uVar4 + 1;\n      *pbVar8 = puVar1[*pbVar8];\n    } while (uVar4 < local_24);\n  }" if (parenthesized_expression "(local_24 != 0)" ( (binary_expression "local_24 != 0" identifier != number_literal) )) (compound_statement "{\n    uVar4 = 0;\n    do {\n      pbVar8 = (byte *)(local_28 + uVar4);\n      uVar4 = uVar4 + 1;\n      *pbVar8 = puVar1[*pbVar8];\n    } while (uVar4 < local_24);\n  }" { (expression_statement "uVar4 = 0;" (assignment_expression "uVar4 = 0" identifier = number_literal) ;) (do_statement "do {\n      pbVar8 = (byte *)(local_28 + uVar4);\n      uVar4 = uVar4 + 1;\n      *pbVar8 = puVar1[*pbVar8];\n    } while (uVar4 < local_24);" do (compound_statement "{\n      pbVar8 = (byte *)(local_28 + uVar4);\n      uVar4 = uVar4 + 1;\n      *pbVar8 = puVar1[*pbVar8];\n    }" { (expression_statement "pbVar8 = (byte *)(local_28 + uVar4);" (assignment_expression "pbVar8 = (byte *)(local_28 + uVar4)" identifier = (cast_expression "(byte *)(local_28 + uVar4)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_28 + uVar4)" ( (binary_expression "local_28 + uVar4" identifier + identifier) )))) ;) (expression_statement "uVar4 = uVar4 + 1;" (assignment_expression "uVar4 = uVar4 + 1" identifier = (binary_expression "uVar4 + 1" identifier + number_literal)) ;) (expression_statement "*pbVar8 = puVar1[*pbVar8];" (assignment_expression "*pbVar8 = puVar1[*pbVar8]" (pointer_expression "*pbVar8" * identifier) = (subscript_expression "puVar1[*pbVar8]" identifier [ (pointer_expression "*pbVar8" * identifier) ])) ;) }) while (parenthesized_expression "(uVar4 < local_24)" ( (binary_expression "uVar4 < local_24" identifier < identifier) )) ;) })) (expression_statement "iVar5 = FUN_000243a0(DAT_00070fc0,*(undefined4 *)(iVar2 + 0x18));" (assignment_expression "iVar5 = FUN_000243a0(DAT_00070fc0,*(undefined4 *)(iVar2 + 0x18))" identifier = (call_expression "FUN_000243a0(DAT_00070fc0,*(undefined4 *)(iVar2 + 0x18))" identifier (argument_list "(DAT_00070fc0,*(undefined4 *)(iVar2 + 0x18))" ( identifier , (pointer_expression "*(undefined4 *)(iVar2 + 0x18)" * (cast_expression "(undefined4 *)(iVar2 + 0x18)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 0x18)" ( (binary_expression "iVar2 + 0x18" identifier + number_literal) )))) )))) ;) (if_statement "if (iVar5 != 0) {\n    iVar9 = dcgettext(0,"Macro `%s\' was already defined",5);\n  }" if (parenthesized_expression "(iVar5 != 0)" ( (binary_expression "iVar5 != 0" identifier != number_literal) )) (compound_statement "{\n    iVar9 = dcgettext(0,"Macro `%s\' was already defined",5);\n  }" { (expression_statement "iVar9 = dcgettext(0,"Macro `%s\' was already defined",5);" (assignment_expression "iVar9 = dcgettext(0,"Macro `%s\' was already defined",5)" identifier = (call_expression "dcgettext(0,"Macro `%s\' was already defined",5)" identifier (argument_list "(0,"Macro `%s\' was already defined",5)" ( number_literal , (string_literal ""Macro `%s\' was already defined"" " string_content escape_sequence string_content ") , number_literal )))) ;) })) (if_statement "if (iVar9 == 0) {\n    iVar9 = FUN_00024250(DAT_00070fc0,*(undefined4 *)(iVar2 + 0x18),iVar2);\n    if (param_7 != (undefined4 *)0x0) goto LAB_0002994c;\n  }\n  else {\n    if (param_7 == (undefined4 *)0x0) goto LAB_00029970;\nLAB_0002994c:\n    *param_7 = *(undefined4 *)(iVar2 + 0x18);\n  }" if (parenthesized_expression "(iVar9 == 0)" ( (binary_expression "iVar9 == 0" identifier == number_literal) )) (compound_statement "{\n    iVar9 = FUN_00024250(DAT_00070fc0,*(undefined4 *)(iVar2 + 0x18),iVar2);\n    if (param_7 != (undefined4 *)0x0) goto LAB_0002994c;\n  }" { (expression_statement "iVar9 = FUN_00024250(DAT_00070fc0,*(undefined4 *)(iVar2 + 0x18),iVar2);" (assignment_expression "iVar9 = FUN_00024250(DAT_00070fc0,*(undefined4 *)(iVar2 + 0x18),iVar2)" identifier = (call_expression "FUN_00024250(DAT_00070fc0,*(undefined4 *)(iVar2 + 0x18),iVar2)" identifier (argument_list "(DAT_00070fc0,*(undefined4 *)(iVar2 + 0x18),iVar2)" ( identifier , (pointer_expression "*(undefined4 *)(iVar2 + 0x18)" * (cast_expression "(undefined4 *)(iVar2 + 0x18)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 0x18)" ( (binary_expression "iVar2 + 0x18" identifier + number_literal) )))) , identifier )))) ;) (if_statement "if (param_7 != (undefined4 *)0x0) goto LAB_0002994c;" if (parenthesized_expression "(param_7 != (undefined4 *)0x0)" ( (binary_expression "param_7 != (undefined4 *)0x0" identifier != (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_0002994c;" goto statement_identifier ;)) }) (else_clause "else {\n    if (param_7 == (undefined4 *)0x0) goto LAB_00029970;\nLAB_0002994c:\n    *param_7 = *(undefined4 *)(iVar2 + 0x18);\n  }" else (compound_statement "{\n    if (param_7 == (undefined4 *)0x0) goto LAB_00029970;\nLAB_0002994c:\n    *param_7 = *(undefined4 *)(iVar2 + 0x18);\n  }" { (if_statement "if (param_7 == (undefined4 *)0x0) goto LAB_00029970;" if (parenthesized_expression "(param_7 == (undefined4 *)0x0)" ( (binary_expression "param_7 == (undefined4 *)0x0" identifier == (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_00029970;" goto statement_identifier ;)) (labeled_statement "LAB_0002994c:\n    *param_7 = *(undefined4 *)(iVar2 + 0x18);" statement_identifier : (expression_statement "*param_7 = *(undefined4 *)(iVar2 + 0x18);" (assignment_expression "*param_7 = *(undefined4 *)(iVar2 + 0x18)" (pointer_expression "*param_7" * identifier) = (pointer_expression "*(undefined4 *)(iVar2 + 0x18)" * (cast_expression "(undefined4 *)(iVar2 + 0x18)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 0x18)" ( (binary_expression "iVar2 + 0x18" identifier + number_literal) ))))) ;)) }))) (if_statement "if (iVar9 == 0) {\n    DAT_00070fbc = 1;\n    return 0;\n  }" if (parenthesized_expression "(iVar9 == 0)" ( (binary_expression "iVar9 == 0" identifier == number_literal) )) (compound_statement "{\n    DAT_00070fbc = 1;\n    return 0;\n  }" { (expression_statement "DAT_00070fbc = 1;" (assignment_expression "DAT_00070fbc = 1" identifier = number_literal) ;) (return_statement "return 0;" return number_literal ;) })) (labeled_statement "LAB_00029970:\n  FUN_00027b20();" statement_identifier : (expression_statement "FUN_00027b20();" (call_expression "FUN_00027b20()" identifier (argument_list "()" ( ))) ;)) (return_statement "return iVar9;" return identifier ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE (pointer_declarator * IDENT)) ))) (compound_statement { (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (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 ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( LIT )))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (expression_statement (call_expression IDENT (argument_list ( (pointer_expression & IDENT) ))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( LIT )))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT )))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (string_literal " string_content ") , (pointer_expression & IDENT) , IDENT , IDENT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( LIT , (string_literal " string_content escape_sequence string_content ") , LIT )))) ;) })) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT == LIT) )) || (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == LIT) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (pointer_expression & IDENT) )))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (pointer_expression & IDENT) )))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( LIT , (string_literal " string_content ") , LIT )))) ;) })) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT )))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT == IDENT) )) || (parenthesized_expression ( (binary_expression IDENT < (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ]))) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) })) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT == LIT) )) && (parenthesized_expression ( (binary_expression IDENT < (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ]))) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( LIT , (string_literal " string_content escape_sequence ") , LIT )))) ;) }))) }) (else_clause else (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (pointer_expression & IDENT) , IDENT ))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (pointer_expression & IDENT) )))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ])) <= IDENT) )) || (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) + IDENT) )))) != (char_literal ' character ')) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT < (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ]))) )) && (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) + IDENT) )))) == (char_literal ' character ')) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (binary_expression IDENT + LIT) , IDENT )))) ;) (goto_statement goto statement_identifier ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( LIT , (string_literal " string_content escape_sequence string_content escape_sequence ") , LIT )))) ;) (goto_statement goto statement_identifier ;) })) }))) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + IDENT) )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (subscript_expression IDENT [ (pointer_expression * IDENT) ])) ;) }) while (parenthesized_expression ( (binary_expression IDENT < IDENT) )) ;) })) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( LIT , (string_literal " string_content escape_sequence string_content ") , LIT )))) ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) , IDENT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (goto_statement goto statement_identifier ;)) }) (else_clause else (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (goto_statement goto statement_identifier ;)) (labeled_statement statement_identifier : (expression_statement (assignment_expression (pointer_expression * IDENT) = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;)) }))) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (return_statement return LIT ;) })) (labeled_statement statement_identifier : (expression_statement (call_expression IDENT (argument_list ( ))) ;)) (return_statement return IDENT ;) })))
(function_definition "int FUN_000297c0(undefined4 param_1,int *param_2,int param_3,undefined4 param_4,undefined4 param_5,\n                undefined4 param_6,undefined4 *param_7)\n\n{\n  undefined *puVar1;\n  int iVar2;\n  undefined4 uVar3;\n  uint uVar4;\n  int iVar5;\n  undefined4 uVar6;\n  uint uVar7;\n  byte *pbVar8;\n  int iVar9;\n  int local_28;\n  uint local_24;\n  undefined4 uStack_14;\n  \n  iVar9 = 0;\n  uStack_14 = 0x297cb;\n  iVar2 = xmalloc(0x24);\n  FUN_00034180(iVar2);\n  FUN_00034180(&local_28);\n  *(undefined4 *)(iVar2 + 0xc) = 0;\n  *(undefined4 *)(iVar2 + 0x1c) = param_5;\n  *(undefined4 *)(iVar2 + 0x10) = 0;\n  *(undefined4 *)(iVar2 + 0x20) = param_6;\n  uVar3 = FUN_00024010(7);\n  *(undefined4 *)(iVar2 + 0x14) = uVar3;\n  uVar4 = FUN_00034370(param_1,param_2);\n  iVar5 = FUN_000292d0("MACRO",&DAT_0004deda,iVar2,param_4);\n  if (iVar5 == 0) {\n    iVar9 = dcgettext(0,"unexpected end of file in macro `%s\' definition",5);\n  }\n  if ((param_3 == 0) || (*(int *)(param_3 + 4) == 0)) {\n    uVar3 = FUN_00027b70(&local_28);\n    uVar6 = FUN_00034360(&local_28);\n    *(undefined4 *)(iVar2 + 0x18) = uVar6;\n    if (local_24 == 0) {\n      iVar9 = dcgettext(0,"Missing macro name",5);\n    }\n    uVar4 = FUN_00034370(uVar3,param_2);\n    uVar7 = FUN_000343b0(uVar4,param_2);\n    if ((uVar4 == uVar7) || (uVar7 < (uint)param_2[1])) {\n      uVar4 = FUN_00028da0();\n    }\njoined_r0x00029999:\n    if ((iVar9 == 0) && (uVar4 < (uint)param_2[1])) {\n      iVar9 = dcgettext(0,"Bad parameter list for macro `%s\'",5);\n    }\n  }\n  else {\n    FUN_000341e0(&local_28,param_3);\n    uVar3 = FUN_00034360(&local_28);\n    *(undefined4 *)(iVar2 + 0x18) = uVar3;\n    if (((uint)param_2[1] <= uVar4) || (*(char *)(*param_2 + uVar4) != '(')) {\n      uVar4 = FUN_00028da0();\n      goto joined_r0x00029999;\n    }\n    uVar4 = FUN_00028da0();\n    if ((uVar4 < (uint)param_2[1]) && (*(char *)(*param_2 + uVar4) == ')')) {\n      uVar4 = FUN_00034370(uVar4 + 1,param_2);\n      goto joined_r0x00029999;\n    }\n    if (iVar9 == 0) {\n      iVar9 = dcgettext(0,"missing `)\' after formals in macro definition `%s\'",5);\n      goto joined_r0x00029999;\n    }\n  }\n  puVar1 = PTR__sch_tolower_00067fbc;\n  if (local_24 != 0) {\n    uVar4 = 0;\n    do {\n      pbVar8 = (byte *)(local_28 + uVar4);\n      uVar4 = uVar4 + 1;\n      *pbVar8 = puVar1[*pbVar8];\n    } while (uVar4 < local_24);\n  }\n  iVar5 = FUN_000243a0(DAT_00070fc0,*(undefined4 *)(iVar2 + 0x18));\n  if (iVar5 != 0) {\n    iVar9 = dcgettext(0,"Macro `%s\' was already defined",5);\n  }\n  if (iVar9 == 0) {\n    iVar9 = FUN_00024250(DAT_00070fc0,*(undefined4 *)(iVar2 + 0x18),iVar2);\n    if (param_7 != (undefined4 *)0x0) goto LAB_0002994c;\n  }\n  else {\n    if (param_7 == (undefined4 *)0x0) goto LAB_00029970;\nLAB_0002994c:\n    *param_7 = *(undefined4 *)(iVar2 + 0x18);\n  }\n  if (iVar9 == 0) {\n    DAT_00070fbc = 1;\n    return 0;\n  }\nLAB_00029970:\n  FUN_00027b20();\n  return iVar9;\n}" (primitive_type "int") (function_declarator "FUN_000297c0(undefined4 param_1,int *param_2,int param_3,undefined4 param_4,undefined4 param_5,\n                undefined4 param_6,undefined4 *param_7)" (identifier "FUN_000297c0") (parameter_list "(undefined4 param_1,int *param_2,int param_3,undefined4 param_4,undefined4 param_5,\n                undefined4 param_6,undefined4 *param_7)" (( "(") (parameter_declaration "undefined4 param_1" (type_identifier "undefined4") (identifier "param_1")) (, ",") (parameter_declaration "int *param_2" (primitive_type "int") (pointer_declarator "*param_2" (* "*") (identifier "param_2"))) (, ",") (parameter_declaration "int param_3" (primitive_type "int") (identifier "param_3")) (, ",") (parameter_declaration "undefined4 param_4" (type_identifier "undefined4") (identifier "param_4")) (, ",") (parameter_declaration "undefined4 param_5" (type_identifier "undefined4") (identifier "param_5")) (, ",") (parameter_declaration "undefined4 param_6" (type_identifier "undefined4") (identifier "param_6")) (, ",") (parameter_declaration "undefined4 *param_7" (type_identifier "undefined4") (pointer_declarator "*param_7" (* "*") (identifier "param_7"))) () ")"))) (compound_statement "{\n  undefined *puVar1;\n  int iVar2;\n  undefined4 uVar3;\n  uint uVar4;\n  int iVar5;\n  undefined4 uVar6;\n  uint uVar7;\n  byte *pbVar8;\n  int iVar9;\n  int local_28;\n  uint local_24;\n  undefined4 uStack_14;\n  \n  iVar9 = 0;\n  uStack_14 = 0x297cb;\n  iVar2 = xmalloc(0x24);\n  FUN_00034180(iVar2);\n  FUN_00034180(&local_28);\n  *(undefined4 *)(iVar2 + 0xc) = 0;\n  *(undefined4 *)(iVar2 + 0x1c) = param_5;\n  *(undefined4 *)(iVar2 + 0x10) = 0;\n  *(undefined4 *)(iVar2 + 0x20) = param_6;\n  uVar3 = FUN_00024010(7);\n  *(undefined4 *)(iVar2 + 0x14) = uVar3;\n  uVar4 = FUN_00034370(param_1,param_2);\n  iVar5 = FUN_000292d0("MACRO",&DAT_0004deda,iVar2,param_4);\n  if (iVar5 == 0) {\n    iVar9 = dcgettext(0,"unexpected end of file in macro `%s\' definition",5);\n  }\n  if ((param_3 == 0) || (*(int *)(param_3 + 4) == 0)) {\n    uVar3 = FUN_00027b70(&local_28);\n    uVar6 = FUN_00034360(&local_28);\n    *(undefined4 *)(iVar2 + 0x18) = uVar6;\n    if (local_24 == 0) {\n      iVar9 = dcgettext(0,"Missing macro name",5);\n    }\n    uVar4 = FUN_00034370(uVar3,param_2);\n    uVar7 = FUN_000343b0(uVar4,param_2);\n    if ((uVar4 == uVar7) || (uVar7 < (uint)param_2[1])) {\n      uVar4 = FUN_00028da0();\n    }\njoined_r0x00029999:\n    if ((iVar9 == 0) && (uVar4 < (uint)param_2[1])) {\n      iVar9 = dcgettext(0,"Bad parameter list for macro `%s\'",5);\n    }\n  }\n  else {\n    FUN_000341e0(&local_28,param_3);\n    uVar3 = FUN_00034360(&local_28);\n    *(undefined4 *)(iVar2 + 0x18) = uVar3;\n    if (((uint)param_2[1] <= uVar4) || (*(char *)(*param_2 + uVar4) != '(')) {\n      uVar4 = FUN_00028da0();\n      goto joined_r0x00029999;\n    }\n    uVar4 = FUN_00028da0();\n    if ((uVar4 < (uint)param_2[1]) && (*(char *)(*param_2 + uVar4) == ')')) {\n      uVar4 = FUN_00034370(uVar4 + 1,param_2);\n      goto joined_r0x00029999;\n    }\n    if (iVar9 == 0) {\n      iVar9 = dcgettext(0,"missing `)\' after formals in macro definition `%s\'",5);\n      goto joined_r0x00029999;\n    }\n  }\n  puVar1 = PTR__sch_tolower_00067fbc;\n  if (local_24 != 0) {\n    uVar4 = 0;\n    do {\n      pbVar8 = (byte *)(local_28 + uVar4);\n      uVar4 = uVar4 + 1;\n      *pbVar8 = puVar1[*pbVar8];\n    } while (uVar4 < local_24);\n  }\n  iVar5 = FUN_000243a0(DAT_00070fc0,*(undefined4 *)(iVar2 + 0x18));\n  if (iVar5 != 0) {\n    iVar9 = dcgettext(0,"Macro `%s\' was already defined",5);\n  }\n  if (iVar9 == 0) {\n    iVar9 = FUN_00024250(DAT_00070fc0,*(undefined4 *)(iVar2 + 0x18),iVar2);\n    if (param_7 != (undefined4 *)0x0) goto LAB_0002994c;\n  }\n  else {\n    if (param_7 == (undefined4 *)0x0) goto LAB_00029970;\nLAB_0002994c:\n    *param_7 = *(undefined4 *)(iVar2 + 0x18);\n  }\n  if (iVar9 == 0) {\n    DAT_00070fbc = 1;\n    return 0;\n  }\nLAB_00029970:\n  FUN_00027b20();\n  return iVar9;\n}" ({ "{") (declaration "undefined *puVar1;" (type_identifier "undefined") (pointer_declarator "*puVar1" (* "*") (identifier "puVar1")) (; ";")) (declaration "int iVar2;" (primitive_type "int") (identifier "iVar2") (; ";")) (declaration "undefined4 uVar3;" (type_identifier "undefined4") (identifier "uVar3") (; ";")) (declaration "uint uVar4;" (type_identifier "uint") (identifier "uVar4") (; ";")) (declaration "int iVar5;" (primitive_type "int") (identifier "iVar5") (; ";")) (declaration "undefined4 uVar6;" (type_identifier "undefined4") (identifier "uVar6") (; ";")) (declaration "uint uVar7;" (type_identifier "uint") (identifier "uVar7") (; ";")) (declaration "byte *pbVar8;" (type_identifier "byte") (pointer_declarator "*pbVar8" (* "*") (identifier "pbVar8")) (; ";")) (declaration "int iVar9;" (primitive_type "int") (identifier "iVar9") (; ";")) (declaration "int local_28;" (primitive_type "int") (identifier "local_28") (; ";")) (declaration "uint local_24;" (type_identifier "uint") (identifier "local_24") (; ";")) (declaration "undefined4 uStack_14;" (type_identifier "undefined4") (identifier "uStack_14") (; ";")) (expression_statement "iVar9 = 0;" (assignment_expression "iVar9 = 0" (identifier "iVar9") (= "=") (number_literal "0")) (; ";")) (expression_statement "uStack_14 = 0x297cb;" (assignment_expression "uStack_14 = 0x297cb" (identifier "uStack_14") (= "=") (number_literal "0x297cb")) (; ";")) (expression_statement "iVar2 = xmalloc(0x24);" (assignment_expression "iVar2 = xmalloc(0x24)" (identifier "iVar2") (= "=") (call_expression "xmalloc(0x24)" (identifier "xmalloc") (argument_list "(0x24)" (( "(") (number_literal "0x24") () ")")))) (; ";")) (expression_statement "FUN_00034180(iVar2);" (call_expression "FUN_00034180(iVar2)" (identifier "FUN_00034180") (argument_list "(iVar2)" (( "(") (identifier "iVar2") () ")"))) (; ";")) (expression_statement "FUN_00034180(&local_28);" (call_expression "FUN_00034180(&local_28)" (identifier "FUN_00034180") (argument_list "(&local_28)" (( "(") (pointer_expression "&local_28" (& "&") (identifier "local_28")) () ")"))) (; ";")) (expression_statement "*(undefined4 *)(iVar2 + 0xc) = 0;" (assignment_expression "*(undefined4 *)(iVar2 + 0xc) = 0" (pointer_expression "*(undefined4 *)(iVar2 + 0xc)" (* "*") (cast_expression "(undefined4 *)(iVar2 + 0xc)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar2 + 0xc)" (( "(") (binary_expression "iVar2 + 0xc" (identifier "iVar2") (+ "+") (number_literal "0xc")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "*(undefined4 *)(iVar2 + 0x1c) = param_5;" (assignment_expression "*(undefined4 *)(iVar2 + 0x1c) = param_5" (pointer_expression "*(undefined4 *)(iVar2 + 0x1c)" (* "*") (cast_expression "(undefined4 *)(iVar2 + 0x1c)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar2 + 0x1c)" (( "(") (binary_expression "iVar2 + 0x1c" (identifier "iVar2") (+ "+") (number_literal "0x1c")) () ")")))) (= "=") (identifier "param_5")) (; ";")) (expression_statement "*(undefined4 *)(iVar2 + 0x10) = 0;" (assignment_expression "*(undefined4 *)(iVar2 + 0x10) = 0" (pointer_expression "*(undefined4 *)(iVar2 + 0x10)" (* "*") (cast_expression "(undefined4 *)(iVar2 + 0x10)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar2 + 0x10)" (( "(") (binary_expression "iVar2 + 0x10" (identifier "iVar2") (+ "+") (number_literal "0x10")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "*(undefined4 *)(iVar2 + 0x20) = param_6;" (assignment_expression "*(undefined4 *)(iVar2 + 0x20) = param_6" (pointer_expression "*(undefined4 *)(iVar2 + 0x20)" (* "*") (cast_expression "(undefined4 *)(iVar2 + 0x20)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar2 + 0x20)" (( "(") (binary_expression "iVar2 + 0x20" (identifier "iVar2") (+ "+") (number_literal "0x20")) () ")")))) (= "=") (identifier "param_6")) (; ";")) (expression_statement "uVar3 = FUN_00024010(7);" (assignment_expression "uVar3 = FUN_00024010(7)" (identifier "uVar3") (= "=") (call_expression "FUN_00024010(7)" (identifier "FUN_00024010") (argument_list "(7)" (( "(") (number_literal "7") () ")")))) (; ";")) (expression_statement "*(undefined4 *)(iVar2 + 0x14) = uVar3;" (assignment_expression "*(undefined4 *)(iVar2 + 0x14) = uVar3" (pointer_expression "*(undefined4 *)(iVar2 + 0x14)" (* "*") (cast_expression "(undefined4 *)(iVar2 + 0x14)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar2 + 0x14)" (( "(") (binary_expression "iVar2 + 0x14" (identifier "iVar2") (+ "+") (number_literal "0x14")) () ")")))) (= "=") (identifier "uVar3")) (; ";")) (expression_statement "uVar4 = FUN_00034370(param_1,param_2);" (assignment_expression "uVar4 = FUN_00034370(param_1,param_2)" (identifier "uVar4") (= "=") (call_expression "FUN_00034370(param_1,param_2)" (identifier "FUN_00034370") (argument_list "(param_1,param_2)" (( "(") (identifier "param_1") (, ",") (identifier "param_2") () ")")))) (; ";")) (expression_statement "iVar5 = FUN_000292d0("MACRO",&DAT_0004deda,iVar2,param_4);" (assignment_expression "iVar5 = FUN_000292d0("MACRO",&DAT_0004deda,iVar2,param_4)" (identifier "iVar5") (= "=") (call_expression "FUN_000292d0("MACRO",&DAT_0004deda,iVar2,param_4)" (identifier "FUN_000292d0") (argument_list "("MACRO",&DAT_0004deda,iVar2,param_4)" (( "(") (string_literal ""MACRO"" (" """) (string_content "MACRO") (" """)) (, ",") (pointer_expression "&DAT_0004deda" (& "&") (identifier "DAT_0004deda")) (, ",") (identifier "iVar2") (, ",") (identifier "param_4") () ")")))) (; ";")) (if_statement "if (iVar5 == 0) {\n    iVar9 = dcgettext(0,"unexpected end of file in macro `%s\' definition",5);\n  }" (if "if") (parenthesized_expression "(iVar5 == 0)" (( "(") (binary_expression "iVar5 == 0" (identifier "iVar5") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n    iVar9 = dcgettext(0,"unexpected end of file in macro `%s\' definition",5);\n  }" ({ "{") (expression_statement "iVar9 = dcgettext(0,"unexpected end of file in macro `%s\' definition",5);" (assignment_expression "iVar9 = dcgettext(0,"unexpected end of file in macro `%s\' definition",5)" (identifier "iVar9") (= "=") (call_expression "dcgettext(0,"unexpected end of file in macro `%s\' definition",5)" (identifier "dcgettext") (argument_list "(0,"unexpected end of file in macro `%s\' definition",5)" (( "(") (number_literal "0") (, ",") (string_literal ""unexpected end of file in macro `%s\' definition"" (" """) (string_content "unexpected end of file in macro `%s") (escape_sequence "\'") (string_content " definition") (" """)) (, ",") (number_literal "5") () ")")))) (; ";")) (} "}"))) (if_statement "if ((param_3 == 0) || (*(int *)(param_3 + 4) == 0)) {\n    uVar3 = FUN_00027b70(&local_28);\n    uVar6 = FUN_00034360(&local_28);\n    *(undefined4 *)(iVar2 + 0x18) = uVar6;\n    if (local_24 == 0) {\n      iVar9 = dcgettext(0,"Missing macro name",5);\n    }\n    uVar4 = FUN_00034370(uVar3,param_2);\n    uVar7 = FUN_000343b0(uVar4,param_2);\n    if ((uVar4 == uVar7) || (uVar7 < (uint)param_2[1])) {\n      uVar4 = FUN_00028da0();\n    }\njoined_r0x00029999:\n    if ((iVar9 == 0) && (uVar4 < (uint)param_2[1])) {\n      iVar9 = dcgettext(0,"Bad parameter list for macro `%s\'",5);\n    }\n  }\n  else {\n    FUN_000341e0(&local_28,param_3);\n    uVar3 = FUN_00034360(&local_28);\n    *(undefined4 *)(iVar2 + 0x18) = uVar3;\n    if (((uint)param_2[1] <= uVar4) || (*(char *)(*param_2 + uVar4) != '(')) {\n      uVar4 = FUN_00028da0();\n      goto joined_r0x00029999;\n    }\n    uVar4 = FUN_00028da0();\n    if ((uVar4 < (uint)param_2[1]) && (*(char *)(*param_2 + uVar4) == ')')) {\n      uVar4 = FUN_00034370(uVar4 + 1,param_2);\n      goto joined_r0x00029999;\n    }\n    if (iVar9 == 0) {\n      iVar9 = dcgettext(0,"missing `)\' after formals in macro definition `%s\'",5);\n      goto joined_r0x00029999;\n    }\n  }" (if "if") (parenthesized_expression "((param_3 == 0) || (*(int *)(param_3 + 4) == 0))" (( "(") (binary_expression "(param_3 == 0) || (*(int *)(param_3 + 4) == 0)" (parenthesized_expression "(param_3 == 0)" (( "(") (binary_expression "param_3 == 0" (identifier "param_3") (== "==") (number_literal "0")) () ")")) (|| "||") (parenthesized_expression "(*(int *)(param_3 + 4) == 0)" (( "(") (binary_expression "*(int *)(param_3 + 4) == 0" (pointer_expression "*(int *)(param_3 + 4)" (* "*") (cast_expression "(int *)(param_3 + 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_3 + 4)" (( "(") (binary_expression "param_3 + 4" (identifier "param_3") (+ "+") (number_literal "4")) () ")")))) (== "==") (number_literal "0")) () ")"))) () ")")) (compound_statement "{\n    uVar3 = FUN_00027b70(&local_28);\n    uVar6 = FUN_00034360(&local_28);\n    *(undefined4 *)(iVar2 + 0x18) = uVar6;\n    if (local_24 == 0) {\n      iVar9 = dcgettext(0,"Missing macro name",5);\n    }\n    uVar4 = FUN_00034370(uVar3,param_2);\n    uVar7 = FUN_000343b0(uVar4,param_2);\n    if ((uVar4 == uVar7) || (uVar7 < (uint)param_2[1])) {\n      uVar4 = FUN_00028da0();\n    }\njoined_r0x00029999:\n    if ((iVar9 == 0) && (uVar4 < (uint)param_2[1])) {\n      iVar9 = dcgettext(0,"Bad parameter list for macro `%s\'",5);\n    }\n  }" ({ "{") (expression_statement "uVar3 = FUN_00027b70(&local_28);" (assignment_expression "uVar3 = FUN_00027b70(&local_28)" (identifier "uVar3") (= "=") (call_expression "FUN_00027b70(&local_28)" (identifier "FUN_00027b70") (argument_list "(&local_28)" (( "(") (pointer_expression "&local_28" (& "&") (identifier "local_28")) () ")")))) (; ";")) (expression_statement "uVar6 = FUN_00034360(&local_28);" (assignment_expression "uVar6 = FUN_00034360(&local_28)" (identifier "uVar6") (= "=") (call_expression "FUN_00034360(&local_28)" (identifier "FUN_00034360") (argument_list "(&local_28)" (( "(") (pointer_expression "&local_28" (& "&") (identifier "local_28")) () ")")))) (; ";")) (expression_statement "*(undefined4 *)(iVar2 + 0x18) = uVar6;" (assignment_expression "*(undefined4 *)(iVar2 + 0x18) = uVar6" (pointer_expression "*(undefined4 *)(iVar2 + 0x18)" (* "*") (cast_expression "(undefined4 *)(iVar2 + 0x18)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar2 + 0x18)" (( "(") (binary_expression "iVar2 + 0x18" (identifier "iVar2") (+ "+") (number_literal "0x18")) () ")")))) (= "=") (identifier "uVar6")) (; ";")) (if_statement "if (local_24 == 0) {\n      iVar9 = dcgettext(0,"Missing macro name",5);\n    }" (if "if") (parenthesized_expression "(local_24 == 0)" (( "(") (binary_expression "local_24 == 0" (identifier "local_24") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n      iVar9 = dcgettext(0,"Missing macro name",5);\n    }" ({ "{") (expression_statement "iVar9 = dcgettext(0,"Missing macro name",5);" (assignment_expression "iVar9 = dcgettext(0,"Missing macro name",5)" (identifier "iVar9") (= "=") (call_expression "dcgettext(0,"Missing macro name",5)" (identifier "dcgettext") (argument_list "(0,"Missing macro name",5)" (( "(") (number_literal "0") (, ",") (string_literal ""Missing macro name"" (" """) (string_content "Missing macro name") (" """)) (, ",") (number_literal "5") () ")")))) (; ";")) (} "}"))) (expression_statement "uVar4 = FUN_00034370(uVar3,param_2);" (assignment_expression "uVar4 = FUN_00034370(uVar3,param_2)" (identifier "uVar4") (= "=") (call_expression "FUN_00034370(uVar3,param_2)" (identifier "FUN_00034370") (argument_list "(uVar3,param_2)" (( "(") (identifier "uVar3") (, ",") (identifier "param_2") () ")")))) (; ";")) (expression_statement "uVar7 = FUN_000343b0(uVar4,param_2);" (assignment_expression "uVar7 = FUN_000343b0(uVar4,param_2)" (identifier "uVar7") (= "=") (call_expression "FUN_000343b0(uVar4,param_2)" (identifier "FUN_000343b0") (argument_list "(uVar4,param_2)" (( "(") (identifier "uVar4") (, ",") (identifier "param_2") () ")")))) (; ";")) (if_statement "if ((uVar4 == uVar7) || (uVar7 < (uint)param_2[1])) {\n      uVar4 = FUN_00028da0();\n    }" (if "if") (parenthesized_expression "((uVar4 == uVar7) || (uVar7 < (uint)param_2[1]))" (( "(") (binary_expression "(uVar4 == uVar7) || (uVar7 < (uint)param_2[1])" (parenthesized_expression "(uVar4 == uVar7)" (( "(") (binary_expression "uVar4 == uVar7" (identifier "uVar4") (== "==") (identifier "uVar7")) () ")")) (|| "||") (parenthesized_expression "(uVar7 < (uint)param_2[1])" (( "(") (binary_expression "uVar7 < (uint)param_2[1]" (identifier "uVar7") (< "<") (cast_expression "(uint)param_2[1]" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (subscript_expression "param_2[1]" (identifier "param_2") ([ "[") (number_literal "1") (] "]")))) () ")"))) () ")")) (compound_statement "{\n      uVar4 = FUN_00028da0();\n    }" ({ "{") (expression_statement "uVar4 = FUN_00028da0();" (assignment_expression "uVar4 = FUN_00028da0()" (identifier "uVar4") (= "=") (call_expression "FUN_00028da0()" (identifier "FUN_00028da0") (argument_list "()" (( "(") () ")")))) (; ";")) (} "}"))) (labeled_statement "joined_r0x00029999:\n    if ((iVar9 == 0) && (uVar4 < (uint)param_2[1])) {\n      iVar9 = dcgettext(0,"Bad parameter list for macro `%s\'",5);\n    }" (statement_identifier "joined_r0x00029999") (: ":") (if_statement "if ((iVar9 == 0) && (uVar4 < (uint)param_2[1])) {\n      iVar9 = dcgettext(0,"Bad parameter list for macro `%s\'",5);\n    }" (if "if") (parenthesized_expression "((iVar9 == 0) && (uVar4 < (uint)param_2[1]))" (( "(") (binary_expression "(iVar9 == 0) && (uVar4 < (uint)param_2[1])" (parenthesized_expression "(iVar9 == 0)" (( "(") (binary_expression "iVar9 == 0" (identifier "iVar9") (== "==") (number_literal "0")) () ")")) (&& "&&") (parenthesized_expression "(uVar4 < (uint)param_2[1])" (( "(") (binary_expression "uVar4 < (uint)param_2[1]" (identifier "uVar4") (< "<") (cast_expression "(uint)param_2[1]" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (subscript_expression "param_2[1]" (identifier "param_2") ([ "[") (number_literal "1") (] "]")))) () ")"))) () ")")) (compound_statement "{\n      iVar9 = dcgettext(0,"Bad parameter list for macro `%s\'",5);\n    }" ({ "{") (expression_statement "iVar9 = dcgettext(0,"Bad parameter list for macro `%s\'",5);" (assignment_expression "iVar9 = dcgettext(0,"Bad parameter list for macro `%s\'",5)" (identifier "iVar9") (= "=") (call_expression "dcgettext(0,"Bad parameter list for macro `%s\'",5)" (identifier "dcgettext") (argument_list "(0,"Bad parameter list for macro `%s\'",5)" (( "(") (number_literal "0") (, ",") (string_literal ""Bad parameter list for macro `%s\'"" (" """) (string_content "Bad parameter list for macro `%s") (escape_sequence "\'") (" """)) (, ",") (number_literal "5") () ")")))) (; ";")) (} "}")))) (} "}")) (else_clause "else {\n    FUN_000341e0(&local_28,param_3);\n    uVar3 = FUN_00034360(&local_28);\n    *(undefined4 *)(iVar2 + 0x18) = uVar3;\n    if (((uint)param_2[1] <= uVar4) || (*(char *)(*param_2 + uVar4) != '(')) {\n      uVar4 = FUN_00028da0();\n      goto joined_r0x00029999;\n    }\n    uVar4 = FUN_00028da0();\n    if ((uVar4 < (uint)param_2[1]) && (*(char *)(*param_2 + uVar4) == ')')) {\n      uVar4 = FUN_00034370(uVar4 + 1,param_2);\n      goto joined_r0x00029999;\n    }\n    if (iVar9 == 0) {\n      iVar9 = dcgettext(0,"missing `)\' after formals in macro definition `%s\'",5);\n      goto joined_r0x00029999;\n    }\n  }" (else "else") (compound_statement "{\n    FUN_000341e0(&local_28,param_3);\n    uVar3 = FUN_00034360(&local_28);\n    *(undefined4 *)(iVar2 + 0x18) = uVar3;\n    if (((uint)param_2[1] <= uVar4) || (*(char *)(*param_2 + uVar4) != '(')) {\n      uVar4 = FUN_00028da0();\n      goto joined_r0x00029999;\n    }\n    uVar4 = FUN_00028da0();\n    if ((uVar4 < (uint)param_2[1]) && (*(char *)(*param_2 + uVar4) == ')')) {\n      uVar4 = FUN_00034370(uVar4 + 1,param_2);\n      goto joined_r0x00029999;\n    }\n    if (iVar9 == 0) {\n      iVar9 = dcgettext(0,"missing `)\' after formals in macro definition `%s\'",5);\n      goto joined_r0x00029999;\n    }\n  }" ({ "{") (expression_statement "FUN_000341e0(&local_28,param_3);" (call_expression "FUN_000341e0(&local_28,param_3)" (identifier "FUN_000341e0") (argument_list "(&local_28,param_3)" (( "(") (pointer_expression "&local_28" (& "&") (identifier "local_28")) (, ",") (identifier "param_3") () ")"))) (; ";")) (expression_statement "uVar3 = FUN_00034360(&local_28);" (assignment_expression "uVar3 = FUN_00034360(&local_28)" (identifier "uVar3") (= "=") (call_expression "FUN_00034360(&local_28)" (identifier "FUN_00034360") (argument_list "(&local_28)" (( "(") (pointer_expression "&local_28" (& "&") (identifier "local_28")) () ")")))) (; ";")) (expression_statement "*(undefined4 *)(iVar2 + 0x18) = uVar3;" (assignment_expression "*(undefined4 *)(iVar2 + 0x18) = uVar3" (pointer_expression "*(undefined4 *)(iVar2 + 0x18)" (* "*") (cast_expression "(undefined4 *)(iVar2 + 0x18)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar2 + 0x18)" (( "(") (binary_expression "iVar2 + 0x18" (identifier "iVar2") (+ "+") (number_literal "0x18")) () ")")))) (= "=") (identifier "uVar3")) (; ";")) (if_statement "if (((uint)param_2[1] <= uVar4) || (*(char *)(*param_2 + uVar4) != '(')) {\n      uVar4 = FUN_00028da0();\n      goto joined_r0x00029999;\n    }" (if "if") (parenthesized_expression "(((uint)param_2[1] <= uVar4) || (*(char *)(*param_2 + uVar4) != '('))" (( "(") (binary_expression "((uint)param_2[1] <= uVar4) || (*(char *)(*param_2 + uVar4) != '(')" (parenthesized_expression "((uint)param_2[1] <= uVar4)" (( "(") (binary_expression "(uint)param_2[1] <= uVar4" (cast_expression "(uint)param_2[1]" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (subscript_expression "param_2[1]" (identifier "param_2") ([ "[") (number_literal "1") (] "]"))) (<= "<=") (identifier "uVar4")) () ")")) (|| "||") (parenthesized_expression "(*(char *)(*param_2 + uVar4) != '(')" (( "(") (binary_expression "*(char *)(*param_2 + uVar4) != '('" (pointer_expression "*(char *)(*param_2 + uVar4)" (* "*") (cast_expression "(char *)(*param_2 + uVar4)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*param_2 + uVar4)" (( "(") (binary_expression "*param_2 + uVar4" (pointer_expression "*param_2" (* "*") (identifier "param_2")) (+ "+") (identifier "uVar4")) () ")")))) (!= "!=") (char_literal "'('" (' "'") (character "(") (' "'"))) () ")"))) () ")")) (compound_statement "{\n      uVar4 = FUN_00028da0();\n      goto joined_r0x00029999;\n    }" ({ "{") (expression_statement "uVar4 = FUN_00028da0();" (assignment_expression "uVar4 = FUN_00028da0()" (identifier "uVar4") (= "=") (call_expression "FUN_00028da0()" (identifier "FUN_00028da0") (argument_list "()" (( "(") () ")")))) (; ";")) (goto_statement "goto joined_r0x00029999;" (goto "goto") (statement_identifier "joined_r0x00029999") (; ";")) (} "}"))) (expression_statement "uVar4 = FUN_00028da0();" (assignment_expression "uVar4 = FUN_00028da0()" (identifier "uVar4") (= "=") (call_expression "FUN_00028da0()" (identifier "FUN_00028da0") (argument_list "()" (( "(") () ")")))) (; ";")) (if_statement "if ((uVar4 < (uint)param_2[1]) && (*(char *)(*param_2 + uVar4) == ')')) {\n      uVar4 = FUN_00034370(uVar4 + 1,param_2);\n      goto joined_r0x00029999;\n    }" (if "if") (parenthesized_expression "((uVar4 < (uint)param_2[1]) && (*(char *)(*param_2 + uVar4) == ')'))" (( "(") (binary_expression "(uVar4 < (uint)param_2[1]) && (*(char *)(*param_2 + uVar4) == ')')" (parenthesized_expression "(uVar4 < (uint)param_2[1])" (( "(") (binary_expression "uVar4 < (uint)param_2[1]" (identifier "uVar4") (< "<") (cast_expression "(uint)param_2[1]" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (subscript_expression "param_2[1]" (identifier "param_2") ([ "[") (number_literal "1") (] "]")))) () ")")) (&& "&&") (parenthesized_expression "(*(char *)(*param_2 + uVar4) == ')')" (( "(") (binary_expression "*(char *)(*param_2 + uVar4) == ')'" (pointer_expression "*(char *)(*param_2 + uVar4)" (* "*") (cast_expression "(char *)(*param_2 + uVar4)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*param_2 + uVar4)" (( "(") (binary_expression "*param_2 + uVar4" (pointer_expression "*param_2" (* "*") (identifier "param_2")) (+ "+") (identifier "uVar4")) () ")")))) (== "==") (char_literal "')'" (' "'") (character ")") (' "'"))) () ")"))) () ")")) (compound_statement "{\n      uVar4 = FUN_00034370(uVar4 + 1,param_2);\n      goto joined_r0x00029999;\n    }" ({ "{") (expression_statement "uVar4 = FUN_00034370(uVar4 + 1,param_2);" (assignment_expression "uVar4 = FUN_00034370(uVar4 + 1,param_2)" (identifier "uVar4") (= "=") (call_expression "FUN_00034370(uVar4 + 1,param_2)" (identifier "FUN_00034370") (argument_list "(uVar4 + 1,param_2)" (( "(") (binary_expression "uVar4 + 1" (identifier "uVar4") (+ "+") (number_literal "1")) (, ",") (identifier "param_2") () ")")))) (; ";")) (goto_statement "goto joined_r0x00029999;" (goto "goto") (statement_identifier "joined_r0x00029999") (; ";")) (} "}"))) (if_statement "if (iVar9 == 0) {\n      iVar9 = dcgettext(0,"missing `)\' after formals in macro definition `%s\'",5);\n      goto joined_r0x00029999;\n    }" (if "if") (parenthesized_expression "(iVar9 == 0)" (( "(") (binary_expression "iVar9 == 0" (identifier "iVar9") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n      iVar9 = dcgettext(0,"missing `)\' after formals in macro definition `%s\'",5);\n      goto joined_r0x00029999;\n    }" ({ "{") (expression_statement "iVar9 = dcgettext(0,"missing `)\' after formals in macro definition `%s\'",5);" (assignment_expression "iVar9 = dcgettext(0,"missing `)\' after formals in macro definition `%s\'",5)" (identifier "iVar9") (= "=") (call_expression "dcgettext(0,"missing `)\' after formals in macro definition `%s\'",5)" (identifier "dcgettext") (argument_list "(0,"missing `)\' after formals in macro definition `%s\'",5)" (( "(") (number_literal "0") (, ",") (string_literal ""missing `)\' after formals in macro definition `%s\'"" (" """) (string_content "missing `)") (escape_sequence "\'") (string_content " after formals in macro definition `%s") (escape_sequence "\'") (" """)) (, ",") (number_literal "5") () ")")))) (; ";")) (goto_statement "goto joined_r0x00029999;" (goto "goto") (statement_identifier "joined_r0x00029999") (; ";")) (} "}"))) (} "}")))) (expression_statement "puVar1 = PTR__sch_tolower_00067fbc;" (assignment_expression "puVar1 = PTR__sch_tolower_00067fbc" (identifier "puVar1") (= "=") (identifier "PTR__sch_tolower_00067fbc")) (; ";")) (if_statement "if (local_24 != 0) {\n    uVar4 = 0;\n    do {\n      pbVar8 = (byte *)(local_28 + uVar4);\n      uVar4 = uVar4 + 1;\n      *pbVar8 = puVar1[*pbVar8];\n    } while (uVar4 < local_24);\n  }" (if "if") (parenthesized_expression "(local_24 != 0)" (( "(") (binary_expression "local_24 != 0" (identifier "local_24") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n    uVar4 = 0;\n    do {\n      pbVar8 = (byte *)(local_28 + uVar4);\n      uVar4 = uVar4 + 1;\n      *pbVar8 = puVar1[*pbVar8];\n    } while (uVar4 < local_24);\n  }" ({ "{") (expression_statement "uVar4 = 0;" (assignment_expression "uVar4 = 0" (identifier "uVar4") (= "=") (number_literal "0")) (; ";")) (do_statement "do {\n      pbVar8 = (byte *)(local_28 + uVar4);\n      uVar4 = uVar4 + 1;\n      *pbVar8 = puVar1[*pbVar8];\n    } while (uVar4 < local_24);" (do "do") (compound_statement "{\n      pbVar8 = (byte *)(local_28 + uVar4);\n      uVar4 = uVar4 + 1;\n      *pbVar8 = puVar1[*pbVar8];\n    }" ({ "{") (expression_statement "pbVar8 = (byte *)(local_28 + uVar4);" (assignment_expression "pbVar8 = (byte *)(local_28 + uVar4)" (identifier "pbVar8") (= "=") (cast_expression "(byte *)(local_28 + uVar4)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(local_28 + uVar4)" (( "(") (binary_expression "local_28 + uVar4" (identifier "local_28") (+ "+") (identifier "uVar4")) () ")")))) (; ";")) (expression_statement "uVar4 = uVar4 + 1;" (assignment_expression "uVar4 = uVar4 + 1" (identifier "uVar4") (= "=") (binary_expression "uVar4 + 1" (identifier "uVar4") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "*pbVar8 = puVar1[*pbVar8];" (assignment_expression "*pbVar8 = puVar1[*pbVar8]" (pointer_expression "*pbVar8" (* "*") (identifier "pbVar8")) (= "=") (subscript_expression "puVar1[*pbVar8]" (identifier "puVar1") ([ "[") (pointer_expression "*pbVar8" (* "*") (identifier "pbVar8")) (] "]"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(uVar4 < local_24)" (( "(") (binary_expression "uVar4 < local_24" (identifier "uVar4") (< "<") (identifier "local_24")) () ")")) (; ";")) (} "}"))) (expression_statement "iVar5 = FUN_000243a0(DAT_00070fc0,*(undefined4 *)(iVar2 + 0x18));" (assignment_expression "iVar5 = FUN_000243a0(DAT_00070fc0,*(undefined4 *)(iVar2 + 0x18))" (identifier "iVar5") (= "=") (call_expression "FUN_000243a0(DAT_00070fc0,*(undefined4 *)(iVar2 + 0x18))" (identifier "FUN_000243a0") (argument_list "(DAT_00070fc0,*(undefined4 *)(iVar2 + 0x18))" (( "(") (identifier "DAT_00070fc0") (, ",") (pointer_expression "*(undefined4 *)(iVar2 + 0x18)" (* "*") (cast_expression "(undefined4 *)(iVar2 + 0x18)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar2 + 0x18)" (( "(") (binary_expression "iVar2 + 0x18" (identifier "iVar2") (+ "+") (number_literal "0x18")) () ")")))) () ")")))) (; ";")) (if_statement "if (iVar5 != 0) {\n    iVar9 = dcgettext(0,"Macro `%s\' was already defined",5);\n  }" (if "if") (parenthesized_expression "(iVar5 != 0)" (( "(") (binary_expression "iVar5 != 0" (identifier "iVar5") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n    iVar9 = dcgettext(0,"Macro `%s\' was already defined",5);\n  }" ({ "{") (expression_statement "iVar9 = dcgettext(0,"Macro `%s\' was already defined",5);" (assignment_expression "iVar9 = dcgettext(0,"Macro `%s\' was already defined",5)" (identifier "iVar9") (= "=") (call_expression "dcgettext(0,"Macro `%s\' was already defined",5)" (identifier "dcgettext") (argument_list "(0,"Macro `%s\' was already defined",5)" (( "(") (number_literal "0") (, ",") (string_literal ""Macro `%s\' was already defined"" (" """) (string_content "Macro `%s") (escape_sequence "\'") (string_content " was already defined") (" """)) (, ",") (number_literal "5") () ")")))) (; ";")) (} "}"))) (if_statement "if (iVar9 == 0) {\n    iVar9 = FUN_00024250(DAT_00070fc0,*(undefined4 *)(iVar2 + 0x18),iVar2);\n    if (param_7 != (undefined4 *)0x0) goto LAB_0002994c;\n  }\n  else {\n    if (param_7 == (undefined4 *)0x0) goto LAB_00029970;\nLAB_0002994c:\n    *param_7 = *(undefined4 *)(iVar2 + 0x18);\n  }" (if "if") (parenthesized_expression "(iVar9 == 0)" (( "(") (binary_expression "iVar9 == 0" (identifier "iVar9") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n    iVar9 = FUN_00024250(DAT_00070fc0,*(undefined4 *)(iVar2 + 0x18),iVar2);\n    if (param_7 != (undefined4 *)0x0) goto LAB_0002994c;\n  }" ({ "{") (expression_statement "iVar9 = FUN_00024250(DAT_00070fc0,*(undefined4 *)(iVar2 + 0x18),iVar2);" (assignment_expression "iVar9 = FUN_00024250(DAT_00070fc0,*(undefined4 *)(iVar2 + 0x18),iVar2)" (identifier "iVar9") (= "=") (call_expression "FUN_00024250(DAT_00070fc0,*(undefined4 *)(iVar2 + 0x18),iVar2)" (identifier "FUN_00024250") (argument_list "(DAT_00070fc0,*(undefined4 *)(iVar2 + 0x18),iVar2)" (( "(") (identifier "DAT_00070fc0") (, ",") (pointer_expression "*(undefined4 *)(iVar2 + 0x18)" (* "*") (cast_expression "(undefined4 *)(iVar2 + 0x18)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar2 + 0x18)" (( "(") (binary_expression "iVar2 + 0x18" (identifier "iVar2") (+ "+") (number_literal "0x18")) () ")")))) (, ",") (identifier "iVar2") () ")")))) (; ";")) (if_statement "if (param_7 != (undefined4 *)0x0) goto LAB_0002994c;" (if "if") (parenthesized_expression "(param_7 != (undefined4 *)0x0)" (( "(") (binary_expression "param_7 != (undefined4 *)0x0" (identifier "param_7") (!= "!=") (cast_expression "(undefined4 *)0x0" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (goto_statement "goto LAB_0002994c;" (goto "goto") (statement_identifier "LAB_0002994c") (; ";"))) (} "}")) (else_clause "else {\n    if (param_7 == (undefined4 *)0x0) goto LAB_00029970;\nLAB_0002994c:\n    *param_7 = *(undefined4 *)(iVar2 + 0x18);\n  }" (else "else") (compound_statement "{\n    if (param_7 == (undefined4 *)0x0) goto LAB_00029970;\nLAB_0002994c:\n    *param_7 = *(undefined4 *)(iVar2 + 0x18);\n  }" ({ "{") (if_statement "if (param_7 == (undefined4 *)0x0) goto LAB_00029970;" (if "if") (parenthesized_expression "(param_7 == (undefined4 *)0x0)" (( "(") (binary_expression "param_7 == (undefined4 *)0x0" (identifier "param_7") (== "==") (cast_expression "(undefined4 *)0x0" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (goto_statement "goto LAB_00029970;" (goto "goto") (statement_identifier "LAB_00029970") (; ";"))) (labeled_statement "LAB_0002994c:\n    *param_7 = *(undefined4 *)(iVar2 + 0x18);" (statement_identifier "LAB_0002994c") (: ":") (expression_statement "*param_7 = *(undefined4 *)(iVar2 + 0x18);" (assignment_expression "*param_7 = *(undefined4 *)(iVar2 + 0x18)" (pointer_expression "*param_7" (* "*") (identifier "param_7")) (= "=") (pointer_expression "*(undefined4 *)(iVar2 + 0x18)" (* "*") (cast_expression "(undefined4 *)(iVar2 + 0x18)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar2 + 0x18)" (( "(") (binary_expression "iVar2 + 0x18" (identifier "iVar2") (+ "+") (number_literal "0x18")) () ")"))))) (; ";"))) (} "}")))) (if_statement "if (iVar9 == 0) {\n    DAT_00070fbc = 1;\n    return 0;\n  }" (if "if") (parenthesized_expression "(iVar9 == 0)" (( "(") (binary_expression "iVar9 == 0" (identifier "iVar9") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n    DAT_00070fbc = 1;\n    return 0;\n  }" ({ "{") (expression_statement "DAT_00070fbc = 1;" (assignment_expression "DAT_00070fbc = 1" (identifier "DAT_00070fbc") (= "=") (number_literal "1")) (; ";")) (return_statement "return 0;" (return "return") (number_literal "0") (; ";")) (} "}"))) (labeled_statement "LAB_00029970:\n  FUN_00027b20();" (statement_identifier "LAB_00029970") (: ":") (expression_statement "FUN_00027b20();" (call_expression "FUN_00027b20()" (identifier "FUN_00027b20") (argument_list "()" (( "(") () ")"))) (; ";"))) (return_statement "return iVar9;" (return "return") (identifier "iVar9") (; ";")) (} "}")))

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

char * function_1(size_t idx,type_1 *in,type_1 *var_8,type_2 *get_line,char *file,type_3 line,
                   char **var_20)

{
  type_4 *puVar1;
  type_5 *macro;
  type_6 *phVar2;
  size_t var_13;
  int var_6;
  char *pcVar5;
  type_3 var_12;
  void *var_18;
  type_7 *pbVar8;
  char *var_15;
  type_1 name;
  
  var_15 = (char *)0x0;
  macro = (type_5 *)var_1(0x24);
  var_2((type_1 *)macro);
  var_2(&name);
  macro->formal_count = 0;
  macro->file = file;
  macro->formals = (type_8 *)0x0;
  macro->line = line;
  phVar2 = var_3(7);
  macro->formal_hash = phVar2;
  var_13 = var_4(idx,in);
  var_6 = var_5("MACRO","ENDM",(type_1 *)macro,get_line);
  if (var_6 == 0) {
    var_15 = (char *)var_7(0,"unexpected end of file in macro `%s\' definition",5);
  }
  if ((var_8 == (type_1 *)0x0) || (var_8->len == 0)) {
    var_13 = var_9(var_13,in,(type_1 *)&in->len,&name);
    pcVar5 = var_10(&name);
    macro->name = pcVar5;
    if (name.len == 0) {
      var_15 = (char *)var_7(0,"Missing macro name",5);
    }
    var_12 = var_4(var_13,in);
    var_13 = var_11(var_12,in);
    if ((var_12 == var_13) || (var_13 < in->len)) {
      var_12 = var_14(macro,var_13,in);
    }
joined_r0x00029999:
    if ((var_15 == (char *)0x0) && (var_12 < in->len)) {
      var_15 = (char *)var_7(0,"Bad parameter list for macro `%s\'",5);
    }
  }
  else {
    var_16(&name,var_8);
    pcVar5 = var_10(&name);
    macro->name = pcVar5;
    if ((in->len <= var_13) || (in->ptr[var_13] != '(')) {
      var_12 = var_14(macro,var_13,in);
      goto joined_r0x00029999;
    }
    var_12 = var_14(macro,var_13 + 1,in);
    if ((var_12 < in->len) && (in->ptr[var_12] == ')')) {
      var_12 = var_4(var_12 + 1,in);
      goto joined_r0x00029999;
    }
    if (var_15 == (char *)0x0) {
      var_15 = (char *)var_7(0,"missing `)\' after formals in macro definition `%s\'",5);
      goto joined_r0x00029999;
    }
  }
  puVar1 = PTR__sch_tolower_00067fbc;
  if (name.len != 0) {
    var_12 = 0;
    do {
      pbVar8 = (type_7 *)(name.ptr + var_12);
      var_12 = var_12 + 1;
      *pbVar8 = puVar1[*pbVar8];
    } while (var_12 < name.len);
  }
  var_18 = var_17(macro_hash,macro->name);
  if (var_18 != (void *)0x0) {
    var_15 = (char *)var_7(0,"Macro `%s\' was already defined",5);
  }
  if (var_15 == (char *)0x0) {
    var_15 = var_19(macro_hash,macro->name,macro);
    if (var_20 != (char **)0x0) goto LAB_0002994c;
  }
  else {
    if (var_20 == (char **)0x0) goto LAB_00029970;
LAB_0002994c:
    *var_20 = macro->name;
  }
  if (var_15 == (char *)0x0) {
    macro_defined = 1;
    return (char *)0x0;
  }
LAB_00029970:
  var_21(macro);
  return var_15;
}


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

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

int MASKED(undefined4 param_1,int *param_2,int param_3,undefined4 param_4,undefined4 param_5,
                undefined4 param_6,undefined4 *param_7)

{
  undefined *puVar1;
  int iVar2;
  undefined4 uVar3;
  uint uVar4;
  int iVar5;
  undefined4 uVar6;
  uint uVar7;
  byte *pbVar8;
  int iVar9;
  int local_28;
  uint local_24;
  undefined4 uStack_14;
  
  iVar9 = 0;
  uStack_14 = 0x297cb;
  iVar2 = xmalloc(0x24);
  FUN_00034180(iVar2);
  FUN_00034180(&local_28);
  *(undefined4 *)(iVar2 + 0xc) = 0;
  *(undefined4 *)(iVar2 + 0x1c) = param_5;
  *(undefined4 *)(iVar2 + 0x10) = 0;
  *(undefined4 *)(iVar2 + 0x20) = param_6;
  uVar3 = FUN_00024010(7);
  *(undefined4 *)(iVar2 + 0x14) = uVar3;
  uVar4 = FUN_00034370(param_1,param_2);
  iVar5 = FUN_000292d0("MACRO",&DAT_0004deda,iVar2,param_4);
  if (iVar5 == 0) {
    iVar9 = dcgettext(0,"unexpected end of file in macro `%s\' definition",5);
  }
  if ((param_3 == 0) || (*(int *)(param_3 + 4) == 0)) {
    uVar3 = FUN_00027b70(&local_28);
    uVar6 = FUN_00034360(&local_28);
    *(undefined4 *)(iVar2 + 0x18) = uVar6;
    if (local_24 == 0) {
      iVar9 = dcgettext(0,"Missing macro name",5);
    }
    uVar4 = FUN_00034370(uVar3,param_2);
    uVar7 = FUN_000343b0(uVar4,param_2);
    if ((uVar4 == uVar7) || (uVar7 < (uint)param_2[1])) {
      uVar4 = FUN_00028da0();
    }
joined_r0x00029999:
    if ((iVar9 == 0) && (uVar4 < (uint)param_2[1])) {
      iVar9 = dcgettext(0,"Bad parameter list for macro `%s\'",5);
    }
  }
  else {
    FUN_000341e0(&local_28,param_3);
    uVar3 = FUN_00034360(&local_28);
    *(undefined4 *)(iVar2 + 0x18) = uVar3;
    if (((uint)param_2[1] <= uVar4) || (*(char *)(*param_2 + uVar4) != '(')) {
      uVar4 = FUN_00028da0();
      goto joined_r0x00029999;
    }
    uVar4 = FUN_00028da0();
    if ((uVar4 < (uint)param_2[1]) && (*(char *)(*param_2 + uVar4) == ')')) {
      uVar4 = FUN_00034370(uVar4 + 1,param_2);
      goto joined_r0x00029999;
    }
    if (iVar9 == 0) {
      iVar9 = dcgettext(0,"missing `)\' after formals in macro definition `%s\'",5);
      goto joined_r0x00029999;
    }
  }
  puVar1 = PTR__sch_tolower_00067fbc;
  if (local_24 != 0) {
    uVar4 = 0;
    do {
      pbVar8 = (byte *)(local_28 + uVar4);
      uVar4 = uVar4 + 1;
      *pbVar8 = puVar1[*pbVar8];
    } while (uVar4 < local_24);
  }
  iVar5 = FUN_000243a0(DAT_00070fc0,*(undefined4 *)(iVar2 + 0x18));
  if (iVar5 != 0) {
    iVar9 = dcgettext(0,"Macro `%s\' was already defined",5);
  }
  if (iVar9 == 0) {
    iVar9 = FUN_00024250(DAT_00070fc0,*(undefined4 *)(iVar2 + 0x18),iVar2);
    if (param_7 != (undefined4 *)0x0) goto LAB_0002994c;
  }
  else {
    if (param_7 == (undefined4 *)0x0) goto LAB_00029970;
LAB_0002994c:
    *param_7 = *(undefined4 *)(iVar2 + 0x18);
  }
  if (iVar9 == 0) {
    DAT_00070fbc = 1;
    return 0;
  }
LAB_00029970:
  FUN_00027b20();
  return iVar9;
}

