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

lang_memory_region_type * lang_memory_region_lookup(char *name,bfd_boolean create)

{
  memory_region_struct *pmVar1;
  int iVar2;
  char *pcVar3;
  lang_memory_region_type *plVar4;
  byte *pbVar5;
  byte *pbVar6;
  bool bVar7;
  bool bVar8;
  byte bVar9;
  
  bVar9 = 0;
  if (name == (char *)0x0) {
    plVar4 = (lang_memory_region_type *)0x0;
  }
  else {
    bVar7 = lang_memory_region_list != (lang_memory_region_type *)0x0;
    pmVar1 = lang_memory_region_list;
    while (plVar4 = pmVar1, bVar7) {
      do {
        iVar2 = strcmp((plVar4->name_list).name,name);
        if (iVar2 == 0) {
          if (create == 0) {
            return pmVar1;
          }
          pcVar3 = (char *)dcgettext(0,"%P:%pS: warning: redeclaration of memory region `%s\'\n",5);
          einfo(pcVar3,0,name);
          return pmVar1;
        }
        plVar4 = (lang_memory_region_type *)(plVar4->name_list).next;
      } while (plVar4 != (lang_memory_region_type *)0x0);
      pmVar1 = pmVar1->next;
      bVar7 = pmVar1 != (memory_region_struct *)0x0;
    }
    bVar7 = false;
    bVar8 = create == 0;
    if (bVar8) {
      iVar2 = 10;
      pbVar5 = (byte *)name;
      pbVar6 = (byte *)"*default*";
      do {
        if (iVar2 == 0) break;
        iVar2 = iVar2 + -1;
        bVar7 = *pbVar5 < *pbVar6;
        bVar8 = *pbVar5 == *pbVar6;
        pbVar5 = pbVar5 + (uint)bVar9 * -2 + 1;
        pbVar6 = pbVar6 + (uint)bVar9 * -2 + 1;
      } while (bVar8);
      if ((!bVar7 && !bVar8) != bVar7) {
        pcVar3 = (char *)dcgettext(0,"%P:%pS: warning: memory region `%s\' not declared\n",5);
        einfo(pcVar3,0,name);
      }
    }
    plVar4 = (lang_memory_region_type *)stat_alloc(0x30);
    pcVar3 = (char *)xstrdup(name);
    (plVar4->name_list).next = (memory_region_name_struct *)0x0;
    (plVar4->name_list).name = pcVar3;
    plVar4->next = (memory_region_struct *)0x0;
    plVar4->origin_exp = (etree_union *)0x0;
    plVar4->origin = 0;
    plVar4->length_exp = (etree_union *)0x0;
    plVar4->length = 0xffffffff;
    plVar4->current = 0;
    plVar4->last_os = (lang_statement_union *)0x0;
    plVar4->flags = 0;
    plVar4->not_flags = 0;
    plVar4->had_full_message = 0;
    *lang_memory_region_list_tail = plVar4;
    lang_memory_region_list_tail = &plVar4->next;
  }
  return plVar4;
}



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

undefined4 * FUN_00021970(byte *param_1,int param_2)

{
  undefined4 *puVar1;
  int iVar2;
  undefined4 uVar3;
  undefined4 *puVar4;
  undefined4 *puVar5;
  byte *pbVar6;
  byte *pbVar7;
  bool bVar8;
  bool bVar9;
  byte bVar10;
  
  bVar10 = 0;
  if (param_1 == (byte *)0x0) {
    puVar4 = (undefined4 *)0x0;
  }
  else {
    bVar8 = DAT_000917ec != (undefined4 *)0x0;
    puVar4 = DAT_000917ec;
    while (puVar5 = puVar4, bVar8) {
      do {
        iVar2 = strcmp((char *)*puVar5,(char *)param_1);
        if (iVar2 == 0) {
          if (param_2 == 0) {
            return puVar4;
          }
          uVar3 = dcgettext(0,"%P:%pS: warning: redeclaration of memory region `%s\'\n",5);
          FUN_00031760(uVar3,0,param_1);
          return puVar4;
        }
        puVar1 = puVar5 + 1;
        puVar5 = (undefined4 *)*puVar1;
      } while ((undefined4 *)*puVar1 != (undefined4 *)0x0);
      puVar4 = (undefined4 *)puVar4[2];
      bVar8 = puVar4 != (undefined4 *)0x0;
    }
    bVar8 = false;
    bVar9 = param_2 == 0;
    if (bVar9) {
      iVar2 = 10;
      pbVar6 = param_1;
      pbVar7 = (byte *)"*default*";
      do {
        if (iVar2 == 0) break;
        iVar2 = iVar2 + -1;
        bVar8 = *pbVar6 < *pbVar7;
        bVar9 = *pbVar6 == *pbVar7;
        pbVar6 = pbVar6 + (uint)bVar10 * -2 + 1;
        pbVar7 = pbVar7 + (uint)bVar10 * -2 + 1;
      } while (bVar9);
      if ((!bVar8 && !bVar9) != bVar8) {
        uVar3 = dcgettext(0,"%P:%pS: warning: memory region `%s\' not declared\n",5);
        FUN_00031760(uVar3,0,param_1);
      }
    }
    puVar4 = (undefined4 *)FUN_00021210(0x30);
    uVar3 = xstrdup(param_1);
    puVar4[1] = 0;
    *puVar4 = uVar3;
    puVar4[2] = 0;
    puVar4[3] = 0;
    puVar4[4] = 0;
    puVar4[6] = 0;
    puVar4[5] = 0xffffffff;
    puVar4[7] = 0;
    puVar4[8] = 0;
    puVar4[9] = 0;
    puVar4[10] = 0;
    puVar4[0xb] = 0;
    *(undefined4 **)PTR_DAT_00091350 = puVar4;
    PTR_DAT_00091350 = (undefined *)(puVar4 + 2);
  }
  return puVar4;
}


