
lang_memory_region_type * lang_memory_region_lookup(char *name,bfd_boolean create)

{
  int iVar1;
  char *pcVar2;
  lang_memory_region_type *plVar3;
  long lVar4;
  memory_region_struct *pmVar5;
  byte *pbVar6;
  byte *pbVar7;
  bool bVar8;
  bool bVar9;
  byte bVar10;
  
  bVar10 = 0;
  if (name == (char *)0x0) {
    plVar3 = (lang_memory_region_type *)0x0;
  }
  else {
    pmVar5 = lang_memory_region_list;
    plVar3 = lang_memory_region_list;
    if (lang_memory_region_list != (lang_memory_region_type *)0x0) {
      do {
        iVar1 = strcmp((pmVar5->name_list).name,name);
        if (iVar1 == 0) {
          if (create == 0) {
            return plVar3;
          }
          pcVar2 = (char *)dcgettext(0,"%P:%pS: warning: redeclaration of memory region `%s\'\n",5);
          einfo(pcVar2,0,name);
          return plVar3;
        }
        pmVar5 = (memory_region_struct *)(pmVar5->name_list).next;
      } while ((pmVar5 != (memory_region_struct *)0x0) ||
              (pmVar5 = plVar3->next, plVar3 = pmVar5, pmVar5 != (memory_region_struct *)0x0));
    }
    bVar8 = false;
    bVar9 = create == 0;
    if (bVar9) {
      lVar4 = 10;
      pbVar6 = (byte *)name;
      pbVar7 = (byte *)"*default*";
      do {
        if (lVar4 == 0) break;
        lVar4 = lVar4 + -1;
        bVar8 = *pbVar6 < *pbVar7;
        bVar9 = *pbVar6 == *pbVar7;
        pbVar6 = pbVar6 + (ulong)bVar10 * -2 + 1;
        pbVar7 = pbVar7 + (ulong)bVar10 * -2 + 1;
      } while (bVar9);
      if ((!bVar8 && !bVar9) != bVar8) {
        pcVar2 = (char *)dcgettext(0,"%P:%pS: warning: memory region `%s\' not declared\n",5);
        einfo(pcVar2,0,name);
      }
    }
    plVar3 = (lang_memory_region_type *)stat_alloc(0x58);
    pcVar2 = (char *)xstrdup(name);
    (plVar3->name_list).next = (memory_region_name_struct *)0x0;
    (plVar3->name_list).name = pcVar2;
    plVar3->next = (memory_region_struct *)0x0;
    plVar3->origin_exp = (etree_union *)0x0;
    plVar3->origin = 0;
    plVar3->length = 0xffffffffffffffff;
    plVar3->length_exp = (etree_union *)0x0;
    plVar3->current = 0;
    plVar3->last_os = (lang_statement_union *)0x0;
    plVar3->flags = 0;
    plVar3->not_flags = 0;
    plVar3->had_full_message = 0;
    *lang_memory_region_list_tail = plVar3;
    lang_memory_region_list_tail = &plVar3->next;
  }
  return plVar3;
}



undefined8 * FUN_00119ea0(byte *param_1,int param_2)

{
  undefined8 *puVar1;
  int iVar2;
  undefined8 uVar3;
  undefined8 *puVar4;
  long lVar5;
  byte *pbVar6;
  byte *pbVar7;
  undefined8 *puVar8;
  bool bVar9;
  bool bVar10;
  byte bVar11;
  
  bVar11 = 0;
  if (param_1 == (byte *)0x0) {
    puVar4 = (undefined8 *)0x0;
  }
  else {
    puVar4 = DAT_002a5298;
    puVar8 = DAT_002a5298;
    if (DAT_002a5298 != (undefined8 *)0x0) {
      do {
        iVar2 = strcmp((char *)*puVar4,(char *)param_1);
        if (iVar2 == 0) {
          if (param_2 == 0) {
            return puVar8;
          }
          uVar3 = dcgettext(0,"%P:%pS: warning: redeclaration of memory region `%s\'\n",5);
          FUN_00129410(uVar3,0,param_1);
          return puVar8;
        }
        puVar1 = puVar4 + 1;
        puVar4 = (undefined8 *)*puVar1;
      } while (((undefined8 *)*puVar1 != (undefined8 *)0x0) ||
              (puVar4 = (undefined8 *)puVar8[2], puVar8 = puVar4, puVar4 != (undefined8 *)0x0));
    }
    bVar9 = false;
    bVar10 = param_2 == 0;
    if (bVar10) {
      lVar5 = 10;
      pbVar6 = param_1;
      pbVar7 = (byte *)"*default*";
      do {
        if (lVar5 == 0) break;
        lVar5 = lVar5 + -1;
        bVar9 = *pbVar6 < *pbVar7;
        bVar10 = *pbVar6 == *pbVar7;
        pbVar6 = pbVar6 + (ulong)bVar11 * -2 + 1;
        pbVar7 = pbVar7 + (ulong)bVar11 * -2 + 1;
      } while (bVar10);
      if ((!bVar9 && !bVar10) != bVar9) {
        uVar3 = dcgettext(0,"%P:%pS: warning: memory region `%s\' not declared\n",5);
        FUN_00129410(uVar3,0,param_1);
      }
    }
    puVar4 = (undefined8 *)FUN_001197b0(0x58);
    uVar3 = xstrdup(param_1);
    puVar4[1] = 0;
    *puVar4 = uVar3;
    puVar4[2] = 0;
    puVar4[3] = 0;
    puVar4[4] = 0;
    puVar4[5] = 0xffffffffffffffff;
    puVar4[6] = 0;
    puVar4[7] = 0;
    puVar4[8] = 0;
    puVar4[9] = 0;
    *(undefined4 *)(puVar4 + 10) = 0;
    *(undefined8 **)PTR_DAT_002a2760 = puVar4;
    PTR_DAT_002a2760 = (undefined *)(puVar4 + 2);
  }
  return puVar4;
}