PUSH EBP
PUSH EDI
PUSH ESI
PUSH EBX
CALL 0x00015a80
ADD EBX,0x6f687
SUB ESP,0xc
MOV EBP,dword ptr [ESP + 0x20]
TEST EBP,EBP
JZ 0x00021ac4
MOV EDI,dword ptr [EBX + 0x7ec]
TEST EDI,EDI
JZ 0x000219c4
MOV ESI,EDI
LEA ESI,[ESI]
SUB ESP,0x8
PUSH EBP
PUSH dword ptr [ESI]
CALL 0x000140c0
ADD ESP,0x10
TEST EAX,EAX
JZ 0x00021a80
MOV ESI,dword ptr [ESI + 0x4]
TEST ESI,ESI
JNZ 0x000219a0
MOV EDI,dword ptr [EDI + 0x8]
TEST EDI,EDI
JNZ 0x00021998
MOV EAX,dword ptr [ESP + 0x24]
TEST EAX,EAX
JNZ 0x00021a06
MOV ECX,0xa
LEA EDI,[EBX + 0xfffac0f5]
MOV ESI,EBP
CMPSB.REPE ES:EDI,ESI
SETA AL
SBB AL,0x0
TEST AL,AL
JZ 0x00021a06
SUB ESP,0x4
LEA EAX,[EBX + 0xfffbb36c]
PUSH 0x5
PUSH EAX
PUSH 0x0
CALL 0x000142f0
ADD ESP,0xc
PUSH EBP
PUSH 0x0
PUSH EAX
CALL 0x00031760
ADD ESP,0x10
SUB ESP,0xc
PUSH 0x30
CALL 0x00021210
MOV dword ptr [ESP],EBP
MOV EDI,EAX
CALL 0x000144b0
MOV dword ptr [EDI + 0x4],0x0
ADD ESP,0x10
MOV dword ptr [EDI],EAX
MOV EAX,dword ptr [EBX + 0x350]
MOV dword ptr [EDI + 0x8],0x0
MOV dword ptr [EDI + 0xc],0x0
MOV dword ptr [EDI + 0x10],0x0
MOV dword ptr [EDI + 0x18],0x0
MOV dword ptr [EDI + 0x14],0xffffffff
MOV dword ptr [EDI + 0x1c],0x0
MOV dword ptr [EDI + 0x20],0x0
MOV dword ptr [EDI + 0x24],0x0
MOV dword ptr [EDI + 0x28],0x0
MOV dword ptr [EDI + 0x2c],0x0
MOV dword ptr [EAX],EDI
LEA EAX,[EDI + 0x8]
MOV dword ptr [EBX + 0x350],EAX
JMP 0x00021a88
MOV EDX,dword ptr [ESP + 0x24]
TEST EDX,EDX
JNZ 0x00021a98
ADD ESP,0xc
MOV EAX,EDI
POP EBX
POP ESI
POP EDI
POP EBP
RET
SUB ESP,0x4
LEA EAX,[EBX + 0xfffbb334]
PUSH 0x5
PUSH EAX
PUSH 0x0
CALL 0x000142f0
ADD ESP,0xc
PUSH EBP
PUSH 0x0
PUSH EAX
CALL 0x00031760
ADD ESP,0x10
MOV EAX,EDI
ADD ESP,0xc
POP EBX
POP ESI
POP EDI
POP EBP
RET
XOR EDI,EDI
JMP 0x00021a88
(translation_unit "/* WARNING: Function: __i686.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */\n\nundefined4 * FUN_00021970(byte *param_1,int param_2)\n\n{\n  undefined4 *puVar1;\n  int iVar2;\n  undefined4 uVar3;\n  undefined4 *puVar4;\n  undefined4 *puVar5;\n  byte *pbVar6;\n  byte *pbVar7;\n  bool bVar8;\n  bool bVar9;\n  byte bVar10;\n  \n  bVar10 = 0;\n  if (param_1 == (byte *)0x0) {\n    puVar4 = (undefined4 *)0x0;\n  }\n  else {\n    bVar8 = DAT_000917ec != (undefined4 *)0x0;\n    puVar4 = DAT_000917ec;\n    while (puVar5 = puVar4, bVar8) {\n      do {\n        iVar2 = strcmp((char *)*puVar5,(char *)param_1);\n        if (iVar2 == 0) {\n          if (param_2 == 0) {\n            return puVar4;\n          }\n          uVar3 = dcgettext(0,"%P:%pS: warning: redeclaration of memory region `%s\'\n",5);\n          FUN_00031760(uVar3,0,param_1);\n          return puVar4;\n        }\n        puVar1 = puVar5 + 1;\n        puVar5 = (undefined4 *)*puVar1;\n      } while ((undefined4 *)*puVar1 != (undefined4 *)0x0);\n      puVar4 = (undefined4 *)puVar4[2];\n      bVar8 = puVar4 != (undefined4 *)0x0;\n    }\n    bVar8 = false;\n    bVar9 = param_2 == 0;\n    if (bVar9) {\n      iVar2 = 10;\n      pbVar6 = param_1;\n      pbVar7 = (byte *)"*default*";\n      do {\n        if (iVar2 == 0) break;\n        iVar2 = iVar2 + -1;\n        bVar8 = *pbVar6 < *pbVar7;\n        bVar9 = *pbVar6 == *pbVar7;\n        pbVar6 = pbVar6 + (uint)bVar10 * -2 + 1;\n        pbVar7 = pbVar7 + (uint)bVar10 * -2 + 1;\n      } while (bVar9);\n      if ((!bVar8 && !bVar9) != bVar8) {\n        uVar3 = dcgettext(0,"%P:%pS: warning: memory region `%s\' not declared\n",5);\n        FUN_00031760(uVar3,0,param_1);\n      }\n    }\n    puVar4 = (undefined4 *)FUN_00021210(0x30);\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[6] = 0;\n    puVar4[5] = 0xffffffff;\n    puVar4[7] = 0;\n    puVar4[8] = 0;\n    puVar4[9] = 0;\n    puVar4[10] = 0;\n    puVar4[0xb] = 0;\n    *(undefined4 **)PTR_DAT_00091350 = puVar4;\n    PTR_DAT_00091350 = (undefined *)(puVar4 + 2);\n  }\n  return puVar4;\n}\n\n" comment (function_definition "undefined4 * FUN_00021970(byte *param_1,int param_2)\n\n{\n  undefined4 *puVar1;\n  int iVar2;\n  undefined4 uVar3;\n  undefined4 *puVar4;\n  undefined4 *puVar5;\n  byte *pbVar6;\n  byte *pbVar7;\n  bool bVar8;\n  bool bVar9;\n  byte bVar10;\n  \n  bVar10 = 0;\n  if (param_1 == (byte *)0x0) {\n    puVar4 = (undefined4 *)0x0;\n  }\n  else {\n    bVar8 = DAT_000917ec != (undefined4 *)0x0;\n    puVar4 = DAT_000917ec;\n    while (puVar5 = puVar4, bVar8) {\n      do {\n        iVar2 = strcmp((char *)*puVar5,(char *)param_1);\n        if (iVar2 == 0) {\n          if (param_2 == 0) {\n            return puVar4;\n          }\n          uVar3 = dcgettext(0,"%P:%pS: warning: redeclaration of memory region `%s\'\n",5);\n          FUN_00031760(uVar3,0,param_1);\n          return puVar4;\n        }\n        puVar1 = puVar5 + 1;\n        puVar5 = (undefined4 *)*puVar1;\n      } while ((undefined4 *)*puVar1 != (undefined4 *)0x0);\n      puVar4 = (undefined4 *)puVar4[2];\n      bVar8 = puVar4 != (undefined4 *)0x0;\n    }\n    bVar8 = false;\n    bVar9 = param_2 == 0;\n    if (bVar9) {\n      iVar2 = 10;\n      pbVar6 = param_1;\n      pbVar7 = (byte *)"*default*";\n      do {\n        if (iVar2 == 0) break;\n        iVar2 = iVar2 + -1;\n        bVar8 = *pbVar6 < *pbVar7;\n        bVar9 = *pbVar6 == *pbVar7;\n        pbVar6 = pbVar6 + (uint)bVar10 * -2 + 1;\n        pbVar7 = pbVar7 + (uint)bVar10 * -2 + 1;\n      } while (bVar9);\n      if ((!bVar8 && !bVar9) != bVar8) {\n        uVar3 = dcgettext(0,"%P:%pS: warning: memory region `%s\' not declared\n",5);\n        FUN_00031760(uVar3,0,param_1);\n      }\n    }\n    puVar4 = (undefined4 *)FUN_00021210(0x30);\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[6] = 0;\n    puVar4[5] = 0xffffffff;\n    puVar4[7] = 0;\n    puVar4[8] = 0;\n    puVar4[9] = 0;\n    puVar4[10] = 0;\n    puVar4[0xb] = 0;\n    *(undefined4 **)PTR_DAT_00091350 = puVar4;\n    PTR_DAT_00091350 = (undefined *)(puVar4 + 2);\n  }\n  return puVar4;\n}" type_identifier (pointer_declarator "* FUN_00021970(byte *param_1,int param_2)" * (function_declarator "FUN_00021970(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  undefined4 *puVar1;\n  int iVar2;\n  undefined4 uVar3;\n  undefined4 *puVar4;\n  undefined4 *puVar5;\n  byte *pbVar6;\n  byte *pbVar7;\n  bool bVar8;\n  bool bVar9;\n  byte bVar10;\n  \n  bVar10 = 0;\n  if (param_1 == (byte *)0x0) {\n    puVar4 = (undefined4 *)0x0;\n  }\n  else {\n    bVar8 = DAT_000917ec != (undefined4 *)0x0;\n    puVar4 = DAT_000917ec;\n    while (puVar5 = puVar4, bVar8) {\n      do {\n        iVar2 = strcmp((char *)*puVar5,(char *)param_1);\n        if (iVar2 == 0) {\n          if (param_2 == 0) {\n            return puVar4;\n          }\n          uVar3 = dcgettext(0,"%P:%pS: warning: redeclaration of memory region `%s\'\n",5);\n          FUN_00031760(uVar3,0,param_1);\n          return puVar4;\n        }\n        puVar1 = puVar5 + 1;\n        puVar5 = (undefined4 *)*puVar1;\n      } while ((undefined4 *)*puVar1 != (undefined4 *)0x0);\n      puVar4 = (undefined4 *)puVar4[2];\n      bVar8 = puVar4 != (undefined4 *)0x0;\n    }\n    bVar8 = false;\n    bVar9 = param_2 == 0;\n    if (bVar9) {\n      iVar2 = 10;\n      pbVar6 = param_1;\n      pbVar7 = (byte *)"*default*";\n      do {\n        if (iVar2 == 0) break;\n        iVar2 = iVar2 + -1;\n        bVar8 = *pbVar6 < *pbVar7;\n        bVar9 = *pbVar6 == *pbVar7;\n        pbVar6 = pbVar6 + (uint)bVar10 * -2 + 1;\n        pbVar7 = pbVar7 + (uint)bVar10 * -2 + 1;\n      } while (bVar9);\n      if ((!bVar8 && !bVar9) != bVar8) {\n        uVar3 = dcgettext(0,"%P:%pS: warning: memory region `%s\' not declared\n",5);\n        FUN_00031760(uVar3,0,param_1);\n      }\n    }\n    puVar4 = (undefined4 *)FUN_00021210(0x30);\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[6] = 0;\n    puVar4[5] = 0xffffffff;\n    puVar4[7] = 0;\n    puVar4[8] = 0;\n    puVar4[9] = 0;\n    puVar4[10] = 0;\n    puVar4[0xb] = 0;\n    *(undefined4 **)PTR_DAT_00091350 = puVar4;\n    PTR_DAT_00091350 = (undefined *)(puVar4 + 2);\n  }\n  return puVar4;\n}" { (declaration "undefined4 *puVar1;" type_identifier (pointer_declarator "*puVar1" * identifier) ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "undefined4 uVar3;" type_identifier identifier ;) (declaration "undefined4 *puVar4;" type_identifier (pointer_declarator "*puVar4" * identifier) ;) (declaration "undefined4 *puVar5;" type_identifier (pointer_declarator "*puVar5" * 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 (param_1 == (byte *)0x0) {\n    puVar4 = (undefined4 *)0x0;\n  }\n  else {\n    bVar8 = DAT_000917ec != (undefined4 *)0x0;\n    puVar4 = DAT_000917ec;\n    while (puVar5 = puVar4, bVar8) {\n      do {\n        iVar2 = strcmp((char *)*puVar5,(char *)param_1);\n        if (iVar2 == 0) {\n          if (param_2 == 0) {\n            return puVar4;\n          }\n          uVar3 = dcgettext(0,"%P:%pS: warning: redeclaration of memory region `%s\'\n",5);\n          FUN_00031760(uVar3,0,param_1);\n          return puVar4;\n        }\n        puVar1 = puVar5 + 1;\n        puVar5 = (undefined4 *)*puVar1;\n      } while ((undefined4 *)*puVar1 != (undefined4 *)0x0);\n      puVar4 = (undefined4 *)puVar4[2];\n      bVar8 = puVar4 != (undefined4 *)0x0;\n    }\n    bVar8 = false;\n    bVar9 = param_2 == 0;\n    if (bVar9) {\n      iVar2 = 10;\n      pbVar6 = param_1;\n      pbVar7 = (byte *)"*default*";\n      do {\n        if (iVar2 == 0) break;\n        iVar2 = iVar2 + -1;\n        bVar8 = *pbVar6 < *pbVar7;\n        bVar9 = *pbVar6 == *pbVar7;\n        pbVar6 = pbVar6 + (uint)bVar10 * -2 + 1;\n        pbVar7 = pbVar7 + (uint)bVar10 * -2 + 1;\n      } while (bVar9);\n      if ((!bVar8 && !bVar9) != bVar8) {\n        uVar3 = dcgettext(0,"%P:%pS: warning: memory region `%s\' not declared\n",5);\n        FUN_00031760(uVar3,0,param_1);\n      }\n    }\n    puVar4 = (undefined4 *)FUN_00021210(0x30);\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[6] = 0;\n    puVar4[5] = 0xffffffff;\n    puVar4[7] = 0;\n    puVar4[8] = 0;\n    puVar4[9] = 0;\n    puVar4[10] = 0;\n    puVar4[0xb] = 0;\n    *(undefined4 **)PTR_DAT_00091350 = puVar4;\n    PTR_DAT_00091350 = (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 = (undefined4 *)0x0;\n  }" { (expression_statement "puVar4 = (undefined4 *)0x0;" (assignment_expression "puVar4 = (undefined4 *)0x0" identifier = (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) }) (else_clause "else {\n    bVar8 = DAT_000917ec != (undefined4 *)0x0;\n    puVar4 = DAT_000917ec;\n    while (puVar5 = puVar4, bVar8) {\n      do {\n        iVar2 = strcmp((char *)*puVar5,(char *)param_1);\n        if (iVar2 == 0) {\n          if (param_2 == 0) {\n            return puVar4;\n          }\n          uVar3 = dcgettext(0,"%P:%pS: warning: redeclaration of memory region `%s\'\n",5);\n          FUN_00031760(uVar3,0,param_1);\n          return puVar4;\n        }\n        puVar1 = puVar5 + 1;\n        puVar5 = (undefined4 *)*puVar1;\n      } while ((undefined4 *)*puVar1 != (undefined4 *)0x0);\n      puVar4 = (undefined4 *)puVar4[2];\n      bVar8 = puVar4 != (undefined4 *)0x0;\n    }\n    bVar8 = false;\n    bVar9 = param_2 == 0;\n    if (bVar9) {\n      iVar2 = 10;\n      pbVar6 = param_1;\n      pbVar7 = (byte *)"*default*";\n      do {\n        if (iVar2 == 0) break;\n        iVar2 = iVar2 + -1;\n        bVar8 = *pbVar6 < *pbVar7;\n        bVar9 = *pbVar6 == *pbVar7;\n        pbVar6 = pbVar6 + (uint)bVar10 * -2 + 1;\n        pbVar7 = pbVar7 + (uint)bVar10 * -2 + 1;\n      } while (bVar9);\n      if ((!bVar8 && !bVar9) != bVar8) {\n        uVar3 = dcgettext(0,"%P:%pS: warning: memory region `%s\' not declared\n",5);\n        FUN_00031760(uVar3,0,param_1);\n      }\n    }\n    puVar4 = (undefined4 *)FUN_00021210(0x30);\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[6] = 0;\n    puVar4[5] = 0xffffffff;\n    puVar4[7] = 0;\n    puVar4[8] = 0;\n    puVar4[9] = 0;\n    puVar4[10] = 0;\n    puVar4[0xb] = 0;\n    *(undefined4 **)PTR_DAT_00091350 = puVar4;\n    PTR_DAT_00091350 = (undefined *)(puVar4 + 2);\n  }" else (compound_statement "{\n    bVar8 = DAT_000917ec != (undefined4 *)0x0;\n    puVar4 = DAT_000917ec;\n    while (puVar5 = puVar4, bVar8) {\n      do {\n        iVar2 = strcmp((char *)*puVar5,(char *)param_1);\n        if (iVar2 == 0) {\n          if (param_2 == 0) {\n            return puVar4;\n          }\n          uVar3 = dcgettext(0,"%P:%pS: warning: redeclaration of memory region `%s\'\n",5);\n          FUN_00031760(uVar3,0,param_1);\n          return puVar4;\n        }\n        puVar1 = puVar5 + 1;\n        puVar5 = (undefined4 *)*puVar1;\n      } while ((undefined4 *)*puVar1 != (undefined4 *)0x0);\n      puVar4 = (undefined4 *)puVar4[2];\n      bVar8 = puVar4 != (undefined4 *)0x0;\n    }\n    bVar8 = false;\n    bVar9 = param_2 == 0;\n    if (bVar9) {\n      iVar2 = 10;\n      pbVar6 = param_1;\n      pbVar7 = (byte *)"*default*";\n      do {\n        if (iVar2 == 0) break;\n        iVar2 = iVar2 + -1;\n        bVar8 = *pbVar6 < *pbVar7;\n        bVar9 = *pbVar6 == *pbVar7;\n        pbVar6 = pbVar6 + (uint)bVar10 * -2 + 1;\n        pbVar7 = pbVar7 + (uint)bVar10 * -2 + 1;\n      } while (bVar9);\n      if ((!bVar8 && !bVar9) != bVar8) {\n        uVar3 = dcgettext(0,"%P:%pS: warning: memory region `%s\' not declared\n",5);\n        FUN_00031760(uVar3,0,param_1);\n      }\n    }\n    puVar4 = (undefined4 *)FUN_00021210(0x30);\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[6] = 0;\n    puVar4[5] = 0xffffffff;\n    puVar4[7] = 0;\n    puVar4[8] = 0;\n    puVar4[9] = 0;\n    puVar4[10] = 0;\n    puVar4[0xb] = 0;\n    *(undefined4 **)PTR_DAT_00091350 = puVar4;\n    PTR_DAT_00091350 = (undefined *)(puVar4 + 2);\n  }" { (expression_statement "bVar8 = DAT_000917ec != (undefined4 *)0x0;" (assignment_expression "bVar8 = DAT_000917ec != (undefined4 *)0x0" identifier = (binary_expression "DAT_000917ec != (undefined4 *)0x0" identifier != (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal))) ;) (expression_statement "puVar4 = DAT_000917ec;" (assignment_expression "puVar4 = DAT_000917ec" identifier = identifier) ;) (while_statement "while (puVar5 = puVar4, bVar8) {\n      do {\n        iVar2 = strcmp((char *)*puVar5,(char *)param_1);\n        if (iVar2 == 0) {\n          if (param_2 == 0) {\n            return puVar4;\n          }\n          uVar3 = dcgettext(0,"%P:%pS: warning: redeclaration of memory region `%s\'\n",5);\n          FUN_00031760(uVar3,0,param_1);\n          return puVar4;\n        }\n        puVar1 = puVar5 + 1;\n        puVar5 = (undefined4 *)*puVar1;\n      } while ((undefined4 *)*puVar1 != (undefined4 *)0x0);\n      puVar4 = (undefined4 *)puVar4[2];\n      bVar8 = puVar4 != (undefined4 *)0x0;\n    }" while (parenthesized_expression "(puVar5 = puVar4, bVar8)" ( (comma_expression "puVar5 = puVar4, bVar8" (assignment_expression "puVar5 = puVar4" identifier = identifier) , identifier) )) (compound_statement "{\n      do {\n        iVar2 = strcmp((char *)*puVar5,(char *)param_1);\n        if (iVar2 == 0) {\n          if (param_2 == 0) {\n            return puVar4;\n          }\n          uVar3 = dcgettext(0,"%P:%pS: warning: redeclaration of memory region `%s\'\n",5);\n          FUN_00031760(uVar3,0,param_1);\n          return puVar4;\n        }\n        puVar1 = puVar5 + 1;\n        puVar5 = (undefined4 *)*puVar1;\n      } while ((undefined4 *)*puVar1 != (undefined4 *)0x0);\n      puVar4 = (undefined4 *)puVar4[2];\n      bVar8 = puVar4 != (undefined4 *)0x0;\n    }" { (do_statement "do {\n        iVar2 = strcmp((char *)*puVar5,(char *)param_1);\n        if (iVar2 == 0) {\n          if (param_2 == 0) {\n            return puVar4;\n          }\n          uVar3 = dcgettext(0,"%P:%pS: warning: redeclaration of memory region `%s\'\n",5);\n          FUN_00031760(uVar3,0,param_1);\n          return puVar4;\n        }\n        puVar1 = puVar5 + 1;\n        puVar5 = (undefined4 *)*puVar1;\n      } while ((undefined4 *)*puVar1 != (undefined4 *)0x0);" do (compound_statement "{\n        iVar2 = strcmp((char *)*puVar5,(char *)param_1);\n        if (iVar2 == 0) {\n          if (param_2 == 0) {\n            return puVar4;\n          }\n          uVar3 = dcgettext(0,"%P:%pS: warning: redeclaration of memory region `%s\'\n",5);\n          FUN_00031760(uVar3,0,param_1);\n          return puVar4;\n        }\n        puVar1 = puVar5 + 1;\n        puVar5 = (undefined4 *)*puVar1;\n      }" { (expression_statement "iVar2 = strcmp((char *)*puVar5,(char *)param_1);" (assignment_expression "iVar2 = strcmp((char *)*puVar5,(char *)param_1)" identifier = (call_expression "strcmp((char *)*puVar5,(char *)param_1)" identifier (argument_list "((char *)*puVar5,(char *)param_1)" ( (cast_expression "(char *)*puVar5" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar5" * 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 puVar4;\n          }\n          uVar3 = dcgettext(0,"%P:%pS: warning: redeclaration of memory region `%s\'\n",5);\n          FUN_00031760(uVar3,0,param_1);\n          return puVar4;\n        }" if (parenthesized_expression "(iVar2 == 0)" ( (binary_expression "iVar2 == 0" identifier == number_literal) )) (compound_statement "{\n          if (param_2 == 0) {\n            return puVar4;\n          }\n          uVar3 = dcgettext(0,"%P:%pS: warning: redeclaration of memory region `%s\'\n",5);\n          FUN_00031760(uVar3,0,param_1);\n          return puVar4;\n        }" { (if_statement "if (param_2 == 0) {\n            return puVar4;\n          }" if (parenthesized_expression "(param_2 == 0)" ( (binary_expression "param_2 == 0" identifier == number_literal) )) (compound_statement "{\n            return puVar4;\n          }" { (return_statement "return puVar4;" 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_00031760(uVar3,0,param_1);" (call_expression "FUN_00031760(uVar3,0,param_1)" identifier (argument_list "(uVar3,0,param_1)" ( identifier , number_literal , identifier ))) ;) (return_statement "return puVar4;" return identifier ;) })) (expression_statement "puVar1 = puVar5 + 1;" (assignment_expression "puVar1 = puVar5 + 1" identifier = (binary_expression "puVar5 + 1" identifier + number_literal)) ;) (expression_statement "puVar5 = (undefined4 *)*puVar1;" (assignment_expression "puVar5 = (undefined4 *)*puVar1" identifier = (cast_expression "(undefined4 *)*puVar1" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar1" * identifier))) ;) }) while (parenthesized_expression "((undefined4 *)*puVar1 != (undefined4 *)0x0)" ( (binary_expression "(undefined4 *)*puVar1 != (undefined4 *)0x0" (cast_expression "(undefined4 *)*puVar1" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar1" * identifier)) != (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) ;) (expression_statement "puVar4 = (undefined4 *)puVar4[2];" (assignment_expression "puVar4 = (undefined4 *)puVar4[2]" identifier = (cast_expression "(undefined4 *)puVar4[2]" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar4[2]" identifier [ number_literal ]))) ;) (expression_statement "bVar8 = puVar4 != (undefined4 *)0x0;" (assignment_expression "bVar8 = puVar4 != (undefined4 *)0x0" identifier = (binary_expression "puVar4 != (undefined4 *)0x0" identifier != (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal))) ;) })) (expression_statement "bVar8 = false;" (assignment_expression "bVar8 = false" identifier = false) ;) (expression_statement "bVar9 = param_2 == 0;" (assignment_expression "bVar9 = param_2 == 0" identifier = (binary_expression "param_2 == 0" identifier == number_literal)) ;) (if_statement "if (bVar9) {\n      iVar2 = 10;\n      pbVar6 = param_1;\n      pbVar7 = (byte *)"*default*";\n      do {\n        if (iVar2 == 0) break;\n        iVar2 = iVar2 + -1;\n        bVar8 = *pbVar6 < *pbVar7;\n        bVar9 = *pbVar6 == *pbVar7;\n        pbVar6 = pbVar6 + (uint)bVar10 * -2 + 1;\n        pbVar7 = pbVar7 + (uint)bVar10 * -2 + 1;\n      } while (bVar9);\n      if ((!bVar8 && !bVar9) != bVar8) {\n        uVar3 = dcgettext(0,"%P:%pS: warning: memory region `%s\' not declared\n",5);\n        FUN_00031760(uVar3,0,param_1);\n      }\n    }" if (parenthesized_expression "(bVar9)" ( identifier )) (compound_statement "{\n      iVar2 = 10;\n      pbVar6 = param_1;\n      pbVar7 = (byte *)"*default*";\n      do {\n        if (iVar2 == 0) break;\n        iVar2 = iVar2 + -1;\n        bVar8 = *pbVar6 < *pbVar7;\n        bVar9 = *pbVar6 == *pbVar7;\n        pbVar6 = pbVar6 + (uint)bVar10 * -2 + 1;\n        pbVar7 = pbVar7 + (uint)bVar10 * -2 + 1;\n      } while (bVar9);\n      if ((!bVar8 && !bVar9) != bVar8) {\n        uVar3 = dcgettext(0,"%P:%pS: warning: memory region `%s\' not declared\n",5);\n        FUN_00031760(uVar3,0,param_1);\n      }\n    }" { (expression_statement "iVar2 = 10;" (assignment_expression "iVar2 = 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 (iVar2 == 0) break;\n        iVar2 = iVar2 + -1;\n        bVar8 = *pbVar6 < *pbVar7;\n        bVar9 = *pbVar6 == *pbVar7;\n        pbVar6 = pbVar6 + (uint)bVar10 * -2 + 1;\n        pbVar7 = pbVar7 + (uint)bVar10 * -2 + 1;\n      } while (bVar9);" do (compound_statement "{\n        if (iVar2 == 0) break;\n        iVar2 = iVar2 + -1;\n        bVar8 = *pbVar6 < *pbVar7;\n        bVar9 = *pbVar6 == *pbVar7;\n        pbVar6 = pbVar6 + (uint)bVar10 * -2 + 1;\n        pbVar7 = pbVar7 + (uint)bVar10 * -2 + 1;\n      }" { (if_statement "if (iVar2 == 0) break;" if (parenthesized_expression "(iVar2 == 0)" ( (binary_expression "iVar2 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "iVar2 = iVar2 + -1;" (assignment_expression "iVar2 = iVar2 + -1" identifier = (binary_expression "iVar2 + -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 + (uint)bVar10 * -2 + 1;" (assignment_expression "pbVar6 = pbVar6 + (uint)bVar10 * -2 + 1" identifier = (binary_expression "pbVar6 + (uint)bVar10 * -2 + 1" (binary_expression "pbVar6 + (uint)bVar10 * -2" identifier + (binary_expression "(uint)bVar10 * -2" (cast_expression "(uint)bVar10" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) (expression_statement "pbVar7 = pbVar7 + (uint)bVar10 * -2 + 1;" (assignment_expression "pbVar7 = pbVar7 + (uint)bVar10 * -2 + 1" identifier = (binary_expression "pbVar7 + (uint)bVar10 * -2 + 1" (binary_expression "pbVar7 + (uint)bVar10 * -2" identifier + (binary_expression "(uint)bVar10 * -2" (cast_expression "(uint)bVar10" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) }) while (parenthesized_expression "(bVar9)" ( identifier )) ;) (if_statement "if ((!bVar8 && !bVar9) != bVar8) {\n        uVar3 = dcgettext(0,"%P:%pS: warning: memory region `%s\' not declared\n",5);\n        FUN_00031760(uVar3,0,param_1);\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        uVar3 = dcgettext(0,"%P:%pS: warning: memory region `%s\' not declared\n",5);\n        FUN_00031760(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_00031760(uVar3,0,param_1);" (call_expression "FUN_00031760(uVar3,0,param_1)" identifier (argument_list "(uVar3,0,param_1)" ( identifier , number_literal , identifier ))) ;) })) })) (expression_statement "puVar4 = (undefined4 *)FUN_00021210(0x30);" (assignment_expression "puVar4 = (undefined4 *)FUN_00021210(0x30)" identifier = (cast_expression "(undefined4 *)FUN_00021210(0x30)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00021210(0x30)" identifier (argument_list "(0x30)" ( 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[6] = 0;" (assignment_expression "puVar4[6] = 0" (subscript_expression "puVar4[6]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar4[5] = 0xffffffff;" (assignment_expression "puVar4[5] = 0xffffffff" (subscript_expression "puVar4[5]" 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 "puVar4[10] = 0;" (assignment_expression "puVar4[10] = 0" (subscript_expression "puVar4[10]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar4[0xb] = 0;" (assignment_expression "puVar4[0xb] = 0" (subscript_expression "puVar4[0xb]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*(undefined4 **)PTR_DAT_00091350 = puVar4;" (assignment_expression "*(undefined4 **)PTR_DAT_00091350 = puVar4" (pointer_expression "*(undefined4 **)PTR_DAT_00091350" * (cast_expression "(undefined4 **)PTR_DAT_00091350" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier)) = identifier) ;) (expression_statement "PTR_DAT_00091350 = (undefined *)(puVar4 + 2);" (assignment_expression "PTR_DAT_00091350 = (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 "/* WARNING: Function: __x86.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */\n\nlang_memory_region_type * lang_memory_region_lookup(char *name,bfd_boolean create)\n\n{\n  memory_region_struct *pmVar1;\n  int iVar2;\n  char *pcVar3;\n  lang_memory_region_type *plVar4;\n  byte *pbVar5;\n  byte *pbVar6;\n  bool bVar7;\n  bool bVar8;\n  byte bVar9;\n  \n  bVar9 = 0;\n  if (name == (char *)0x0) {\n    plVar4 = (lang_memory_region_type *)0x0;\n  }\n  else {\n    bVar7 = lang_memory_region_list != (lang_memory_region_type *)0x0;\n    pmVar1 = lang_memory_region_list;\n    while (plVar4 = pmVar1, bVar7) {\n      do {\n        iVar2 = strcmp((plVar4->name_list).name,name);\n        if (iVar2 == 0) {\n          if (create == 0) {\n            return pmVar1;\n          }\n          pcVar3 = (char *)dcgettext(0,"%P:%pS: warning: redeclaration of memory region `%s\'\n",5);\n          einfo(pcVar3,0,name);\n          return pmVar1;\n        }\n        plVar4 = (lang_memory_region_type *)(plVar4->name_list).next;\n      } while (plVar4 != (lang_memory_region_type *)0x0);\n      pmVar1 = pmVar1->next;\n      bVar7 = pmVar1 != (memory_region_struct *)0x0;\n    }\n    bVar7 = false;\n    bVar8 = create == 0;\n    if (bVar8) {\n      iVar2 = 10;\n      pbVar5 = (byte *)name;\n      pbVar6 = (byte *)"*default*";\n      do {\n        if (iVar2 == 0) break;\n        iVar2 = iVar2 + -1;\n        bVar7 = *pbVar5 < *pbVar6;\n        bVar8 = *pbVar5 == *pbVar6;\n        pbVar5 = pbVar5 + (uint)bVar9 * -2 + 1;\n        pbVar6 = pbVar6 + (uint)bVar9 * -2 + 1;\n      } while (bVar8);\n      if ((!bVar7 && !bVar8) != bVar7) {\n        pcVar3 = (char *)dcgettext(0,"%P:%pS: warning: memory region `%s\' not declared\n",5);\n        einfo(pcVar3,0,name);\n      }\n    }\n    plVar4 = (lang_memory_region_type *)stat_alloc(0x30);\n    pcVar3 = (char *)xstrdup(name);\n    (plVar4->name_list).next = (memory_region_name_struct *)0x0;\n    (plVar4->name_list).name = pcVar3;\n    plVar4->next = (memory_region_struct *)0x0;\n    plVar4->origin_exp = (etree_union *)0x0;\n    plVar4->origin = 0;\n    plVar4->length_exp = (etree_union *)0x0;\n    plVar4->length = 0xffffffff;\n    plVar4->current = 0;\n    plVar4->last_os = (lang_statement_union *)0x0;\n    plVar4->flags = 0;\n    plVar4->not_flags = 0;\n    plVar4->had_full_message = 0;\n    *lang_memory_region_list_tail = plVar4;\n    lang_memory_region_list_tail = &plVar4->next;\n  }\n  return plVar4;\n}\n\n" comment (function_definition "lang_memory_region_type * lang_memory_region_lookup(char *name,bfd_boolean create)\n\n{\n  memory_region_struct *pmVar1;\n  int iVar2;\n  char *pcVar3;\n  lang_memory_region_type *plVar4;\n  byte *pbVar5;\n  byte *pbVar6;\n  bool bVar7;\n  bool bVar8;\n  byte bVar9;\n  \n  bVar9 = 0;\n  if (name == (char *)0x0) {\n    plVar4 = (lang_memory_region_type *)0x0;\n  }\n  else {\n    bVar7 = lang_memory_region_list != (lang_memory_region_type *)0x0;\n    pmVar1 = lang_memory_region_list;\n    while (plVar4 = pmVar1, bVar7) {\n      do {\n        iVar2 = strcmp((plVar4->name_list).name,name);\n        if (iVar2 == 0) {\n          if (create == 0) {\n            return pmVar1;\n          }\n          pcVar3 = (char *)dcgettext(0,"%P:%pS: warning: redeclaration of memory region `%s\'\n",5);\n          einfo(pcVar3,0,name);\n          return pmVar1;\n        }\n        plVar4 = (lang_memory_region_type *)(plVar4->name_list).next;\n      } while (plVar4 != (lang_memory_region_type *)0x0);\n      pmVar1 = pmVar1->next;\n      bVar7 = pmVar1 != (memory_region_struct *)0x0;\n    }\n    bVar7 = false;\n    bVar8 = create == 0;\n    if (bVar8) {\n      iVar2 = 10;\n      pbVar5 = (byte *)name;\n      pbVar6 = (byte *)"*default*";\n      do {\n        if (iVar2 == 0) break;\n        iVar2 = iVar2 + -1;\n        bVar7 = *pbVar5 < *pbVar6;\n        bVar8 = *pbVar5 == *pbVar6;\n        pbVar5 = pbVar5 + (uint)bVar9 * -2 + 1;\n        pbVar6 = pbVar6 + (uint)bVar9 * -2 + 1;\n      } while (bVar8);\n      if ((!bVar7 && !bVar8) != bVar7) {\n        pcVar3 = (char *)dcgettext(0,"%P:%pS: warning: memory region `%s\' not declared\n",5);\n        einfo(pcVar3,0,name);\n      }\n    }\n    plVar4 = (lang_memory_region_type *)stat_alloc(0x30);\n    pcVar3 = (char *)xstrdup(name);\n    (plVar4->name_list).next = (memory_region_name_struct *)0x0;\n    (plVar4->name_list).name = pcVar3;\n    plVar4->next = (memory_region_struct *)0x0;\n    plVar4->origin_exp = (etree_union *)0x0;\n    plVar4->origin = 0;\n    plVar4->length_exp = (etree_union *)0x0;\n    plVar4->length = 0xffffffff;\n    plVar4->current = 0;\n    plVar4->last_os = (lang_statement_union *)0x0;\n    plVar4->flags = 0;\n    plVar4->not_flags = 0;\n    plVar4->had_full_message = 0;\n    *lang_memory_region_list_tail = plVar4;\n    lang_memory_region_list_tail = &plVar4->next;\n  }\n  return plVar4;\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  memory_region_struct *pmVar1;\n  int iVar2;\n  char *pcVar3;\n  lang_memory_region_type *plVar4;\n  byte *pbVar5;\n  byte *pbVar6;\n  bool bVar7;\n  bool bVar8;\n  byte bVar9;\n  \n  bVar9 = 0;\n  if (name == (char *)0x0) {\n    plVar4 = (lang_memory_region_type *)0x0;\n  }\n  else {\n    bVar7 = lang_memory_region_list != (lang_memory_region_type *)0x0;\n    pmVar1 = lang_memory_region_list;\n    while (plVar4 = pmVar1, bVar7) {\n      do {\n        iVar2 = strcmp((plVar4->name_list).name,name);\n        if (iVar2 == 0) {\n          if (create == 0) {\n            return pmVar1;\n          }\n          pcVar3 = (char *)dcgettext(0,"%P:%pS: warning: redeclaration of memory region `%s\'\n",5);\n          einfo(pcVar3,0,name);\n          return pmVar1;\n        }\n        plVar4 = (lang_memory_region_type *)(plVar4->name_list).next;\n      } while (plVar4 != (lang_memory_region_type *)0x0);\n      pmVar1 = pmVar1->next;\n      bVar7 = pmVar1 != (memory_region_struct *)0x0;\n    }\n    bVar7 = false;\n    bVar8 = create == 0;\n    if (bVar8) {\n      iVar2 = 10;\n      pbVar5 = (byte *)name;\n      pbVar6 = (byte *)"*default*";\n      do {\n        if (iVar2 == 0) break;\n        iVar2 = iVar2 + -1;\n        bVar7 = *pbVar5 < *pbVar6;\n        bVar8 = *pbVar5 == *pbVar6;\n        pbVar5 = pbVar5 + (uint)bVar9 * -2 + 1;\n        pbVar6 = pbVar6 + (uint)bVar9 * -2 + 1;\n      } while (bVar8);\n      if ((!bVar7 && !bVar8) != bVar7) {\n        pcVar3 = (char *)dcgettext(0,"%P:%pS: warning: memory region `%s\' not declared\n",5);\n        einfo(pcVar3,0,name);\n      }\n    }\n    plVar4 = (lang_memory_region_type *)stat_alloc(0x30);\n    pcVar3 = (char *)xstrdup(name);\n    (plVar4->name_list).next = (memory_region_name_struct *)0x0;\n    (plVar4->name_list).name = pcVar3;\n    plVar4->next = (memory_region_struct *)0x0;\n    plVar4->origin_exp = (etree_union *)0x0;\n    plVar4->origin = 0;\n    plVar4->length_exp = (etree_union *)0x0;\n    plVar4->length = 0xffffffff;\n    plVar4->current = 0;\n    plVar4->last_os = (lang_statement_union *)0x0;\n    plVar4->flags = 0;\n    plVar4->not_flags = 0;\n    plVar4->had_full_message = 0;\n    *lang_memory_region_list_tail = plVar4;\n    lang_memory_region_list_tail = &plVar4->next;\n  }\n  return plVar4;\n}" { (declaration "memory_region_struct *pmVar1;" type_identifier (pointer_declarator "*pmVar1" * identifier) ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "char *pcVar3;" primitive_type (pointer_declarator "*pcVar3" * identifier) ;) (declaration "lang_memory_region_type *plVar4;" type_identifier (pointer_declarator "*plVar4" * identifier) ;) (declaration "byte *pbVar5;" type_identifier (pointer_declarator "*pbVar5" * identifier) ;) (declaration "byte *pbVar6;" type_identifier (pointer_declarator "*pbVar6" * identifier) ;) (declaration "bool bVar7;" primitive_type identifier ;) (declaration "bool bVar8;" primitive_type identifier ;) (declaration "byte bVar9;" type_identifier identifier ;) (expression_statement "bVar9 = 0;" (assignment_expression "bVar9 = 0" identifier = number_literal) ;) (if_statement "if (name == (char *)0x0) {\n    plVar4 = (lang_memory_region_type *)0x0;\n  }\n  else {\n    bVar7 = lang_memory_region_list != (lang_memory_region_type *)0x0;\n    pmVar1 = lang_memory_region_list;\n    while (plVar4 = pmVar1, bVar7) {\n      do {\n        iVar2 = strcmp((plVar4->name_list).name,name);\n        if (iVar2 == 0) {\n          if (create == 0) {\n            return pmVar1;\n          }\n          pcVar3 = (char *)dcgettext(0,"%P:%pS: warning: redeclaration of memory region `%s\'\n",5);\n          einfo(pcVar3,0,name);\n          return pmVar1;\n        }\n        plVar4 = (lang_memory_region_type *)(plVar4->name_list).next;\n      } while (plVar4 != (lang_memory_region_type *)0x0);\n      pmVar1 = pmVar1->next;\n      bVar7 = pmVar1 != (memory_region_struct *)0x0;\n    }\n    bVar7 = false;\n    bVar8 = create == 0;\n    if (bVar8) {\n      iVar2 = 10;\n      pbVar5 = (byte *)name;\n      pbVar6 = (byte *)"*default*";\n      do {\n        if (iVar2 == 0) break;\n        iVar2 = iVar2 + -1;\n        bVar7 = *pbVar5 < *pbVar6;\n        bVar8 = *pbVar5 == *pbVar6;\n        pbVar5 = pbVar5 + (uint)bVar9 * -2 + 1;\n        pbVar6 = pbVar6 + (uint)bVar9 * -2 + 1;\n      } while (bVar8);\n      if ((!bVar7 && !bVar8) != bVar7) {\n        pcVar3 = (char *)dcgettext(0,"%P:%pS: warning: memory region `%s\' not declared\n",5);\n        einfo(pcVar3,0,name);\n      }\n    }\n    plVar4 = (lang_memory_region_type *)stat_alloc(0x30);\n    pcVar3 = (char *)xstrdup(name);\n    (plVar4->name_list).next = (memory_region_name_struct *)0x0;\n    (plVar4->name_list).name = pcVar3;\n    plVar4->next = (memory_region_struct *)0x0;\n    plVar4->origin_exp = (etree_union *)0x0;\n    plVar4->origin = 0;\n    plVar4->length_exp = (etree_union *)0x0;\n    plVar4->length = 0xffffffff;\n    plVar4->current = 0;\n    plVar4->last_os = (lang_statement_union *)0x0;\n    plVar4->flags = 0;\n    plVar4->not_flags = 0;\n    plVar4->had_full_message = 0;\n    *lang_memory_region_list_tail = plVar4;\n    lang_memory_region_list_tail = &plVar4->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    plVar4 = (lang_memory_region_type *)0x0;\n  }" { (expression_statement "plVar4 = (lang_memory_region_type *)0x0;" (assignment_expression "plVar4 = (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    bVar7 = lang_memory_region_list != (lang_memory_region_type *)0x0;\n    pmVar1 = lang_memory_region_list;\n    while (plVar4 = pmVar1, bVar7) {\n      do {\n        iVar2 = strcmp((plVar4->name_list).name,name);\n        if (iVar2 == 0) {\n          if (create == 0) {\n            return pmVar1;\n          }\n          pcVar3 = (char *)dcgettext(0,"%P:%pS: warning: redeclaration of memory region `%s\'\n",5);\n          einfo(pcVar3,0,name);\n          return pmVar1;\n        }\n        plVar4 = (lang_memory_region_type *)(plVar4->name_list).next;\n      } while (plVar4 != (lang_memory_region_type *)0x0);\n      pmVar1 = pmVar1->next;\n      bVar7 = pmVar1 != (memory_region_struct *)0x0;\n    }\n    bVar7 = false;\n    bVar8 = create == 0;\n    if (bVar8) {\n      iVar2 = 10;\n      pbVar5 = (byte *)name;\n      pbVar6 = (byte *)"*default*";\n      do {\n        if (iVar2 == 0) break;\n        iVar2 = iVar2 + -1;\n        bVar7 = *pbVar5 < *pbVar6;\n        bVar8 = *pbVar5 == *pbVar6;\n        pbVar5 = pbVar5 + (uint)bVar9 * -2 + 1;\n        pbVar6 = pbVar6 + (uint)bVar9 * -2 + 1;\n      } while (bVar8);\n      if ((!bVar7 && !bVar8) != bVar7) {\n        pcVar3 = (char *)dcgettext(0,"%P:%pS: warning: memory region `%s\' not declared\n",5);\n        einfo(pcVar3,0,name);\n      }\n    }\n    plVar4 = (lang_memory_region_type *)stat_alloc(0x30);\n    pcVar3 = (char *)xstrdup(name);\n    (plVar4->name_list).next = (memory_region_name_struct *)0x0;\n    (plVar4->name_list).name = pcVar3;\n    plVar4->next = (memory_region_struct *)0x0;\n    plVar4->origin_exp = (etree_union *)0x0;\n    plVar4->origin = 0;\n    plVar4->length_exp = (etree_union *)0x0;\n    plVar4->length = 0xffffffff;\n    plVar4->current = 0;\n    plVar4->last_os = (lang_statement_union *)0x0;\n    plVar4->flags = 0;\n    plVar4->not_flags = 0;\n    plVar4->had_full_message = 0;\n    *lang_memory_region_list_tail = plVar4;\n    lang_memory_region_list_tail = &plVar4->next;\n  }" else (compound_statement "{\n    bVar7 = lang_memory_region_list != (lang_memory_region_type *)0x0;\n    pmVar1 = lang_memory_region_list;\n    while (plVar4 = pmVar1, bVar7) {\n      do {\n        iVar2 = strcmp((plVar4->name_list).name,name);\n        if (iVar2 == 0) {\n          if (create == 0) {\n            return pmVar1;\n          }\n          pcVar3 = (char *)dcgettext(0,"%P:%pS: warning: redeclaration of memory region `%s\'\n",5);\n          einfo(pcVar3,0,name);\n          return pmVar1;\n        }\n        plVar4 = (lang_memory_region_type *)(plVar4->name_list).next;\n      } while (plVar4 != (lang_memory_region_type *)0x0);\n      pmVar1 = pmVar1->next;\n      bVar7 = pmVar1 != (memory_region_struct *)0x0;\n    }\n    bVar7 = false;\n    bVar8 = create == 0;\n    if (bVar8) {\n      iVar2 = 10;\n      pbVar5 = (byte *)name;\n      pbVar6 = (byte *)"*default*";\n      do {\n        if (iVar2 == 0) break;\n        iVar2 = iVar2 + -1;\n        bVar7 = *pbVar5 < *pbVar6;\n        bVar8 = *pbVar5 == *pbVar6;\n        pbVar5 = pbVar5 + (uint)bVar9 * -2 + 1;\n        pbVar6 = pbVar6 + (uint)bVar9 * -2 + 1;\n      } while (bVar8);\n      if ((!bVar7 && !bVar8) != bVar7) {\n        pcVar3 = (char *)dcgettext(0,"%P:%pS: warning: memory region `%s\' not declared\n",5);\n        einfo(pcVar3,0,name);\n      }\n    }\n    plVar4 = (lang_memory_region_type *)stat_alloc(0x30);\n    pcVar3 = (char *)xstrdup(name);\n    (plVar4->name_list).next = (memory_region_name_struct *)0x0;\n    (plVar4->name_list).name = pcVar3;\n    plVar4->next = (memory_region_struct *)0x0;\n    plVar4->origin_exp = (etree_union *)0x0;\n    plVar4->origin = 0;\n    plVar4->length_exp = (etree_union *)0x0;\n    plVar4->length = 0xffffffff;\n    plVar4->current = 0;\n    plVar4->last_os = (lang_statement_union *)0x0;\n    plVar4->flags = 0;\n    plVar4->not_flags = 0;\n    plVar4->had_full_message = 0;\n    *lang_memory_region_list_tail = plVar4;\n    lang_memory_region_list_tail = &plVar4->next;\n  }" { (expression_statement "bVar7 = lang_memory_region_list != (lang_memory_region_type *)0x0;" (assignment_expression "bVar7 = lang_memory_region_list != (lang_memory_region_type *)0x0" identifier = (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))) ;) (expression_statement "pmVar1 = lang_memory_region_list;" (assignment_expression "pmVar1 = lang_memory_region_list" identifier = identifier) ;) (while_statement "while (plVar4 = pmVar1, bVar7) {\n      do {\n        iVar2 = strcmp((plVar4->name_list).name,name);\n        if (iVar2 == 0) {\n          if (create == 0) {\n            return pmVar1;\n          }\n          pcVar3 = (char *)dcgettext(0,"%P:%pS: warning: redeclaration of memory region `%s\'\n",5);\n          einfo(pcVar3,0,name);\n          return pmVar1;\n        }\n        plVar4 = (lang_memory_region_type *)(plVar4->name_list).next;\n      } while (plVar4 != (lang_memory_region_type *)0x0);\n      pmVar1 = pmVar1->next;\n      bVar7 = pmVar1 != (memory_region_struct *)0x0;\n    }" while (parenthesized_expression "(plVar4 = pmVar1, bVar7)" ( (comma_expression "plVar4 = pmVar1, bVar7" (assignment_expression "plVar4 = pmVar1" identifier = identifier) , identifier) )) (compound_statement "{\n      do {\n        iVar2 = strcmp((plVar4->name_list).name,name);\n        if (iVar2 == 0) {\n          if (create == 0) {\n            return pmVar1;\n          }\n          pcVar3 = (char *)dcgettext(0,"%P:%pS: warning: redeclaration of memory region `%s\'\n",5);\n          einfo(pcVar3,0,name);\n          return pmVar1;\n        }\n        plVar4 = (lang_memory_region_type *)(plVar4->name_list).next;\n      } while (plVar4 != (lang_memory_region_type *)0x0);\n      pmVar1 = pmVar1->next;\n      bVar7 = pmVar1 != (memory_region_struct *)0x0;\n    }" { (do_statement "do {\n        iVar2 = strcmp((plVar4->name_list).name,name);\n        if (iVar2 == 0) {\n          if (create == 0) {\n            return pmVar1;\n          }\n          pcVar3 = (char *)dcgettext(0,"%P:%pS: warning: redeclaration of memory region `%s\'\n",5);\n          einfo(pcVar3,0,name);\n          return pmVar1;\n        }\n        plVar4 = (lang_memory_region_type *)(plVar4->name_list).next;\n      } while (plVar4 != (lang_memory_region_type *)0x0);" do (compound_statement "{\n        iVar2 = strcmp((plVar4->name_list).name,name);\n        if (iVar2 == 0) {\n          if (create == 0) {\n            return pmVar1;\n          }\n          pcVar3 = (char *)dcgettext(0,"%P:%pS: warning: redeclaration of memory region `%s\'\n",5);\n          einfo(pcVar3,0,name);\n          return pmVar1;\n        }\n        plVar4 = (lang_memory_region_type *)(plVar4->name_list).next;\n      }" { (expression_statement "iVar2 = strcmp((plVar4->name_list).name,name);" (assignment_expression "iVar2 = strcmp((plVar4->name_list).name,name)" identifier = (call_expression "strcmp((plVar4->name_list).name,name)" identifier (argument_list "((plVar4->name_list).name,name)" ( (field_expression "(plVar4->name_list).name" (parenthesized_expression "(plVar4->name_list)" ( (field_expression "plVar4->name_list" identifier -> field_identifier) )) . field_identifier) , identifier )))) ;) (if_statement "if (iVar2 == 0) {\n          if (create == 0) {\n            return pmVar1;\n          }\n          pcVar3 = (char *)dcgettext(0,"%P:%pS: warning: redeclaration of memory region `%s\'\n",5);\n          einfo(pcVar3,0,name);\n          return pmVar1;\n        }" if (parenthesized_expression "(iVar2 == 0)" ( (binary_expression "iVar2 == 0" identifier == number_literal) )) (compound_statement "{\n          if (create == 0) {\n            return pmVar1;\n          }\n          pcVar3 = (char *)dcgettext(0,"%P:%pS: warning: redeclaration of memory region `%s\'\n",5);\n          einfo(pcVar3,0,name);\n          return pmVar1;\n        }" { (if_statement "if (create == 0) {\n            return pmVar1;\n          }" if (parenthesized_expression "(create == 0)" ( (binary_expression "create == 0" identifier == number_literal) )) (compound_statement "{\n            return pmVar1;\n          }" { (return_statement "return pmVar1;" return identifier ;) })) (expression_statement "pcVar3 = (char *)dcgettext(0,"%P:%pS: warning: redeclaration of memory region `%s\'\n",5);" (assignment_expression "pcVar3 = (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(pcVar3,0,name);" (call_expression "einfo(pcVar3,0,name)" identifier (argument_list "(pcVar3,0,name)" ( identifier , number_literal , identifier ))) ;) (return_statement "return pmVar1;" return identifier ;) })) (expression_statement "plVar4 = (lang_memory_region_type *)(plVar4->name_list).next;" (assignment_expression "plVar4 = (lang_memory_region_type *)(plVar4->name_list).next" identifier = (cast_expression "(lang_memory_region_type *)(plVar4->name_list).next" ( (type_descriptor "lang_memory_region_type *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "(plVar4->name_list).next" (parenthesized_expression "(plVar4->name_list)" ( (field_expression "plVar4->name_list" identifier -> field_identifier) )) . field_identifier))) ;) }) while (parenthesized_expression "(plVar4 != (lang_memory_region_type *)0x0)" ( (binary_expression "plVar4 != (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)) )) ;) (expression_statement "pmVar1 = pmVar1->next;" (assignment_expression "pmVar1 = pmVar1->next" identifier = (field_expression "pmVar1->next" identifier -> field_identifier)) ;) (expression_statement "bVar7 = pmVar1 != (memory_region_struct *)0x0;" (assignment_expression "bVar7 = pmVar1 != (memory_region_struct *)0x0" identifier = (binary_expression "pmVar1 != (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 "bVar7 = false;" (assignment_expression "bVar7 = false" identifier = false) ;) (expression_statement "bVar8 = create == 0;" (assignment_expression "bVar8 = create == 0" identifier = (binary_expression "create == 0" identifier == number_literal)) ;) (if_statement "if (bVar8) {\n      iVar2 = 10;\n      pbVar5 = (byte *)name;\n      pbVar6 = (byte *)"*default*";\n      do {\n        if (iVar2 == 0) break;\n        iVar2 = iVar2 + -1;\n        bVar7 = *pbVar5 < *pbVar6;\n        bVar8 = *pbVar5 == *pbVar6;\n        pbVar5 = pbVar5 + (uint)bVar9 * -2 + 1;\n        pbVar6 = pbVar6 + (uint)bVar9 * -2 + 1;\n      } while (bVar8);\n      if ((!bVar7 && !bVar8) != bVar7) {\n        pcVar3 = (char *)dcgettext(0,"%P:%pS: warning: memory region `%s\' not declared\n",5);\n        einfo(pcVar3,0,name);\n      }\n    }" if (parenthesized_expression "(bVar8)" ( identifier )) (compound_statement "{\n      iVar2 = 10;\n      pbVar5 = (byte *)name;\n      pbVar6 = (byte *)"*default*";\n      do {\n        if (iVar2 == 0) break;\n        iVar2 = iVar2 + -1;\n        bVar7 = *pbVar5 < *pbVar6;\n        bVar8 = *pbVar5 == *pbVar6;\n        pbVar5 = pbVar5 + (uint)bVar9 * -2 + 1;\n        pbVar6 = pbVar6 + (uint)bVar9 * -2 + 1;\n      } while (bVar8);\n      if ((!bVar7 && !bVar8) != bVar7) {\n        pcVar3 = (char *)dcgettext(0,"%P:%pS: warning: memory region `%s\' not declared\n",5);\n        einfo(pcVar3,0,name);\n      }\n    }" { (expression_statement "iVar2 = 10;" (assignment_expression "iVar2 = 10" identifier = number_literal) ;) (expression_statement "pbVar5 = (byte *)name;" (assignment_expression "pbVar5 = (byte *)name" identifier = (cast_expression "(byte *)name" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (expression_statement "pbVar6 = (byte *)"*default*";" (assignment_expression "pbVar6 = (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 (iVar2 == 0) break;\n        iVar2 = iVar2 + -1;\n        bVar7 = *pbVar5 < *pbVar6;\n        bVar8 = *pbVar5 == *pbVar6;\n        pbVar5 = pbVar5 + (uint)bVar9 * -2 + 1;\n        pbVar6 = pbVar6 + (uint)bVar9 * -2 + 1;\n      } while (bVar8);" do (compound_statement "{\n        if (iVar2 == 0) break;\n        iVar2 = iVar2 + -1;\n        bVar7 = *pbVar5 < *pbVar6;\n        bVar8 = *pbVar5 == *pbVar6;\n        pbVar5 = pbVar5 + (uint)bVar9 * -2 + 1;\n        pbVar6 = pbVar6 + (uint)bVar9 * -2 + 1;\n      }" { (if_statement "if (iVar2 == 0) break;" if (parenthesized_expression "(iVar2 == 0)" ( (binary_expression "iVar2 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "iVar2 = iVar2 + -1;" (assignment_expression "iVar2 = iVar2 + -1" identifier = (binary_expression "iVar2 + -1" identifier + number_literal)) ;) (expression_statement "bVar7 = *pbVar5 < *pbVar6;" (assignment_expression "bVar7 = *pbVar5 < *pbVar6" identifier = (binary_expression "*pbVar5 < *pbVar6" (pointer_expression "*pbVar5" * identifier) < (pointer_expression "*pbVar6" * identifier))) ;) (expression_statement "bVar8 = *pbVar5 == *pbVar6;" (assignment_expression "bVar8 = *pbVar5 == *pbVar6" identifier = (binary_expression "*pbVar5 == *pbVar6" (pointer_expression "*pbVar5" * identifier) == (pointer_expression "*pbVar6" * identifier))) ;) (expression_statement "pbVar5 = pbVar5 + (uint)bVar9 * -2 + 1;" (assignment_expression "pbVar5 = pbVar5 + (uint)bVar9 * -2 + 1" identifier = (binary_expression "pbVar5 + (uint)bVar9 * -2 + 1" (binary_expression "pbVar5 + (uint)bVar9 * -2" identifier + (binary_expression "(uint)bVar9 * -2" (cast_expression "(uint)bVar9" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) (expression_statement "pbVar6 = pbVar6 + (uint)bVar9 * -2 + 1;" (assignment_expression "pbVar6 = pbVar6 + (uint)bVar9 * -2 + 1" identifier = (binary_expression "pbVar6 + (uint)bVar9 * -2 + 1" (binary_expression "pbVar6 + (uint)bVar9 * -2" identifier + (binary_expression "(uint)bVar9 * -2" (cast_expression "(uint)bVar9" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) }) while (parenthesized_expression "(bVar8)" ( identifier )) ;) (if_statement "if ((!bVar7 && !bVar8) != bVar7) {\n        pcVar3 = (char *)dcgettext(0,"%P:%pS: warning: memory region `%s\' not declared\n",5);\n        einfo(pcVar3,0,name);\n      }" if (parenthesized_expression "((!bVar7 && !bVar8) != bVar7)" ( (binary_expression "(!bVar7 && !bVar8) != bVar7" (parenthesized_expression "(!bVar7 && !bVar8)" ( (binary_expression "!bVar7 && !bVar8" (unary_expression "!bVar7" ! identifier) && (unary_expression "!bVar8" ! identifier)) )) != identifier) )) (compound_statement "{\n        pcVar3 = (char *)dcgettext(0,"%P:%pS: warning: memory region `%s\' not declared\n",5);\n        einfo(pcVar3,0,name);\n      }" { (expression_statement "pcVar3 = (char *)dcgettext(0,"%P:%pS: warning: memory region `%s\' not declared\n",5);" (assignment_expression "pcVar3 = (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(pcVar3,0,name);" (call_expression "einfo(pcVar3,0,name)" identifier (argument_list "(pcVar3,0,name)" ( identifier , number_literal , identifier ))) ;) })) })) (expression_statement "plVar4 = (lang_memory_region_type *)stat_alloc(0x30);" (assignment_expression "plVar4 = (lang_memory_region_type *)stat_alloc(0x30)" identifier = (cast_expression "(lang_memory_region_type *)stat_alloc(0x30)" ( (type_descriptor "lang_memory_region_type *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "stat_alloc(0x30)" identifier (argument_list "(0x30)" ( number_literal ))))) ;) (expression_statement "pcVar3 = (char *)xstrdup(name);" (assignment_expression "pcVar3 = (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 "(plVar4->name_list).next = (memory_region_name_struct *)0x0;" (assignment_expression "(plVar4->name_list).next = (memory_region_name_struct *)0x0" (field_expression "(plVar4->name_list).next" (parenthesized_expression "(plVar4->name_list)" ( (field_expression "plVar4->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 "(plVar4->name_list).name = pcVar3;" (assignment_expression "(plVar4->name_list).name = pcVar3" (field_expression "(plVar4->name_list).name" (parenthesized_expression "(plVar4->name_list)" ( (field_expression "plVar4->name_list" identifier -> field_identifier) )) . field_identifier) = identifier) ;) (expression_statement "plVar4->next = (memory_region_struct *)0x0;" (assignment_expression "plVar4->next = (memory_region_struct *)0x0" (field_expression "plVar4->next" identifier -> field_identifier) = (cast_expression "(memory_region_struct *)0x0" ( (type_descriptor "memory_region_struct *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "plVar4->origin_exp = (etree_union *)0x0;" (assignment_expression "plVar4->origin_exp = (etree_union *)0x0" (field_expression "plVar4->origin_exp" identifier -> field_identifier) = (cast_expression "(etree_union *)0x0" ( (type_descriptor "etree_union *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "plVar4->origin = 0;" (assignment_expression "plVar4->origin = 0" (field_expression "plVar4->origin" identifier -> field_identifier) = number_literal) ;) (expression_statement "plVar4->length_exp = (etree_union *)0x0;" (assignment_expression "plVar4->length_exp = (etree_union *)0x0" (field_expression "plVar4->length_exp" identifier -> field_identifier) = (cast_expression "(etree_union *)0x0" ( (type_descriptor "etree_union *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "plVar4->length = 0xffffffff;" (assignment_expression "plVar4->length = 0xffffffff" (field_expression "plVar4->length" identifier -> field_identifier) = number_literal) ;) (expression_statement "plVar4->current = 0;" (assignment_expression "plVar4->current = 0" (field_expression "plVar4->current" identifier -> field_identifier) = number_literal) ;) (expression_statement "plVar4->last_os = (lang_statement_union *)0x0;" (assignment_expression "plVar4->last_os = (lang_statement_union *)0x0" (field_expression "plVar4->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 "plVar4->flags = 0;" (assignment_expression "plVar4->flags = 0" (field_expression "plVar4->flags" identifier -> field_identifier) = number_literal) ;) (expression_statement "plVar4->not_flags = 0;" (assignment_expression "plVar4->not_flags = 0" (field_expression "plVar4->not_flags" identifier -> field_identifier) = number_literal) ;) (expression_statement "plVar4->had_full_message = 0;" (assignment_expression "plVar4->had_full_message = 0" (field_expression "plVar4->had_full_message" identifier -> field_identifier) = number_literal) ;) (expression_statement "*lang_memory_region_list_tail = plVar4;" (assignment_expression "*lang_memory_region_list_tail = plVar4" (pointer_expression "*lang_memory_region_list_tail" * identifier) = identifier) ;) (expression_statement "lang_memory_region_list_tail = &plVar4->next;" (assignment_expression "lang_memory_region_list_tail = &plVar4->next" identifier = (pointer_expression "&plVar4->next" & (field_expression "plVar4->next" identifier -> field_identifier))) ;) }))) (return_statement "return plVar4;" return identifier ;) })))
(translation_unit "undefined4 * FUN_00021970(byte *param_1,int param_2)\n\n{\n  undefined4 *puVar1;\n  int iVar2;\n  undefined4 uVar3;\n  undefined4 *puVar4;\n  undefined4 *puVar5;\n  byte *pbVar6;\n  byte *pbVar7;\n  bool bVar8;\n  bool bVar9;\n  byte bVar10;\n  \n  bVar10 = 0;\n  if (param_1 == (byte *)0x0) {\n    puVar4 = (undefined4 *)0x0;\n  }\n  else {\n    bVar8 = DAT_000917ec != (undefined4 *)0x0;\n    puVar4 = DAT_000917ec;\n    while (puVar5 = puVar4, bVar8) {\n      do {\n        iVar2 = strcmp((char *)*puVar5,(char *)param_1);\n        if (iVar2 == 0) {\n          if (param_2 == 0) {\n            return puVar4;\n          }\n          uVar3 = dcgettext(0,"%P:%pS: warning: redeclaration of memory region `%s\'\n",5);\n          FUN_00031760(uVar3,0,param_1);\n          return puVar4;\n        }\n        puVar1 = puVar5 + 1;\n        puVar5 = (undefined4 *)*puVar1;\n      } while ((undefined4 *)*puVar1 != (undefined4 *)0x0);\n      puVar4 = (undefined4 *)puVar4[2];\n      bVar8 = puVar4 != (undefined4 *)0x0;\n    }\n    bVar8 = false;\n    bVar9 = param_2 == 0;\n    if (bVar9) {\n      iVar2 = 10;\n      pbVar6 = param_1;\n      pbVar7 = (byte *)"*default*";\n      do {\n        if (iVar2 == 0) break;\n        iVar2 = iVar2 + -1;\n        bVar8 = *pbVar6 < *pbVar7;\n        bVar9 = *pbVar6 == *pbVar7;\n        pbVar6 = pbVar6 + (uint)bVar10 * -2 + 1;\n        pbVar7 = pbVar7 + (uint)bVar10 * -2 + 1;\n      } while (bVar9);\n      if ((!bVar8 && !bVar9) != bVar8) {\n        uVar3 = dcgettext(0,"%P:%pS: warning: memory region `%s\' not declared\n",5);\n        FUN_00031760(uVar3,0,param_1);\n      }\n    }\n    puVar4 = (undefined4 *)FUN_00021210(0x30);\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[6] = 0;\n    puVar4[5] = 0xffffffff;\n    puVar4[7] = 0;\n    puVar4[8] = 0;\n    puVar4[9] = 0;\n    puVar4[10] = 0;\n    puVar4[0xb] = 0;\n    *(undefined4 **)PTR_DAT_00091350 = puVar4;\n    PTR_DAT_00091350 = (undefined *)(puVar4 + 2);\n  }\n  return puVar4;\n}\n\n" (function_definition "undefined4 * FUN_00021970(byte *param_1,int param_2)\n\n{\n  undefined4 *puVar1;\n  int iVar2;\n  undefined4 uVar3;\n  undefined4 *puVar4;\n  undefined4 *puVar5;\n  byte *pbVar6;\n  byte *pbVar7;\n  bool bVar8;\n  bool bVar9;\n  byte bVar10;\n  \n  bVar10 = 0;\n  if (param_1 == (byte *)0x0) {\n    puVar4 = (undefined4 *)0x0;\n  }\n  else {\n    bVar8 = DAT_000917ec != (undefined4 *)0x0;\n    puVar4 = DAT_000917ec;\n    while (puVar5 = puVar4, bVar8) {\n      do {\n        iVar2 = strcmp((char *)*puVar5,(char *)param_1);\n        if (iVar2 == 0) {\n          if (param_2 == 0) {\n            return puVar4;\n          }\n          uVar3 = dcgettext(0,"%P:%pS: warning: redeclaration of memory region `%s\'\n",5);\n          FUN_00031760(uVar3,0,param_1);\n          return puVar4;\n        }\n        puVar1 = puVar5 + 1;\n        puVar5 = (undefined4 *)*puVar1;\n      } while ((undefined4 *)*puVar1 != (undefined4 *)0x0);\n      puVar4 = (undefined4 *)puVar4[2];\n      bVar8 = puVar4 != (undefined4 *)0x0;\n    }\n    bVar8 = false;\n    bVar9 = param_2 == 0;\n    if (bVar9) {\n      iVar2 = 10;\n      pbVar6 = param_1;\n      pbVar7 = (byte *)"*default*";\n      do {\n        if (iVar2 == 0) break;\n        iVar2 = iVar2 + -1;\n        bVar8 = *pbVar6 < *pbVar7;\n        bVar9 = *pbVar6 == *pbVar7;\n        pbVar6 = pbVar6 + (uint)bVar10 * -2 + 1;\n        pbVar7 = pbVar7 + (uint)bVar10 * -2 + 1;\n      } while (bVar9);\n      if ((!bVar8 && !bVar9) != bVar8) {\n        uVar3 = dcgettext(0,"%P:%pS: warning: memory region `%s\' not declared\n",5);\n        FUN_00031760(uVar3,0,param_1);\n      }\n    }\n    puVar4 = (undefined4 *)FUN_00021210(0x30);\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[6] = 0;\n    puVar4[5] = 0xffffffff;\n    puVar4[7] = 0;\n    puVar4[8] = 0;\n    puVar4[9] = 0;\n    puVar4[10] = 0;\n    puVar4[0xb] = 0;\n    *(undefined4 **)PTR_DAT_00091350 = puVar4;\n    PTR_DAT_00091350 = (undefined *)(puVar4 + 2);\n  }\n  return puVar4;\n}" type_identifier (pointer_declarator "* FUN_00021970(byte *param_1,int param_2)" * (function_declarator "FUN_00021970(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  undefined4 *puVar1;\n  int iVar2;\n  undefined4 uVar3;\n  undefined4 *puVar4;\n  undefined4 *puVar5;\n  byte *pbVar6;\n  byte *pbVar7;\n  bool bVar8;\n  bool bVar9;\n  byte bVar10;\n  \n  bVar10 = 0;\n  if (param_1 == (byte *)0x0) {\n    puVar4 = (undefined4 *)0x0;\n  }\n  else {\n    bVar8 = DAT_000917ec != (undefined4 *)0x0;\n    puVar4 = DAT_000917ec;\n    while (puVar5 = puVar4, bVar8) {\n      do {\n        iVar2 = strcmp((char *)*puVar5,(char *)param_1);\n        if (iVar2 == 0) {\n          if (param_2 == 0) {\n            return puVar4;\n          }\n          uVar3 = dcgettext(0,"%P:%pS: warning: redeclaration of memory region `%s\'\n",5);\n          FUN_00031760(uVar3,0,param_1);\n          return puVar4;\n        }\n        puVar1 = puVar5 + 1;\n        puVar5 = (undefined4 *)*puVar1;\n      } while ((undefined4 *)*puVar1 != (undefined4 *)0x0);\n      puVar4 = (undefined4 *)puVar4[2];\n      bVar8 = puVar4 != (undefined4 *)0x0;\n    }\n    bVar8 = false;\n    bVar9 = param_2 == 0;\n    if (bVar9) {\n      iVar2 = 10;\n      pbVar6 = param_1;\n      pbVar7 = (byte *)"*default*";\n      do {\n        if (iVar2 == 0) break;\n        iVar2 = iVar2 + -1;\n        bVar8 = *pbVar6 < *pbVar7;\n        bVar9 = *pbVar6 == *pbVar7;\n        pbVar6 = pbVar6 + (uint)bVar10 * -2 + 1;\n        pbVar7 = pbVar7 + (uint)bVar10 * -2 + 1;\n      } while (bVar9);\n      if ((!bVar8 && !bVar9) != bVar8) {\n        uVar3 = dcgettext(0,"%P:%pS: warning: memory region `%s\' not declared\n",5);\n        FUN_00031760(uVar3,0,param_1);\n      }\n    }\n    puVar4 = (undefined4 *)FUN_00021210(0x30);\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[6] = 0;\n    puVar4[5] = 0xffffffff;\n    puVar4[7] = 0;\n    puVar4[8] = 0;\n    puVar4[9] = 0;\n    puVar4[10] = 0;\n    puVar4[0xb] = 0;\n    *(undefined4 **)PTR_DAT_00091350 = puVar4;\n    PTR_DAT_00091350 = (undefined *)(puVar4 + 2);\n  }\n  return puVar4;\n}" { (declaration "undefined4 *puVar1;" type_identifier (pointer_declarator "*puVar1" * identifier) ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "undefined4 uVar3;" type_identifier identifier ;) (declaration "undefined4 *puVar4;" type_identifier (pointer_declarator "*puVar4" * identifier) ;) (declaration "undefined4 *puVar5;" type_identifier (pointer_declarator "*puVar5" * 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 (param_1 == (byte *)0x0) {\n    puVar4 = (undefined4 *)0x0;\n  }\n  else {\n    bVar8 = DAT_000917ec != (undefined4 *)0x0;\n    puVar4 = DAT_000917ec;\n    while (puVar5 = puVar4, bVar8) {\n      do {\n        iVar2 = strcmp((char *)*puVar5,(char *)param_1);\n        if (iVar2 == 0) {\n          if (param_2 == 0) {\n            return puVar4;\n          }\n          uVar3 = dcgettext(0,"%P:%pS: warning: redeclaration of memory region `%s\'\n",5);\n          FUN_00031760(uVar3,0,param_1);\n          return puVar4;\n        }\n        puVar1 = puVar5 + 1;\n        puVar5 = (undefined4 *)*puVar1;\n      } while ((undefined4 *)*puVar1 != (undefined4 *)0x0);\n      puVar4 = (undefined4 *)puVar4[2];\n      bVar8 = puVar4 != (undefined4 *)0x0;\n    }\n    bVar8 = false;\n    bVar9 = param_2 == 0;\n    if (bVar9) {\n      iVar2 = 10;\n      pbVar6 = param_1;\n      pbVar7 = (byte *)"*default*";\n      do {\n        if (iVar2 == 0) break;\n        iVar2 = iVar2 + -1;\n        bVar8 = *pbVar6 < *pbVar7;\n        bVar9 = *pbVar6 == *pbVar7;\n        pbVar6 = pbVar6 + (uint)bVar10 * -2 + 1;\n        pbVar7 = pbVar7 + (uint)bVar10 * -2 + 1;\n      } while (bVar9);\n      if ((!bVar8 && !bVar9) != bVar8) {\n        uVar3 = dcgettext(0,"%P:%pS: warning: memory region `%s\' not declared\n",5);\n        FUN_00031760(uVar3,0,param_1);\n      }\n    }\n    puVar4 = (undefined4 *)FUN_00021210(0x30);\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[6] = 0;\n    puVar4[5] = 0xffffffff;\n    puVar4[7] = 0;\n    puVar4[8] = 0;\n    puVar4[9] = 0;\n    puVar4[10] = 0;\n    puVar4[0xb] = 0;\n    *(undefined4 **)PTR_DAT_00091350 = puVar4;\n    PTR_DAT_00091350 = (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 = (undefined4 *)0x0;\n  }" { (expression_statement "puVar4 = (undefined4 *)0x0;" (assignment_expression "puVar4 = (undefined4 *)0x0" identifier = (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) }) (else_clause "else {\n    bVar8 = DAT_000917ec != (undefined4 *)0x0;\n    puVar4 = DAT_000917ec;\n    while (puVar5 = puVar4, bVar8) {\n      do {\n        iVar2 = strcmp((char *)*puVar5,(char *)param_1);\n        if (iVar2 == 0) {\n          if (param_2 == 0) {\n            return puVar4;\n          }\n          uVar3 = dcgettext(0,"%P:%pS: warning: redeclaration of memory region `%s\'\n",5);\n          FUN_00031760(uVar3,0,param_1);\n          return puVar4;\n        }\n        puVar1 = puVar5 + 1;\n        puVar5 = (undefined4 *)*puVar1;\n      } while ((undefined4 *)*puVar1 != (undefined4 *)0x0);\n      puVar4 = (undefined4 *)puVar4[2];\n      bVar8 = puVar4 != (undefined4 *)0x0;\n    }\n    bVar8 = false;\n    bVar9 = param_2 == 0;\n    if (bVar9) {\n      iVar2 = 10;\n      pbVar6 = param_1;\n      pbVar7 = (byte *)"*default*";\n      do {\n        if (iVar2 == 0) break;\n        iVar2 = iVar2 + -1;\n        bVar8 = *pbVar6 < *pbVar7;\n        bVar9 = *pbVar6 == *pbVar7;\n        pbVar6 = pbVar6 + (uint)bVar10 * -2 + 1;\n        pbVar7 = pbVar7 + (uint)bVar10 * -2 + 1;\n      } while (bVar9);\n      if ((!bVar8 && !bVar9) != bVar8) {\n        uVar3 = dcgettext(0,"%P:%pS: warning: memory region `%s\' not declared\n",5);\n        FUN_00031760(uVar3,0,param_1);\n      }\n    }\n    puVar4 = (undefined4 *)FUN_00021210(0x30);\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[6] = 0;\n    puVar4[5] = 0xffffffff;\n    puVar4[7] = 0;\n    puVar4[8] = 0;\n    puVar4[9] = 0;\n    puVar4[10] = 0;\n    puVar4[0xb] = 0;\n    *(undefined4 **)PTR_DAT_00091350 = puVar4;\n    PTR_DAT_00091350 = (undefined *)(puVar4 + 2);\n  }" else (compound_statement "{\n    bVar8 = DAT_000917ec != (undefined4 *)0x0;\n    puVar4 = DAT_000917ec;\n    while (puVar5 = puVar4, bVar8) {\n      do {\n        iVar2 = strcmp((char *)*puVar5,(char *)param_1);\n        if (iVar2 == 0) {\n          if (param_2 == 0) {\n            return puVar4;\n          }\n          uVar3 = dcgettext(0,"%P:%pS: warning: redeclaration of memory region `%s\'\n",5);\n          FUN_00031760(uVar3,0,param_1);\n          return puVar4;\n        }\n        puVar1 = puVar5 + 1;\n        puVar5 = (undefined4 *)*puVar1;\n      } while ((undefined4 *)*puVar1 != (undefined4 *)0x0);\n      puVar4 = (undefined4 *)puVar4[2];\n      bVar8 = puVar4 != (undefined4 *)0x0;\n    }\n    bVar8 = false;\n    bVar9 = param_2 == 0;\n    if (bVar9) {\n      iVar2 = 10;\n      pbVar6 = param_1;\n      pbVar7 = (byte *)"*default*";\n      do {\n        if (iVar2 == 0) break;\n        iVar2 = iVar2 + -1;\n        bVar8 = *pbVar6 < *pbVar7;\n        bVar9 = *pbVar6 == *pbVar7;\n        pbVar6 = pbVar6 + (uint)bVar10 * -2 + 1;\n        pbVar7 = pbVar7 + (uint)bVar10 * -2 + 1;\n      } while (bVar9);\n      if ((!bVar8 && !bVar9) != bVar8) {\n        uVar3 = dcgettext(0,"%P:%pS: warning: memory region `%s\' not declared\n",5);\n        FUN_00031760(uVar3,0,param_1);\n      }\n    }\n    puVar4 = (undefined4 *)FUN_00021210(0x30);\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[6] = 0;\n    puVar4[5] = 0xffffffff;\n    puVar4[7] = 0;\n    puVar4[8] = 0;\n    puVar4[9] = 0;\n    puVar4[10] = 0;\n    puVar4[0xb] = 0;\n    *(undefined4 **)PTR_DAT_00091350 = puVar4;\n    PTR_DAT_00091350 = (undefined *)(puVar4 + 2);\n  }" { (expression_statement "bVar8 = DAT_000917ec != (undefined4 *)0x0;" (assignment_expression "bVar8 = DAT_000917ec != (undefined4 *)0x0" identifier = (binary_expression "DAT_000917ec != (undefined4 *)0x0" identifier != (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal))) ;) (expression_statement "puVar4 = DAT_000917ec;" (assignment_expression "puVar4 = DAT_000917ec" identifier = identifier) ;) (while_statement "while (puVar5 = puVar4, bVar8) {\n      do {\n        iVar2 = strcmp((char *)*puVar5,(char *)param_1);\n        if (iVar2 == 0) {\n          if (param_2 == 0) {\n            return puVar4;\n          }\n          uVar3 = dcgettext(0,"%P:%pS: warning: redeclaration of memory region `%s\'\n",5);\n          FUN_00031760(uVar3,0,param_1);\n          return puVar4;\n        }\n        puVar1 = puVar5 + 1;\n        puVar5 = (undefined4 *)*puVar1;\n      } while ((undefined4 *)*puVar1 != (undefined4 *)0x0);\n      puVar4 = (undefined4 *)puVar4[2];\n      bVar8 = puVar4 != (undefined4 *)0x0;\n    }" while (parenthesized_expression "(puVar5 = puVar4, bVar8)" ( (comma_expression "puVar5 = puVar4, bVar8" (assignment_expression "puVar5 = puVar4" identifier = identifier) , identifier) )) (compound_statement "{\n      do {\n        iVar2 = strcmp((char *)*puVar5,(char *)param_1);\n        if (iVar2 == 0) {\n          if (param_2 == 0) {\n            return puVar4;\n          }\n          uVar3 = dcgettext(0,"%P:%pS: warning: redeclaration of memory region `%s\'\n",5);\n          FUN_00031760(uVar3,0,param_1);\n          return puVar4;\n        }\n        puVar1 = puVar5 + 1;\n        puVar5 = (undefined4 *)*puVar1;\n      } while ((undefined4 *)*puVar1 != (undefined4 *)0x0);\n      puVar4 = (undefined4 *)puVar4[2];\n      bVar8 = puVar4 != (undefined4 *)0x0;\n    }" { (do_statement "do {\n        iVar2 = strcmp((char *)*puVar5,(char *)param_1);\n        if (iVar2 == 0) {\n          if (param_2 == 0) {\n            return puVar4;\n          }\n          uVar3 = dcgettext(0,"%P:%pS: warning: redeclaration of memory region `%s\'\n",5);\n          FUN_00031760(uVar3,0,param_1);\n          return puVar4;\n        }\n        puVar1 = puVar5 + 1;\n        puVar5 = (undefined4 *)*puVar1;\n      } while ((undefined4 *)*puVar1 != (undefined4 *)0x0);" do (compound_statement "{\n        iVar2 = strcmp((char *)*puVar5,(char *)param_1);\n        if (iVar2 == 0) {\n          if (param_2 == 0) {\n            return puVar4;\n          }\n          uVar3 = dcgettext(0,"%P:%pS: warning: redeclaration of memory region `%s\'\n",5);\n          FUN_00031760(uVar3,0,param_1);\n          return puVar4;\n        }\n        puVar1 = puVar5 + 1;\n        puVar5 = (undefined4 *)*puVar1;\n      }" { (expression_statement "iVar2 = strcmp((char *)*puVar5,(char *)param_1);" (assignment_expression "iVar2 = strcmp((char *)*puVar5,(char *)param_1)" identifier = (call_expression "strcmp((char *)*puVar5,(char *)param_1)" identifier (argument_list "((char *)*puVar5,(char *)param_1)" ( (cast_expression "(char *)*puVar5" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar5" * 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 puVar4;\n          }\n          uVar3 = dcgettext(0,"%P:%pS: warning: redeclaration of memory region `%s\'\n",5);\n          FUN_00031760(uVar3,0,param_1);\n          return puVar4;\n        }" if (parenthesized_expression "(iVar2 == 0)" ( (binary_expression "iVar2 == 0" identifier == number_literal) )) (compound_statement "{\n          if (param_2 == 0) {\n            return puVar4;\n          }\n          uVar3 = dcgettext(0,"%P:%pS: warning: redeclaration of memory region `%s\'\n",5);\n          FUN_00031760(uVar3,0,param_1);\n          return puVar4;\n        }" { (if_statement "if (param_2 == 0) {\n            return puVar4;\n          }" if (parenthesized_expression "(param_2 == 0)" ( (binary_expression "param_2 == 0" identifier == number_literal) )) (compound_statement "{\n            return puVar4;\n          }" { (return_statement "return puVar4;" 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_00031760(uVar3,0,param_1);" (call_expression "FUN_00031760(uVar3,0,param_1)" identifier (argument_list "(uVar3,0,param_1)" ( identifier , number_literal , identifier ))) ;) (return_statement "return puVar4;" return identifier ;) })) (expression_statement "puVar1 = puVar5 + 1;" (assignment_expression "puVar1 = puVar5 + 1" identifier = (binary_expression "puVar5 + 1" identifier + number_literal)) ;) (expression_statement "puVar5 = (undefined4 *)*puVar1;" (assignment_expression "puVar5 = (undefined4 *)*puVar1" identifier = (cast_expression "(undefined4 *)*puVar1" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar1" * identifier))) ;) }) while (parenthesized_expression "((undefined4 *)*puVar1 != (undefined4 *)0x0)" ( (binary_expression "(undefined4 *)*puVar1 != (undefined4 *)0x0" (cast_expression "(undefined4 *)*puVar1" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar1" * identifier)) != (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) ;) (expression_statement "puVar4 = (undefined4 *)puVar4[2];" (assignment_expression "puVar4 = (undefined4 *)puVar4[2]" identifier = (cast_expression "(undefined4 *)puVar4[2]" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar4[2]" identifier [ number_literal ]))) ;) (expression_statement "bVar8 = puVar4 != (undefined4 *)0x0;" (assignment_expression "bVar8 = puVar4 != (undefined4 *)0x0" identifier = (binary_expression "puVar4 != (undefined4 *)0x0" identifier != (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal))) ;) })) (expression_statement "bVar8 = false;" (assignment_expression "bVar8 = false" identifier = false) ;) (expression_statement "bVar9 = param_2 == 0;" (assignment_expression "bVar9 = param_2 == 0" identifier = (binary_expression "param_2 == 0" identifier == number_literal)) ;) (if_statement "if (bVar9) {\n      iVar2 = 10;\n      pbVar6 = param_1;\n      pbVar7 = (byte *)"*default*";\n      do {\n        if (iVar2 == 0) break;\n        iVar2 = iVar2 + -1;\n        bVar8 = *pbVar6 < *pbVar7;\n        bVar9 = *pbVar6 == *pbVar7;\n        pbVar6 = pbVar6 + (uint)bVar10 * -2 + 1;\n        pbVar7 = pbVar7 + (uint)bVar10 * -2 + 1;\n      } while (bVar9);\n      if ((!bVar8 && !bVar9) != bVar8) {\n        uVar3 = dcgettext(0,"%P:%pS: warning: memory region `%s\' not declared\n",5);\n        FUN_00031760(uVar3,0,param_1);\n      }\n    }" if (parenthesized_expression "(bVar9)" ( identifier )) (compound_statement "{\n      iVar2 = 10;\n      pbVar6 = param_1;\n      pbVar7 = (byte *)"*default*";\n      do {\n        if (iVar2 == 0) break;\n        iVar2 = iVar2 + -1;\n        bVar8 = *pbVar6 < *pbVar7;\n        bVar9 = *pbVar6 == *pbVar7;\n        pbVar6 = pbVar6 + (uint)bVar10 * -2 + 1;\n        pbVar7 = pbVar7 + (uint)bVar10 * -2 + 1;\n      } while (bVar9);\n      if ((!bVar8 && !bVar9) != bVar8) {\n        uVar3 = dcgettext(0,"%P:%pS: warning: memory region `%s\' not declared\n",5);\n        FUN_00031760(uVar3,0,param_1);\n      }\n    }" { (expression_statement "iVar2 = 10;" (assignment_expression "iVar2 = 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 (iVar2 == 0) break;\n        iVar2 = iVar2 + -1;\n        bVar8 = *pbVar6 < *pbVar7;\n        bVar9 = *pbVar6 == *pbVar7;\n        pbVar6 = pbVar6 + (uint)bVar10 * -2 + 1;\n        pbVar7 = pbVar7 + (uint)bVar10 * -2 + 1;\n      } while (bVar9);" do (compound_statement "{\n        if (iVar2 == 0) break;\n        iVar2 = iVar2 + -1;\n        bVar8 = *pbVar6 < *pbVar7;\n        bVar9 = *pbVar6 == *pbVar7;\n        pbVar6 = pbVar6 + (uint)bVar10 * -2 + 1;\n        pbVar7 = pbVar7 + (uint)bVar10 * -2 + 1;\n      }" { (if_statement "if (iVar2 == 0) break;" if (parenthesized_expression "(iVar2 == 0)" ( (binary_expression "iVar2 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "iVar2 = iVar2 + -1;" (assignment_expression "iVar2 = iVar2 + -1" identifier = (binary_expression "iVar2 + -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 + (uint)bVar10 * -2 + 1;" (assignment_expression "pbVar6 = pbVar6 + (uint)bVar10 * -2 + 1" identifier = (binary_expression "pbVar6 + (uint)bVar10 * -2 + 1" (binary_expression "pbVar6 + (uint)bVar10 * -2" identifier + (binary_expression "(uint)bVar10 * -2" (cast_expression "(uint)bVar10" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) (expression_statement "pbVar7 = pbVar7 + (uint)bVar10 * -2 + 1;" (assignment_expression "pbVar7 = pbVar7 + (uint)bVar10 * -2 + 1" identifier = (binary_expression "pbVar7 + (uint)bVar10 * -2 + 1" (binary_expression "pbVar7 + (uint)bVar10 * -2" identifier + (binary_expression "(uint)bVar10 * -2" (cast_expression "(uint)bVar10" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) }) while (parenthesized_expression "(bVar9)" ( identifier )) ;) (if_statement "if ((!bVar8 && !bVar9) != bVar8) {\n        uVar3 = dcgettext(0,"%P:%pS: warning: memory region `%s\' not declared\n",5);\n        FUN_00031760(uVar3,0,param_1);\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        uVar3 = dcgettext(0,"%P:%pS: warning: memory region `%s\' not declared\n",5);\n        FUN_00031760(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_00031760(uVar3,0,param_1);" (call_expression "FUN_00031760(uVar3,0,param_1)" identifier (argument_list "(uVar3,0,param_1)" ( identifier , number_literal , identifier ))) ;) })) })) (expression_statement "puVar4 = (undefined4 *)FUN_00021210(0x30);" (assignment_expression "puVar4 = (undefined4 *)FUN_00021210(0x30)" identifier = (cast_expression "(undefined4 *)FUN_00021210(0x30)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00021210(0x30)" identifier (argument_list "(0x30)" ( 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[6] = 0;" (assignment_expression "puVar4[6] = 0" (subscript_expression "puVar4[6]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar4[5] = 0xffffffff;" (assignment_expression "puVar4[5] = 0xffffffff" (subscript_expression "puVar4[5]" 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 "puVar4[10] = 0;" (assignment_expression "puVar4[10] = 0" (subscript_expression "puVar4[10]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar4[0xb] = 0;" (assignment_expression "puVar4[0xb] = 0" (subscript_expression "puVar4[0xb]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*(undefined4 **)PTR_DAT_00091350 = puVar4;" (assignment_expression "*(undefined4 **)PTR_DAT_00091350 = puVar4" (pointer_expression "*(undefined4 **)PTR_DAT_00091350" * (cast_expression "(undefined4 **)PTR_DAT_00091350" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier)) = identifier) ;) (expression_statement "PTR_DAT_00091350 = (undefined *)(puVar4 + 2);" (assignment_expression "PTR_DAT_00091350 = (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 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 = (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (while_statement while (parenthesized_expression ( (comma_expression (assignment_expression IDENT = IDENT) , IDENT) )) (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 (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT)) != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) (expression_statement (assignment_expression 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 (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 * (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 "undefined4 * FUN_00021970(byte *param_1,int param_2)\n\n{\n  undefined4 *puVar1;\n  int iVar2;\n  undefined4 uVar3;\n  undefined4 *puVar4;\n  undefined4 *puVar5;\n  byte *pbVar6;\n  byte *pbVar7;\n  bool bVar8;\n  bool bVar9;\n  byte bVar10;\n  \n  bVar10 = 0;\n  if (param_1 == (byte *)0x0) {\n    puVar4 = (undefined4 *)0x0;\n  }\n  else {\n    bVar8 = DAT_000917ec != (undefined4 *)0x0;\n    puVar4 = DAT_000917ec;\n    while (puVar5 = puVar4, bVar8) {\n      do {\n        iVar2 = strcmp((char *)*puVar5,(char *)param_1);\n        if (iVar2 == 0) {\n          if (param_2 == 0) {\n            return puVar4;\n          }\n          uVar3 = dcgettext(0,"%P:%pS: warning: redeclaration of memory region `%s\'\n",5);\n          FUN_00031760(uVar3,0,param_1);\n          return puVar4;\n        }\n        puVar1 = puVar5 + 1;\n        puVar5 = (undefined4 *)*puVar1;\n      } while ((undefined4 *)*puVar1 != (undefined4 *)0x0);\n      puVar4 = (undefined4 *)puVar4[2];\n      bVar8 = puVar4 != (undefined4 *)0x0;\n    }\n    bVar8 = false;\n    bVar9 = param_2 == 0;\n    if (bVar9) {\n      iVar2 = 10;\n      pbVar6 = param_1;\n      pbVar7 = (byte *)"*default*";\n      do {\n        if (iVar2 == 0) break;\n        iVar2 = iVar2 + -1;\n        bVar8 = *pbVar6 < *pbVar7;\n        bVar9 = *pbVar6 == *pbVar7;\n        pbVar6 = pbVar6 + (uint)bVar10 * -2 + 1;\n        pbVar7 = pbVar7 + (uint)bVar10 * -2 + 1;\n      } while (bVar9);\n      if ((!bVar8 && !bVar9) != bVar8) {\n        uVar3 = dcgettext(0,"%P:%pS: warning: memory region `%s\' not declared\n",5);\n        FUN_00031760(uVar3,0,param_1);\n      }\n    }\n    puVar4 = (undefined4 *)FUN_00021210(0x30);\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[6] = 0;\n    puVar4[5] = 0xffffffff;\n    puVar4[7] = 0;\n    puVar4[8] = 0;\n    puVar4[9] = 0;\n    puVar4[10] = 0;\n    puVar4[0xb] = 0;\n    *(undefined4 **)PTR_DAT_00091350 = puVar4;\n    PTR_DAT_00091350 = (undefined *)(puVar4 + 2);\n  }\n  return puVar4;\n}" (type_identifier "undefined4") (pointer_declarator "* FUN_00021970(byte *param_1,int param_2)" (* "*") (function_declarator "FUN_00021970(byte *param_1,int param_2)" (identifier "FUN_00021970") (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  undefined4 *puVar1;\n  int iVar2;\n  undefined4 uVar3;\n  undefined4 *puVar4;\n  undefined4 *puVar5;\n  byte *pbVar6;\n  byte *pbVar7;\n  bool bVar8;\n  bool bVar9;\n  byte bVar10;\n  \n  bVar10 = 0;\n  if (param_1 == (byte *)0x0) {\n    puVar4 = (undefined4 *)0x0;\n  }\n  else {\n    bVar8 = DAT_000917ec != (undefined4 *)0x0;\n    puVar4 = DAT_000917ec;\n    while (puVar5 = puVar4, bVar8) {\n      do {\n        iVar2 = strcmp((char *)*puVar5,(char *)param_1);\n        if (iVar2 == 0) {\n          if (param_2 == 0) {\n            return puVar4;\n          }\n          uVar3 = dcgettext(0,"%P:%pS: warning: redeclaration of memory region `%s\'\n",5);\n          FUN_00031760(uVar3,0,param_1);\n          return puVar4;\n        }\n        puVar1 = puVar5 + 1;\n        puVar5 = (undefined4 *)*puVar1;\n      } while ((undefined4 *)*puVar1 != (undefined4 *)0x0);\n      puVar4 = (undefined4 *)puVar4[2];\n      bVar8 = puVar4 != (undefined4 *)0x0;\n    }\n    bVar8 = false;\n    bVar9 = param_2 == 0;\n    if (bVar9) {\n      iVar2 = 10;\n      pbVar6 = param_1;\n      pbVar7 = (byte *)"*default*";\n      do {\n        if (iVar2 == 0) break;\n        iVar2 = iVar2 + -1;\n        bVar8 = *pbVar6 < *pbVar7;\n        bVar9 = *pbVar6 == *pbVar7;\n        pbVar6 = pbVar6 + (uint)bVar10 * -2 + 1;\n        pbVar7 = pbVar7 + (uint)bVar10 * -2 + 1;\n      } while (bVar9);\n      if ((!bVar8 && !bVar9) != bVar8) {\n        uVar3 = dcgettext(0,"%P:%pS: warning: memory region `%s\' not declared\n",5);\n        FUN_00031760(uVar3,0,param_1);\n      }\n    }\n    puVar4 = (undefined4 *)FUN_00021210(0x30);\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[6] = 0;\n    puVar4[5] = 0xffffffff;\n    puVar4[7] = 0;\n    puVar4[8] = 0;\n    puVar4[9] = 0;\n    puVar4[10] = 0;\n    puVar4[0xb] = 0;\n    *(undefined4 **)PTR_DAT_00091350 = puVar4;\n    PTR_DAT_00091350 = (undefined *)(puVar4 + 2);\n  }\n  return puVar4;\n}" ({ "{") (declaration "undefined4 *puVar1;" (type_identifier "undefined4") (pointer_declarator "*puVar1" (* "*") (identifier "puVar1")) (; ";")) (declaration "int iVar2;" (primitive_type "int") (identifier "iVar2") (; ";")) (declaration "undefined4 uVar3;" (type_identifier "undefined4") (identifier "uVar3") (; ";")) (declaration "undefined4 *puVar4;" (type_identifier "undefined4") (pointer_declarator "*puVar4" (* "*") (identifier "puVar4")) (; ";")) (declaration "undefined4 *puVar5;" (type_identifier "undefined4") (pointer_declarator "*puVar5" (* "*") (identifier "puVar5")) (; ";")) (declaration "byte *pbVar6;" (type_identifier "byte") (pointer_declarator "*pbVar6" (* "*") (identifier "pbVar6")) (; ";")) (declaration "byte *pbVar7;" (type_identifier "byte") (pointer_declarator "*pbVar7" (* "*") (identifier "pbVar7")) (; ";")) (declaration "bool bVar8;" (primitive_type "bool") (identifier "bVar8") (; ";")) (declaration "bool bVar9;" (primitive_type "bool") (identifier "bVar9") (; ";")) (declaration "byte bVar10;" (type_identifier "byte") (identifier "bVar10") (; ";")) (expression_statement "bVar10 = 0;" (assignment_expression "bVar10 = 0" (identifier "bVar10") (= "=") (number_literal "0")) (; ";")) (if_statement "if (param_1 == (byte *)0x0) {\n    puVar4 = (undefined4 *)0x0;\n  }\n  else {\n    bVar8 = DAT_000917ec != (undefined4 *)0x0;\n    puVar4 = DAT_000917ec;\n    while (puVar5 = puVar4, bVar8) {\n      do {\n        iVar2 = strcmp((char *)*puVar5,(char *)param_1);\n        if (iVar2 == 0) {\n          if (param_2 == 0) {\n            return puVar4;\n          }\n          uVar3 = dcgettext(0,"%P:%pS: warning: redeclaration of memory region `%s\'\n",5);\n          FUN_00031760(uVar3,0,param_1);\n          return puVar4;\n        }\n        puVar1 = puVar5 + 1;\n        puVar5 = (undefined4 *)*puVar1;\n      } while ((undefined4 *)*puVar1 != (undefined4 *)0x0);\n      puVar4 = (undefined4 *)puVar4[2];\n      bVar8 = puVar4 != (undefined4 *)0x0;\n    }\n    bVar8 = false;\n    bVar9 = param_2 == 0;\n    if (bVar9) {\n      iVar2 = 10;\n      pbVar6 = param_1;\n      pbVar7 = (byte *)"*default*";\n      do {\n        if (iVar2 == 0) break;\n        iVar2 = iVar2 + -1;\n        bVar8 = *pbVar6 < *pbVar7;\n        bVar9 = *pbVar6 == *pbVar7;\n        pbVar6 = pbVar6 + (uint)bVar10 * -2 + 1;\n        pbVar7 = pbVar7 + (uint)bVar10 * -2 + 1;\n      } while (bVar9);\n      if ((!bVar8 && !bVar9) != bVar8) {\n        uVar3 = dcgettext(0,"%P:%pS: warning: memory region `%s\' not declared\n",5);\n        FUN_00031760(uVar3,0,param_1);\n      }\n    }\n    puVar4 = (undefined4 *)FUN_00021210(0x30);\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[6] = 0;\n    puVar4[5] = 0xffffffff;\n    puVar4[7] = 0;\n    puVar4[8] = 0;\n    puVar4[9] = 0;\n    puVar4[10] = 0;\n    puVar4[0xb] = 0;\n    *(undefined4 **)PTR_DAT_00091350 = puVar4;\n    PTR_DAT_00091350 = (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 = (undefined4 *)0x0;\n  }" ({ "{") (expression_statement "puVar4 = (undefined4 *)0x0;" (assignment_expression "puVar4 = (undefined4 *)0x0" (identifier "puVar4") (= "=") (cast_expression "(undefined4 *)0x0" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";")) (} "}")) (else_clause "else {\n    bVar8 = DAT_000917ec != (undefined4 *)0x0;\n    puVar4 = DAT_000917ec;\n    while (puVar5 = puVar4, bVar8) {\n      do {\n        iVar2 = strcmp((char *)*puVar5,(char *)param_1);\n        if (iVar2 == 0) {\n          if (param_2 == 0) {\n            return puVar4;\n          }\n          uVar3 = dcgettext(0,"%P:%pS: warning: redeclaration of memory region `%s\'\n",5);\n          FUN_00031760(uVar3,0,param_1);\n          return puVar4;\n        }\n        puVar1 = puVar5 + 1;\n        puVar5 = (undefined4 *)*puVar1;\n      } while ((undefined4 *)*puVar1 != (undefined4 *)0x0);\n      puVar4 = (undefined4 *)puVar4[2];\n      bVar8 = puVar4 != (undefined4 *)0x0;\n    }\n    bVar8 = false;\n    bVar9 = param_2 == 0;\n    if (bVar9) {\n      iVar2 = 10;\n      pbVar6 = param_1;\n      pbVar7 = (byte *)"*default*";\n      do {\n        if (iVar2 == 0) break;\n        iVar2 = iVar2 + -1;\n        bVar8 = *pbVar6 < *pbVar7;\n        bVar9 = *pbVar6 == *pbVar7;\n        pbVar6 = pbVar6 + (uint)bVar10 * -2 + 1;\n        pbVar7 = pbVar7 + (uint)bVar10 * -2 + 1;\n      } while (bVar9);\n      if ((!bVar8 && !bVar9) != bVar8) {\n        uVar3 = dcgettext(0,"%P:%pS: warning: memory region `%s\' not declared\n",5);\n        FUN_00031760(uVar3,0,param_1);\n      }\n    }\n    puVar4 = (undefined4 *)FUN_00021210(0x30);\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[6] = 0;\n    puVar4[5] = 0xffffffff;\n    puVar4[7] = 0;\n    puVar4[8] = 0;\n    puVar4[9] = 0;\n    puVar4[10] = 0;\n    puVar4[0xb] = 0;\n    *(undefined4 **)PTR_DAT_00091350 = puVar4;\n    PTR_DAT_00091350 = (undefined *)(puVar4 + 2);\n  }" (else "else") (compound_statement "{\n    bVar8 = DAT_000917ec != (undefined4 *)0x0;\n    puVar4 = DAT_000917ec;\n    while (puVar5 = puVar4, bVar8) {\n      do {\n        iVar2 = strcmp((char *)*puVar5,(char *)param_1);\n        if (iVar2 == 0) {\n          if (param_2 == 0) {\n            return puVar4;\n          }\n          uVar3 = dcgettext(0,"%P:%pS: warning: redeclaration of memory region `%s\'\n",5);\n          FUN_00031760(uVar3,0,param_1);\n          return puVar4;\n        }\n        puVar1 = puVar5 + 1;\n        puVar5 = (undefined4 *)*puVar1;\n      } while ((undefined4 *)*puVar1 != (undefined4 *)0x0);\n      puVar4 = (undefined4 *)puVar4[2];\n      bVar8 = puVar4 != (undefined4 *)0x0;\n    }\n    bVar8 = false;\n    bVar9 = param_2 == 0;\n    if (bVar9) {\n      iVar2 = 10;\n      pbVar6 = param_1;\n      pbVar7 = (byte *)"*default*";\n      do {\n        if (iVar2 == 0) break;\n        iVar2 = iVar2 + -1;\n        bVar8 = *pbVar6 < *pbVar7;\n        bVar9 = *pbVar6 == *pbVar7;\n        pbVar6 = pbVar6 + (uint)bVar10 * -2 + 1;\n        pbVar7 = pbVar7 + (uint)bVar10 * -2 + 1;\n      } while (bVar9);\n      if ((!bVar8 && !bVar9) != bVar8) {\n        uVar3 = dcgettext(0,"%P:%pS: warning: memory region `%s\' not declared\n",5);\n        FUN_00031760(uVar3,0,param_1);\n      }\n    }\n    puVar4 = (undefined4 *)FUN_00021210(0x30);\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[6] = 0;\n    puVar4[5] = 0xffffffff;\n    puVar4[7] = 0;\n    puVar4[8] = 0;\n    puVar4[9] = 0;\n    puVar4[10] = 0;\n    puVar4[0xb] = 0;\n    *(undefined4 **)PTR_DAT_00091350 = puVar4;\n    PTR_DAT_00091350 = (undefined *)(puVar4 + 2);\n  }" ({ "{") (expression_statement "bVar8 = DAT_000917ec != (undefined4 *)0x0;" (assignment_expression "bVar8 = DAT_000917ec != (undefined4 *)0x0" (identifier "bVar8") (= "=") (binary_expression "DAT_000917ec != (undefined4 *)0x0" (identifier "DAT_000917ec") (!= "!=") (cast_expression "(undefined4 *)0x0" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0")))) (; ";")) (expression_statement "puVar4 = DAT_000917ec;" (assignment_expression "puVar4 = DAT_000917ec" (identifier "puVar4") (= "=") (identifier "DAT_000917ec")) (; ";")) (while_statement "while (puVar5 = puVar4, bVar8) {\n      do {\n        iVar2 = strcmp((char *)*puVar5,(char *)param_1);\n        if (iVar2 == 0) {\n          if (param_2 == 0) {\n            return puVar4;\n          }\n          uVar3 = dcgettext(0,"%P:%pS: warning: redeclaration of memory region `%s\'\n",5);\n          FUN_00031760(uVar3,0,param_1);\n          return puVar4;\n        }\n        puVar1 = puVar5 + 1;\n        puVar5 = (undefined4 *)*puVar1;\n      } while ((undefined4 *)*puVar1 != (undefined4 *)0x0);\n      puVar4 = (undefined4 *)puVar4[2];\n      bVar8 = puVar4 != (undefined4 *)0x0;\n    }" (while "while") (parenthesized_expression "(puVar5 = puVar4, bVar8)" (( "(") (comma_expression "puVar5 = puVar4, bVar8" (assignment_expression "puVar5 = puVar4" (identifier "puVar5") (= "=") (identifier "puVar4")) (, ",") (identifier "bVar8")) () ")")) (compound_statement "{\n      do {\n        iVar2 = strcmp((char *)*puVar5,(char *)param_1);\n        if (iVar2 == 0) {\n          if (param_2 == 0) {\n            return puVar4;\n          }\n          uVar3 = dcgettext(0,"%P:%pS: warning: redeclaration of memory region `%s\'\n",5);\n          FUN_00031760(uVar3,0,param_1);\n          return puVar4;\n        }\n        puVar1 = puVar5 + 1;\n        puVar5 = (undefined4 *)*puVar1;\n      } while ((undefined4 *)*puVar1 != (undefined4 *)0x0);\n      puVar4 = (undefined4 *)puVar4[2];\n      bVar8 = puVar4 != (undefined4 *)0x0;\n    }" ({ "{") (do_statement "do {\n        iVar2 = strcmp((char *)*puVar5,(char *)param_1);\n        if (iVar2 == 0) {\n          if (param_2 == 0) {\n            return puVar4;\n          }\n          uVar3 = dcgettext(0,"%P:%pS: warning: redeclaration of memory region `%s\'\n",5);\n          FUN_00031760(uVar3,0,param_1);\n          return puVar4;\n        }\n        puVar1 = puVar5 + 1;\n        puVar5 = (undefined4 *)*puVar1;\n      } while ((undefined4 *)*puVar1 != (undefined4 *)0x0);" (do "do") (compound_statement "{\n        iVar2 = strcmp((char *)*puVar5,(char *)param_1);\n        if (iVar2 == 0) {\n          if (param_2 == 0) {\n            return puVar4;\n          }\n          uVar3 = dcgettext(0,"%P:%pS: warning: redeclaration of memory region `%s\'\n",5);\n          FUN_00031760(uVar3,0,param_1);\n          return puVar4;\n        }\n        puVar1 = puVar5 + 1;\n        puVar5 = (undefined4 *)*puVar1;\n      }" ({ "{") (expression_statement "iVar2 = strcmp((char *)*puVar5,(char *)param_1);" (assignment_expression "iVar2 = strcmp((char *)*puVar5,(char *)param_1)" (identifier "iVar2") (= "=") (call_expression "strcmp((char *)*puVar5,(char *)param_1)" (identifier "strcmp") (argument_list "((char *)*puVar5,(char *)param_1)" (( "(") (cast_expression "(char *)*puVar5" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*puVar5" (* "*") (identifier "puVar5"))) (, ",") (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 puVar4;\n          }\n          uVar3 = dcgettext(0,"%P:%pS: warning: redeclaration of memory region `%s\'\n",5);\n          FUN_00031760(uVar3,0,param_1);\n          return puVar4;\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 puVar4;\n          }\n          uVar3 = dcgettext(0,"%P:%pS: warning: redeclaration of memory region `%s\'\n",5);\n          FUN_00031760(uVar3,0,param_1);\n          return puVar4;\n        }" ({ "{") (if_statement "if (param_2 == 0) {\n            return puVar4;\n          }" (if "if") (parenthesized_expression "(param_2 == 0)" (( "(") (binary_expression "param_2 == 0" (identifier "param_2") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n            return puVar4;\n          }" ({ "{") (return_statement "return puVar4;" (return "return") (identifier "puVar4") (; ";")) (} "}"))) (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_00031760(uVar3,0,param_1);" (call_expression "FUN_00031760(uVar3,0,param_1)" (identifier "FUN_00031760") (argument_list "(uVar3,0,param_1)" (( "(") (identifier "uVar3") (, ",") (number_literal "0") (, ",") (identifier "param_1") () ")"))) (; ";")) (return_statement "return puVar4;" (return "return") (identifier "puVar4") (; ";")) (} "}"))) (expression_statement "puVar1 = puVar5 + 1;" (assignment_expression "puVar1 = puVar5 + 1" (identifier "puVar1") (= "=") (binary_expression "puVar5 + 1" (identifier "puVar5") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "puVar5 = (undefined4 *)*puVar1;" (assignment_expression "puVar5 = (undefined4 *)*puVar1" (identifier "puVar5") (= "=") (cast_expression "(undefined4 *)*puVar1" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*puVar1" (* "*") (identifier "puVar1")))) (; ";")) (} "}")) (while "while") (parenthesized_expression "((undefined4 *)*puVar1 != (undefined4 *)0x0)" (( "(") (binary_expression "(undefined4 *)*puVar1 != (undefined4 *)0x0" (cast_expression "(undefined4 *)*puVar1" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*puVar1" (* "*") (identifier "puVar1"))) (!= "!=") (cast_expression "(undefined4 *)0x0" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (; ";")) (expression_statement "puVar4 = (undefined4 *)puVar4[2];" (assignment_expression "puVar4 = (undefined4 *)puVar4[2]" (identifier "puVar4") (= "=") (cast_expression "(undefined4 *)puVar4[2]" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "puVar4[2]" (identifier "puVar4") ([ "[") (number_literal "2") (] "]")))) (; ";")) (expression_statement "bVar8 = puVar4 != (undefined4 *)0x0;" (assignment_expression "bVar8 = puVar4 != (undefined4 *)0x0" (identifier "bVar8") (= "=") (binary_expression "puVar4 != (undefined4 *)0x0" (identifier "puVar4") (!= "!=") (cast_expression "(undefined4 *)0x0" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0")))) (; ";")) (} "}"))) (expression_statement "bVar8 = false;" (assignment_expression "bVar8 = false" (identifier "bVar8") (= "=") (false "false")) (; ";")) (expression_statement "bVar9 = param_2 == 0;" (assignment_expression "bVar9 = param_2 == 0" (identifier "bVar9") (= "=") (binary_expression "param_2 == 0" (identifier "param_2") (== "==") (number_literal "0"))) (; ";")) (if_statement "if (bVar9) {\n      iVar2 = 10;\n      pbVar6 = param_1;\n      pbVar7 = (byte *)"*default*";\n      do {\n        if (iVar2 == 0) break;\n        iVar2 = iVar2 + -1;\n        bVar8 = *pbVar6 < *pbVar7;\n        bVar9 = *pbVar6 == *pbVar7;\n        pbVar6 = pbVar6 + (uint)bVar10 * -2 + 1;\n        pbVar7 = pbVar7 + (uint)bVar10 * -2 + 1;\n      } while (bVar9);\n      if ((!bVar8 && !bVar9) != bVar8) {\n        uVar3 = dcgettext(0,"%P:%pS: warning: memory region `%s\' not declared\n",5);\n        FUN_00031760(uVar3,0,param_1);\n      }\n    }" (if "if") (parenthesized_expression "(bVar9)" (( "(") (identifier "bVar9") () ")")) (compound_statement "{\n      iVar2 = 10;\n      pbVar6 = param_1;\n      pbVar7 = (byte *)"*default*";\n      do {\n        if (iVar2 == 0) break;\n        iVar2 = iVar2 + -1;\n        bVar8 = *pbVar6 < *pbVar7;\n        bVar9 = *pbVar6 == *pbVar7;\n        pbVar6 = pbVar6 + (uint)bVar10 * -2 + 1;\n        pbVar7 = pbVar7 + (uint)bVar10 * -2 + 1;\n      } while (bVar9);\n      if ((!bVar8 && !bVar9) != bVar8) {\n        uVar3 = dcgettext(0,"%P:%pS: warning: memory region `%s\' not declared\n",5);\n        FUN_00031760(uVar3,0,param_1);\n      }\n    }" ({ "{") (expression_statement "iVar2 = 10;" (assignment_expression "iVar2 = 10" (identifier "iVar2") (= "=") (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 (iVar2 == 0) break;\n        iVar2 = iVar2 + -1;\n        bVar8 = *pbVar6 < *pbVar7;\n        bVar9 = *pbVar6 == *pbVar7;\n        pbVar6 = pbVar6 + (uint)bVar10 * -2 + 1;\n        pbVar7 = pbVar7 + (uint)bVar10 * -2 + 1;\n      } while (bVar9);" (do "do") (compound_statement "{\n        if (iVar2 == 0) break;\n        iVar2 = iVar2 + -1;\n        bVar8 = *pbVar6 < *pbVar7;\n        bVar9 = *pbVar6 == *pbVar7;\n        pbVar6 = pbVar6 + (uint)bVar10 * -2 + 1;\n        pbVar7 = pbVar7 + (uint)bVar10 * -2 + 1;\n      }" ({ "{") (if_statement "if (iVar2 == 0) break;" (if "if") (parenthesized_expression "(iVar2 == 0)" (( "(") (binary_expression "iVar2 == 0" (identifier "iVar2") (== "==") (number_literal "0")) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "iVar2 = iVar2 + -1;" (assignment_expression "iVar2 = iVar2 + -1" (identifier "iVar2") (= "=") (binary_expression "iVar2 + -1" (identifier "iVar2") (+ "+") (number_literal "-1"))) (; ";")) (expression_statement "bVar8 = *pbVar6 < *pbVar7;" (assignment_expression "bVar8 = *pbVar6 < *pbVar7" (identifier "bVar8") (= "=") (binary_expression "*pbVar6 < *pbVar7" (pointer_expression "*pbVar6" (* "*") (identifier "pbVar6")) (< "<") (pointer_expression "*pbVar7" (* "*") (identifier "pbVar7")))) (; ";")) (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 "pbVar6 = pbVar6 + (uint)bVar10 * -2 + 1;" (assignment_expression "pbVar6 = pbVar6 + (uint)bVar10 * -2 + 1" (identifier "pbVar6") (= "=") (binary_expression "pbVar6 + (uint)bVar10 * -2 + 1" (binary_expression "pbVar6 + (uint)bVar10 * -2" (identifier "pbVar6") (+ "+") (binary_expression "(uint)bVar10 * -2" (cast_expression "(uint)bVar10" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "bVar10")) (* "*") (number_literal "-2"))) (+ "+") (number_literal "1"))) (; ";")) (expression_statement "pbVar7 = pbVar7 + (uint)bVar10 * -2 + 1;" (assignment_expression "pbVar7 = pbVar7 + (uint)bVar10 * -2 + 1" (identifier "pbVar7") (= "=") (binary_expression "pbVar7 + (uint)bVar10 * -2 + 1" (binary_expression "pbVar7 + (uint)bVar10 * -2" (identifier "pbVar7") (+ "+") (binary_expression "(uint)bVar10 * -2" (cast_expression "(uint)bVar10" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "bVar10")) (* "*") (number_literal "-2"))) (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(bVar9)" (( "(") (identifier "bVar9") () ")")) (; ";")) (if_statement "if ((!bVar8 && !bVar9) != bVar8) {\n        uVar3 = dcgettext(0,"%P:%pS: warning: memory region `%s\' not declared\n",5);\n        FUN_00031760(uVar3,0,param_1);\n      }" (if "if") (parenthesized_expression "((!bVar8 && !bVar9) != bVar8)" (( "(") (binary_expression "(!bVar8 && !bVar9) != bVar8" (parenthesized_expression "(!bVar8 && !bVar9)" (( "(") (binary_expression "!bVar8 && !bVar9" (unary_expression "!bVar8" (! "!") (identifier "bVar8")) (&& "&&") (unary_expression "!bVar9" (! "!") (identifier "bVar9"))) () ")")) (!= "!=") (identifier "bVar8")) () ")")) (compound_statement "{\n        uVar3 = dcgettext(0,"%P:%pS: warning: memory region `%s\' not declared\n",5);\n        FUN_00031760(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_00031760(uVar3,0,param_1);" (call_expression "FUN_00031760(uVar3,0,param_1)" (identifier "FUN_00031760") (argument_list "(uVar3,0,param_1)" (( "(") (identifier "uVar3") (, ",") (number_literal "0") (, ",") (identifier "param_1") () ")"))) (; ";")) (} "}"))) (} "}"))) (expression_statement "puVar4 = (undefined4 *)FUN_00021210(0x30);" (assignment_expression "puVar4 = (undefined4 *)FUN_00021210(0x30)" (identifier "puVar4") (= "=") (cast_expression "(undefined4 *)FUN_00021210(0x30)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_00021210(0x30)" (identifier "FUN_00021210") (argument_list "(0x30)" (( "(") (number_literal "0x30") () ")"))))) (; ";")) (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[6] = 0;" (assignment_expression "puVar4[6] = 0" (subscript_expression "puVar4[6]" (identifier "puVar4") ([ "[") (number_literal "6") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar4[5] = 0xffffffff;" (assignment_expression "puVar4[5] = 0xffffffff" (subscript_expression "puVar4[5]" (identifier "puVar4") ([ "[") (number_literal "5") (] "]")) (= "=") (number_literal "0xffffffff")) (; ";")) (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 "puVar4[10] = 0;" (assignment_expression "puVar4[10] = 0" (subscript_expression "puVar4[10]" (identifier "puVar4") ([ "[") (number_literal "10") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar4[0xb] = 0;" (assignment_expression "puVar4[0xb] = 0" (subscript_expression "puVar4[0xb]" (identifier "puVar4") ([ "[") (number_literal "0xb") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "*(undefined4 **)PTR_DAT_00091350 = puVar4;" (assignment_expression "*(undefined4 **)PTR_DAT_00091350 = puVar4" (pointer_expression "*(undefined4 **)PTR_DAT_00091350" (* "*") (cast_expression "(undefined4 **)PTR_DAT_00091350" (( "(") (type_descriptor "undefined4 **" (type_identifier "undefined4") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (identifier "PTR_DAT_00091350"))) (= "=") (identifier "puVar4")) (; ";")) (expression_statement "PTR_DAT_00091350 = (undefined *)(puVar4 + 2);" (assignment_expression "PTR_DAT_00091350 = (undefined *)(puVar4 + 2)" (identifier "PTR_DAT_00091350") (= "=") (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") (; ";")) (} "}")))

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

type_1 * function_1(char *var_1,type_2 var_5)

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


(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: (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: (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: (identifier))) (while_statement condition: (parenthesized_expression (comma_expression left: (assignment_expression left: (identifier) right: (identifier)) right: (identifier))) body: (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: (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))))) (expression_statement (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))))) (expression_statement (assignment_expression left: (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: (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 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)))))

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