PUSH R13
PUSH R12
PUSH RBP
PUSH RBX
SUB RSP,0x8
TEST RDI,RDI
JZ 0x0011a008
MOV R13,qword ptr [0x002a5298]
MOV R12D,ESI
MOV RBP,RDI
TEST R13,R13
JZ 0x00119ef5
MOV RBX,R13
NOP dword ptr [RAX + RAX*0x1]
MOV RDI,qword ptr [RBX]
MOV RSI,RBP
CALL 0x0010d780
TEST EAX,EAX
JZ 0x00119fc0
MOV RBX,qword ptr [RBX + 0x8]
TEST RBX,RBX
JNZ 0x00119ed0
MOV R13,qword ptr [R13 + 0x10]
TEST R13,R13
JNZ 0x00119ec5
TEST R12D,R12D
JNZ 0x00119f36
MOV ECX,0xa
LEA RDI,[0x1610f1]
MOV RSI,RBP
CMPSB.REPE RDI,RSI
SETA AL
SBB AL,0x0
TEST AL,AL
JZ 0x00119f36
MOV EDX,0x5
LEA RSI,[0x1704e0]
XOR EDI,EDI
CALL 0x0010d380
MOV RDX,RBP
XOR ESI,ESI
MOV RDI,RAX
XOR EAX,EAX
CALL 0x00129410
MOV EDI,0x58
CALL 0x001197b0
MOV RDI,RBP
MOV R13,RAX
CALL 0x0010d590
MOV qword ptr [R13 + 0x8],0x0
MOV qword ptr [R13],RAX
MOV RAX,qword ptr [0x002a2760]
MOV qword ptr [R13 + 0x10],0x0
MOV qword ptr [R13 + 0x18],0x0
MOV qword ptr [R13 + 0x20],0x0
MOV qword ptr [R13 + 0x28],-0x1
MOV qword ptr [R13 + 0x30],0x0
MOV qword ptr [R13 + 0x38],0x0
MOV qword ptr [R13 + 0x40],0x0
MOV qword ptr [R13 + 0x48],0x0
MOV dword ptr [R13 + 0x50],0x0
MOV qword ptr [RAX],R13
LEA RAX,[R13 + 0x10]
MOV qword ptr [0x002a2760],RAX
JMP 0x00119fc5
TEST R12D,R12D
JNZ 0x00119fd8
ADD RSP,0x8
MOV RAX,R13
POP RBX
POP RBP
POP R12
POP R13
RET
MOV EDX,0x5
LEA RSI,[0x1704a8]
XOR EDI,EDI
CALL 0x0010d380
MOV RDX,RBP
XOR ESI,ESI
MOV RDI,RAX
XOR EAX,EAX
CALL 0x00129410
ADD RSP,0x8
MOV RAX,R13
POP RBX
POP RBP
POP R12
POP R13
RET
XOR R13D,R13D
JMP 0x00119fc5
(translation_unit "undefined8 * FUN_00119ea0(byte *param_1,int param_2)\n\n{\n  undefined8 *puVar1;\n  int iVar2;\n  undefined8 uVar3;\n  undefined8 *puVar4;\n  long lVar5;\n  byte *pbVar6;\n  byte *pbVar7;\n  undefined8 *puVar8;\n  bool bVar9;\n  bool bVar10;\n  byte bVar11;\n  \n  bVar11 = 0;\n  if (param_1 == (byte *)0x0) {\n    puVar4 = (undefined8 *)0x0;\n  }\n  else {\n    puVar4 = DAT_002a5298;\n    puVar8 = DAT_002a5298;\n    if (DAT_002a5298 != (undefined8 *)0x0) {\n      do {\n        iVar2 = strcmp((char *)*puVar4,(char *)param_1);\n        if (iVar2 == 0) {\n          if (param_2 == 0) {\n            return puVar8;\n          }\n          uVar3 = dcgettext(0,"%P:%pS: warning: redeclaration of memory region `%s\'\n",5);\n          FUN_00129410(uVar3,0,param_1);\n          return puVar8;\n        }\n        puVar1 = puVar4 + 1;\n        puVar4 = (undefined8 *)*puVar1;\n      } while (((undefined8 *)*puVar1 != (undefined8 *)0x0) ||\n              (puVar4 = (undefined8 *)puVar8[2], puVar8 = puVar4, puVar4 != (undefined8 *)0x0));\n    }\n    bVar9 = false;\n    bVar10 = param_2 == 0;\n    if (bVar10) {\n      lVar5 = 10;\n      pbVar6 = param_1;\n      pbVar7 = (byte *)"*default*";\n      do {\n        if (lVar5 == 0) break;\n        lVar5 = lVar5 + -1;\n        bVar9 = *pbVar6 < *pbVar7;\n        bVar10 = *pbVar6 == *pbVar7;\n        pbVar6 = pbVar6 + (ulong)bVar11 * -2 + 1;\n        pbVar7 = pbVar7 + (ulong)bVar11 * -2 + 1;\n      } while (bVar10);\n      if ((!bVar9 && !bVar10) != bVar9) {\n        uVar3 = dcgettext(0,"%P:%pS: warning: memory region `%s\' not declared\n",5);\n        FUN_00129410(uVar3,0,param_1);\n      }\n    }\n    puVar4 = (undefined8 *)FUN_001197b0(0x58);\n    uVar3 = xstrdup(param_1);\n    puVar4[1] = 0;\n    *puVar4 = uVar3;\n    puVar4[2] = 0;\n    puVar4[3] = 0;\n    puVar4[4] = 0;\n    puVar4[5] = 0xffffffffffffffff;\n    puVar4[6] = 0;\n    puVar4[7] = 0;\n    puVar4[8] = 0;\n    puVar4[9] = 0;\n    *(undefined4 *)(puVar4 + 10) = 0;\n    *(undefined8 **)PTR_DAT_002a2760 = puVar4;\n    PTR_DAT_002a2760 = (undefined *)(puVar4 + 2);\n  }\n  return puVar4;\n}\n\n" (function_definition "undefined8 * FUN_00119ea0(byte *param_1,int param_2)\n\n{\n  undefined8 *puVar1;\n  int iVar2;\n  undefined8 uVar3;\n  undefined8 *puVar4;\n  long lVar5;\n  byte *pbVar6;\n  byte *pbVar7;\n  undefined8 *puVar8;\n  bool bVar9;\n  bool bVar10;\n  byte bVar11;\n  \n  bVar11 = 0;\n  if (param_1 == (byte *)0x0) {\n    puVar4 = (undefined8 *)0x0;\n  }\n  else {\n    puVar4 = DAT_002a5298;\n    puVar8 = DAT_002a5298;\n    if (DAT_002a5298 != (undefined8 *)0x0) {\n      do {\n        iVar2 = strcmp((char *)*puVar4,(char *)param_1);\n        if (iVar2 == 0) {\n          if (param_2 == 0) {\n            return puVar8;\n          }\n          uVar3 = dcgettext(0,"%P:%pS: warning: redeclaration of memory region `%s\'\n",5);\n          FUN_00129410(uVar3,0,param_1);\n          return puVar8;\n        }\n        puVar1 = puVar4 + 1;\n        puVar4 = (undefined8 *)*puVar1;\n      } while (((undefined8 *)*puVar1 != (undefined8 *)0x0) ||\n              (puVar4 = (undefined8 *)puVar8[2], puVar8 = puVar4, puVar4 != (undefined8 *)0x0));\n    }\n    bVar9 = false;\n    bVar10 = param_2 == 0;\n    if (bVar10) {\n      lVar5 = 10;\n      pbVar6 = param_1;\n      pbVar7 = (byte *)"*default*";\n      do {\n        if (lVar5 == 0) break;\n        lVar5 = lVar5 + -1;\n        bVar9 = *pbVar6 < *pbVar7;\n        bVar10 = *pbVar6 == *pbVar7;\n        pbVar6 = pbVar6 + (ulong)bVar11 * -2 + 1;\n        pbVar7 = pbVar7 + (ulong)bVar11 * -2 + 1;\n      } while (bVar10);\n      if ((!bVar9 && !bVar10) != bVar9) {\n        uVar3 = dcgettext(0,"%P:%pS: warning: memory region `%s\' not declared\n",5);\n        FUN_00129410(uVar3,0,param_1);\n      }\n    }\n    puVar4 = (undefined8 *)FUN_001197b0(0x58);\n    uVar3 = xstrdup(param_1);\n    puVar4[1] = 0;\n    *puVar4 = uVar3;\n    puVar4[2] = 0;\n    puVar4[3] = 0;\n    puVar4[4] = 0;\n    puVar4[5] = 0xffffffffffffffff;\n    puVar4[6] = 0;\n    puVar4[7] = 0;\n    puVar4[8] = 0;\n    puVar4[9] = 0;\n    *(undefined4 *)(puVar4 + 10) = 0;\n    *(undefined8 **)PTR_DAT_002a2760 = puVar4;\n    PTR_DAT_002a2760 = (undefined *)(puVar4 + 2);\n  }\n  return puVar4;\n}" type_identifier (pointer_declarator "* FUN_00119ea0(byte *param_1,int param_2)" * (function_declarator "FUN_00119ea0(byte *param_1,int param_2)" identifier (parameter_list "(byte *param_1,int param_2)" ( (parameter_declaration "byte *param_1" type_identifier (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "int param_2" primitive_type identifier) )))) (compound_statement "{\n  undefined8 *puVar1;\n  int iVar2;\n  undefined8 uVar3;\n  undefined8 *puVar4;\n  long lVar5;\n  byte *pbVar6;\n  byte *pbVar7;\n  undefined8 *puVar8;\n  bool bVar9;\n  bool bVar10;\n  byte bVar11;\n  \n  bVar11 = 0;\n  if (param_1 == (byte *)0x0) {\n    puVar4 = (undefined8 *)0x0;\n  }\n  else {\n    puVar4 = DAT_002a5298;\n    puVar8 = DAT_002a5298;\n    if (DAT_002a5298 != (undefined8 *)0x0) {\n      do {\n        iVar2 = strcmp((char *)*puVar4,(char *)param_1);\n        if (iVar2 == 0) {\n          if (param_2 == 0) {\n            return puVar8;\n          }\n          uVar3 = dcgettext(0,"%P:%pS: warning: redeclaration of memory region `%s\'\n",5);\n          FUN_00129410(uVar3,0,param_1);\n          return puVar8;\n        }\n        puVar1 = puVar4 + 1;\n        puVar4 = (undefined8 *)*puVar1;\n      } while (((undefined8 *)*puVar1 != (undefined8 *)0x0) ||\n              (puVar4 = (undefined8 *)puVar8[2], puVar8 = puVar4, puVar4 != (undefined8 *)0x0));\n    }\n    bVar9 = false;\n    bVar10 = param_2 == 0;\n    if (bVar10) {\n      lVar5 = 10;\n      pbVar6 = param_1;\n      pbVar7 = (byte *)"*default*";\n      do {\n        if (lVar5 == 0) break;\n        lVar5 = lVar5 + -1;\n        bVar9 = *pbVar6 < *pbVar7;\n        bVar10 = *pbVar6 == *pbVar7;\n        pbVar6 = pbVar6 + (ulong)bVar11 * -2 + 1;\n        pbVar7 = pbVar7 + (ulong)bVar11 * -2 + 1;\n      } while (bVar10);\n      if ((!bVar9 && !bVar10) != bVar9) {\n        uVar3 = dcgettext(0,"%P:%pS: warning: memory region `%s\' not declared\n",5);\n        FUN_00129410(uVar3,0,param_1);\n      }\n    }\n    puVar4 = (undefined8 *)FUN_001197b0(0x58);\n    uVar3 = xstrdup(param_1);\n    puVar4[1] = 0;\n    *puVar4 = uVar3;\n    puVar4[2] = 0;\n    puVar4[3] = 0;\n    puVar4[4] = 0;\n    puVar4[5] = 0xffffffffffffffff;\n    puVar4[6] = 0;\n    puVar4[7] = 0;\n    puVar4[8] = 0;\n    puVar4[9] = 0;\n    *(undefined4 *)(puVar4 + 10) = 0;\n    *(undefined8 **)PTR_DAT_002a2760 = puVar4;\n    PTR_DAT_002a2760 = (undefined *)(puVar4 + 2);\n  }\n  return puVar4;\n}" { (declaration "undefined8 *puVar1;" type_identifier (pointer_declarator "*puVar1" * identifier) ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "undefined8 uVar3;" type_identifier identifier ;) (declaration "undefined8 *puVar4;" type_identifier (pointer_declarator "*puVar4" * identifier) ;) (declaration "long lVar5;" (sized_type_specifier "long" long) identifier ;) (declaration "byte *pbVar6;" type_identifier (pointer_declarator "*pbVar6" * identifier) ;) (declaration "byte *pbVar7;" type_identifier (pointer_declarator "*pbVar7" * identifier) ;) (declaration "undefined8 *puVar8;" type_identifier (pointer_declarator "*puVar8" * identifier) ;) (declaration "bool bVar9;" primitive_type identifier ;) (declaration "bool bVar10;" primitive_type identifier ;) (declaration "byte bVar11;" type_identifier identifier ;) (expression_statement "bVar11 = 0;" (assignment_expression "bVar11 = 0" identifier = number_literal) ;) (if_statement "if (param_1 == (byte *)0x0) {\n    puVar4 = (undefined8 *)0x0;\n  }\n  else {\n    puVar4 = DAT_002a5298;\n    puVar8 = DAT_002a5298;\n    if (DAT_002a5298 != (undefined8 *)0x0) {\n      do {\n        iVar2 = strcmp((char *)*puVar4,(char *)param_1);\n        if (iVar2 == 0) {\n          if (param_2 == 0) {\n            return puVar8;\n          }\n          uVar3 = dcgettext(0,"%P:%pS: warning: redeclaration of memory region `%s\'\n",5);\n          FUN_00129410(uVar3,0,param_1);\n          return puVar8;\n        }\n        puVar1 = puVar4 + 1;\n        puVar4 = (undefined8 *)*puVar1;\n      } while (((undefined8 *)*puVar1 != (undefined8 *)0x0) ||\n              (puVar4 = (undefined8 *)puVar8[2], puVar8 = puVar4, puVar4 != (undefined8 *)0x0));\n    }\n    bVar9 = false;\n    bVar10 = param_2 == 0;\n    if (bVar10) {\n      lVar5 = 10;\n      pbVar6 = param_1;\n      pbVar7 = (byte *)"*default*";\n      do {\n        if (lVar5 == 0) break;\n        lVar5 = lVar5 + -1;\n        bVar9 = *pbVar6 < *pbVar7;\n        bVar10 = *pbVar6 == *pbVar7;\n        pbVar6 = pbVar6 + (ulong)bVar11 * -2 + 1;\n        pbVar7 = pbVar7 + (ulong)bVar11 * -2 + 1;\n      } while (bVar10);\n      if ((!bVar9 && !bVar10) != bVar9) {\n        uVar3 = dcgettext(0,"%P:%pS: warning: memory region `%s\' not declared\n",5);\n        FUN_00129410(uVar3,0,param_1);\n      }\n    }\n    puVar4 = (undefined8 *)FUN_001197b0(0x58);\n    uVar3 = xstrdup(param_1);\n    puVar4[1] = 0;\n    *puVar4 = uVar3;\n    puVar4[2] = 0;\n    puVar4[3] = 0;\n    puVar4[4] = 0;\n    puVar4[5] = 0xffffffffffffffff;\n    puVar4[6] = 0;\n    puVar4[7] = 0;\n    puVar4[8] = 0;\n    puVar4[9] = 0;\n    *(undefined4 *)(puVar4 + 10) = 0;\n    *(undefined8 **)PTR_DAT_002a2760 = puVar4;\n    PTR_DAT_002a2760 = (undefined *)(puVar4 + 2);\n  }" if (parenthesized_expression "(param_1 == (byte *)0x0)" ( (binary_expression "param_1 == (byte *)0x0" identifier == (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    puVar4 = (undefined8 *)0x0;\n  }" { (expression_statement "puVar4 = (undefined8 *)0x0;" (assignment_expression "puVar4 = (undefined8 *)0x0" identifier = (cast_expression "(undefined8 *)0x0" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) }) (else_clause "else {\n    puVar4 = DAT_002a5298;\n    puVar8 = DAT_002a5298;\n    if (DAT_002a5298 != (undefined8 *)0x0) {\n      do {\n        iVar2 = strcmp((char *)*puVar4,(char *)param_1);\n        if (iVar2 == 0) {\n          if (param_2 == 0) {\n            return puVar8;\n          }\n          uVar3 = dcgettext(0,"%P:%pS: warning: redeclaration of memory region `%s\'\n",5);\n          FUN_00129410(uVar3,0,param_1);\n          return puVar8;\n        }\n        puVar1 = puVar4 + 1;\n        puVar4 = (undefined8 *)*puVar1;\n      } while (((undefined8 *)*puVar1 != (undefined8 *)0x0) ||\n              (puVar4 = (undefined8 *)puVar8[2], puVar8 = puVar4, puVar4 != (undefined8 *)0x0));\n    }\n    bVar9 = false;\n    bVar10 = param_2 == 0;\n    if (bVar10) {\n      lVar5 = 10;\n      pbVar6 = param_1;\n      pbVar7 = (byte *)"*default*";\n      do {\n        if (lVar5 == 0) break;\n        lVar5 = lVar5 + -1;\n        bVar9 = *pbVar6 < *pbVar7;\n        bVar10 = *pbVar6 == *pbVar7;\n        pbVar6 = pbVar6 + (ulong)bVar11 * -2 + 1;\n        pbVar7 = pbVar7 + (ulong)bVar11 * -2 + 1;\n      } while (bVar10);\n      if ((!bVar9 && !bVar10) != bVar9) {\n        uVar3 = dcgettext(0,"%P:%pS: warning: memory region `%s\' not declared\n",5);\n        FUN_00129410(uVar3,0,param_1);\n      }\n    }\n    puVar4 = (undefined8 *)FUN_001197b0(0x58);\n    uVar3 = xstrdup(param_1);\n    puVar4[1] = 0;\n    *puVar4 = uVar3;\n    puVar4[2] = 0;\n    puVar4[3] = 0;\n    puVar4[4] = 0;\n    puVar4[5] = 0xffffffffffffffff;\n    puVar4[6] = 0;\n    puVar4[7] = 0;\n    puVar4[8] = 0;\n    puVar4[9] = 0;\n    *(undefined4 *)(puVar4 + 10) = 0;\n    *(undefined8 **)PTR_DAT_002a2760 = puVar4;\n    PTR_DAT_002a2760 = (undefined *)(puVar4 + 2);\n  }" else (compound_statement "{\n    puVar4 = DAT_002a5298;\n    puVar8 = DAT_002a5298;\n    if (DAT_002a5298 != (undefined8 *)0x0) {\n      do {\n        iVar2 = strcmp((char *)*puVar4,(char *)param_1);\n        if (iVar2 == 0) {\n          if (param_2 == 0) {\n            return puVar8;\n          }\n          uVar3 = dcgettext(0,"%P:%pS: warning: redeclaration of memory region `%s\'\n",5);\n          FUN_00129410(uVar3,0,param_1);\n          return puVar8;\n        }\n        puVar1 = puVar4 + 1;\n        puVar4 = (undefined8 *)*puVar1;\n      } while (((undefined8 *)*puVar1 != (undefined8 *)0x0) ||\n              (puVar4 = (undefined8 *)puVar8[2], puVar8 = puVar4, puVar4 != (undefined8 *)0x0));\n    }\n    bVar9 = false;\n    bVar10 = param_2 == 0;\n    if (bVar10) {\n      lVar5 = 10;\n      pbVar6 = param_1;\n      pbVar7 = (byte *)"*default*";\n      do {\n        if (lVar5 == 0) break;\n        lVar5 = lVar5 + -1;\n        bVar9 = *pbVar6 < *pbVar7;\n        bVar10 = *pbVar6 == *pbVar7;\n        pbVar6 = pbVar6 + (ulong)bVar11 * -2 + 1;\n        pbVar7 = pbVar7 + (ulong)bVar11 * -2 + 1;\n      } while (bVar10);\n      if ((!bVar9 && !bVar10) != bVar9) {\n        uVar3 = dcgettext(0,"%P:%pS: warning: memory region `%s\' not declared\n",5);\n        FUN_00129410(uVar3,0,param_1);\n      }\n    }\n    puVar4 = (undefined8 *)FUN_001197b0(0x58);\n    uVar3 = xstrdup(param_1);\n    puVar4[1] = 0;\n    *puVar4 = uVar3;\n    puVar4[2] = 0;\n    puVar4[3] = 0;\n    puVar4[4] = 0;\n    puVar4[5] = 0xffffffffffffffff;\n    puVar4[6] = 0;\n    puVar4[7] = 0;\n    puVar4[8] = 0;\n    puVar4[9] = 0;\n    *(undefined4 *)(puVar4 + 10) = 0;\n    *(undefined8 **)PTR_DAT_002a2760 = puVar4;\n    PTR_DAT_002a2760 = (undefined *)(puVar4 + 2);\n  }" { (expression_statement "puVar4 = DAT_002a5298;" (assignment_expression "puVar4 = DAT_002a5298" identifier = identifier) ;) (expression_statement "puVar8 = DAT_002a5298;" (assignment_expression "puVar8 = DAT_002a5298" identifier = identifier) ;) (if_statement "if (DAT_002a5298 != (undefined8 *)0x0) {\n      do {\n        iVar2 = strcmp((char *)*puVar4,(char *)param_1);\n        if (iVar2 == 0) {\n          if (param_2 == 0) {\n            return puVar8;\n          }\n          uVar3 = dcgettext(0,"%P:%pS: warning: redeclaration of memory region `%s\'\n",5);\n          FUN_00129410(uVar3,0,param_1);\n          return puVar8;\n        }\n        puVar1 = puVar4 + 1;\n        puVar4 = (undefined8 *)*puVar1;\n      } while (((undefined8 *)*puVar1 != (undefined8 *)0x0) ||\n              (puVar4 = (undefined8 *)puVar8[2], puVar8 = puVar4, puVar4 != (undefined8 *)0x0));\n    }" if (parenthesized_expression "(DAT_002a5298 != (undefined8 *)0x0)" ( (binary_expression "DAT_002a5298 != (undefined8 *)0x0" identifier != (cast_expression "(undefined8 *)0x0" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      do {\n        iVar2 = strcmp((char *)*puVar4,(char *)param_1);\n        if (iVar2 == 0) {\n          if (param_2 == 0) {\n            return puVar8;\n          }\n          uVar3 = dcgettext(0,"%P:%pS: warning: redeclaration of memory region `%s\'\n",5);\n          FUN_00129410(uVar3,0,param_1);\n          return puVar8;\n        }\n        puVar1 = puVar4 + 1;\n        puVar4 = (undefined8 *)*puVar1;\n      } while (((undefined8 *)*puVar1 != (undefined8 *)0x0) ||\n              (puVar4 = (undefined8 *)puVar8[2], puVar8 = puVar4, puVar4 != (undefined8 *)0x0));\n    }" { (do_statement "do {\n        iVar2 = strcmp((char *)*puVar4,(char *)param_1);\n        if (iVar2 == 0) {\n          if (param_2 == 0) {\n            return puVar8;\n          }\n          uVar3 = dcgettext(0,"%P:%pS: warning: redeclaration of memory region `%s\'\n",5);\n          FUN_00129410(uVar3,0,param_1);\n          return puVar8;\n        }\n        puVar1 = puVar4 + 1;\n        puVar4 = (undefined8 *)*puVar1;\n      } while (((undefined8 *)*puVar1 != (undefined8 *)0x0) ||\n              (puVar4 = (undefined8 *)puVar8[2], puVar8 = puVar4, puVar4 != (undefined8 *)0x0));" do (compound_statement "{\n        iVar2 = strcmp((char *)*puVar4,(char *)param_1);\n        if (iVar2 == 0) {\n          if (param_2 == 0) {\n            return puVar8;\n          }\n          uVar3 = dcgettext(0,"%P:%pS: warning: redeclaration of memory region `%s\'\n",5);\n          FUN_00129410(uVar3,0,param_1);\n          return puVar8;\n        }\n        puVar1 = puVar4 + 1;\n        puVar4 = (undefined8 *)*puVar1;\n      }" { (expression_statement "iVar2 = strcmp((char *)*puVar4,(char *)param_1);" (assignment_expression "iVar2 = strcmp((char *)*puVar4,(char *)param_1)" identifier = (call_expression "strcmp((char *)*puVar4,(char *)param_1)" identifier (argument_list "((char *)*puVar4,(char *)param_1)" ( (cast_expression "(char *)*puVar4" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar4" * identifier)) , (cast_expression "(char *)param_1" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier) )))) ;) (if_statement "if (iVar2 == 0) {\n          if (param_2 == 0) {\n            return puVar8;\n          }\n          uVar3 = dcgettext(0,"%P:%pS: warning: redeclaration of memory region `%s\'\n",5);\n          FUN_00129410(uVar3,0,param_1);\n          return puVar8;\n        }" if (parenthesized_expression "(iVar2 == 0)" ( (binary_expression "iVar2 == 0" identifier == number_literal) )) (compound_statement "{\n          if (param_2 == 0) {\n            return puVar8;\n          }\n          uVar3 = dcgettext(0,"%P:%pS: warning: redeclaration of memory region `%s\'\n",5);\n          FUN_00129410(uVar3,0,param_1);\n          return puVar8;\n        }" { (if_statement "if (param_2 == 0) {\n            return puVar8;\n          }" if (parenthesized_expression "(param_2 == 0)" ( (binary_expression "param_2 == 0" identifier == number_literal) )) (compound_statement "{\n            return puVar8;\n          }" { (return_statement "return puVar8;" return identifier ;) })) (expression_statement "uVar3 = dcgettext(0,"%P:%pS: warning: redeclaration of memory region `%s\'\n",5);" (assignment_expression "uVar3 = dcgettext(0,"%P:%pS: warning: redeclaration of memory region `%s\'\n",5)" identifier = (call_expression "dcgettext(0,"%P:%pS: warning: redeclaration of memory region `%s\'\n",5)" identifier (argument_list "(0,"%P:%pS: warning: redeclaration of memory region `%s\'\n",5)" ( number_literal , (string_literal ""%P:%pS: warning: redeclaration of memory region `%s\'\n"" " string_content escape_sequence escape_sequence ") , number_literal )))) ;) (expression_statement "FUN_00129410(uVar3,0,param_1);" (call_expression "FUN_00129410(uVar3,0,param_1)" identifier (argument_list "(uVar3,0,param_1)" ( identifier , number_literal , identifier ))) ;) (return_statement "return puVar8;" return identifier ;) })) (expression_statement "puVar1 = puVar4 + 1;" (assignment_expression "puVar1 = puVar4 + 1" identifier = (binary_expression "puVar4 + 1" identifier + number_literal)) ;) (expression_statement "puVar4 = (undefined8 *)*puVar1;" (assignment_expression "puVar4 = (undefined8 *)*puVar1" identifier = (cast_expression "(undefined8 *)*puVar1" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar1" * identifier))) ;) }) while (parenthesized_expression "(((undefined8 *)*puVar1 != (undefined8 *)0x0) ||\n              (puVar4 = (undefined8 *)puVar8[2], puVar8 = puVar4, puVar4 != (undefined8 *)0x0))" ( (binary_expression "((undefined8 *)*puVar1 != (undefined8 *)0x0) ||\n              (puVar4 = (undefined8 *)puVar8[2], puVar8 = puVar4, puVar4 != (undefined8 *)0x0)" (parenthesized_expression "((undefined8 *)*puVar1 != (undefined8 *)0x0)" ( (binary_expression "(undefined8 *)*puVar1 != (undefined8 *)0x0" (cast_expression "(undefined8 *)*puVar1" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar1" * identifier)) != (cast_expression "(undefined8 *)0x0" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) || (parenthesized_expression "(puVar4 = (undefined8 *)puVar8[2], puVar8 = puVar4, puVar4 != (undefined8 *)0x0)" ( (comma_expression "puVar4 = (undefined8 *)puVar8[2], puVar8 = puVar4, puVar4 != (undefined8 *)0x0" (assignment_expression "puVar4 = (undefined8 *)puVar8[2]" identifier = (cast_expression "(undefined8 *)puVar8[2]" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar8[2]" identifier [ number_literal ]))) , (comma_expression "puVar8 = puVar4, puVar4 != (undefined8 *)0x0" (assignment_expression "puVar8 = puVar4" identifier = identifier) , (binary_expression "puVar4 != (undefined8 *)0x0" identifier != (cast_expression "(undefined8 *)0x0" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)))) ))) )) ;) })) (expression_statement "bVar9 = false;" (assignment_expression "bVar9 = false" identifier = false) ;) (expression_statement "bVar10 = param_2 == 0;" (assignment_expression "bVar10 = param_2 == 0" identifier = (binary_expression "param_2 == 0" identifier == number_literal)) ;) (if_statement "if (bVar10) {\n      lVar5 = 10;\n      pbVar6 = param_1;\n      pbVar7 = (byte *)"*default*";\n      do {\n        if (lVar5 == 0) break;\n        lVar5 = lVar5 + -1;\n        bVar9 = *pbVar6 < *pbVar7;\n        bVar10 = *pbVar6 == *pbVar7;\n        pbVar6 = pbVar6 + (ulong)bVar11 * -2 + 1;\n        pbVar7 = pbVar7 + (ulong)bVar11 * -2 + 1;\n      } while (bVar10);\n      if ((!bVar9 && !bVar10) != bVar9) {\n        uVar3 = dcgettext(0,"%P:%pS: warning: memory region `%s\' not declared\n",5);\n        FUN_00129410(uVar3,0,param_1);\n      }\n    }" if (parenthesized_expression "(bVar10)" ( identifier )) (compound_statement "{\n      lVar5 = 10;\n      pbVar6 = param_1;\n      pbVar7 = (byte *)"*default*";\n      do {\n        if (lVar5 == 0) break;\n        lVar5 = lVar5 + -1;\n        bVar9 = *pbVar6 < *pbVar7;\n        bVar10 = *pbVar6 == *pbVar7;\n        pbVar6 = pbVar6 + (ulong)bVar11 * -2 + 1;\n        pbVar7 = pbVar7 + (ulong)bVar11 * -2 + 1;\n      } while (bVar10);\n      if ((!bVar9 && !bVar10) != bVar9) {\n        uVar3 = dcgettext(0,"%P:%pS: warning: memory region `%s\' not declared\n",5);\n        FUN_00129410(uVar3,0,param_1);\n      }\n    }" { (expression_statement "lVar5 = 10;" (assignment_expression "lVar5 = 10" identifier = number_literal) ;) (expression_statement "pbVar6 = param_1;" (assignment_expression "pbVar6 = param_1" identifier = identifier) ;) (expression_statement "pbVar7 = (byte *)"*default*";" (assignment_expression "pbVar7 = (byte *)"*default*"" identifier = (cast_expression "(byte *)"*default*"" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (string_literal ""*default*"" " string_content "))) ;) (do_statement "do {\n        if (lVar5 == 0) break;\n        lVar5 = lVar5 + -1;\n        bVar9 = *pbVar6 < *pbVar7;\n        bVar10 = *pbVar6 == *pbVar7;\n        pbVar6 = pbVar6 + (ulong)bVar11 * -2 + 1;\n        pbVar7 = pbVar7 + (ulong)bVar11 * -2 + 1;\n      } while (bVar10);" do (compound_statement "{\n        if (lVar5 == 0) break;\n        lVar5 = lVar5 + -1;\n        bVar9 = *pbVar6 < *pbVar7;\n        bVar10 = *pbVar6 == *pbVar7;\n        pbVar6 = pbVar6 + (ulong)bVar11 * -2 + 1;\n        pbVar7 = pbVar7 + (ulong)bVar11 * -2 + 1;\n      }" { (if_statement "if (lVar5 == 0) break;" if (parenthesized_expression "(lVar5 == 0)" ( (binary_expression "lVar5 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "lVar5 = lVar5 + -1;" (assignment_expression "lVar5 = lVar5 + -1" identifier = (binary_expression "lVar5 + -1" identifier + number_literal)) ;) (expression_statement "bVar9 = *pbVar6 < *pbVar7;" (assignment_expression "bVar9 = *pbVar6 < *pbVar7" identifier = (binary_expression "*pbVar6 < *pbVar7" (pointer_expression "*pbVar6" * identifier) < (pointer_expression "*pbVar7" * identifier))) ;) (expression_statement "bVar10 = *pbVar6 == *pbVar7;" (assignment_expression "bVar10 = *pbVar6 == *pbVar7" identifier = (binary_expression "*pbVar6 == *pbVar7" (pointer_expression "*pbVar6" * identifier) == (pointer_expression "*pbVar7" * identifier))) ;) (expression_statement "pbVar6 = pbVar6 + (ulong)bVar11 * -2 + 1;" (assignment_expression "pbVar6 = pbVar6 + (ulong)bVar11 * -2 + 1" identifier = (binary_expression "pbVar6 + (ulong)bVar11 * -2 + 1" (binary_expression "pbVar6 + (ulong)bVar11 * -2" identifier + (binary_expression "(ulong)bVar11 * -2" (cast_expression "(ulong)bVar11" ( (type_descriptor "ulong" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) (expression_statement "pbVar7 = pbVar7 + (ulong)bVar11 * -2 + 1;" (assignment_expression "pbVar7 = pbVar7 + (ulong)bVar11 * -2 + 1" identifier = (binary_expression "pbVar7 + (ulong)bVar11 * -2 + 1" (binary_expression "pbVar7 + (ulong)bVar11 * -2" identifier + (binary_expression "(ulong)bVar11 * -2" (cast_expression "(ulong)bVar11" ( (type_descriptor "ulong" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) }) while (parenthesized_expression "(bVar10)" ( identifier )) ;) (if_statement "if ((!bVar9 && !bVar10) != bVar9) {\n        uVar3 = dcgettext(0,"%P:%pS: warning: memory region `%s\' not declared\n",5);\n        FUN_00129410(uVar3,0,param_1);\n      }" if (parenthesized_expression "((!bVar9 && !bVar10) != bVar9)" ( (binary_expression "(!bVar9 && !bVar10) != bVar9" (parenthesized_expression "(!bVar9 && !bVar10)" ( (binary_expression "!bVar9 && !bVar10" (unary_expression "!bVar9" ! identifier) && (unary_expression "!bVar10" ! identifier)) )) != identifier) )) (compound_statement "{\n        uVar3 = dcgettext(0,"%P:%pS: warning: memory region `%s\' not declared\n",5);\n        FUN_00129410(uVar3,0,param_1);\n      }" { (expression_statement "uVar3 = dcgettext(0,"%P:%pS: warning: memory region `%s\' not declared\n",5);" (assignment_expression "uVar3 = dcgettext(0,"%P:%pS: warning: memory region `%s\' not declared\n",5)" identifier = (call_expression "dcgettext(0,"%P:%pS: warning: memory region `%s\' not declared\n",5)" identifier (argument_list "(0,"%P:%pS: warning: memory region `%s\' not declared\n",5)" ( number_literal , (string_literal ""%P:%pS: warning: memory region `%s\' not declared\n"" " string_content escape_sequence string_content escape_sequence ") , number_literal )))) ;) (expression_statement "FUN_00129410(uVar3,0,param_1);" (call_expression "FUN_00129410(uVar3,0,param_1)" identifier (argument_list "(uVar3,0,param_1)" ( identifier , number_literal , identifier ))) ;) })) })) (expression_statement "puVar4 = (undefined8 *)FUN_001197b0(0x58);" (assignment_expression "puVar4 = (undefined8 *)FUN_001197b0(0x58)" identifier = (cast_expression "(undefined8 *)FUN_001197b0(0x58)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_001197b0(0x58)" identifier (argument_list "(0x58)" ( number_literal ))))) ;) (expression_statement "uVar3 = xstrdup(param_1);" (assignment_expression "uVar3 = xstrdup(param_1)" identifier = (call_expression "xstrdup(param_1)" identifier (argument_list "(param_1)" ( identifier )))) ;) (expression_statement "puVar4[1] = 0;" (assignment_expression "puVar4[1] = 0" (subscript_expression "puVar4[1]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*puVar4 = uVar3;" (assignment_expression "*puVar4 = uVar3" (pointer_expression "*puVar4" * identifier) = identifier) ;) (expression_statement "puVar4[2] = 0;" (assignment_expression "puVar4[2] = 0" (subscript_expression "puVar4[2]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar4[3] = 0;" (assignment_expression "puVar4[3] = 0" (subscript_expression "puVar4[3]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar4[4] = 0;" (assignment_expression "puVar4[4] = 0" (subscript_expression "puVar4[4]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar4[5] = 0xffffffffffffffff;" (assignment_expression "puVar4[5] = 0xffffffffffffffff" (subscript_expression "puVar4[5]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar4[6] = 0;" (assignment_expression "puVar4[6] = 0" (subscript_expression "puVar4[6]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar4[7] = 0;" (assignment_expression "puVar4[7] = 0" (subscript_expression "puVar4[7]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar4[8] = 0;" (assignment_expression "puVar4[8] = 0" (subscript_expression "puVar4[8]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar4[9] = 0;" (assignment_expression "puVar4[9] = 0" (subscript_expression "puVar4[9]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*(undefined4 *)(puVar4 + 10) = 0;" (assignment_expression "*(undefined4 *)(puVar4 + 10) = 0" (pointer_expression "*(undefined4 *)(puVar4 + 10)" * (cast_expression "(undefined4 *)(puVar4 + 10)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar4 + 10)" ( (binary_expression "puVar4 + 10" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined8 **)PTR_DAT_002a2760 = puVar4;" (assignment_expression "*(undefined8 **)PTR_DAT_002a2760 = puVar4" (pointer_expression "*(undefined8 **)PTR_DAT_002a2760" * (cast_expression "(undefined8 **)PTR_DAT_002a2760" ( (type_descriptor "undefined8 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier)) = identifier) ;) (expression_statement "PTR_DAT_002a2760 = (undefined *)(puVar4 + 2);" (assignment_expression "PTR_DAT_002a2760 = (undefined *)(puVar4 + 2)" identifier = (cast_expression "(undefined *)(puVar4 + 2)" ( (type_descriptor "undefined *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar4 + 2)" ( (binary_expression "puVar4 + 2" identifier + number_literal) )))) ;) }))) (return_statement "return puVar4;" return identifier ;) })))
(translation_unit "lang_memory_region_type * lang_memory_region_lookup(char *name,bfd_boolean create)\n\n{\n  int iVar1;\n  char *pcVar2;\n  lang_memory_region_type *plVar3;\n  long lVar4;\n  memory_region_struct *pmVar5;\n  byte *pbVar6;\n  byte *pbVar7;\n  bool bVar8;\n  bool bVar9;\n  byte bVar10;\n  \n  bVar10 = 0;\n  if (name == (char *)0x0) {\n    plVar3 = (lang_memory_region_type *)0x0;\n  }\n  else {\n    pmVar5 = lang_memory_region_list;\n    plVar3 = lang_memory_region_list;\n    if (lang_memory_region_list != (lang_memory_region_type *)0x0) {\n      do {\n        iVar1 = strcmp((pmVar5->name_list).name,name);\n        if (iVar1 == 0) {\n          if (create == 0) {\n            return plVar3;\n          }\n          pcVar2 = (char *)dcgettext(0,"%P:%pS: warning: redeclaration of memory region `%s\'\n",5);\n          einfo(pcVar2,0,name);\n          return plVar3;\n        }\n        pmVar5 = (memory_region_struct *)(pmVar5->name_list).next;\n      } while ((pmVar5 != (memory_region_struct *)0x0) ||\n              (pmVar5 = plVar3->next, plVar3 = pmVar5, pmVar5 != (memory_region_struct *)0x0));\n    }\n    bVar8 = false;\n    bVar9 = create == 0;\n    if (bVar9) {\n      lVar4 = 10;\n      pbVar6 = (byte *)name;\n      pbVar7 = (byte *)"*default*";\n      do {\n        if (lVar4 == 0) break;\n        lVar4 = lVar4 + -1;\n        bVar8 = *pbVar6 < *pbVar7;\n        bVar9 = *pbVar6 == *pbVar7;\n        pbVar6 = pbVar6 + (ulong)bVar10 * -2 + 1;\n        pbVar7 = pbVar7 + (ulong)bVar10 * -2 + 1;\n      } while (bVar9);\n      if ((!bVar8 && !bVar9) != bVar8) {\n        pcVar2 = (char *)dcgettext(0,"%P:%pS: warning: memory region `%s\' not declared\n",5);\n        einfo(pcVar2,0,name);\n      }\n    }\n    plVar3 = (lang_memory_region_type *)stat_alloc(0x58);\n    pcVar2 = (char *)xstrdup(name);\n    (plVar3->name_list).next = (memory_region_name_struct *)0x0;\n    (plVar3->name_list).name = pcVar2;\n    plVar3->next = (memory_region_struct *)0x0;\n    plVar3->origin_exp = (etree_union *)0x0;\n    plVar3->origin = 0;\n    plVar3->length = 0xffffffffffffffff;\n    plVar3->length_exp = (etree_union *)0x0;\n    plVar3->current = 0;\n    plVar3->last_os = (lang_statement_union *)0x0;\n    plVar3->flags = 0;\n    plVar3->not_flags = 0;\n    plVar3->had_full_message = 0;\n    *lang_memory_region_list_tail = plVar3;\n    lang_memory_region_list_tail = &plVar3->next;\n  }\n  return plVar3;\n}\n\n" (function_definition "lang_memory_region_type * lang_memory_region_lookup(char *name,bfd_boolean create)\n\n{\n  int iVar1;\n  char *pcVar2;\n  lang_memory_region_type *plVar3;\n  long lVar4;\n  memory_region_struct *pmVar5;\n  byte *pbVar6;\n  byte *pbVar7;\n  bool bVar8;\n  bool bVar9;\n  byte bVar10;\n  \n  bVar10 = 0;\n  if (name == (char *)0x0) {\n    plVar3 = (lang_memory_region_type *)0x0;\n  }\n  else {\n    pmVar5 = lang_memory_region_list;\n    plVar3 = lang_memory_region_list;\n    if (lang_memory_region_list != (lang_memory_region_type *)0x0) {\n      do {\n        iVar1 = strcmp((pmVar5->name_list).name,name);\n        if (iVar1 == 0) {\n          if (create == 0) {\n            return plVar3;\n          }\n          pcVar2 = (char *)dcgettext(0,"%P:%pS: warning: redeclaration of memory region `%s\'\n",5);\n          einfo(pcVar2,0,name);\n          return plVar3;\n        }\n        pmVar5 = (memory_region_struct *)(pmVar5->name_list).next;\n      } while ((pmVar5 != (memory_region_struct *)0x0) ||\n              (pmVar5 = plVar3->next, plVar3 = pmVar5, pmVar5 != (memory_region_struct *)0x0));\n    }\n    bVar8 = false;\n    bVar9 = create == 0;\n    if (bVar9) {\n      lVar4 = 10;\n      pbVar6 = (byte *)name;\n      pbVar7 = (byte *)"*default*";\n      do {\n        if (lVar4 == 0) break;\n        lVar4 = lVar4 + -1;\n        bVar8 = *pbVar6 < *pbVar7;\n        bVar9 = *pbVar6 == *pbVar7;\n        pbVar6 = pbVar6 + (ulong)bVar10 * -2 + 1;\n        pbVar7 = pbVar7 + (ulong)bVar10 * -2 + 1;\n      } while (bVar9);\n      if ((!bVar8 && !bVar9) != bVar8) {\n        pcVar2 = (char *)dcgettext(0,"%P:%pS: warning: memory region `%s\' not declared\n",5);\n        einfo(pcVar2,0,name);\n      }\n    }\n    plVar3 = (lang_memory_region_type *)stat_alloc(0x58);\n    pcVar2 = (char *)xstrdup(name);\n    (plVar3->name_list).next = (memory_region_name_struct *)0x0;\n    (plVar3->name_list).name = pcVar2;\n    plVar3->next = (memory_region_struct *)0x0;\n    plVar3->origin_exp = (etree_union *)0x0;\n    plVar3->origin = 0;\n    plVar3->length = 0xffffffffffffffff;\n    plVar3->length_exp = (etree_union *)0x0;\n    plVar3->current = 0;\n    plVar3->last_os = (lang_statement_union *)0x0;\n    plVar3->flags = 0;\n    plVar3->not_flags = 0;\n    plVar3->had_full_message = 0;\n    *lang_memory_region_list_tail = plVar3;\n    lang_memory_region_list_tail = &plVar3->next;\n  }\n  return plVar3;\n}" type_identifier (pointer_declarator "* lang_memory_region_lookup(char *name,bfd_boolean create)" * (function_declarator "lang_memory_region_lookup(char *name,bfd_boolean create)" identifier (parameter_list "(char *name,bfd_boolean create)" ( (parameter_declaration "char *name" primitive_type (pointer_declarator "*name" * identifier)) , (parameter_declaration "bfd_boolean create" type_identifier identifier) )))) (compound_statement "{\n  int iVar1;\n  char *pcVar2;\n  lang_memory_region_type *plVar3;\n  long lVar4;\n  memory_region_struct *pmVar5;\n  byte *pbVar6;\n  byte *pbVar7;\n  bool bVar8;\n  bool bVar9;\n  byte bVar10;\n  \n  bVar10 = 0;\n  if (name == (char *)0x0) {\n    plVar3 = (lang_memory_region_type *)0x0;\n  }\n  else {\n    pmVar5 = lang_memory_region_list;\n    plVar3 = lang_memory_region_list;\n    if (lang_memory_region_list != (lang_memory_region_type *)0x0) {\n      do {\n        iVar1 = strcmp((pmVar5->name_list).name,name);\n        if (iVar1 == 0) {\n          if (create == 0) {\n            return plVar3;\n          }\n          pcVar2 = (char *)dcgettext(0,"%P:%pS: warning: redeclaration of memory region `%s\'\n",5);\n          einfo(pcVar2,0,name);\n          return plVar3;\n        }\n        pmVar5 = (memory_region_struct *)(pmVar5->name_list).next;\n      } while ((pmVar5 != (memory_region_struct *)0x0) ||\n              (pmVar5 = plVar3->next, plVar3 = pmVar5, pmVar5 != (memory_region_struct *)0x0));\n    }\n    bVar8 = false;\n    bVar9 = create == 0;\n    if (bVar9) {\n      lVar4 = 10;\n      pbVar6 = (byte *)name;\n      pbVar7 = (byte *)"*default*";\n      do {\n        if (lVar4 == 0) break;\n        lVar4 = lVar4 + -1;\n        bVar8 = *pbVar6 < *pbVar7;\n        bVar9 = *pbVar6 == *pbVar7;\n        pbVar6 = pbVar6 + (ulong)bVar10 * -2 + 1;\n        pbVar7 = pbVar7 + (ulong)bVar10 * -2 + 1;\n      } while (bVar9);\n      if ((!bVar8 && !bVar9) != bVar8) {\n        pcVar2 = (char *)dcgettext(0,"%P:%pS: warning: memory region `%s\' not declared\n",5);\n        einfo(pcVar2,0,name);\n      }\n    }\n    plVar3 = (lang_memory_region_type *)stat_alloc(0x58);\n    pcVar2 = (char *)xstrdup(name);\n    (plVar3->name_list).next = (memory_region_name_struct *)0x0;\n    (plVar3->name_list).name = pcVar2;\n    plVar3->next = (memory_region_struct *)0x0;\n    plVar3->origin_exp = (etree_union *)0x0;\n    plVar3->origin = 0;\n    plVar3->length = 0xffffffffffffffff;\n    plVar3->length_exp = (etree_union *)0x0;\n    plVar3->current = 0;\n    plVar3->last_os = (lang_statement_union *)0x0;\n    plVar3->flags = 0;\n    plVar3->not_flags = 0;\n    plVar3->had_full_message = 0;\n    *lang_memory_region_list_tail = plVar3;\n    lang_memory_region_list_tail = &plVar3->next;\n  }\n  return plVar3;\n}" { (declaration "int iVar1;" primitive_type identifier ;) (declaration "char *pcVar2;" primitive_type (pointer_declarator "*pcVar2" * identifier) ;) (declaration "lang_memory_region_type *plVar3;" type_identifier (pointer_declarator "*plVar3" * identifier) ;) (declaration "long lVar4;" (sized_type_specifier "long" long) identifier ;) (declaration "memory_region_struct *pmVar5;" type_identifier (pointer_declarator "*pmVar5" * identifier) ;) (declaration "byte *pbVar6;" type_identifier (pointer_declarator "*pbVar6" * identifier) ;) (declaration "byte *pbVar7;" type_identifier (pointer_declarator "*pbVar7" * identifier) ;) (declaration "bool bVar8;" primitive_type identifier ;) (declaration "bool bVar9;" primitive_type identifier ;) (declaration "byte bVar10;" type_identifier identifier ;) (expression_statement "bVar10 = 0;" (assignment_expression "bVar10 = 0" identifier = number_literal) ;) (if_statement "if (name == (char *)0x0) {\n    plVar3 = (lang_memory_region_type *)0x0;\n  }\n  else {\n    pmVar5 = lang_memory_region_list;\n    plVar3 = lang_memory_region_list;\n    if (lang_memory_region_list != (lang_memory_region_type *)0x0) {\n      do {\n        iVar1 = strcmp((pmVar5->name_list).name,name);\n        if (iVar1 == 0) {\n          if (create == 0) {\n            return plVar3;\n          }\n          pcVar2 = (char *)dcgettext(0,"%P:%pS: warning: redeclaration of memory region `%s\'\n",5);\n          einfo(pcVar2,0,name);\n          return plVar3;\n        }\n        pmVar5 = (memory_region_struct *)(pmVar5->name_list).next;\n      } while ((pmVar5 != (memory_region_struct *)0x0) ||\n              (pmVar5 = plVar3->next, plVar3 = pmVar5, pmVar5 != (memory_region_struct *)0x0));\n    }\n    bVar8 = false;\n    bVar9 = create == 0;\n    if (bVar9) {\n      lVar4 = 10;\n      pbVar6 = (byte *)name;\n      pbVar7 = (byte *)"*default*";\n      do {\n        if (lVar4 == 0) break;\n        lVar4 = lVar4 + -1;\n        bVar8 = *pbVar6 < *pbVar7;\n        bVar9 = *pbVar6 == *pbVar7;\n        pbVar6 = pbVar6 + (ulong)bVar10 * -2 + 1;\n        pbVar7 = pbVar7 + (ulong)bVar10 * -2 + 1;\n      } while (bVar9);\n      if ((!bVar8 && !bVar9) != bVar8) {\n        pcVar2 = (char *)dcgettext(0,"%P:%pS: warning: memory region `%s\' not declared\n",5);\n        einfo(pcVar2,0,name);\n      }\n    }\n    plVar3 = (lang_memory_region_type *)stat_alloc(0x58);\n    pcVar2 = (char *)xstrdup(name);\n    (plVar3->name_list).next = (memory_region_name_struct *)0x0;\n    (plVar3->name_list).name = pcVar2;\n    plVar3->next = (memory_region_struct *)0x0;\n    plVar3->origin_exp = (etree_union *)0x0;\n    plVar3->origin = 0;\n    plVar3->length = 0xffffffffffffffff;\n    plVar3->length_exp = (etree_union *)0x0;\n    plVar3->current = 0;\n    plVar3->last_os = (lang_statement_union *)0x0;\n    plVar3->flags = 0;\n    plVar3->not_flags = 0;\n    plVar3->had_full_message = 0;\n    *lang_memory_region_list_tail = plVar3;\n    lang_memory_region_list_tail = &plVar3->next;\n  }" if (parenthesized_expression "(name == (char *)0x0)" ( (binary_expression "name == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    plVar3 = (lang_memory_region_type *)0x0;\n  }" { (expression_statement "plVar3 = (lang_memory_region_type *)0x0;" (assignment_expression "plVar3 = (lang_memory_region_type *)0x0" identifier = (cast_expression "(lang_memory_region_type *)0x0" ( (type_descriptor "lang_memory_region_type *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) }) (else_clause "else {\n    pmVar5 = lang_memory_region_list;\n    plVar3 = lang_memory_region_list;\n    if (lang_memory_region_list != (lang_memory_region_type *)0x0) {\n      do {\n        iVar1 = strcmp((pmVar5->name_list).name,name);\n        if (iVar1 == 0) {\n          if (create == 0) {\n            return plVar3;\n          }\n          pcVar2 = (char *)dcgettext(0,"%P:%pS: warning: redeclaration of memory region `%s\'\n",5);\n          einfo(pcVar2,0,name);\n          return plVar3;\n        }\n        pmVar5 = (memory_region_struct *)(pmVar5->name_list).next;\n      } while ((pmVar5 != (memory_region_struct *)0x0) ||\n              (pmVar5 = plVar3->next, plVar3 = pmVar5, pmVar5 != (memory_region_struct *)0x0));\n    }\n    bVar8 = false;\n    bVar9 = create == 0;\n    if (bVar9) {\n      lVar4 = 10;\n      pbVar6 = (byte *)name;\n      pbVar7 = (byte *)"*default*";\n      do {\n        if (lVar4 == 0) break;\n        lVar4 = lVar4 + -1;\n        bVar8 = *pbVar6 < *pbVar7;\n        bVar9 = *pbVar6 == *pbVar7;\n        pbVar6 = pbVar6 + (ulong)bVar10 * -2 + 1;\n        pbVar7 = pbVar7 + (ulong)bVar10 * -2 + 1;\n      } while (bVar9);\n      if ((!bVar8 && !bVar9) != bVar8) {\n        pcVar2 = (char *)dcgettext(0,"%P:%pS: warning: memory region `%s\' not declared\n",5);\n        einfo(pcVar2,0,name);\n      }\n    }\n    plVar3 = (lang_memory_region_type *)stat_alloc(0x58);\n    pcVar2 = (char *)xstrdup(name);\n    (plVar3->name_list).next = (memory_region_name_struct *)0x0;\n    (plVar3->name_list).name = pcVar2;\n    plVar3->next = (memory_region_struct *)0x0;\n    plVar3->origin_exp = (etree_union *)0x0;\n    plVar3->origin = 0;\n    plVar3->length = 0xffffffffffffffff;\n    plVar3->length_exp = (etree_union *)0x0;\n    plVar3->current = 0;\n    plVar3->last_os = (lang_statement_union *)0x0;\n    plVar3->flags = 0;\n    plVar3->not_flags = 0;\n    plVar3->had_full_message = 0;\n    *lang_memory_region_list_tail = plVar3;\n    lang_memory_region_list_tail = &plVar3->next;\n  }" else (compound_statement "{\n    pmVar5 = lang_memory_region_list;\n    plVar3 = lang_memory_region_list;\n    if (lang_memory_region_list != (lang_memory_region_type *)0x0) {\n      do {\n        iVar1 = strcmp((pmVar5->name_list).name,name);\n        if (iVar1 == 0) {\n          if (create == 0) {\n            return plVar3;\n          }\n          pcVar2 = (char *)dcgettext(0,"%P:%pS: warning: redeclaration of memory region `%s\'\n",5);\n          einfo(pcVar2,0,name);\n          return plVar3;\n        }\n        pmVar5 = (memory_region_struct *)(pmVar5->name_list).next;\n      } while ((pmVar5 != (memory_region_struct *)0x0) ||\n              (pmVar5 = plVar3->next, plVar3 = pmVar5, pmVar5 != (memory_region_struct *)0x0));\n    }\n    bVar8 = false;\n    bVar9 = create == 0;\n    if (bVar9) {\n      lVar4 = 10;\n      pbVar6 = (byte *)name;\n      pbVar7 = (byte *)"*default*";\n      do {\n        if (lVar4 == 0) break;\n        lVar4 = lVar4 + -1;\n        bVar8 = *pbVar6 < *pbVar7;\n        bVar9 = *pbVar6 == *pbVar7;\n        pbVar6 = pbVar6 + (ulong)bVar10 * -2 + 1;\n        pbVar7 = pbVar7 + (ulong)bVar10 * -2 + 1;\n      } while (bVar9);\n      if ((!bVar8 && !bVar9) != bVar8) {\n        pcVar2 = (char *)dcgettext(0,"%P:%pS: warning: memory region `%s\' not declared\n",5);\n        einfo(pcVar2,0,name);\n      }\n    }\n    plVar3 = (lang_memory_region_type *)stat_alloc(0x58);\n    pcVar2 = (char *)xstrdup(name);\n    (plVar3->name_list).next = (memory_region_name_struct *)0x0;\n    (plVar3->name_list).name = pcVar2;\n    plVar3->next = (memory_region_struct *)0x0;\n    plVar3->origin_exp = (etree_union *)0x0;\n    plVar3->origin = 0;\n    plVar3->length = 0xffffffffffffffff;\n    plVar3->length_exp = (etree_union *)0x0;\n    plVar3->current = 0;\n    plVar3->last_os = (lang_statement_union *)0x0;\n    plVar3->flags = 0;\n    plVar3->not_flags = 0;\n    plVar3->had_full_message = 0;\n    *lang_memory_region_list_tail = plVar3;\n    lang_memory_region_list_tail = &plVar3->next;\n  }" { (expression_statement "pmVar5 = lang_memory_region_list;" (assignment_expression "pmVar5 = lang_memory_region_list" identifier = identifier) ;) (expression_statement "plVar3 = lang_memory_region_list;" (assignment_expression "plVar3 = lang_memory_region_list" identifier = identifier) ;) (if_statement "if (lang_memory_region_list != (lang_memory_region_type *)0x0) {\n      do {\n        iVar1 = strcmp((pmVar5->name_list).name,name);\n        if (iVar1 == 0) {\n          if (create == 0) {\n            return plVar3;\n          }\n          pcVar2 = (char *)dcgettext(0,"%P:%pS: warning: redeclaration of memory region `%s\'\n",5);\n          einfo(pcVar2,0,name);\n          return plVar3;\n        }\n        pmVar5 = (memory_region_struct *)(pmVar5->name_list).next;\n      } while ((pmVar5 != (memory_region_struct *)0x0) ||\n              (pmVar5 = plVar3->next, plVar3 = pmVar5, pmVar5 != (memory_region_struct *)0x0));\n    }" if (parenthesized_expression "(lang_memory_region_list != (lang_memory_region_type *)0x0)" ( (binary_expression "lang_memory_region_list != (lang_memory_region_type *)0x0" identifier != (cast_expression "(lang_memory_region_type *)0x0" ( (type_descriptor "lang_memory_region_type *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      do {\n        iVar1 = strcmp((pmVar5->name_list).name,name);\n        if (iVar1 == 0) {\n          if (create == 0) {\n            return plVar3;\n          }\n          pcVar2 = (char *)dcgettext(0,"%P:%pS: warning: redeclaration of memory region `%s\'\n",5);\n          einfo(pcVar2,0,name);\n          return plVar3;\n        }\n        pmVar5 = (memory_region_struct *)(pmVar5->name_list).next;\n      } while ((pmVar5 != (memory_region_struct *)0x0) ||\n              (pmVar5 = plVar3->next, plVar3 = pmVar5, pmVar5 != (memory_region_struct *)0x0));\n    }" { (do_statement "do {\n        iVar1 = strcmp((pmVar5->name_list).name,name);\n        if (iVar1 == 0) {\n          if (create == 0) {\n            return plVar3;\n          }\n          pcVar2 = (char *)dcgettext(0,"%P:%pS: warning: redeclaration of memory region `%s\'\n",5);\n          einfo(pcVar2,0,name);\n          return plVar3;\n        }\n        pmVar5 = (memory_region_struct *)(pmVar5->name_list).next;\n      } while ((pmVar5 != (memory_region_struct *)0x0) ||\n              (pmVar5 = plVar3->next, plVar3 = pmVar5, pmVar5 != (memory_region_struct *)0x0));" do (compound_statement "{\n        iVar1 = strcmp((pmVar5->name_list).name,name);\n        if (iVar1 == 0) {\n          if (create == 0) {\n            return plVar3;\n          }\n          pcVar2 = (char *)dcgettext(0,"%P:%pS: warning: redeclaration of memory region `%s\'\n",5);\n          einfo(pcVar2,0,name);\n          return plVar3;\n        }\n        pmVar5 = (memory_region_struct *)(pmVar5->name_list).next;\n      }" { (expression_statement "iVar1 = strcmp((pmVar5->name_list).name,name);" (assignment_expression "iVar1 = strcmp((pmVar5->name_list).name,name)" identifier = (call_expression "strcmp((pmVar5->name_list).name,name)" identifier (argument_list "((pmVar5->name_list).name,name)" ( (field_expression "(pmVar5->name_list).name" (parenthesized_expression "(pmVar5->name_list)" ( (field_expression "pmVar5->name_list" identifier -> field_identifier) )) . field_identifier) , identifier )))) ;) (if_statement "if (iVar1 == 0) {\n          if (create == 0) {\n            return plVar3;\n          }\n          pcVar2 = (char *)dcgettext(0,"%P:%pS: warning: redeclaration of memory region `%s\'\n",5);\n          einfo(pcVar2,0,name);\n          return plVar3;\n        }" if (parenthesized_expression "(iVar1 == 0)" ( (binary_expression "iVar1 == 0" identifier == number_literal) )) (compound_statement "{\n          if (create == 0) {\n            return plVar3;\n          }\n          pcVar2 = (char *)dcgettext(0,"%P:%pS: warning: redeclaration of memory region `%s\'\n",5);\n          einfo(pcVar2,0,name);\n          return plVar3;\n        }" { (if_statement "if (create == 0) {\n            return plVar3;\n          }" if (parenthesized_expression "(create == 0)" ( (binary_expression "create == 0" identifier == number_literal) )) (compound_statement "{\n            return plVar3;\n          }" { (return_statement "return plVar3;" return identifier ;) })) (expression_statement "pcVar2 = (char *)dcgettext(0,"%P:%pS: warning: redeclaration of memory region `%s\'\n",5);" (assignment_expression "pcVar2 = (char *)dcgettext(0,"%P:%pS: warning: redeclaration of memory region `%s\'\n",5)" identifier = (cast_expression "(char *)dcgettext(0,"%P:%pS: warning: redeclaration of memory region `%s\'\n",5)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "dcgettext(0,"%P:%pS: warning: redeclaration of memory region `%s\'\n",5)" identifier (argument_list "(0,"%P:%pS: warning: redeclaration of memory region `%s\'\n",5)" ( number_literal , (string_literal ""%P:%pS: warning: redeclaration of memory region `%s\'\n"" " string_content escape_sequence escape_sequence ") , number_literal ))))) ;) (expression_statement "einfo(pcVar2,0,name);" (call_expression "einfo(pcVar2,0,name)" identifier (argument_list "(pcVar2,0,name)" ( identifier , number_literal , identifier ))) ;) (return_statement "return plVar3;" return identifier ;) })) (expression_statement "pmVar5 = (memory_region_struct *)(pmVar5->name_list).next;" (assignment_expression "pmVar5 = (memory_region_struct *)(pmVar5->name_list).next" identifier = (cast_expression "(memory_region_struct *)(pmVar5->name_list).next" ( (type_descriptor "memory_region_struct *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "(pmVar5->name_list).next" (parenthesized_expression "(pmVar5->name_list)" ( (field_expression "pmVar5->name_list" identifier -> field_identifier) )) . field_identifier))) ;) }) while (parenthesized_expression "((pmVar5 != (memory_region_struct *)0x0) ||\n              (pmVar5 = plVar3->next, plVar3 = pmVar5, pmVar5 != (memory_region_struct *)0x0))" ( (binary_expression "(pmVar5 != (memory_region_struct *)0x0) ||\n              (pmVar5 = plVar3->next, plVar3 = pmVar5, pmVar5 != (memory_region_struct *)0x0)" (parenthesized_expression "(pmVar5 != (memory_region_struct *)0x0)" ( (binary_expression "pmVar5 != (memory_region_struct *)0x0" identifier != (cast_expression "(memory_region_struct *)0x0" ( (type_descriptor "memory_region_struct *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) || (parenthesized_expression "(pmVar5 = plVar3->next, plVar3 = pmVar5, pmVar5 != (memory_region_struct *)0x0)" ( (comma_expression "pmVar5 = plVar3->next, plVar3 = pmVar5, pmVar5 != (memory_region_struct *)0x0" (assignment_expression "pmVar5 = plVar3->next" identifier = (field_expression "plVar3->next" identifier -> field_identifier)) , (comma_expression "plVar3 = pmVar5, pmVar5 != (memory_region_struct *)0x0" (assignment_expression "plVar3 = pmVar5" identifier = identifier) , (binary_expression "pmVar5 != (memory_region_struct *)0x0" identifier != (cast_expression "(memory_region_struct *)0x0" ( (type_descriptor "memory_region_struct *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)))) ))) )) ;) })) (expression_statement "bVar8 = false;" (assignment_expression "bVar8 = false" identifier = false) ;) (expression_statement "bVar9 = create == 0;" (assignment_expression "bVar9 = create == 0" identifier = (binary_expression "create == 0" identifier == number_literal)) ;) (if_statement "if (bVar9) {\n      lVar4 = 10;\n      pbVar6 = (byte *)name;\n      pbVar7 = (byte *)"*default*";\n      do {\n        if (lVar4 == 0) break;\n        lVar4 = lVar4 + -1;\n        bVar8 = *pbVar6 < *pbVar7;\n        bVar9 = *pbVar6 == *pbVar7;\n        pbVar6 = pbVar6 + (ulong)bVar10 * -2 + 1;\n        pbVar7 = pbVar7 + (ulong)bVar10 * -2 + 1;\n      } while (bVar9);\n      if ((!bVar8 && !bVar9) != bVar8) {\n        pcVar2 = (char *)dcgettext(0,"%P:%pS: warning: memory region `%s\' not declared\n",5);\n        einfo(pcVar2,0,name);\n      }\n    }" if (parenthesized_expression "(bVar9)" ( identifier )) (compound_statement "{\n      lVar4 = 10;\n      pbVar6 = (byte *)name;\n      pbVar7 = (byte *)"*default*";\n      do {\n        if (lVar4 == 0) break;\n        lVar4 = lVar4 + -1;\n        bVar8 = *pbVar6 < *pbVar7;\n        bVar9 = *pbVar6 == *pbVar7;\n        pbVar6 = pbVar6 + (ulong)bVar10 * -2 + 1;\n        pbVar7 = pbVar7 + (ulong)bVar10 * -2 + 1;\n      } while (bVar9);\n      if ((!bVar8 && !bVar9) != bVar8) {\n        pcVar2 = (char *)dcgettext(0,"%P:%pS: warning: memory region `%s\' not declared\n",5);\n        einfo(pcVar2,0,name);\n      }\n    }" { (expression_statement "lVar4 = 10;" (assignment_expression "lVar4 = 10" identifier = number_literal) ;) (expression_statement "pbVar6 = (byte *)name;" (assignment_expression "pbVar6 = (byte *)name" identifier = (cast_expression "(byte *)name" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (expression_statement "pbVar7 = (byte *)"*default*";" (assignment_expression "pbVar7 = (byte *)"*default*"" identifier = (cast_expression "(byte *)"*default*"" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (string_literal ""*default*"" " string_content "))) ;) (do_statement "do {\n        if (lVar4 == 0) break;\n        lVar4 = lVar4 + -1;\n        bVar8 = *pbVar6 < *pbVar7;\n        bVar9 = *pbVar6 == *pbVar7;\n        pbVar6 = pbVar6 + (ulong)bVar10 * -2 + 1;\n        pbVar7 = pbVar7 + (ulong)bVar10 * -2 + 1;\n      } while (bVar9);" do (compound_statement "{\n        if (lVar4 == 0) break;\n        lVar4 = lVar4 + -1;\n        bVar8 = *pbVar6 < *pbVar7;\n        bVar9 = *pbVar6 == *pbVar7;\n        pbVar6 = pbVar6 + (ulong)bVar10 * -2 + 1;\n        pbVar7 = pbVar7 + (ulong)bVar10 * -2 + 1;\n      }" { (if_statement "if (lVar4 == 0) break;" if (parenthesized_expression "(lVar4 == 0)" ( (binary_expression "lVar4 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "lVar4 = lVar4 + -1;" (assignment_expression "lVar4 = lVar4 + -1" identifier = (binary_expression "lVar4 + -1" identifier + number_literal)) ;) (expression_statement "bVar8 = *pbVar6 < *pbVar7;" (assignment_expression "bVar8 = *pbVar6 < *pbVar7" identifier = (binary_expression "*pbVar6 < *pbVar7" (pointer_expression "*pbVar6" * identifier) < (pointer_expression "*pbVar7" * identifier))) ;) (expression_statement "bVar9 = *pbVar6 == *pbVar7;" (assignment_expression "bVar9 = *pbVar6 == *pbVar7" identifier = (binary_expression "*pbVar6 == *pbVar7" (pointer_expression "*pbVar6" * identifier) == (pointer_expression "*pbVar7" * identifier))) ;) (expression_statement "pbVar6 = pbVar6 + (ulong)bVar10 * -2 + 1;" (assignment_expression "pbVar6 = pbVar6 + (ulong)bVar10 * -2 + 1" identifier = (binary_expression "pbVar6 + (ulong)bVar10 * -2 + 1" (binary_expression "pbVar6 + (ulong)bVar10 * -2" identifier + (binary_expression "(ulong)bVar10 * -2" (cast_expression "(ulong)bVar10" ( (type_descriptor "ulong" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) (expression_statement "pbVar7 = pbVar7 + (ulong)bVar10 * -2 + 1;" (assignment_expression "pbVar7 = pbVar7 + (ulong)bVar10 * -2 + 1" identifier = (binary_expression "pbVar7 + (ulong)bVar10 * -2 + 1" (binary_expression "pbVar7 + (ulong)bVar10 * -2" identifier + (binary_expression "(ulong)bVar10 * -2" (cast_expression "(ulong)bVar10" ( (type_descriptor "ulong" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) }) while (parenthesized_expression "(bVar9)" ( identifier )) ;) (if_statement "if ((!bVar8 && !bVar9) != bVar8) {\n        pcVar2 = (char *)dcgettext(0,"%P:%pS: warning: memory region `%s\' not declared\n",5);\n        einfo(pcVar2,0,name);\n      }" if (parenthesized_expression "((!bVar8 && !bVar9) != bVar8)" ( (binary_expression "(!bVar8 && !bVar9) != bVar8" (parenthesized_expression "(!bVar8 && !bVar9)" ( (binary_expression "!bVar8 && !bVar9" (unary_expression "!bVar8" ! identifier) && (unary_expression "!bVar9" ! identifier)) )) != identifier) )) (compound_statement "{\n        pcVar2 = (char *)dcgettext(0,"%P:%pS: warning: memory region `%s\' not declared\n",5);\n        einfo(pcVar2,0,name);\n      }" { (expression_statement "pcVar2 = (char *)dcgettext(0,"%P:%pS: warning: memory region `%s\' not declared\n",5);" (assignment_expression "pcVar2 = (char *)dcgettext(0,"%P:%pS: warning: memory region `%s\' not declared\n",5)" identifier = (cast_expression "(char *)dcgettext(0,"%P:%pS: warning: memory region `%s\' not declared\n",5)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "dcgettext(0,"%P:%pS: warning: memory region `%s\' not declared\n",5)" identifier (argument_list "(0,"%P:%pS: warning: memory region `%s\' not declared\n",5)" ( number_literal , (string_literal ""%P:%pS: warning: memory region `%s\' not declared\n"" " string_content escape_sequence string_content escape_sequence ") , number_literal ))))) ;) (expression_statement "einfo(pcVar2,0,name);" (call_expression "einfo(pcVar2,0,name)" identifier (argument_list "(pcVar2,0,name)" ( identifier , number_literal , identifier ))) ;) })) })) (expression_statement "plVar3 = (lang_memory_region_type *)stat_alloc(0x58);" (assignment_expression "plVar3 = (lang_memory_region_type *)stat_alloc(0x58)" identifier = (cast_expression "(lang_memory_region_type *)stat_alloc(0x58)" ( (type_descriptor "lang_memory_region_type *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "stat_alloc(0x58)" identifier (argument_list "(0x58)" ( number_literal ))))) ;) (expression_statement "pcVar2 = (char *)xstrdup(name);" (assignment_expression "pcVar2 = (char *)xstrdup(name)" identifier = (cast_expression "(char *)xstrdup(name)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "xstrdup(name)" identifier (argument_list "(name)" ( identifier ))))) ;) (expression_statement "(plVar3->name_list).next = (memory_region_name_struct *)0x0;" (assignment_expression "(plVar3->name_list).next = (memory_region_name_struct *)0x0" (field_expression "(plVar3->name_list).next" (parenthesized_expression "(plVar3->name_list)" ( (field_expression "plVar3->name_list" identifier -> field_identifier) )) . field_identifier) = (cast_expression "(memory_region_name_struct *)0x0" ( (type_descriptor "memory_region_name_struct *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "(plVar3->name_list).name = pcVar2;" (assignment_expression "(plVar3->name_list).name = pcVar2" (field_expression "(plVar3->name_list).name" (parenthesized_expression "(plVar3->name_list)" ( (field_expression "plVar3->name_list" identifier -> field_identifier) )) . field_identifier) = identifier) ;) (expression_statement "plVar3->next = (memory_region_struct *)0x0;" (assignment_expression "plVar3->next = (memory_region_struct *)0x0" (field_expression "plVar3->next" identifier -> field_identifier) = (cast_expression "(memory_region_struct *)0x0" ( (type_descriptor "memory_region_struct *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "plVar3->origin_exp = (etree_union *)0x0;" (assignment_expression "plVar3->origin_exp = (etree_union *)0x0" (field_expression "plVar3->origin_exp" identifier -> field_identifier) = (cast_expression "(etree_union *)0x0" ( (type_descriptor "etree_union *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "plVar3->origin = 0;" (assignment_expression "plVar3->origin = 0" (field_expression "plVar3->origin" identifier -> field_identifier) = number_literal) ;) (expression_statement "plVar3->length = 0xffffffffffffffff;" (assignment_expression "plVar3->length = 0xffffffffffffffff" (field_expression "plVar3->length" identifier -> field_identifier) = number_literal) ;) (expression_statement "plVar3->length_exp = (etree_union *)0x0;" (assignment_expression "plVar3->length_exp = (etree_union *)0x0" (field_expression "plVar3->length_exp" identifier -> field_identifier) = (cast_expression "(etree_union *)0x0" ( (type_descriptor "etree_union *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "plVar3->current = 0;" (assignment_expression "plVar3->current = 0" (field_expression "plVar3->current" identifier -> field_identifier) = number_literal) ;) (expression_statement "plVar3->last_os = (lang_statement_union *)0x0;" (assignment_expression "plVar3->last_os = (lang_statement_union *)0x0" (field_expression "plVar3->last_os" identifier -> field_identifier) = (cast_expression "(lang_statement_union *)0x0" ( (type_descriptor "lang_statement_union *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "plVar3->flags = 0;" (assignment_expression "plVar3->flags = 0" (field_expression "plVar3->flags" identifier -> field_identifier) = number_literal) ;) (expression_statement "plVar3->not_flags = 0;" (assignment_expression "plVar3->not_flags = 0" (field_expression "plVar3->not_flags" identifier -> field_identifier) = number_literal) ;) (expression_statement "plVar3->had_full_message = 0;" (assignment_expression "plVar3->had_full_message = 0" (field_expression "plVar3->had_full_message" identifier -> field_identifier) = number_literal) ;) (expression_statement "*lang_memory_region_list_tail = plVar3;" (assignment_expression "*lang_memory_region_list_tail = plVar3" (pointer_expression "*lang_memory_region_list_tail" * identifier) = identifier) ;) (expression_statement "lang_memory_region_list_tail = &plVar3->next;" (assignment_expression "lang_memory_region_list_tail = &plVar3->next" identifier = (pointer_expression "&plVar3->next" & (field_expression "plVar3->next" identifier -> field_identifier))) ;) }))) (return_statement "return plVar3;" return identifier ;) })))
(translation_unit "undefined8 * FUN_00119ea0(byte *param_1,int param_2)\n\n{\n  undefined8 *puVar1;\n  int iVar2;\n  undefined8 uVar3;\n  undefined8 *puVar4;\n  long lVar5;\n  byte *pbVar6;\n  byte *pbVar7;\n  undefined8 *puVar8;\n  bool bVar9;\n  bool bVar10;\n  byte bVar11;\n  \n  bVar11 = 0;\n  if (param_1 == (byte *)0x0) {\n    puVar4 = (undefined8 *)0x0;\n  }\n  else {\n    puVar4 = DAT_002a5298;\n    puVar8 = DAT_002a5298;\n    if (DAT_002a5298 != (undefined8 *)0x0) {\n      do {\n        iVar2 = strcmp((char *)*puVar4,(char *)param_1);\n        if (iVar2 == 0) {\n          if (param_2 == 0) {\n            return puVar8;\n          }\n          uVar3 = dcgettext(0,"%P:%pS: warning: redeclaration of memory region `%s\'\n",5);\n          FUN_00129410(uVar3,0,param_1);\n          return puVar8;\n        }\n        puVar1 = puVar4 + 1;\n        puVar4 = (undefined8 *)*puVar1;\n      } while (((undefined8 *)*puVar1 != (undefined8 *)0x0) ||\n              (puVar4 = (undefined8 *)puVar8[2], puVar8 = puVar4, puVar4 != (undefined8 *)0x0));\n    }\n    bVar9 = false;\n    bVar10 = param_2 == 0;\n    if (bVar10) {\n      lVar5 = 10;\n      pbVar6 = param_1;\n      pbVar7 = (byte *)"*default*";\n      do {\n        if (lVar5 == 0) break;\n        lVar5 = lVar5 + -1;\n        bVar9 = *pbVar6 < *pbVar7;\n        bVar10 = *pbVar6 == *pbVar7;\n        pbVar6 = pbVar6 + (ulong)bVar11 * -2 + 1;\n        pbVar7 = pbVar7 + (ulong)bVar11 * -2 + 1;\n      } while (bVar10);\n      if ((!bVar9 && !bVar10) != bVar9) {\n        uVar3 = dcgettext(0,"%P:%pS: warning: memory region `%s\' not declared\n",5);\n        FUN_00129410(uVar3,0,param_1);\n      }\n    }\n    puVar4 = (undefined8 *)FUN_001197b0(0x58);\n    uVar3 = xstrdup(param_1);\n    puVar4[1] = 0;\n    *puVar4 = uVar3;\n    puVar4[2] = 0;\n    puVar4[3] = 0;\n    puVar4[4] = 0;\n    puVar4[5] = 0xffffffffffffffff;\n    puVar4[6] = 0;\n    puVar4[7] = 0;\n    puVar4[8] = 0;\n    puVar4[9] = 0;\n    *(undefined4 *)(puVar4 + 10) = 0;\n    *(undefined8 **)PTR_DAT_002a2760 = puVar4;\n    PTR_DAT_002a2760 = (undefined *)(puVar4 + 2);\n  }\n  return puVar4;\n}\n\n" (function_definition "undefined8 * FUN_00119ea0(byte *param_1,int param_2)\n\n{\n  undefined8 *puVar1;\n  int iVar2;\n  undefined8 uVar3;\n  undefined8 *puVar4;\n  long lVar5;\n  byte *pbVar6;\n  byte *pbVar7;\n  undefined8 *puVar8;\n  bool bVar9;\n  bool bVar10;\n  byte bVar11;\n  \n  bVar11 = 0;\n  if (param_1 == (byte *)0x0) {\n    puVar4 = (undefined8 *)0x0;\n  }\n  else {\n    puVar4 = DAT_002a5298;\n    puVar8 = DAT_002a5298;\n    if (DAT_002a5298 != (undefined8 *)0x0) {\n      do {\n        iVar2 = strcmp((char *)*puVar4,(char *)param_1);\n        if (iVar2 == 0) {\n          if (param_2 == 0) {\n            return puVar8;\n          }\n          uVar3 = dcgettext(0,"%P:%pS: warning: redeclaration of memory region `%s\'\n",5);\n          FUN_00129410(uVar3,0,param_1);\n          return puVar8;\n        }\n        puVar1 = puVar4 + 1;\n        puVar4 = (undefined8 *)*puVar1;\n      } while (((undefined8 *)*puVar1 != (undefined8 *)0x0) ||\n              (puVar4 = (undefined8 *)puVar8[2], puVar8 = puVar4, puVar4 != (undefined8 *)0x0));\n    }\n    bVar9 = false;\n    bVar10 = param_2 == 0;\n    if (bVar10) {\n      lVar5 = 10;\n      pbVar6 = param_1;\n      pbVar7 = (byte *)"*default*";\n      do {\n        if (lVar5 == 0) break;\n        lVar5 = lVar5 + -1;\n        bVar9 = *pbVar6 < *pbVar7;\n        bVar10 = *pbVar6 == *pbVar7;\n        pbVar6 = pbVar6 + (ulong)bVar11 * -2 + 1;\n        pbVar7 = pbVar7 + (ulong)bVar11 * -2 + 1;\n      } while (bVar10);\n      if ((!bVar9 && !bVar10) != bVar9) {\n        uVar3 = dcgettext(0,"%P:%pS: warning: memory region `%s\' not declared\n",5);\n        FUN_00129410(uVar3,0,param_1);\n      }\n    }\n    puVar4 = (undefined8 *)FUN_001197b0(0x58);\n    uVar3 = xstrdup(param_1);\n    puVar4[1] = 0;\n    *puVar4 = uVar3;\n    puVar4[2] = 0;\n    puVar4[3] = 0;\n    puVar4[4] = 0;\n    puVar4[5] = 0xffffffffffffffff;\n    puVar4[6] = 0;\n    puVar4[7] = 0;\n    puVar4[8] = 0;\n    puVar4[9] = 0;\n    *(undefined4 *)(puVar4 + 10) = 0;\n    *(undefined8 **)PTR_DAT_002a2760 = puVar4;\n    PTR_DAT_002a2760 = (undefined *)(puVar4 + 2);\n  }\n  return puVar4;\n}" type_identifier (pointer_declarator "* FUN_00119ea0(byte *param_1,int param_2)" * (function_declarator "FUN_00119ea0(byte *param_1,int param_2)" identifier (parameter_list "(byte *param_1,int param_2)" ( (parameter_declaration "byte *param_1" type_identifier (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "int param_2" primitive_type identifier) )))) (compound_statement "{\n  undefined8 *puVar1;\n  int iVar2;\n  undefined8 uVar3;\n  undefined8 *puVar4;\n  long lVar5;\n  byte *pbVar6;\n  byte *pbVar7;\n  undefined8 *puVar8;\n  bool bVar9;\n  bool bVar10;\n  byte bVar11;\n  \n  bVar11 = 0;\n  if (param_1 == (byte *)0x0) {\n    puVar4 = (undefined8 *)0x0;\n  }\n  else {\n    puVar4 = DAT_002a5298;\n    puVar8 = DAT_002a5298;\n    if (DAT_002a5298 != (undefined8 *)0x0) {\n      do {\n        iVar2 = strcmp((char *)*puVar4,(char *)param_1);\n        if (iVar2 == 0) {\n          if (param_2 == 0) {\n            return puVar8;\n          }\n          uVar3 = dcgettext(0,"%P:%pS: warning: redeclaration of memory region `%s\'\n",5);\n          FUN_00129410(uVar3,0,param_1);\n          return puVar8;\n        }\n        puVar1 = puVar4 + 1;\n        puVar4 = (undefined8 *)*puVar1;\n      } while (((undefined8 *)*puVar1 != (undefined8 *)0x0) ||\n              (puVar4 = (undefined8 *)puVar8[2], puVar8 = puVar4, puVar4 != (undefined8 *)0x0));\n    }\n    bVar9 = false;\n    bVar10 = param_2 == 0;\n    if (bVar10) {\n      lVar5 = 10;\n      pbVar6 = param_1;\n      pbVar7 = (byte *)"*default*";\n      do {\n        if (lVar5 == 0) break;\n        lVar5 = lVar5 + -1;\n        bVar9 = *pbVar6 < *pbVar7;\n        bVar10 = *pbVar6 == *pbVar7;\n        pbVar6 = pbVar6 + (ulong)bVar11 * -2 + 1;\n        pbVar7 = pbVar7 + (ulong)bVar11 * -2 + 1;\n      } while (bVar10);\n      if ((!bVar9 && !bVar10) != bVar9) {\n        uVar3 = dcgettext(0,"%P:%pS: warning: memory region `%s\' not declared\n",5);\n        FUN_00129410(uVar3,0,param_1);\n      }\n    }\n    puVar4 = (undefined8 *)FUN_001197b0(0x58);\n    uVar3 = xstrdup(param_1);\n    puVar4[1] = 0;\n    *puVar4 = uVar3;\n    puVar4[2] = 0;\n    puVar4[3] = 0;\n    puVar4[4] = 0;\n    puVar4[5] = 0xffffffffffffffff;\n    puVar4[6] = 0;\n    puVar4[7] = 0;\n    puVar4[8] = 0;\n    puVar4[9] = 0;\n    *(undefined4 *)(puVar4 + 10) = 0;\n    *(undefined8 **)PTR_DAT_002a2760 = puVar4;\n    PTR_DAT_002a2760 = (undefined *)(puVar4 + 2);\n  }\n  return puVar4;\n}" { (declaration "undefined8 *puVar1;" type_identifier (pointer_declarator "*puVar1" * identifier) ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "undefined8 uVar3;" type_identifier identifier ;) (declaration "undefined8 *puVar4;" type_identifier (pointer_declarator "*puVar4" * identifier) ;) (declaration "long lVar5;" (sized_type_specifier "long" long) identifier ;) (declaration "byte *pbVar6;" type_identifier (pointer_declarator "*pbVar6" * identifier) ;) (declaration "byte *pbVar7;" type_identifier (pointer_declarator "*pbVar7" * identifier) ;) (declaration "undefined8 *puVar8;" type_identifier (pointer_declarator "*puVar8" * identifier) ;) (declaration "bool bVar9;" primitive_type identifier ;) (declaration "bool bVar10;" primitive_type identifier ;) (declaration "byte bVar11;" type_identifier identifier ;) (expression_statement "bVar11 = 0;" (assignment_expression "bVar11 = 0" identifier = number_literal) ;) (if_statement "if (param_1 == (byte *)0x0) {\n    puVar4 = (undefined8 *)0x0;\n  }\n  else {\n    puVar4 = DAT_002a5298;\n    puVar8 = DAT_002a5298;\n    if (DAT_002a5298 != (undefined8 *)0x0) {\n      do {\n        iVar2 = strcmp((char *)*puVar4,(char *)param_1);\n        if (iVar2 == 0) {\n          if (param_2 == 0) {\n            return puVar8;\n          }\n          uVar3 = dcgettext(0,"%P:%pS: warning: redeclaration of memory region `%s\'\n",5);\n          FUN_00129410(uVar3,0,param_1);\n          return puVar8;\n        }\n        puVar1 = puVar4 + 1;\n        puVar4 = (undefined8 *)*puVar1;\n      } while (((undefined8 *)*puVar1 != (undefined8 *)0x0) ||\n              (puVar4 = (undefined8 *)puVar8[2], puVar8 = puVar4, puVar4 != (undefined8 *)0x0));\n    }\n    bVar9 = false;\n    bVar10 = param_2 == 0;\n    if (bVar10) {\n      lVar5 = 10;\n      pbVar6 = param_1;\n      pbVar7 = (byte *)"*default*";\n      do {\n        if (lVar5 == 0) break;\n        lVar5 = lVar5 + -1;\n        bVar9 = *pbVar6 < *pbVar7;\n        bVar10 = *pbVar6 == *pbVar7;\n        pbVar6 = pbVar6 + (ulong)bVar11 * -2 + 1;\n        pbVar7 = pbVar7 + (ulong)bVar11 * -2 + 1;\n      } while (bVar10);\n      if ((!bVar9 && !bVar10) != bVar9) {\n        uVar3 = dcgettext(0,"%P:%pS: warning: memory region `%s\' not declared\n",5);\n        FUN_00129410(uVar3,0,param_1);\n      }\n    }\n    puVar4 = (undefined8 *)FUN_001197b0(0x58);\n    uVar3 = xstrdup(param_1);\n    puVar4[1] = 0;\n    *puVar4 = uVar3;\n    puVar4[2] = 0;\n    puVar4[3] = 0;\n    puVar4[4] = 0;\n    puVar4[5] = 0xffffffffffffffff;\n    puVar4[6] = 0;\n    puVar4[7] = 0;\n    puVar4[8] = 0;\n    puVar4[9] = 0;\n    *(undefined4 *)(puVar4 + 10) = 0;\n    *(undefined8 **)PTR_DAT_002a2760 = puVar4;\n    PTR_DAT_002a2760 = (undefined *)(puVar4 + 2);\n  }" if (parenthesized_expression "(param_1 == (byte *)0x0)" ( (binary_expression "param_1 == (byte *)0x0" identifier == (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    puVar4 = (undefined8 *)0x0;\n  }" { (expression_statement "puVar4 = (undefined8 *)0x0;" (assignment_expression "puVar4 = (undefined8 *)0x0" identifier = (cast_expression "(undefined8 *)0x0" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) }) (else_clause "else {\n    puVar4 = DAT_002a5298;\n    puVar8 = DAT_002a5298;\n    if (DAT_002a5298 != (undefined8 *)0x0) {\n      do {\n        iVar2 = strcmp((char *)*puVar4,(char *)param_1);\n        if (iVar2 == 0) {\n          if (param_2 == 0) {\n            return puVar8;\n          }\n          uVar3 = dcgettext(0,"%P:%pS: warning: redeclaration of memory region `%s\'\n",5);\n          FUN_00129410(uVar3,0,param_1);\n          return puVar8;\n        }\n        puVar1 = puVar4 + 1;\n        puVar4 = (undefined8 *)*puVar1;\n      } while (((undefined8 *)*puVar1 != (undefined8 *)0x0) ||\n              (puVar4 = (undefined8 *)puVar8[2], puVar8 = puVar4, puVar4 != (undefined8 *)0x0));\n    }\n    bVar9 = false;\n    bVar10 = param_2 == 0;\n    if (bVar10) {\n      lVar5 = 10;\n      pbVar6 = param_1;\n      pbVar7 = (byte *)"*default*";\n      do {\n        if (lVar5 == 0) break;\n        lVar5 = lVar5 + -1;\n        bVar9 = *pbVar6 < *pbVar7;\n        bVar10 = *pbVar6 == *pbVar7;\n        pbVar6 = pbVar6 + (ulong)bVar11 * -2 + 1;\n        pbVar7 = pbVar7 + (ulong)bVar11 * -2 + 1;\n      } while (bVar10);\n      if ((!bVar9 && !bVar10) != bVar9) {\n        uVar3 = dcgettext(0,"%P:%pS: warning: memory region `%s\' not declared\n",5);\n        FUN_00129410(uVar3,0,param_1);\n      }\n    }\n    puVar4 = (undefined8 *)FUN_001197b0(0x58);\n    uVar3 = xstrdup(param_1);\n    puVar4[1] = 0;\n    *puVar4 = uVar3;\n    puVar4[2] = 0;\n    puVar4[3] = 0;\n    puVar4[4] = 0;\n    puVar4[5] = 0xffffffffffffffff;\n    puVar4[6] = 0;\n    puVar4[7] = 0;\n    puVar4[8] = 0;\n    puVar4[9] = 0;\n    *(undefined4 *)(puVar4 + 10) = 0;\n    *(undefined8 **)PTR_DAT_002a2760 = puVar4;\n    PTR_DAT_002a2760 = (undefined *)(puVar4 + 2);\n  }" else (compound_statement "{\n    puVar4 = DAT_002a5298;\n    puVar8 = DAT_002a5298;\n    if (DAT_002a5298 != (undefined8 *)0x0) {\n      do {\n        iVar2 = strcmp((char *)*puVar4,(char *)param_1);\n        if (iVar2 == 0) {\n          if (param_2 == 0) {\n            return puVar8;\n          }\n          uVar3 = dcgettext(0,"%P:%pS: warning: redeclaration of memory region `%s\'\n",5);\n          FUN_00129410(uVar3,0,param_1);\n          return puVar8;\n        }\n        puVar1 = puVar4 + 1;\n        puVar4 = (undefined8 *)*puVar1;\n      } while (((undefined8 *)*puVar1 != (undefined8 *)0x0) ||\n              (puVar4 = (undefined8 *)puVar8[2], puVar8 = puVar4, puVar4 != (undefined8 *)0x0));\n    }\n    bVar9 = false;\n    bVar10 = param_2 == 0;\n    if (bVar10) {\n      lVar5 = 10;\n      pbVar6 = param_1;\n      pbVar7 = (byte *)"*default*";\n      do {\n        if (lVar5 == 0) break;\n        lVar5 = lVar5 + -1;\n        bVar9 = *pbVar6 < *pbVar7;\n        bVar10 = *pbVar6 == *pbVar7;\n        pbVar6 = pbVar6 + (ulong)bVar11 * -2 + 1;\n        pbVar7 = pbVar7 + (ulong)bVar11 * -2 + 1;\n      } while (bVar10);\n      if ((!bVar9 && !bVar10) != bVar9) {\n        uVar3 = dcgettext(0,"%P:%pS: warning: memory region `%s\' not declared\n",5);\n        FUN_00129410(uVar3,0,param_1);\n      }\n    }\n    puVar4 = (undefined8 *)FUN_001197b0(0x58);\n    uVar3 = xstrdup(param_1);\n    puVar4[1] = 0;\n    *puVar4 = uVar3;\n    puVar4[2] = 0;\n    puVar4[3] = 0;\n    puVar4[4] = 0;\n    puVar4[5] = 0xffffffffffffffff;\n    puVar4[6] = 0;\n    puVar4[7] = 0;\n    puVar4[8] = 0;\n    puVar4[9] = 0;\n    *(undefined4 *)(puVar4 + 10) = 0;\n    *(undefined8 **)PTR_DAT_002a2760 = puVar4;\n    PTR_DAT_002a2760 = (undefined *)(puVar4 + 2);\n  }" { (expression_statement "puVar4 = DAT_002a5298;" (assignment_expression "puVar4 = DAT_002a5298" identifier = identifier) ;) (expression_statement "puVar8 = DAT_002a5298;" (assignment_expression "puVar8 = DAT_002a5298" identifier = identifier) ;) (if_statement "if (DAT_002a5298 != (undefined8 *)0x0) {\n      do {\n        iVar2 = strcmp((char *)*puVar4,(char *)param_1);\n        if (iVar2 == 0) {\n          if (param_2 == 0) {\n            return puVar8;\n          }\n          uVar3 = dcgettext(0,"%P:%pS: warning: redeclaration of memory region `%s\'\n",5);\n          FUN_00129410(uVar3,0,param_1);\n          return puVar8;\n        }\n        puVar1 = puVar4 + 1;\n        puVar4 = (undefined8 *)*puVar1;\n      } while (((undefined8 *)*puVar1 != (undefined8 *)0x0) ||\n              (puVar4 = (undefined8 *)puVar8[2], puVar8 = puVar4, puVar4 != (undefined8 *)0x0));\n    }" if (parenthesized_expression "(DAT_002a5298 != (undefined8 *)0x0)" ( (binary_expression "DAT_002a5298 != (undefined8 *)0x0" identifier != (cast_expression "(undefined8 *)0x0" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      do {\n        iVar2 = strcmp((char *)*puVar4,(char *)param_1);\n        if (iVar2 == 0) {\n          if (param_2 == 0) {\n            return puVar8;\n          }\n          uVar3 = dcgettext(0,"%P:%pS: warning: redeclaration of memory region `%s\'\n",5);\n          FUN_00129410(uVar3,0,param_1);\n          return puVar8;\n        }\n        puVar1 = puVar4 + 1;\n        puVar4 = (undefined8 *)*puVar1;\n      } while (((undefined8 *)*puVar1 != (undefined8 *)0x0) ||\n              (puVar4 = (undefined8 *)puVar8[2], puVar8 = puVar4, puVar4 != (undefined8 *)0x0));\n    }" { (do_statement "do {\n        iVar2 = strcmp((char *)*puVar4,(char *)param_1);\n        if (iVar2 == 0) {\n          if (param_2 == 0) {\n            return puVar8;\n          }\n          uVar3 = dcgettext(0,"%P:%pS: warning: redeclaration of memory region `%s\'\n",5);\n          FUN_00129410(uVar3,0,param_1);\n          return puVar8;\n        }\n        puVar1 = puVar4 + 1;\n        puVar4 = (undefined8 *)*puVar1;\n      } while (((undefined8 *)*puVar1 != (undefined8 *)0x0) ||\n              (puVar4 = (undefined8 *)puVar8[2], puVar8 = puVar4, puVar4 != (undefined8 *)0x0));" do (compound_statement "{\n        iVar2 = strcmp((char *)*puVar4,(char *)param_1);\n        if (iVar2 == 0) {\n          if (param_2 == 0) {\n            return puVar8;\n          }\n          uVar3 = dcgettext(0,"%P:%pS: warning: redeclaration of memory region `%s\'\n",5);\n          FUN_00129410(uVar3,0,param_1);\n          return puVar8;\n        }\n        puVar1 = puVar4 + 1;\n        puVar4 = (undefined8 *)*puVar1;\n      }" { (expression_statement "iVar2 = strcmp((char *)*puVar4,(char *)param_1);" (assignment_expression "iVar2 = strcmp((char *)*puVar4,(char *)param_1)" identifier = (call_expression "strcmp((char *)*puVar4,(char *)param_1)" identifier (argument_list "((char *)*puVar4,(char *)param_1)" ( (cast_expression "(char *)*puVar4" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar4" * identifier)) , (cast_expression "(char *)param_1" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier) )))) ;) (if_statement "if (iVar2 == 0) {\n          if (param_2 == 0) {\n            return puVar8;\n          }\n          uVar3 = dcgettext(0,"%P:%pS: warning: redeclaration of memory region `%s\'\n",5);\n          FUN_00129410(uVar3,0,param_1);\n          return puVar8;\n        }" if (parenthesized_expression "(iVar2 == 0)" ( (binary_expression "iVar2 == 0" identifier == number_literal) )) (compound_statement "{\n          if (param_2 == 0) {\n            return puVar8;\n          }\n          uVar3 = dcgettext(0,"%P:%pS: warning: redeclaration of memory region `%s\'\n",5);\n          FUN_00129410(uVar3,0,param_1);\n          return puVar8;\n        }" { (if_statement "if (param_2 == 0) {\n            return puVar8;\n          }" if (parenthesized_expression "(param_2 == 0)" ( (binary_expression "param_2 == 0" identifier == number_literal) )) (compound_statement "{\n            return puVar8;\n          }" { (return_statement "return puVar8;" return identifier ;) })) (expression_statement "uVar3 = dcgettext(0,"%P:%pS: warning: redeclaration of memory region `%s\'\n",5);" (assignment_expression "uVar3 = dcgettext(0,"%P:%pS: warning: redeclaration of memory region `%s\'\n",5)" identifier = (call_expression "dcgettext(0,"%P:%pS: warning: redeclaration of memory region `%s\'\n",5)" identifier (argument_list "(0,"%P:%pS: warning: redeclaration of memory region `%s\'\n",5)" ( number_literal , (string_literal ""%P:%pS: warning: redeclaration of memory region `%s\'\n"" " string_content escape_sequence escape_sequence ") , number_literal )))) ;) (expression_statement "FUN_00129410(uVar3,0,param_1);" (call_expression "FUN_00129410(uVar3,0,param_1)" identifier (argument_list "(uVar3,0,param_1)" ( identifier , number_literal , identifier ))) ;) (return_statement "return puVar8;" return identifier ;) })) (expression_statement "puVar1 = puVar4 + 1;" (assignment_expression "puVar1 = puVar4 + 1" identifier = (binary_expression "puVar4 + 1" identifier + number_literal)) ;) (expression_statement "puVar4 = (undefined8 *)*puVar1;" (assignment_expression "puVar4 = (undefined8 *)*puVar1" identifier = (cast_expression "(undefined8 *)*puVar1" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar1" * identifier))) ;) }) while (parenthesized_expression "(((undefined8 *)*puVar1 != (undefined8 *)0x0) ||\n              (puVar4 = (undefined8 *)puVar8[2], puVar8 = puVar4, puVar4 != (undefined8 *)0x0))" ( (binary_expression "((undefined8 *)*puVar1 != (undefined8 *)0x0) ||\n              (puVar4 = (undefined8 *)puVar8[2], puVar8 = puVar4, puVar4 != (undefined8 *)0x0)" (parenthesized_expression "((undefined8 *)*puVar1 != (undefined8 *)0x0)" ( (binary_expression "(undefined8 *)*puVar1 != (undefined8 *)0x0" (cast_expression "(undefined8 *)*puVar1" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar1" * identifier)) != (cast_expression "(undefined8 *)0x0" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) || (parenthesized_expression "(puVar4 = (undefined8 *)puVar8[2], puVar8 = puVar4, puVar4 != (undefined8 *)0x0)" ( (comma_expression "puVar4 = (undefined8 *)puVar8[2], puVar8 = puVar4, puVar4 != (undefined8 *)0x0" (assignment_expression "puVar4 = (undefined8 *)puVar8[2]" identifier = (cast_expression "(undefined8 *)puVar8[2]" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar8[2]" identifier [ number_literal ]))) , (comma_expression "puVar8 = puVar4, puVar4 != (undefined8 *)0x0" (assignment_expression "puVar8 = puVar4" identifier = identifier) , (binary_expression "puVar4 != (undefined8 *)0x0" identifier != (cast_expression "(undefined8 *)0x0" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)))) ))) )) ;) })) (expression_statement "bVar9 = false;" (assignment_expression "bVar9 = false" identifier = false) ;) (expression_statement "bVar10 = param_2 == 0;" (assignment_expression "bVar10 = param_2 == 0" identifier = (binary_expression "param_2 == 0" identifier == number_literal)) ;) (if_statement "if (bVar10) {\n      lVar5 = 10;\n      pbVar6 = param_1;\n      pbVar7 = (byte *)"*default*";\n      do {\n        if (lVar5 == 0) break;\n        lVar5 = lVar5 + -1;\n        bVar9 = *pbVar6 < *pbVar7;\n        bVar10 = *pbVar6 == *pbVar7;\n        pbVar6 = pbVar6 + (ulong)bVar11 * -2 + 1;\n        pbVar7 = pbVar7 + (ulong)bVar11 * -2 + 1;\n      } while (bVar10);\n      if ((!bVar9 && !bVar10) != bVar9) {\n        uVar3 = dcgettext(0,"%P:%pS: warning: memory region `%s\' not declared\n",5);\n        FUN_00129410(uVar3,0,param_1);\n      }\n    }" if (parenthesized_expression "(bVar10)" ( identifier )) (compound_statement "{\n      lVar5 = 10;\n      pbVar6 = param_1;\n      pbVar7 = (byte *)"*default*";\n      do {\n        if (lVar5 == 0) break;\n        lVar5 = lVar5 + -1;\n        bVar9 = *pbVar6 < *pbVar7;\n        bVar10 = *pbVar6 == *pbVar7;\n        pbVar6 = pbVar6 + (ulong)bVar11 * -2 + 1;\n        pbVar7 = pbVar7 + (ulong)bVar11 * -2 + 1;\n      } while (bVar10);\n      if ((!bVar9 && !bVar10) != bVar9) {\n        uVar3 = dcgettext(0,"%P:%pS: warning: memory region `%s\' not declared\n",5);\n        FUN_00129410(uVar3,0,param_1);\n      }\n    }" { (expression_statement "lVar5 = 10;" (assignment_expression "lVar5 = 10" identifier = number_literal) ;) (expression_statement "pbVar6 = param_1;" (assignment_expression "pbVar6 = param_1" identifier = identifier) ;) (expression_statement "pbVar7 = (byte *)"*default*";" (assignment_expression "pbVar7 = (byte *)"*default*"" identifier = (cast_expression "(byte *)"*default*"" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (string_literal ""*default*"" " string_content "))) ;) (do_statement "do {\n        if (lVar5 == 0) break;\n        lVar5 = lVar5 + -1;\n        bVar9 = *pbVar6 < *pbVar7;\n        bVar10 = *pbVar6 == *pbVar7;\n        pbVar6 = pbVar6 + (ulong)bVar11 * -2 + 1;\n        pbVar7 = pbVar7 + (ulong)bVar11 * -2 + 1;\n      } while (bVar10);" do (compound_statement "{\n        if (lVar5 == 0) break;\n        lVar5 = lVar5 + -1;\n        bVar9 = *pbVar6 < *pbVar7;\n        bVar10 = *pbVar6 == *pbVar7;\n        pbVar6 = pbVar6 + (ulong)bVar11 * -2 + 1;\n        pbVar7 = pbVar7 + (ulong)bVar11 * -2 + 1;\n      }" { (if_statement "if (lVar5 == 0) break;" if (parenthesized_expression "(lVar5 == 0)" ( (binary_expression "lVar5 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "lVar5 = lVar5 + -1;" (assignment_expression "lVar5 = lVar5 + -1" identifier = (binary_expression "lVar5 + -1" identifier + number_literal)) ;) (expression_statement "bVar9 = *pbVar6 < *pbVar7;" (assignment_expression "bVar9 = *pbVar6 < *pbVar7" identifier = (binary_expression "*pbVar6 < *pbVar7" (pointer_expression "*pbVar6" * identifier) < (pointer_expression "*pbVar7" * identifier))) ;) (expression_statement "bVar10 = *pbVar6 == *pbVar7;" (assignment_expression "bVar10 = *pbVar6 == *pbVar7" identifier = (binary_expression "*pbVar6 == *pbVar7" (pointer_expression "*pbVar6" * identifier) == (pointer_expression "*pbVar7" * identifier))) ;) (expression_statement "pbVar6 = pbVar6 + (ulong)bVar11 * -2 + 1;" (assignment_expression "pbVar6 = pbVar6 + (ulong)bVar11 * -2 + 1" identifier = (binary_expression "pbVar6 + (ulong)bVar11 * -2 + 1" (binary_expression "pbVar6 + (ulong)bVar11 * -2" identifier + (binary_expression "(ulong)bVar11 * -2" (cast_expression "(ulong)bVar11" ( (type_descriptor "ulong" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) (expression_statement "pbVar7 = pbVar7 + (ulong)bVar11 * -2 + 1;" (assignment_expression "pbVar7 = pbVar7 + (ulong)bVar11 * -2 + 1" identifier = (binary_expression "pbVar7 + (ulong)bVar11 * -2 + 1" (binary_expression "pbVar7 + (ulong)bVar11 * -2" identifier + (binary_expression "(ulong)bVar11 * -2" (cast_expression "(ulong)bVar11" ( (type_descriptor "ulong" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) }) while (parenthesized_expression "(bVar10)" ( identifier )) ;) (if_statement "if ((!bVar9 && !bVar10) != bVar9) {\n        uVar3 = dcgettext(0,"%P:%pS: warning: memory region `%s\' not declared\n",5);\n        FUN_00129410(uVar3,0,param_1);\n      }" if (parenthesized_expression "((!bVar9 && !bVar10) != bVar9)" ( (binary_expression "(!bVar9 && !bVar10) != bVar9" (parenthesized_expression "(!bVar9 && !bVar10)" ( (binary_expression "!bVar9 && !bVar10" (unary_expression "!bVar9" ! identifier) && (unary_expression "!bVar10" ! identifier)) )) != identifier) )) (compound_statement "{\n        uVar3 = dcgettext(0,"%P:%pS: warning: memory region `%s\' not declared\n",5);\n        FUN_00129410(uVar3,0,param_1);\n      }" { (expression_statement "uVar3 = dcgettext(0,"%P:%pS: warning: memory region `%s\' not declared\n",5);" (assignment_expression "uVar3 = dcgettext(0,"%P:%pS: warning: memory region `%s\' not declared\n",5)" identifier = (call_expression "dcgettext(0,"%P:%pS: warning: memory region `%s\' not declared\n",5)" identifier (argument_list "(0,"%P:%pS: warning: memory region `%s\' not declared\n",5)" ( number_literal , (string_literal ""%P:%pS: warning: memory region `%s\' not declared\n"" " string_content escape_sequence string_content escape_sequence ") , number_literal )))) ;) (expression_statement "FUN_00129410(uVar3,0,param_1);" (call_expression "FUN_00129410(uVar3,0,param_1)" identifier (argument_list "(uVar3,0,param_1)" ( identifier , number_literal , identifier ))) ;) })) })) (expression_statement "puVar4 = (undefined8 *)FUN_001197b0(0x58);" (assignment_expression "puVar4 = (undefined8 *)FUN_001197b0(0x58)" identifier = (cast_expression "(undefined8 *)FUN_001197b0(0x58)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_001197b0(0x58)" identifier (argument_list "(0x58)" ( number_literal ))))) ;) (expression_statement "uVar3 = xstrdup(param_1);" (assignment_expression "uVar3 = xstrdup(param_1)" identifier = (call_expression "xstrdup(param_1)" identifier (argument_list "(param_1)" ( identifier )))) ;) (expression_statement "puVar4[1] = 0;" (assignment_expression "puVar4[1] = 0" (subscript_expression "puVar4[1]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*puVar4 = uVar3;" (assignment_expression "*puVar4 = uVar3" (pointer_expression "*puVar4" * identifier) = identifier) ;) (expression_statement "puVar4[2] = 0;" (assignment_expression "puVar4[2] = 0" (subscript_expression "puVar4[2]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar4[3] = 0;" (assignment_expression "puVar4[3] = 0" (subscript_expression "puVar4[3]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar4[4] = 0;" (assignment_expression "puVar4[4] = 0" (subscript_expression "puVar4[4]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar4[5] = 0xffffffffffffffff;" (assignment_expression "puVar4[5] = 0xffffffffffffffff" (subscript_expression "puVar4[5]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar4[6] = 0;" (assignment_expression "puVar4[6] = 0" (subscript_expression "puVar4[6]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar4[7] = 0;" (assignment_expression "puVar4[7] = 0" (subscript_expression "puVar4[7]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar4[8] = 0;" (assignment_expression "puVar4[8] = 0" (subscript_expression "puVar4[8]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar4[9] = 0;" (assignment_expression "puVar4[9] = 0" (subscript_expression "puVar4[9]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*(undefined4 *)(puVar4 + 10) = 0;" (assignment_expression "*(undefined4 *)(puVar4 + 10) = 0" (pointer_expression "*(undefined4 *)(puVar4 + 10)" * (cast_expression "(undefined4 *)(puVar4 + 10)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar4 + 10)" ( (binary_expression "puVar4 + 10" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined8 **)PTR_DAT_002a2760 = puVar4;" (assignment_expression "*(undefined8 **)PTR_DAT_002a2760 = puVar4" (pointer_expression "*(undefined8 **)PTR_DAT_002a2760" * (cast_expression "(undefined8 **)PTR_DAT_002a2760" ( (type_descriptor "undefined8 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier)) = identifier) ;) (expression_statement "PTR_DAT_002a2760 = (undefined *)(puVar4 + 2);" (assignment_expression "PTR_DAT_002a2760 = (undefined *)(puVar4 + 2)" identifier = (cast_expression "(undefined *)(puVar4 + 2)" ( (type_descriptor "undefined *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar4 + 2)" ( (binary_expression "puVar4 + 2" identifier + number_literal) )))) ;) }))) (return_statement "return puVar4;" return identifier ;) })))
(translation_unit (function_definition TYPE (pointer_declarator * (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE IDENT) )))) (compound_statement { (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration (sized_type_specifier long) IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT)) , (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (return_statement return IDENT ;) })) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( LIT , (string_literal " string_content escape_sequence escape_sequence ") , LIT )))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , LIT , IDENT ))) ;) (return_statement return IDENT ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) ;) }) while (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT)) != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) || (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) , (comma_expression (assignment_expression IDENT = IDENT) , (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)))) ))) )) ;) })) (expression_statement (assignment_expression IDENT = BOOL) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT == LIT)) ;) (if_statement if (parenthesized_expression ( IDENT )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (string_literal " string_content "))) ;) (do_statement do (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (break_statement break ;)) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression * IDENT) < (pointer_expression * IDENT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression * IDENT) == (pointer_expression * IDENT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT + (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * LIT)) + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT + (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * LIT)) + LIT)) ;) }) while (parenthesized_expression ( IDENT )) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (unary_expression ! IDENT) && (unary_expression ! IDENT)) )) != IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( LIT , (string_literal " string_content escape_sequence string_content escape_sequence ") , LIT )))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , LIT , IDENT ))) ;) })) })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( LIT ))))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) IDENT)) = IDENT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ;) }))) (return_statement return IDENT ;) })))
(function_definition "undefined8 * FUN_00119ea0(byte *param_1,int param_2)\n\n{\n  undefined8 *puVar1;\n  int iVar2;\n  undefined8 uVar3;\n  undefined8 *puVar4;\n  long lVar5;\n  byte *pbVar6;\n  byte *pbVar7;\n  undefined8 *puVar8;\n  bool bVar9;\n  bool bVar10;\n  byte bVar11;\n  \n  bVar11 = 0;\n  if (param_1 == (byte *)0x0) {\n    puVar4 = (undefined8 *)0x0;\n  }\n  else {\n    puVar4 = DAT_002a5298;\n    puVar8 = DAT_002a5298;\n    if (DAT_002a5298 != (undefined8 *)0x0) {\n      do {\n        iVar2 = strcmp((char *)*puVar4,(char *)param_1);\n        if (iVar2 == 0) {\n          if (param_2 == 0) {\n            return puVar8;\n          }\n          uVar3 = dcgettext(0,"%P:%pS: warning: redeclaration of memory region `%s\'\n",5);\n          FUN_00129410(uVar3,0,param_1);\n          return puVar8;\n        }\n        puVar1 = puVar4 + 1;\n        puVar4 = (undefined8 *)*puVar1;\n      } while (((undefined8 *)*puVar1 != (undefined8 *)0x0) ||\n              (puVar4 = (undefined8 *)puVar8[2], puVar8 = puVar4, puVar4 != (undefined8 *)0x0));\n    }\n    bVar9 = false;\n    bVar10 = param_2 == 0;\n    if (bVar10) {\n      lVar5 = 10;\n      pbVar6 = param_1;\n      pbVar7 = (byte *)"*default*";\n      do {\n        if (lVar5 == 0) break;\n        lVar5 = lVar5 + -1;\n        bVar9 = *pbVar6 < *pbVar7;\n        bVar10 = *pbVar6 == *pbVar7;\n        pbVar6 = pbVar6 + (ulong)bVar11 * -2 + 1;\n        pbVar7 = pbVar7 + (ulong)bVar11 * -2 + 1;\n      } while (bVar10);\n      if ((!bVar9 && !bVar10) != bVar9) {\n        uVar3 = dcgettext(0,"%P:%pS: warning: memory region `%s\' not declared\n",5);\n        FUN_00129410(uVar3,0,param_1);\n      }\n    }\n    puVar4 = (undefined8 *)FUN_001197b0(0x58);\n    uVar3 = xstrdup(param_1);\n    puVar4[1] = 0;\n    *puVar4 = uVar3;\n    puVar4[2] = 0;\n    puVar4[3] = 0;\n    puVar4[4] = 0;\n    puVar4[5] = 0xffffffffffffffff;\n    puVar4[6] = 0;\n    puVar4[7] = 0;\n    puVar4[8] = 0;\n    puVar4[9] = 0;\n    *(undefined4 *)(puVar4 + 10) = 0;\n    *(undefined8 **)PTR_DAT_002a2760 = puVar4;\n    PTR_DAT_002a2760 = (undefined *)(puVar4 + 2);\n  }\n  return puVar4;\n}" (type_identifier "undefined8") (pointer_declarator "* FUN_00119ea0(byte *param_1,int param_2)" (* "*") (function_declarator "FUN_00119ea0(byte *param_1,int param_2)" (identifier "FUN_00119ea0") (parameter_list "(byte *param_1,int param_2)" (( "(") (parameter_declaration "byte *param_1" (type_identifier "byte") (pointer_declarator "*param_1" (* "*") (identifier "param_1"))) (, ",") (parameter_declaration "int param_2" (primitive_type "int") (identifier "param_2")) () ")")))) (compound_statement "{\n  undefined8 *puVar1;\n  int iVar2;\n  undefined8 uVar3;\n  undefined8 *puVar4;\n  long lVar5;\n  byte *pbVar6;\n  byte *pbVar7;\n  undefined8 *puVar8;\n  bool bVar9;\n  bool bVar10;\n  byte bVar11;\n  \n  bVar11 = 0;\n  if (param_1 == (byte *)0x0) {\n    puVar4 = (undefined8 *)0x0;\n  }\n  else {\n    puVar4 = DAT_002a5298;\n    puVar8 = DAT_002a5298;\n    if (DAT_002a5298 != (undefined8 *)0x0) {\n      do {\n        iVar2 = strcmp((char *)*puVar4,(char *)param_1);\n        if (iVar2 == 0) {\n          if (param_2 == 0) {\n            return puVar8;\n          }\n          uVar3 = dcgettext(0,"%P:%pS: warning: redeclaration of memory region `%s\'\n",5);\n          FUN_00129410(uVar3,0,param_1);\n          return puVar8;\n        }\n        puVar1 = puVar4 + 1;\n        puVar4 = (undefined8 *)*puVar1;\n      } while (((undefined8 *)*puVar1 != (undefined8 *)0x0) ||\n              (puVar4 = (undefined8 *)puVar8[2], puVar8 = puVar4, puVar4 != (undefined8 *)0x0));\n    }\n    bVar9 = false;\n    bVar10 = param_2 == 0;\n    if (bVar10) {\n      lVar5 = 10;\n      pbVar6 = param_1;\n      pbVar7 = (byte *)"*default*";\n      do {\n        if (lVar5 == 0) break;\n        lVar5 = lVar5 + -1;\n        bVar9 = *pbVar6 < *pbVar7;\n        bVar10 = *pbVar6 == *pbVar7;\n        pbVar6 = pbVar6 + (ulong)bVar11 * -2 + 1;\n        pbVar7 = pbVar7 + (ulong)bVar11 * -2 + 1;\n      } while (bVar10);\n      if ((!bVar9 && !bVar10) != bVar9) {\n        uVar3 = dcgettext(0,"%P:%pS: warning: memory region `%s\' not declared\n",5);\n        FUN_00129410(uVar3,0,param_1);\n      }\n    }\n    puVar4 = (undefined8 *)FUN_001197b0(0x58);\n    uVar3 = xstrdup(param_1);\n    puVar4[1] = 0;\n    *puVar4 = uVar3;\n    puVar4[2] = 0;\n    puVar4[3] = 0;\n    puVar4[4] = 0;\n    puVar4[5] = 0xffffffffffffffff;\n    puVar4[6] = 0;\n    puVar4[7] = 0;\n    puVar4[8] = 0;\n    puVar4[9] = 0;\n    *(undefined4 *)(puVar4 + 10) = 0;\n    *(undefined8 **)PTR_DAT_002a2760 = puVar4;\n    PTR_DAT_002a2760 = (undefined *)(puVar4 + 2);\n  }\n  return puVar4;\n}" ({ "{") (declaration "undefined8 *puVar1;" (type_identifier "undefined8") (pointer_declarator "*puVar1" (* "*") (identifier "puVar1")) (; ";")) (declaration "int iVar2;" (primitive_type "int") (identifier "iVar2") (; ";")) (declaration "undefined8 uVar3;" (type_identifier "undefined8") (identifier "uVar3") (; ";")) (declaration "undefined8 *puVar4;" (type_identifier "undefined8") (pointer_declarator "*puVar4" (* "*") (identifier "puVar4")) (; ";")) (declaration "long lVar5;" (sized_type_specifier "long" (long "long")) (identifier "lVar5") (; ";")) (declaration "byte *pbVar6;" (type_identifier "byte") (pointer_declarator "*pbVar6" (* "*") (identifier "pbVar6")) (; ";")) (declaration "byte *pbVar7;" (type_identifier "byte") (pointer_declarator "*pbVar7" (* "*") (identifier "pbVar7")) (; ";")) (declaration "undefined8 *puVar8;" (type_identifier "undefined8") (pointer_declarator "*puVar8" (* "*") (identifier "puVar8")) (; ";")) (declaration "bool bVar9;" (primitive_type "bool") (identifier "bVar9") (; ";")) (declaration "bool bVar10;" (primitive_type "bool") (identifier "bVar10") (; ";")) (declaration "byte bVar11;" (type_identifier "byte") (identifier "bVar11") (; ";")) (expression_statement "bVar11 = 0;" (assignment_expression "bVar11 = 0" (identifier "bVar11") (= "=") (number_literal "0")) (; ";")) (if_statement "if (param_1 == (byte *)0x0) {\n    puVar4 = (undefined8 *)0x0;\n  }\n  else {\n    puVar4 = DAT_002a5298;\n    puVar8 = DAT_002a5298;\n    if (DAT_002a5298 != (undefined8 *)0x0) {\n      do {\n        iVar2 = strcmp((char *)*puVar4,(char *)param_1);\n        if (iVar2 == 0) {\n          if (param_2 == 0) {\n            return puVar8;\n          }\n          uVar3 = dcgettext(0,"%P:%pS: warning: redeclaration of memory region `%s\'\n",5);\n          FUN_00129410(uVar3,0,param_1);\n          return puVar8;\n        }\n        puVar1 = puVar4 + 1;\n        puVar4 = (undefined8 *)*puVar1;\n      } while (((undefined8 *)*puVar1 != (undefined8 *)0x0) ||\n              (puVar4 = (undefined8 *)puVar8[2], puVar8 = puVar4, puVar4 != (undefined8 *)0x0));\n    }\n    bVar9 = false;\n    bVar10 = param_2 == 0;\n    if (bVar10) {\n      lVar5 = 10;\n      pbVar6 = param_1;\n      pbVar7 = (byte *)"*default*";\n      do {\n        if (lVar5 == 0) break;\n        lVar5 = lVar5 + -1;\n        bVar9 = *pbVar6 < *pbVar7;\n        bVar10 = *pbVar6 == *pbVar7;\n        pbVar6 = pbVar6 + (ulong)bVar11 * -2 + 1;\n        pbVar7 = pbVar7 + (ulong)bVar11 * -2 + 1;\n      } while (bVar10);\n      if ((!bVar9 && !bVar10) != bVar9) {\n        uVar3 = dcgettext(0,"%P:%pS: warning: memory region `%s\' not declared\n",5);\n        FUN_00129410(uVar3,0,param_1);\n      }\n    }\n    puVar4 = (undefined8 *)FUN_001197b0(0x58);\n    uVar3 = xstrdup(param_1);\n    puVar4[1] = 0;\n    *puVar4 = uVar3;\n    puVar4[2] = 0;\n    puVar4[3] = 0;\n    puVar4[4] = 0;\n    puVar4[5] = 0xffffffffffffffff;\n    puVar4[6] = 0;\n    puVar4[7] = 0;\n    puVar4[8] = 0;\n    puVar4[9] = 0;\n    *(undefined4 *)(puVar4 + 10) = 0;\n    *(undefined8 **)PTR_DAT_002a2760 = puVar4;\n    PTR_DAT_002a2760 = (undefined *)(puVar4 + 2);\n  }" (if "if") (parenthesized_expression "(param_1 == (byte *)0x0)" (( "(") (binary_expression "param_1 == (byte *)0x0" (identifier "param_1") (== "==") (cast_expression "(byte *)0x0" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n    puVar4 = (undefined8 *)0x0;\n  }" ({ "{") (expression_statement "puVar4 = (undefined8 *)0x0;" (assignment_expression "puVar4 = (undefined8 *)0x0" (identifier "puVar4") (= "=") (cast_expression "(undefined8 *)0x0" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";")) (} "}")) (else_clause "else {\n    puVar4 = DAT_002a5298;\n    puVar8 = DAT_002a5298;\n    if (DAT_002a5298 != (undefined8 *)0x0) {\n      do {\n        iVar2 = strcmp((char *)*puVar4,(char *)param_1);\n        if (iVar2 == 0) {\n          if (param_2 == 0) {\n            return puVar8;\n          }\n          uVar3 = dcgettext(0,"%P:%pS: warning: redeclaration of memory region `%s\'\n",5);\n          FUN_00129410(uVar3,0,param_1);\n          return puVar8;\n        }\n        puVar1 = puVar4 + 1;\n        puVar4 = (undefined8 *)*puVar1;\n      } while (((undefined8 *)*puVar1 != (undefined8 *)0x0) ||\n              (puVar4 = (undefined8 *)puVar8[2], puVar8 = puVar4, puVar4 != (undefined8 *)0x0));\n    }\n    bVar9 = false;\n    bVar10 = param_2 == 0;\n    if (bVar10) {\n      lVar5 = 10;\n      pbVar6 = param_1;\n      pbVar7 = (byte *)"*default*";\n      do {\n        if (lVar5 == 0) break;\n        lVar5 = lVar5 + -1;\n        bVar9 = *pbVar6 < *pbVar7;\n        bVar10 = *pbVar6 == *pbVar7;\n        pbVar6 = pbVar6 + (ulong)bVar11 * -2 + 1;\n        pbVar7 = pbVar7 + (ulong)bVar11 * -2 + 1;\n      } while (bVar10);\n      if ((!bVar9 && !bVar10) != bVar9) {\n        uVar3 = dcgettext(0,"%P:%pS: warning: memory region `%s\' not declared\n",5);\n        FUN_00129410(uVar3,0,param_1);\n      }\n    }\n    puVar4 = (undefined8 *)FUN_001197b0(0x58);\n    uVar3 = xstrdup(param_1);\n    puVar4[1] = 0;\n    *puVar4 = uVar3;\n    puVar4[2] = 0;\n    puVar4[3] = 0;\n    puVar4[4] = 0;\n    puVar4[5] = 0xffffffffffffffff;\n    puVar4[6] = 0;\n    puVar4[7] = 0;\n    puVar4[8] = 0;\n    puVar4[9] = 0;\n    *(undefined4 *)(puVar4 + 10) = 0;\n    *(undefined8 **)PTR_DAT_002a2760 = puVar4;\n    PTR_DAT_002a2760 = (undefined *)(puVar4 + 2);\n  }" (else "else") (compound_statement "{\n    puVar4 = DAT_002a5298;\n    puVar8 = DAT_002a5298;\n    if (DAT_002a5298 != (undefined8 *)0x0) {\n      do {\n        iVar2 = strcmp((char *)*puVar4,(char *)param_1);\n        if (iVar2 == 0) {\n          if (param_2 == 0) {\n            return puVar8;\n          }\n          uVar3 = dcgettext(0,"%P:%pS: warning: redeclaration of memory region `%s\'\n",5);\n          FUN_00129410(uVar3,0,param_1);\n          return puVar8;\n        }\n        puVar1 = puVar4 + 1;\n        puVar4 = (undefined8 *)*puVar1;\n      } while (((undefined8 *)*puVar1 != (undefined8 *)0x0) ||\n              (puVar4 = (undefined8 *)puVar8[2], puVar8 = puVar4, puVar4 != (undefined8 *)0x0));\n    }\n    bVar9 = false;\n    bVar10 = param_2 == 0;\n    if (bVar10) {\n      lVar5 = 10;\n      pbVar6 = param_1;\n      pbVar7 = (byte *)"*default*";\n      do {\n        if (lVar5 == 0) break;\n        lVar5 = lVar5 + -1;\n        bVar9 = *pbVar6 < *pbVar7;\n        bVar10 = *pbVar6 == *pbVar7;\n        pbVar6 = pbVar6 + (ulong)bVar11 * -2 + 1;\n        pbVar7 = pbVar7 + (ulong)bVar11 * -2 + 1;\n      } while (bVar10);\n      if ((!bVar9 && !bVar10) != bVar9) {\n        uVar3 = dcgettext(0,"%P:%pS: warning: memory region `%s\' not declared\n",5);\n        FUN_00129410(uVar3,0,param_1);\n      }\n    }\n    puVar4 = (undefined8 *)FUN_001197b0(0x58);\n    uVar3 = xstrdup(param_1);\n    puVar4[1] = 0;\n    *puVar4 = uVar3;\n    puVar4[2] = 0;\n    puVar4[3] = 0;\n    puVar4[4] = 0;\n    puVar4[5] = 0xffffffffffffffff;\n    puVar4[6] = 0;\n    puVar4[7] = 0;\n    puVar4[8] = 0;\n    puVar4[9] = 0;\n    *(undefined4 *)(puVar4 + 10) = 0;\n    *(undefined8 **)PTR_DAT_002a2760 = puVar4;\n    PTR_DAT_002a2760 = (undefined *)(puVar4 + 2);\n  }" ({ "{") (expression_statement "puVar4 = DAT_002a5298;" (assignment_expression "puVar4 = DAT_002a5298" (identifier "puVar4") (= "=") (identifier "DAT_002a5298")) (; ";")) (expression_statement "puVar8 = DAT_002a5298;" (assignment_expression "puVar8 = DAT_002a5298" (identifier "puVar8") (= "=") (identifier "DAT_002a5298")) (; ";")) (if_statement "if (DAT_002a5298 != (undefined8 *)0x0) {\n      do {\n        iVar2 = strcmp((char *)*puVar4,(char *)param_1);\n        if (iVar2 == 0) {\n          if (param_2 == 0) {\n            return puVar8;\n          }\n          uVar3 = dcgettext(0,"%P:%pS: warning: redeclaration of memory region `%s\'\n",5);\n          FUN_00129410(uVar3,0,param_1);\n          return puVar8;\n        }\n        puVar1 = puVar4 + 1;\n        puVar4 = (undefined8 *)*puVar1;\n      } while (((undefined8 *)*puVar1 != (undefined8 *)0x0) ||\n              (puVar4 = (undefined8 *)puVar8[2], puVar8 = puVar4, puVar4 != (undefined8 *)0x0));\n    }" (if "if") (parenthesized_expression "(DAT_002a5298 != (undefined8 *)0x0)" (( "(") (binary_expression "DAT_002a5298 != (undefined8 *)0x0" (identifier "DAT_002a5298") (!= "!=") (cast_expression "(undefined8 *)0x0" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n      do {\n        iVar2 = strcmp((char *)*puVar4,(char *)param_1);\n        if (iVar2 == 0) {\n          if (param_2 == 0) {\n            return puVar8;\n          }\n          uVar3 = dcgettext(0,"%P:%pS: warning: redeclaration of memory region `%s\'\n",5);\n          FUN_00129410(uVar3,0,param_1);\n          return puVar8;\n        }\n        puVar1 = puVar4 + 1;\n        puVar4 = (undefined8 *)*puVar1;\n      } while (((undefined8 *)*puVar1 != (undefined8 *)0x0) ||\n              (puVar4 = (undefined8 *)puVar8[2], puVar8 = puVar4, puVar4 != (undefined8 *)0x0));\n    }" ({ "{") (do_statement "do {\n        iVar2 = strcmp((char *)*puVar4,(char *)param_1);\n        if (iVar2 == 0) {\n          if (param_2 == 0) {\n            return puVar8;\n          }\n          uVar3 = dcgettext(0,"%P:%pS: warning: redeclaration of memory region `%s\'\n",5);\n          FUN_00129410(uVar3,0,param_1);\n          return puVar8;\n        }\n        puVar1 = puVar4 + 1;\n        puVar4 = (undefined8 *)*puVar1;\n      } while (((undefined8 *)*puVar1 != (undefined8 *)0x0) ||\n              (puVar4 = (undefined8 *)puVar8[2], puVar8 = puVar4, puVar4 != (undefined8 *)0x0));" (do "do") (compound_statement "{\n        iVar2 = strcmp((char *)*puVar4,(char *)param_1);\n        if (iVar2 == 0) {\n          if (param_2 == 0) {\n            return puVar8;\n          }\n          uVar3 = dcgettext(0,"%P:%pS: warning: redeclaration of memory region `%s\'\n",5);\n          FUN_00129410(uVar3,0,param_1);\n          return puVar8;\n        }\n        puVar1 = puVar4 + 1;\n        puVar4 = (undefined8 *)*puVar1;\n      }" ({ "{") (expression_statement "iVar2 = strcmp((char *)*puVar4,(char *)param_1);" (assignment_expression "iVar2 = strcmp((char *)*puVar4,(char *)param_1)" (identifier "iVar2") (= "=") (call_expression "strcmp((char *)*puVar4,(char *)param_1)" (identifier "strcmp") (argument_list "((char *)*puVar4,(char *)param_1)" (( "(") (cast_expression "(char *)*puVar4" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*puVar4" (* "*") (identifier "puVar4"))) (, ",") (cast_expression "(char *)param_1" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "param_1")) () ")")))) (; ";")) (if_statement "if (iVar2 == 0) {\n          if (param_2 == 0) {\n            return puVar8;\n          }\n          uVar3 = dcgettext(0,"%P:%pS: warning: redeclaration of memory region `%s\'\n",5);\n          FUN_00129410(uVar3,0,param_1);\n          return puVar8;\n        }" (if "if") (parenthesized_expression "(iVar2 == 0)" (( "(") (binary_expression "iVar2 == 0" (identifier "iVar2") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n          if (param_2 == 0) {\n            return puVar8;\n          }\n          uVar3 = dcgettext(0,"%P:%pS: warning: redeclaration of memory region `%s\'\n",5);\n          FUN_00129410(uVar3,0,param_1);\n          return puVar8;\n        }" ({ "{") (if_statement "if (param_2 == 0) {\n            return puVar8;\n          }" (if "if") (parenthesized_expression "(param_2 == 0)" (( "(") (binary_expression "param_2 == 0" (identifier "param_2") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n            return puVar8;\n          }" ({ "{") (return_statement "return puVar8;" (return "return") (identifier "puVar8") (; ";")) (} "}"))) (expression_statement "uVar3 = dcgettext(0,"%P:%pS: warning: redeclaration of memory region `%s\'\n",5);" (assignment_expression "uVar3 = dcgettext(0,"%P:%pS: warning: redeclaration of memory region `%s\'\n",5)" (identifier "uVar3") (= "=") (call_expression "dcgettext(0,"%P:%pS: warning: redeclaration of memory region `%s\'\n",5)" (identifier "dcgettext") (argument_list "(0,"%P:%pS: warning: redeclaration of memory region `%s\'\n",5)" (( "(") (number_literal "0") (, ",") (string_literal ""%P:%pS: warning: redeclaration of memory region `%s\'\n"" (" """) (string_content "%P:%pS: warning: redeclaration of memory region `%s") (escape_sequence "\'") (escape_sequence "\n") (" """)) (, ",") (number_literal "5") () ")")))) (; ";")) (expression_statement "FUN_00129410(uVar3,0,param_1);" (call_expression "FUN_00129410(uVar3,0,param_1)" (identifier "FUN_00129410") (argument_list "(uVar3,0,param_1)" (( "(") (identifier "uVar3") (, ",") (number_literal "0") (, ",") (identifier "param_1") () ")"))) (; ";")) (return_statement "return puVar8;" (return "return") (identifier "puVar8") (; ";")) (} "}"))) (expression_statement "puVar1 = puVar4 + 1;" (assignment_expression "puVar1 = puVar4 + 1" (identifier "puVar1") (= "=") (binary_expression "puVar4 + 1" (identifier "puVar4") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "puVar4 = (undefined8 *)*puVar1;" (assignment_expression "puVar4 = (undefined8 *)*puVar1" (identifier "puVar4") (= "=") (cast_expression "(undefined8 *)*puVar1" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*puVar1" (* "*") (identifier "puVar1")))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(((undefined8 *)*puVar1 != (undefined8 *)0x0) ||\n              (puVar4 = (undefined8 *)puVar8[2], puVar8 = puVar4, puVar4 != (undefined8 *)0x0))" (( "(") (binary_expression "((undefined8 *)*puVar1 != (undefined8 *)0x0) ||\n              (puVar4 = (undefined8 *)puVar8[2], puVar8 = puVar4, puVar4 != (undefined8 *)0x0)" (parenthesized_expression "((undefined8 *)*puVar1 != (undefined8 *)0x0)" (( "(") (binary_expression "(undefined8 *)*puVar1 != (undefined8 *)0x0" (cast_expression "(undefined8 *)*puVar1" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*puVar1" (* "*") (identifier "puVar1"))) (!= "!=") (cast_expression "(undefined8 *)0x0" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (|| "||") (parenthesized_expression "(puVar4 = (undefined8 *)puVar8[2], puVar8 = puVar4, puVar4 != (undefined8 *)0x0)" (( "(") (comma_expression "puVar4 = (undefined8 *)puVar8[2], puVar8 = puVar4, puVar4 != (undefined8 *)0x0" (assignment_expression "puVar4 = (undefined8 *)puVar8[2]" (identifier "puVar4") (= "=") (cast_expression "(undefined8 *)puVar8[2]" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "puVar8[2]" (identifier "puVar8") ([ "[") (number_literal "2") (] "]")))) (, ",") (comma_expression "puVar8 = puVar4, puVar4 != (undefined8 *)0x0" (assignment_expression "puVar8 = puVar4" (identifier "puVar8") (= "=") (identifier "puVar4")) (, ",") (binary_expression "puVar4 != (undefined8 *)0x0" (identifier "puVar4") (!= "!=") (cast_expression "(undefined8 *)0x0" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))))) () ")"))) () ")")) (; ";")) (} "}"))) (expression_statement "bVar9 = false;" (assignment_expression "bVar9 = false" (identifier "bVar9") (= "=") (false "false")) (; ";")) (expression_statement "bVar10 = param_2 == 0;" (assignment_expression "bVar10 = param_2 == 0" (identifier "bVar10") (= "=") (binary_expression "param_2 == 0" (identifier "param_2") (== "==") (number_literal "0"))) (; ";")) (if_statement "if (bVar10) {\n      lVar5 = 10;\n      pbVar6 = param_1;\n      pbVar7 = (byte *)"*default*";\n      do {\n        if (lVar5 == 0) break;\n        lVar5 = lVar5 + -1;\n        bVar9 = *pbVar6 < *pbVar7;\n        bVar10 = *pbVar6 == *pbVar7;\n        pbVar6 = pbVar6 + (ulong)bVar11 * -2 + 1;\n        pbVar7 = pbVar7 + (ulong)bVar11 * -2 + 1;\n      } while (bVar10);\n      if ((!bVar9 && !bVar10) != bVar9) {\n        uVar3 = dcgettext(0,"%P:%pS: warning: memory region `%s\' not declared\n",5);\n        FUN_00129410(uVar3,0,param_1);\n      }\n    }" (if "if") (parenthesized_expression "(bVar10)" (( "(") (identifier "bVar10") () ")")) (compound_statement "{\n      lVar5 = 10;\n      pbVar6 = param_1;\n      pbVar7 = (byte *)"*default*";\n      do {\n        if (lVar5 == 0) break;\n        lVar5 = lVar5 + -1;\n        bVar9 = *pbVar6 < *pbVar7;\n        bVar10 = *pbVar6 == *pbVar7;\n        pbVar6 = pbVar6 + (ulong)bVar11 * -2 + 1;\n        pbVar7 = pbVar7 + (ulong)bVar11 * -2 + 1;\n      } while (bVar10);\n      if ((!bVar9 && !bVar10) != bVar9) {\n        uVar3 = dcgettext(0,"%P:%pS: warning: memory region `%s\' not declared\n",5);\n        FUN_00129410(uVar3,0,param_1);\n      }\n    }" ({ "{") (expression_statement "lVar5 = 10;" (assignment_expression "lVar5 = 10" (identifier "lVar5") (= "=") (number_literal "10")) (; ";")) (expression_statement "pbVar6 = param_1;" (assignment_expression "pbVar6 = param_1" (identifier "pbVar6") (= "=") (identifier "param_1")) (; ";")) (expression_statement "pbVar7 = (byte *)"*default*";" (assignment_expression "pbVar7 = (byte *)"*default*"" (identifier "pbVar7") (= "=") (cast_expression "(byte *)"*default*"" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (string_literal ""*default*"" (" """) (string_content "*default*") (" """)))) (; ";")) (do_statement "do {\n        if (lVar5 == 0) break;\n        lVar5 = lVar5 + -1;\n        bVar9 = *pbVar6 < *pbVar7;\n        bVar10 = *pbVar6 == *pbVar7;\n        pbVar6 = pbVar6 + (ulong)bVar11 * -2 + 1;\n        pbVar7 = pbVar7 + (ulong)bVar11 * -2 + 1;\n      } while (bVar10);" (do "do") (compound_statement "{\n        if (lVar5 == 0) break;\n        lVar5 = lVar5 + -1;\n        bVar9 = *pbVar6 < *pbVar7;\n        bVar10 = *pbVar6 == *pbVar7;\n        pbVar6 = pbVar6 + (ulong)bVar11 * -2 + 1;\n        pbVar7 = pbVar7 + (ulong)bVar11 * -2 + 1;\n      }" ({ "{") (if_statement "if (lVar5 == 0) break;" (if "if") (parenthesized_expression "(lVar5 == 0)" (( "(") (binary_expression "lVar5 == 0" (identifier "lVar5") (== "==") (number_literal "0")) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "lVar5 = lVar5 + -1;" (assignment_expression "lVar5 = lVar5 + -1" (identifier "lVar5") (= "=") (binary_expression "lVar5 + -1" (identifier "lVar5") (+ "+") (number_literal "-1"))) (; ";")) (expression_statement "bVar9 = *pbVar6 < *pbVar7;" (assignment_expression "bVar9 = *pbVar6 < *pbVar7" (identifier "bVar9") (= "=") (binary_expression "*pbVar6 < *pbVar7" (pointer_expression "*pbVar6" (* "*") (identifier "pbVar6")) (< "<") (pointer_expression "*pbVar7" (* "*") (identifier "pbVar7")))) (; ";")) (expression_statement "bVar10 = *pbVar6 == *pbVar7;" (assignment_expression "bVar10 = *pbVar6 == *pbVar7" (identifier "bVar10") (= "=") (binary_expression "*pbVar6 == *pbVar7" (pointer_expression "*pbVar6" (* "*") (identifier "pbVar6")) (== "==") (pointer_expression "*pbVar7" (* "*") (identifier "pbVar7")))) (; ";")) (expression_statement "pbVar6 = pbVar6 + (ulong)bVar11 * -2 + 1;" (assignment_expression "pbVar6 = pbVar6 + (ulong)bVar11 * -2 + 1" (identifier "pbVar6") (= "=") (binary_expression "pbVar6 + (ulong)bVar11 * -2 + 1" (binary_expression "pbVar6 + (ulong)bVar11 * -2" (identifier "pbVar6") (+ "+") (binary_expression "(ulong)bVar11 * -2" (cast_expression "(ulong)bVar11" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (identifier "bVar11")) (* "*") (number_literal "-2"))) (+ "+") (number_literal "1"))) (; ";")) (expression_statement "pbVar7 = pbVar7 + (ulong)bVar11 * -2 + 1;" (assignment_expression "pbVar7 = pbVar7 + (ulong)bVar11 * -2 + 1" (identifier "pbVar7") (= "=") (binary_expression "pbVar7 + (ulong)bVar11 * -2 + 1" (binary_expression "pbVar7 + (ulong)bVar11 * -2" (identifier "pbVar7") (+ "+") (binary_expression "(ulong)bVar11 * -2" (cast_expression "(ulong)bVar11" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (identifier "bVar11")) (* "*") (number_literal "-2"))) (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(bVar10)" (( "(") (identifier "bVar10") () ")")) (; ";")) (if_statement "if ((!bVar9 && !bVar10) != bVar9) {\n        uVar3 = dcgettext(0,"%P:%pS: warning: memory region `%s\' not declared\n",5);\n        FUN_00129410(uVar3,0,param_1);\n      }" (if "if") (parenthesized_expression "((!bVar9 && !bVar10) != bVar9)" (( "(") (binary_expression "(!bVar9 && !bVar10) != bVar9" (parenthesized_expression "(!bVar9 && !bVar10)" (( "(") (binary_expression "!bVar9 && !bVar10" (unary_expression "!bVar9" (! "!") (identifier "bVar9")) (&& "&&") (unary_expression "!bVar10" (! "!") (identifier "bVar10"))) () ")")) (!= "!=") (identifier "bVar9")) () ")")) (compound_statement "{\n        uVar3 = dcgettext(0,"%P:%pS: warning: memory region `%s\' not declared\n",5);\n        FUN_00129410(uVar3,0,param_1);\n      }" ({ "{") (expression_statement "uVar3 = dcgettext(0,"%P:%pS: warning: memory region `%s\' not declared\n",5);" (assignment_expression "uVar3 = dcgettext(0,"%P:%pS: warning: memory region `%s\' not declared\n",5)" (identifier "uVar3") (= "=") (call_expression "dcgettext(0,"%P:%pS: warning: memory region `%s\' not declared\n",5)" (identifier "dcgettext") (argument_list "(0,"%P:%pS: warning: memory region `%s\' not declared\n",5)" (( "(") (number_literal "0") (, ",") (string_literal ""%P:%pS: warning: memory region `%s\' not declared\n"" (" """) (string_content "%P:%pS: warning: memory region `%s") (escape_sequence "\'") (string_content " not declared") (escape_sequence "\n") (" """)) (, ",") (number_literal "5") () ")")))) (; ";")) (expression_statement "FUN_00129410(uVar3,0,param_1);" (call_expression "FUN_00129410(uVar3,0,param_1)" (identifier "FUN_00129410") (argument_list "(uVar3,0,param_1)" (( "(") (identifier "uVar3") (, ",") (number_literal "0") (, ",") (identifier "param_1") () ")"))) (; ";")) (} "}"))) (} "}"))) (expression_statement "puVar4 = (undefined8 *)FUN_001197b0(0x58);" (assignment_expression "puVar4 = (undefined8 *)FUN_001197b0(0x58)" (identifier "puVar4") (= "=") (cast_expression "(undefined8 *)FUN_001197b0(0x58)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_001197b0(0x58)" (identifier "FUN_001197b0") (argument_list "(0x58)" (( "(") (number_literal "0x58") () ")"))))) (; ";")) (expression_statement "uVar3 = xstrdup(param_1);" (assignment_expression "uVar3 = xstrdup(param_1)" (identifier "uVar3") (= "=") (call_expression "xstrdup(param_1)" (identifier "xstrdup") (argument_list "(param_1)" (( "(") (identifier "param_1") () ")")))) (; ";")) (expression_statement "puVar4[1] = 0;" (assignment_expression "puVar4[1] = 0" (subscript_expression "puVar4[1]" (identifier "puVar4") ([ "[") (number_literal "1") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "*puVar4 = uVar3;" (assignment_expression "*puVar4 = uVar3" (pointer_expression "*puVar4" (* "*") (identifier "puVar4")) (= "=") (identifier "uVar3")) (; ";")) (expression_statement "puVar4[2] = 0;" (assignment_expression "puVar4[2] = 0" (subscript_expression "puVar4[2]" (identifier "puVar4") ([ "[") (number_literal "2") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar4[3] = 0;" (assignment_expression "puVar4[3] = 0" (subscript_expression "puVar4[3]" (identifier "puVar4") ([ "[") (number_literal "3") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar4[4] = 0;" (assignment_expression "puVar4[4] = 0" (subscript_expression "puVar4[4]" (identifier "puVar4") ([ "[") (number_literal "4") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar4[5] = 0xffffffffffffffff;" (assignment_expression "puVar4[5] = 0xffffffffffffffff" (subscript_expression "puVar4[5]" (identifier "puVar4") ([ "[") (number_literal "5") (] "]")) (= "=") (number_literal "0xffffffffffffffff")) (; ";")) (expression_statement "puVar4[6] = 0;" (assignment_expression "puVar4[6] = 0" (subscript_expression "puVar4[6]" (identifier "puVar4") ([ "[") (number_literal "6") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar4[7] = 0;" (assignment_expression "puVar4[7] = 0" (subscript_expression "puVar4[7]" (identifier "puVar4") ([ "[") (number_literal "7") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar4[8] = 0;" (assignment_expression "puVar4[8] = 0" (subscript_expression "puVar4[8]" (identifier "puVar4") ([ "[") (number_literal "8") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar4[9] = 0;" (assignment_expression "puVar4[9] = 0" (subscript_expression "puVar4[9]" (identifier "puVar4") ([ "[") (number_literal "9") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "*(undefined4 *)(puVar4 + 10) = 0;" (assignment_expression "*(undefined4 *)(puVar4 + 10) = 0" (pointer_expression "*(undefined4 *)(puVar4 + 10)" (* "*") (cast_expression "(undefined4 *)(puVar4 + 10)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar4 + 10)" (( "(") (binary_expression "puVar4 + 10" (identifier "puVar4") (+ "+") (number_literal "10")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "*(undefined8 **)PTR_DAT_002a2760 = puVar4;" (assignment_expression "*(undefined8 **)PTR_DAT_002a2760 = puVar4" (pointer_expression "*(undefined8 **)PTR_DAT_002a2760" (* "*") (cast_expression "(undefined8 **)PTR_DAT_002a2760" (( "(") (type_descriptor "undefined8 **" (type_identifier "undefined8") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (identifier "PTR_DAT_002a2760"))) (= "=") (identifier "puVar4")) (; ";")) (expression_statement "PTR_DAT_002a2760 = (undefined *)(puVar4 + 2);" (assignment_expression "PTR_DAT_002a2760 = (undefined *)(puVar4 + 2)" (identifier "PTR_DAT_002a2760") (= "=") (cast_expression "(undefined *)(puVar4 + 2)" (( "(") (type_descriptor "undefined *" (type_identifier "undefined") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar4 + 2)" (( "(") (binary_expression "puVar4 + 2" (identifier "puVar4") (+ "+") (number_literal "2")) () ")")))) (; ";")) (} "}")))) (return_statement "return puVar4;" (return "return") (identifier "puVar4") (; ";")) (} "}")))

type_1 * function_1(char *var_1,type_2 var_5)

{
  int var_4;
  char *pcVar2;
  type_1 *plVar3;
  long var_9;
  type_3 *var_8;
  type_4 *var_10;
  type_4 *var_11;
  bool var_12;
  bool bVar9;
  type_4 bVar10;
  
  bVar10 = 0;
  if (var_1 == (char *)0x0) {
    plVar3 = (type_1 *)0x0;
  }
  else {
    var_8 = var_2;
    plVar3 = var_2;
    if (var_2 != (type_1 *)0x0) {
      do {
        var_4 = var_3((var_8->name_list).var_1,var_1);
        if (var_4 == 0) {
          if (var_5 == 0) {
            return plVar3;
          }
          pcVar2 = (char *)var_6(0,"%P:%pS: warning: redeclaration of memory region `%s\'\n",5);
          var_7(pcVar2,0,var_1);
          return plVar3;
        }
        var_8 = (type_3 *)(var_8->name_list).next;
      } while ((var_8 != (type_3 *)0x0) ||
              (var_8 = plVar3->next, plVar3 = var_8, var_8 != (type_3 *)0x0));
    }
    var_12 = false;
    bVar9 = var_5 == 0;
    if (bVar9) {
      var_9 = 10;
      var_10 = (type_4 *)var_1;
      var_11 = (type_4 *)"*default*";
      do {
        if (var_9 == 0) break;
        var_9 = var_9 + -1;
        var_12 = *var_10 < *var_11;
        bVar9 = *var_10 == *var_11;
        var_10 = var_10 + (type_5)bVar10 * -2 + 1;
        var_11 = var_11 + (type_5)bVar10 * -2 + 1;
      } while (bVar9);
      if ((!var_12 && !bVar9) != var_12) {
        pcVar2 = (char *)var_6(0,"%P:%pS: warning: memory region `%s\' not declared\n",5);
        var_7(pcVar2,0,var_1);
      }
    }
    plVar3 = (type_1 *)var_13(0x58);
    pcVar2 = (char *)var_14(var_1);
    (plVar3->name_list).next = (type_6 *)0x0;
    (plVar3->name_list).var_1 = pcVar2;
    plVar3->next = (type_3 *)0x0;
    plVar3->origin_exp = (type_7 *)0x0;
    plVar3->origin = 0;
    plVar3->length = 0xffffffffffffffff;
    plVar3->length_exp = (type_7 *)0x0;
    plVar3->current = 0;
    plVar3->last_os = (type_8 *)0x0;
    plVar3->flags = 0;
    plVar3->not_flags = 0;
    plVar3->had_full_message = 0;
    *lang_memory_region_list_tail = plVar3;
    lang_memory_region_list_tail = &plVar3->next;
  }
  return plVar3;
}


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

undefined8 * MASKED(byte *param_1,int param_2)

{
  undefined8 *puVar1;
  int iVar2;
  undefined8 uVar3;
  undefined8 *puVar4;
  long lVar5;
  byte *pbVar6;
  byte *pbVar7;
  undefined8 *puVar8;
  bool bVar9;
  bool bVar10;
  byte bVar11;
  
  bVar11 = 0;
  if (param_1 == (byte *)0x0) {
    puVar4 = (undefined8 *)0x0;
  }
  else {
    puVar4 = DAT_002a5298;
    puVar8 = DAT_002a5298;
    if (DAT_002a5298 != (undefined8 *)0x0) {
      do {
        iVar2 = strcmp((char *)*puVar4,(char *)param_1);
        if (iVar2 == 0) {
          if (param_2 == 0) {
            return puVar8;
          }
          uVar3 = dcgettext(0,"%P:%pS: warning: redeclaration of memory region `%s\'\n",5);
          FUN_00129410(uVar3,0,param_1);
          return puVar8;
        }
        puVar1 = puVar4 + 1;
        puVar4 = (undefined8 *)*puVar1;
      } while (((undefined8 *)*puVar1 != (undefined8 *)0x0) ||
              (puVar4 = (undefined8 *)puVar8[2], puVar8 = puVar4, puVar4 != (undefined8 *)0x0));
    }
    bVar9 = false;
    bVar10 = param_2 == 0;
    if (bVar10) {
      lVar5 = 10;
      pbVar6 = param_1;
      pbVar7 = (byte *)"*default*";
      do {
        if (lVar5 == 0) break;
        lVar5 = lVar5 + -1;
        bVar9 = *pbVar6 < *pbVar7;
        bVar10 = *pbVar6 == *pbVar7;
        pbVar6 = pbVar6 + (ulong)bVar11 * -2 + 1;
        pbVar7 = pbVar7 + (ulong)bVar11 * -2 + 1;
      } while (bVar10);
      if ((!bVar9 && !bVar10) != bVar9) {
        uVar3 = dcgettext(0,"%P:%pS: warning: memory region `%s\' not declared\n",5);
        FUN_00129410(uVar3,0,param_1);
      }
    }
    puVar4 = (undefined8 *)FUN_001197b0(0x58);
    uVar3 = xstrdup(param_1);
    puVar4[1] = 0;
    *puVar4 = uVar3;
    puVar4[2] = 0;
    puVar4[3] = 0;
    puVar4[4] = 0;
    puVar4[5] = 0xffffffffffffffff;
    puVar4[6] = 0;
    puVar4[7] = 0;
    puVar4[8] = 0;
    puVar4[9] = 0;
    *(undefined4 *)(puVar4 + 10) = 0;
    *(undefined8 **)PTR_DAT_002a2760 = puVar4;
    PTR_DAT_002a2760 = (undefined *)(puVar4 + 2);
  }
  return puVar4;
}