undefined4 * MASKED(byte *param_1,int param_2)

{
  undefined4 *puVar1;
  int iVar2;
  undefined4 uVar3;
  undefined4 *puVar4;
  undefined4 *puVar5;
  byte *pbVar6;
  byte *pbVar7;
  bool bVar8;
  bool bVar9;
  byte bVar10;
  
  bVar10 = 0;
  if (param_1 == (byte *)0x0) {
    puVar4 = (undefined4 *)0x0;
  }
  else {
    bVar8 = DAT_000917ec != (undefined4 *)0x0;
    puVar4 = DAT_000917ec;
    while (puVar5 = puVar4, bVar8) {
      do {
        iVar2 = strcmp((char *)*puVar5,(char *)param_1);
        if (iVar2 == 0) {
          if (param_2 == 0) {
            return puVar4;
          }
          uVar3 = dcgettext(0,"%P:%pS: warning: redeclaration of memory region `%s\'\n",5);
          FUN_00031760(uVar3,0,param_1);
          return puVar4;
        }
        puVar1 = puVar5 + 1;
        puVar5 = (undefined4 *)*puVar1;
      } while ((undefined4 *)*puVar1 != (undefined4 *)0x0);
      puVar4 = (undefined4 *)puVar4[2];
      bVar8 = puVar4 != (undefined4 *)0x0;
    }
    bVar8 = false;
    bVar9 = param_2 == 0;
    if (bVar9) {
      iVar2 = 10;
      pbVar6 = param_1;
      pbVar7 = (byte *)"*default*";
      do {
        if (iVar2 == 0) break;
        iVar2 = iVar2 + -1;
        bVar8 = *pbVar6 < *pbVar7;
        bVar9 = *pbVar6 == *pbVar7;
        pbVar6 = pbVar6 + (uint)bVar10 * -2 + 1;
        pbVar7 = pbVar7 + (uint)bVar10 * -2 + 1;
      } while (bVar9);
      if ((!bVar8 && !bVar9) != bVar8) {
        uVar3 = dcgettext(0,"%P:%pS: warning: memory region `%s\' not declared\n",5);
        FUN_00031760(uVar3,0,param_1);
      }
    }
    puVar4 = (undefined4 *)FUN_00021210(0x30);
    uVar3 = xstrdup(param_1);
    puVar4[1] = 0;
    *puVar4 = uVar3;
    puVar4[2] = 0;
    puVar4[3] = 0;
    puVar4[4] = 0;
    puVar4[6] = 0;
    puVar4[5] = 0xffffffff;
    puVar4[7] = 0;
    puVar4[8] = 0;
    puVar4[9] = 0;
    puVar4[10] = 0;
    puVar4[0xb] = 0;
    *(undefined4 **)PTR_DAT_00091350 = puVar4;
    PTR_DAT_00091350 = (undefined *)(puVar4 + 2);
  }
  return puVar4;
}

