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

void __regparm3
lang_get_regions(lang_memory_region_type **region,lang_memory_region_type **lma_region,char *memspec
                ,char *lma_memspec,bfd_boolean have_lma,bfd_boolean have_vma)

{
  lang_memory_region_type *plVar1;
  char *fmt;
  int iVar2;
  byte *pbVar3;
  byte *pbVar4;
  bool bVar5;
  bool bVar6;
  byte bVar7;
  
  bVar7 = 0;
  plVar1 = lang_memory_region_lookup(lma_memspec,0);
  *lma_region = plVar1;
  if ((have_vma & 1U) == 0) {
    bVar5 = false;
    bVar6 = lma_memspec == (char *)0x0;
    if (!bVar6) {
      iVar2 = 10;
      pbVar3 = (byte *)memspec;
      pbVar4 = (byte *)"*default*";
      do {
        if (iVar2 == 0) break;
        iVar2 = iVar2 + -1;
        bVar5 = *pbVar3 < *pbVar4;
        bVar6 = *pbVar3 == *pbVar4;
        pbVar3 = pbVar3 + (uint)bVar7 * -2 + 1;
        pbVar4 = pbVar4 + (uint)bVar7 * -2 + 1;
      } while (bVar6);
      if ((!bVar5 && !bVar6) == bVar5) {
        *region = plVar1;
        goto LAB_00022a8f;
      }
    }
  }
  plVar1 = lang_memory_region_lookup(memspec,0);
  *region = plVar1;
LAB_00022a8f:
  if (((have_lma & 1U) != 0) && (lma_memspec != (char *)0x0)) {
    fmt = (char *)dcgettext(0,"%X%P:%pS: section has both a load address and a load region\n",5);
    einfo(fmt,0);
    return;
  }
  return;
}



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

void __regparm3
FUN_00022a20(undefined4 *param_1,undefined4 *param_2,byte *param_3,int param_4,byte param_5,
            byte param_6)

{
  undefined4 uVar1;
  int iVar2;
  byte *pbVar3;
  byte *pbVar4;
  bool bVar5;
  bool bVar6;
  byte bVar7;
  
  bVar7 = 0;
  uVar1 = FUN_00021900(param_4,0);
  *param_2 = uVar1;
  if ((param_6 & 1) == 0) {
    bVar5 = false;
    bVar6 = param_4 == 0;
    if (!bVar6) {
      iVar2 = 10;
      pbVar3 = param_3;
      pbVar4 = (byte *)"*default*";
      do {
        if (iVar2 == 0) break;
        iVar2 = iVar2 + -1;
        bVar5 = *pbVar3 < *pbVar4;
        bVar6 = *pbVar3 == *pbVar4;
        pbVar3 = pbVar3 + (uint)bVar7 * -2 + 1;
        pbVar4 = pbVar4 + (uint)bVar7 * -2 + 1;
      } while (bVar6);
      if ((!bVar5 && !bVar6) == bVar5) {
        *param_1 = uVar1;
        goto LAB_00022a8f;
      }
    }
  }
  uVar1 = FUN_00021900(param_3,0);
  *param_1 = uVar1;
LAB_00022a8f:
  if (((param_5 & 1) != 0) && (param_4 != 0)) {
    uVar1 = dcgettext(0,"%X%P:%pS: section has both a load address and a load region\n",5);
    FUN_000316f0(uVar1,0);
    return;
  }
  return;
}


PUSH EBP
MOV EBP,ECX
PUSH EDI
MOV EDI,EDX
PUSH ESI
PUSH EBX
CALL 0x00015a10
ADD EBX,0x715d3
SUB ESP,0x24
MOV ESI,dword ptr [ESP + 0x38]
MOV dword ptr [ESP + 0x14],EAX
PUSH 0x0
PUSH ESI
CALL 0x00021900
ADD ESP,0x10
TEST ESI,ESI
SETNZ byte ptr [ESP + 0xb]
MOVZX ECX,byte ptr [ESP + 0xb]
MOV dword ptr [EDI],EAX
TEST byte ptr [ESP + 0x38],0x1
JNZ 0x00022a7b
TEST CL,CL
JZ 0x00022a7b
MOV ECX,0xa
LEA EDI,[EBX + 0xfffac0f5]
MOV ESI,EBP
CMPSB.REPE ES:EDI,ESI
SETA DL
SBB DL,0x0
TEST DL,DL
JZ 0x00022aa8
SUB ESP,0x8
PUSH 0x0
PUSH EBP
CALL 0x00021900
MOV EDI,dword ptr [ESP + 0x1c]
ADD ESP,0x10
MOV dword ptr [EDI],EAX
TEST byte ptr [ESP + 0x34],0x1
JZ 0x00022a9d
CMP byte ptr [ESP + 0xb],0x0
JNZ 0x00022ab0
ADD ESP,0x1c
POP EBX
POP ESI
POP EDI
POP EBP
RET
MOV EDX,dword ptr [ESP + 0xc]
MOV dword ptr [EDX],EAX
JMP 0x00022a8f
SUB ESP,0x4
LEA EAX,[EBX + 0xfffbb570]
PUSH 0x5
PUSH EAX
PUSH 0x0
CALL 0x000142e0
POP EDX
POP ECX
PUSH 0x0
PUSH EAX
CALL 0x000316f0
ADD ESP,0x10
ADD ESP,0x1c
POP EBX
POP ESI
POP EDI
POP EBP
RET
(translation_unit "/* WARNING: Function: __i686.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */\n\nvoid __regparm3\nFUN_00022a20(undefined4 *param_1,undefined4 *param_2,byte *param_3,int param_4,byte param_5,\n            byte param_6)\n\n{\n  undefined4 uVar1;\n  int iVar2;\n  byte *pbVar3;\n  byte *pbVar4;\n  bool bVar5;\n  bool bVar6;\n  byte bVar7;\n  \n  bVar7 = 0;\n  uVar1 = FUN_00021900(param_4,0);\n  *param_2 = uVar1;\n  if ((param_6 & 1) == 0) {\n    bVar5 = false;\n    bVar6 = param_4 == 0;\n    if (!bVar6) {\n      iVar2 = 10;\n      pbVar3 = param_3;\n      pbVar4 = (byte *)"*default*";\n      do {\n        if (iVar2 == 0) break;\n        iVar2 = iVar2 + -1;\n        bVar5 = *pbVar3 < *pbVar4;\n        bVar6 = *pbVar3 == *pbVar4;\n        pbVar3 = pbVar3 + (uint)bVar7 * -2 + 1;\n        pbVar4 = pbVar4 + (uint)bVar7 * -2 + 1;\n      } while (bVar6);\n      if ((!bVar5 && !bVar6) == bVar5) {\n        *param_1 = uVar1;\n        goto LAB_00022a8f;\n      }\n    }\n  }\n  uVar1 = FUN_00021900(param_3,0);\n  *param_1 = uVar1;\nLAB_00022a8f:\n  if (((param_5 & 1) != 0) && (param_4 != 0)) {\n    uVar1 = dcgettext(0,"%X%P:%pS: section has both a load address and a load region\n",5);\n    FUN_000316f0(uVar1,0);\n    return;\n  }\n  return;\n}\n\n" comment (function_definition "void __regparm3\nFUN_00022a20(undefined4 *param_1,undefined4 *param_2,byte *param_3,int param_4,byte param_5,\n            byte param_6)\n\n{\n  undefined4 uVar1;\n  int iVar2;\n  byte *pbVar3;\n  byte *pbVar4;\n  bool bVar5;\n  bool bVar6;\n  byte bVar7;\n  \n  bVar7 = 0;\n  uVar1 = FUN_00021900(param_4,0);\n  *param_2 = uVar1;\n  if ((param_6 & 1) == 0) {\n    bVar5 = false;\n    bVar6 = param_4 == 0;\n    if (!bVar6) {\n      iVar2 = 10;\n      pbVar3 = param_3;\n      pbVar4 = (byte *)"*default*";\n      do {\n        if (iVar2 == 0) break;\n        iVar2 = iVar2 + -1;\n        bVar5 = *pbVar3 < *pbVar4;\n        bVar6 = *pbVar3 == *pbVar4;\n        pbVar3 = pbVar3 + (uint)bVar7 * -2 + 1;\n        pbVar4 = pbVar4 + (uint)bVar7 * -2 + 1;\n      } while (bVar6);\n      if ((!bVar5 && !bVar6) == bVar5) {\n        *param_1 = uVar1;\n        goto LAB_00022a8f;\n      }\n    }\n  }\n  uVar1 = FUN_00021900(param_3,0);\n  *param_1 = uVar1;\nLAB_00022a8f:\n  if (((param_5 & 1) != 0) && (param_4 != 0)) {\n    uVar1 = dcgettext(0,"%X%P:%pS: section has both a load address and a load region\n",5);\n    FUN_000316f0(uVar1,0);\n    return;\n  }\n  return;\n}" primitive_type (ERROR "__regparm3" identifier) (function_declarator "FUN_00022a20(undefined4 *param_1,undefined4 *param_2,byte *param_3,int param_4,byte param_5,\n            byte param_6)" identifier (parameter_list "(undefined4 *param_1,undefined4 *param_2,byte *param_3,int param_4,byte param_5,\n            byte param_6)" ( (parameter_declaration "undefined4 *param_1" type_identifier (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "undefined4 *param_2" type_identifier (pointer_declarator "*param_2" * identifier)) , (parameter_declaration "byte *param_3" type_identifier (pointer_declarator "*param_3" * identifier)) , (parameter_declaration "int param_4" primitive_type identifier) , (parameter_declaration "byte param_5" type_identifier identifier) , (parameter_declaration "byte param_6" type_identifier identifier) ))) (compound_statement "{\n  undefined4 uVar1;\n  int iVar2;\n  byte *pbVar3;\n  byte *pbVar4;\n  bool bVar5;\n  bool bVar6;\n  byte bVar7;\n  \n  bVar7 = 0;\n  uVar1 = FUN_00021900(param_4,0);\n  *param_2 = uVar1;\n  if ((param_6 & 1) == 0) {\n    bVar5 = false;\n    bVar6 = param_4 == 0;\n    if (!bVar6) {\n      iVar2 = 10;\n      pbVar3 = param_3;\n      pbVar4 = (byte *)"*default*";\n      do {\n        if (iVar2 == 0) break;\n        iVar2 = iVar2 + -1;\n        bVar5 = *pbVar3 < *pbVar4;\n        bVar6 = *pbVar3 == *pbVar4;\n        pbVar3 = pbVar3 + (uint)bVar7 * -2 + 1;\n        pbVar4 = pbVar4 + (uint)bVar7 * -2 + 1;\n      } while (bVar6);\n      if ((!bVar5 && !bVar6) == bVar5) {\n        *param_1 = uVar1;\n        goto LAB_00022a8f;\n      }\n    }\n  }\n  uVar1 = FUN_00021900(param_3,0);\n  *param_1 = uVar1;\nLAB_00022a8f:\n  if (((param_5 & 1) != 0) && (param_4 != 0)) {\n    uVar1 = dcgettext(0,"%X%P:%pS: section has both a load address and a load region\n",5);\n    FUN_000316f0(uVar1,0);\n    return;\n  }\n  return;\n}" { (declaration "undefined4 uVar1;" type_identifier identifier ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "byte *pbVar3;" type_identifier (pointer_declarator "*pbVar3" * identifier) ;) (declaration "byte *pbVar4;" type_identifier (pointer_declarator "*pbVar4" * identifier) ;) (declaration "bool bVar5;" primitive_type identifier ;) (declaration "bool bVar6;" primitive_type identifier ;) (declaration "byte bVar7;" type_identifier identifier ;) (expression_statement "bVar7 = 0;" (assignment_expression "bVar7 = 0" identifier = number_literal) ;) (expression_statement "uVar1 = FUN_00021900(param_4,0);" (assignment_expression "uVar1 = FUN_00021900(param_4,0)" identifier = (call_expression "FUN_00021900(param_4,0)" identifier (argument_list "(param_4,0)" ( identifier , number_literal )))) ;) (expression_statement "*param_2 = uVar1;" (assignment_expression "*param_2 = uVar1" (pointer_expression "*param_2" * identifier) = identifier) ;) (if_statement "if ((param_6 & 1) == 0) {\n    bVar5 = false;\n    bVar6 = param_4 == 0;\n    if (!bVar6) {\n      iVar2 = 10;\n      pbVar3 = param_3;\n      pbVar4 = (byte *)"*default*";\n      do {\n        if (iVar2 == 0) break;\n        iVar2 = iVar2 + -1;\n        bVar5 = *pbVar3 < *pbVar4;\n        bVar6 = *pbVar3 == *pbVar4;\n        pbVar3 = pbVar3 + (uint)bVar7 * -2 + 1;\n        pbVar4 = pbVar4 + (uint)bVar7 * -2 + 1;\n      } while (bVar6);\n      if ((!bVar5 && !bVar6) == bVar5) {\n        *param_1 = uVar1;\n        goto LAB_00022a8f;\n      }\n    }\n  }" if (parenthesized_expression "((param_6 & 1) == 0)" ( (binary_expression "(param_6 & 1) == 0" (parenthesized_expression "(param_6 & 1)" ( (binary_expression "param_6 & 1" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n    bVar5 = false;\n    bVar6 = param_4 == 0;\n    if (!bVar6) {\n      iVar2 = 10;\n      pbVar3 = param_3;\n      pbVar4 = (byte *)"*default*";\n      do {\n        if (iVar2 == 0) break;\n        iVar2 = iVar2 + -1;\n        bVar5 = *pbVar3 < *pbVar4;\n        bVar6 = *pbVar3 == *pbVar4;\n        pbVar3 = pbVar3 + (uint)bVar7 * -2 + 1;\n        pbVar4 = pbVar4 + (uint)bVar7 * -2 + 1;\n      } while (bVar6);\n      if ((!bVar5 && !bVar6) == bVar5) {\n        *param_1 = uVar1;\n        goto LAB_00022a8f;\n      }\n    }\n  }" { (expression_statement "bVar5 = false;" (assignment_expression "bVar5 = false" identifier = false) ;) (expression_statement "bVar6 = param_4 == 0;" (assignment_expression "bVar6 = param_4 == 0" identifier = (binary_expression "param_4 == 0" identifier == number_literal)) ;) (if_statement "if (!bVar6) {\n      iVar2 = 10;\n      pbVar3 = param_3;\n      pbVar4 = (byte *)"*default*";\n      do {\n        if (iVar2 == 0) break;\n        iVar2 = iVar2 + -1;\n        bVar5 = *pbVar3 < *pbVar4;\n        bVar6 = *pbVar3 == *pbVar4;\n        pbVar3 = pbVar3 + (uint)bVar7 * -2 + 1;\n        pbVar4 = pbVar4 + (uint)bVar7 * -2 + 1;\n      } while (bVar6);\n      if ((!bVar5 && !bVar6) == bVar5) {\n        *param_1 = uVar1;\n        goto LAB_00022a8f;\n      }\n    }" if (parenthesized_expression "(!bVar6)" ( (unary_expression "!bVar6" ! identifier) )) (compound_statement "{\n      iVar2 = 10;\n      pbVar3 = param_3;\n      pbVar4 = (byte *)"*default*";\n      do {\n        if (iVar2 == 0) break;\n        iVar2 = iVar2 + -1;\n        bVar5 = *pbVar3 < *pbVar4;\n        bVar6 = *pbVar3 == *pbVar4;\n        pbVar3 = pbVar3 + (uint)bVar7 * -2 + 1;\n        pbVar4 = pbVar4 + (uint)bVar7 * -2 + 1;\n      } while (bVar6);\n      if ((!bVar5 && !bVar6) == bVar5) {\n        *param_1 = uVar1;\n        goto LAB_00022a8f;\n      }\n    }" { (expression_statement "iVar2 = 10;" (assignment_expression "iVar2 = 10" identifier = number_literal) ;) (expression_statement "pbVar3 = param_3;" (assignment_expression "pbVar3 = param_3" identifier = identifier) ;) (expression_statement "pbVar4 = (byte *)"*default*";" (assignment_expression "pbVar4 = (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        bVar5 = *pbVar3 < *pbVar4;\n        bVar6 = *pbVar3 == *pbVar4;\n        pbVar3 = pbVar3 + (uint)bVar7 * -2 + 1;\n        pbVar4 = pbVar4 + (uint)bVar7 * -2 + 1;\n      } while (bVar6);" do (compound_statement "{\n        if (iVar2 == 0) break;\n        iVar2 = iVar2 + -1;\n        bVar5 = *pbVar3 < *pbVar4;\n        bVar6 = *pbVar3 == *pbVar4;\n        pbVar3 = pbVar3 + (uint)bVar7 * -2 + 1;\n        pbVar4 = pbVar4 + (uint)bVar7 * -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 "bVar5 = *pbVar3 < *pbVar4;" (assignment_expression "bVar5 = *pbVar3 < *pbVar4" identifier = (binary_expression "*pbVar3 < *pbVar4" (pointer_expression "*pbVar3" * identifier) < (pointer_expression "*pbVar4" * identifier))) ;) (expression_statement "bVar6 = *pbVar3 == *pbVar4;" (assignment_expression "bVar6 = *pbVar3 == *pbVar4" identifier = (binary_expression "*pbVar3 == *pbVar4" (pointer_expression "*pbVar3" * identifier) == (pointer_expression "*pbVar4" * identifier))) ;) (expression_statement "pbVar3 = pbVar3 + (uint)bVar7 * -2 + 1;" (assignment_expression "pbVar3 = pbVar3 + (uint)bVar7 * -2 + 1" identifier = (binary_expression "pbVar3 + (uint)bVar7 * -2 + 1" (binary_expression "pbVar3 + (uint)bVar7 * -2" identifier + (binary_expression "(uint)bVar7 * -2" (cast_expression "(uint)bVar7" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) (expression_statement "pbVar4 = pbVar4 + (uint)bVar7 * -2 + 1;" (assignment_expression "pbVar4 = pbVar4 + (uint)bVar7 * -2 + 1" identifier = (binary_expression "pbVar4 + (uint)bVar7 * -2 + 1" (binary_expression "pbVar4 + (uint)bVar7 * -2" identifier + (binary_expression "(uint)bVar7 * -2" (cast_expression "(uint)bVar7" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) }) while (parenthesized_expression "(bVar6)" ( identifier )) ;) (if_statement "if ((!bVar5 && !bVar6) == bVar5) {\n        *param_1 = uVar1;\n        goto LAB_00022a8f;\n      }" if (parenthesized_expression "((!bVar5 && !bVar6) == bVar5)" ( (binary_expression "(!bVar5 && !bVar6) == bVar5" (parenthesized_expression "(!bVar5 && !bVar6)" ( (binary_expression "!bVar5 && !bVar6" (unary_expression "!bVar5" ! identifier) && (unary_expression "!bVar6" ! identifier)) )) == identifier) )) (compound_statement "{\n        *param_1 = uVar1;\n        goto LAB_00022a8f;\n      }" { (expression_statement "*param_1 = uVar1;" (assignment_expression "*param_1 = uVar1" (pointer_expression "*param_1" * identifier) = identifier) ;) (goto_statement "goto LAB_00022a8f;" goto statement_identifier ;) })) })) })) (expression_statement "uVar1 = FUN_00021900(param_3,0);" (assignment_expression "uVar1 = FUN_00021900(param_3,0)" identifier = (call_expression "FUN_00021900(param_3,0)" identifier (argument_list "(param_3,0)" ( identifier , number_literal )))) ;) (expression_statement "*param_1 = uVar1;" (assignment_expression "*param_1 = uVar1" (pointer_expression "*param_1" * identifier) = identifier) ;) (labeled_statement "LAB_00022a8f:\n  if (((param_5 & 1) != 0) && (param_4 != 0)) {\n    uVar1 = dcgettext(0,"%X%P:%pS: section has both a load address and a load region\n",5);\n    FUN_000316f0(uVar1,0);\n    return;\n  }" statement_identifier : (if_statement "if (((param_5 & 1) != 0) && (param_4 != 0)) {\n    uVar1 = dcgettext(0,"%X%P:%pS: section has both a load address and a load region\n",5);\n    FUN_000316f0(uVar1,0);\n    return;\n  }" if (parenthesized_expression "(((param_5 & 1) != 0) && (param_4 != 0))" ( (binary_expression "((param_5 & 1) != 0) && (param_4 != 0)" (parenthesized_expression "((param_5 & 1) != 0)" ( (binary_expression "(param_5 & 1) != 0" (parenthesized_expression "(param_5 & 1)" ( (binary_expression "param_5 & 1" identifier & number_literal) )) != number_literal) )) && (parenthesized_expression "(param_4 != 0)" ( (binary_expression "param_4 != 0" identifier != number_literal) ))) )) (compound_statement "{\n    uVar1 = dcgettext(0,"%X%P:%pS: section has both a load address and a load region\n",5);\n    FUN_000316f0(uVar1,0);\n    return;\n  }" { (expression_statement "uVar1 = dcgettext(0,"%X%P:%pS: section has both a load address and a load region\n",5);" (assignment_expression "uVar1 = dcgettext(0,"%X%P:%pS: section has both a load address and a load region\n",5)" identifier = (call_expression "dcgettext(0,"%X%P:%pS: section has both a load address and a load region\n",5)" identifier (argument_list "(0,"%X%P:%pS: section has both a load address and a load region\n",5)" ( number_literal , (string_literal ""%X%P:%pS: section has both a load address and a load region\n"" " string_content escape_sequence ") , number_literal )))) ;) (expression_statement "FUN_000316f0(uVar1,0);" (call_expression "FUN_000316f0(uVar1,0)" identifier (argument_list "(uVar1,0)" ( identifier , number_literal ))) ;) (return_statement "return;" return ;) }))) (return_statement "return;" return ;) })))
(translation_unit "/* WARNING: Function: __x86.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */\n\nvoid __regparm3\nlang_get_regions(lang_memory_region_type **region,lang_memory_region_type **lma_region,char *memspec\n                ,char *lma_memspec,bfd_boolean have_lma,bfd_boolean have_vma)\n\n{\n  lang_memory_region_type *plVar1;\n  char *fmt;\n  int iVar2;\n  byte *pbVar3;\n  byte *pbVar4;\n  bool bVar5;\n  bool bVar6;\n  byte bVar7;\n  \n  bVar7 = 0;\n  plVar1 = lang_memory_region_lookup(lma_memspec,0);\n  *lma_region = plVar1;\n  if ((have_vma & 1U) == 0) {\n    bVar5 = false;\n    bVar6 = lma_memspec == (char *)0x0;\n    if (!bVar6) {\n      iVar2 = 10;\n      pbVar3 = (byte *)memspec;\n      pbVar4 = (byte *)"*default*";\n      do {\n        if (iVar2 == 0) break;\n        iVar2 = iVar2 + -1;\n        bVar5 = *pbVar3 < *pbVar4;\n        bVar6 = *pbVar3 == *pbVar4;\n        pbVar3 = pbVar3 + (uint)bVar7 * -2 + 1;\n        pbVar4 = pbVar4 + (uint)bVar7 * -2 + 1;\n      } while (bVar6);\n      if ((!bVar5 && !bVar6) == bVar5) {\n        *region = plVar1;\n        goto LAB_00022a8f;\n      }\n    }\n  }\n  plVar1 = lang_memory_region_lookup(memspec,0);\n  *region = plVar1;\nLAB_00022a8f:\n  if (((have_lma & 1U) != 0) && (lma_memspec != (char *)0x0)) {\n    fmt = (char *)dcgettext(0,"%X%P:%pS: section has both a load address and a load region\n",5);\n    einfo(fmt,0);\n    return;\n  }\n  return;\n}\n\n" comment (function_definition "void __regparm3\nlang_get_regions(lang_memory_region_type **region,lang_memory_region_type **lma_region,char *memspec\n                ,char *lma_memspec,bfd_boolean have_lma,bfd_boolean have_vma)\n\n{\n  lang_memory_region_type *plVar1;\n  char *fmt;\n  int iVar2;\n  byte *pbVar3;\n  byte *pbVar4;\n  bool bVar5;\n  bool bVar6;\n  byte bVar7;\n  \n  bVar7 = 0;\n  plVar1 = lang_memory_region_lookup(lma_memspec,0);\n  *lma_region = plVar1;\n  if ((have_vma & 1U) == 0) {\n    bVar5 = false;\n    bVar6 = lma_memspec == (char *)0x0;\n    if (!bVar6) {\n      iVar2 = 10;\n      pbVar3 = (byte *)memspec;\n      pbVar4 = (byte *)"*default*";\n      do {\n        if (iVar2 == 0) break;\n        iVar2 = iVar2 + -1;\n        bVar5 = *pbVar3 < *pbVar4;\n        bVar6 = *pbVar3 == *pbVar4;\n        pbVar3 = pbVar3 + (uint)bVar7 * -2 + 1;\n        pbVar4 = pbVar4 + (uint)bVar7 * -2 + 1;\n      } while (bVar6);\n      if ((!bVar5 && !bVar6) == bVar5) {\n        *region = plVar1;\n        goto LAB_00022a8f;\n      }\n    }\n  }\n  plVar1 = lang_memory_region_lookup(memspec,0);\n  *region = plVar1;\nLAB_00022a8f:\n  if (((have_lma & 1U) != 0) && (lma_memspec != (char *)0x0)) {\n    fmt = (char *)dcgettext(0,"%X%P:%pS: section has both a load address and a load region\n",5);\n    einfo(fmt,0);\n    return;\n  }\n  return;\n}" primitive_type (ERROR "__regparm3" identifier) (function_declarator "lang_get_regions(lang_memory_region_type **region,lang_memory_region_type **lma_region,char *memspec\n                ,char *lma_memspec,bfd_boolean have_lma,bfd_boolean have_vma)" identifier (parameter_list "(lang_memory_region_type **region,lang_memory_region_type **lma_region,char *memspec\n                ,char *lma_memspec,bfd_boolean have_lma,bfd_boolean have_vma)" ( (parameter_declaration "lang_memory_region_type **region" type_identifier (pointer_declarator "**region" * (pointer_declarator "*region" * identifier))) , (parameter_declaration "lang_memory_region_type **lma_region" type_identifier (pointer_declarator "**lma_region" * (pointer_declarator "*lma_region" * identifier))) , (parameter_declaration "char *memspec" primitive_type (pointer_declarator "*memspec" * identifier)) , (parameter_declaration "char *lma_memspec" primitive_type (pointer_declarator "*lma_memspec" * identifier)) , (parameter_declaration "bfd_boolean have_lma" type_identifier identifier) , (parameter_declaration "bfd_boolean have_vma" type_identifier identifier) ))) (compound_statement "{\n  lang_memory_region_type *plVar1;\n  char *fmt;\n  int iVar2;\n  byte *pbVar3;\n  byte *pbVar4;\n  bool bVar5;\n  bool bVar6;\n  byte bVar7;\n  \n  bVar7 = 0;\n  plVar1 = lang_memory_region_lookup(lma_memspec,0);\n  *lma_region = plVar1;\n  if ((have_vma & 1U) == 0) {\n    bVar5 = false;\n    bVar6 = lma_memspec == (char *)0x0;\n    if (!bVar6) {\n      iVar2 = 10;\n      pbVar3 = (byte *)memspec;\n      pbVar4 = (byte *)"*default*";\n      do {\n        if (iVar2 == 0) break;\n        iVar2 = iVar2 + -1;\n        bVar5 = *pbVar3 < *pbVar4;\n        bVar6 = *pbVar3 == *pbVar4;\n        pbVar3 = pbVar3 + (uint)bVar7 * -2 + 1;\n        pbVar4 = pbVar4 + (uint)bVar7 * -2 + 1;\n      } while (bVar6);\n      if ((!bVar5 && !bVar6) == bVar5) {\n        *region = plVar1;\n        goto LAB_00022a8f;\n      }\n    }\n  }\n  plVar1 = lang_memory_region_lookup(memspec,0);\n  *region = plVar1;\nLAB_00022a8f:\n  if (((have_lma & 1U) != 0) && (lma_memspec != (char *)0x0)) {\n    fmt = (char *)dcgettext(0,"%X%P:%pS: section has both a load address and a load region\n",5);\n    einfo(fmt,0);\n    return;\n  }\n  return;\n}" { (declaration "lang_memory_region_type *plVar1;" type_identifier (pointer_declarator "*plVar1" * identifier) ;) (declaration "char *fmt;" primitive_type (pointer_declarator "*fmt" * identifier) ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "byte *pbVar3;" type_identifier (pointer_declarator "*pbVar3" * identifier) ;) (declaration "byte *pbVar4;" type_identifier (pointer_declarator "*pbVar4" * identifier) ;) (declaration "bool bVar5;" primitive_type identifier ;) (declaration "bool bVar6;" primitive_type identifier ;) (declaration "byte bVar7;" type_identifier identifier ;) (expression_statement "bVar7 = 0;" (assignment_expression "bVar7 = 0" identifier = number_literal) ;) (expression_statement "plVar1 = lang_memory_region_lookup(lma_memspec,0);" (assignment_expression "plVar1 = lang_memory_region_lookup(lma_memspec,0)" identifier = (call_expression "lang_memory_region_lookup(lma_memspec,0)" identifier (argument_list "(lma_memspec,0)" ( identifier , number_literal )))) ;) (expression_statement "*lma_region = plVar1;" (assignment_expression "*lma_region = plVar1" (pointer_expression "*lma_region" * identifier) = identifier) ;) (if_statement "if ((have_vma & 1U) == 0) {\n    bVar5 = false;\n    bVar6 = lma_memspec == (char *)0x0;\n    if (!bVar6) {\n      iVar2 = 10;\n      pbVar3 = (byte *)memspec;\n      pbVar4 = (byte *)"*default*";\n      do {\n        if (iVar2 == 0) break;\n        iVar2 = iVar2 + -1;\n        bVar5 = *pbVar3 < *pbVar4;\n        bVar6 = *pbVar3 == *pbVar4;\n        pbVar3 = pbVar3 + (uint)bVar7 * -2 + 1;\n        pbVar4 = pbVar4 + (uint)bVar7 * -2 + 1;\n      } while (bVar6);\n      if ((!bVar5 && !bVar6) == bVar5) {\n        *region = plVar1;\n        goto LAB_00022a8f;\n      }\n    }\n  }" if (parenthesized_expression "((have_vma & 1U) == 0)" ( (binary_expression "(have_vma & 1U) == 0" (parenthesized_expression "(have_vma & 1U)" ( (binary_expression "have_vma & 1U" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n    bVar5 = false;\n    bVar6 = lma_memspec == (char *)0x0;\n    if (!bVar6) {\n      iVar2 = 10;\n      pbVar3 = (byte *)memspec;\n      pbVar4 = (byte *)"*default*";\n      do {\n        if (iVar2 == 0) break;\n        iVar2 = iVar2 + -1;\n        bVar5 = *pbVar3 < *pbVar4;\n        bVar6 = *pbVar3 == *pbVar4;\n        pbVar3 = pbVar3 + (uint)bVar7 * -2 + 1;\n        pbVar4 = pbVar4 + (uint)bVar7 * -2 + 1;\n      } while (bVar6);\n      if ((!bVar5 && !bVar6) == bVar5) {\n        *region = plVar1;\n        goto LAB_00022a8f;\n      }\n    }\n  }" { (expression_statement "bVar5 = false;" (assignment_expression "bVar5 = false" identifier = false) ;) (expression_statement "bVar6 = lma_memspec == (char *)0x0;" (assignment_expression "bVar6 = lma_memspec == (char *)0x0" identifier = (binary_expression "lma_memspec == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal))) ;) (if_statement "if (!bVar6) {\n      iVar2 = 10;\n      pbVar3 = (byte *)memspec;\n      pbVar4 = (byte *)"*default*";\n      do {\n        if (iVar2 == 0) break;\n        iVar2 = iVar2 + -1;\n        bVar5 = *pbVar3 < *pbVar4;\n        bVar6 = *pbVar3 == *pbVar4;\n        pbVar3 = pbVar3 + (uint)bVar7 * -2 + 1;\n        pbVar4 = pbVar4 + (uint)bVar7 * -2 + 1;\n      } while (bVar6);\n      if ((!bVar5 && !bVar6) == bVar5) {\n        *region = plVar1;\n        goto LAB_00022a8f;\n      }\n    }" if (parenthesized_expression "(!bVar6)" ( (unary_expression "!bVar6" ! identifier) )) (compound_statement "{\n      iVar2 = 10;\n      pbVar3 = (byte *)memspec;\n      pbVar4 = (byte *)"*default*";\n      do {\n        if (iVar2 == 0) break;\n        iVar2 = iVar2 + -1;\n        bVar5 = *pbVar3 < *pbVar4;\n        bVar6 = *pbVar3 == *pbVar4;\n        pbVar3 = pbVar3 + (uint)bVar7 * -2 + 1;\n        pbVar4 = pbVar4 + (uint)bVar7 * -2 + 1;\n      } while (bVar6);\n      if ((!bVar5 && !bVar6) == bVar5) {\n        *region = plVar1;\n        goto LAB_00022a8f;\n      }\n    }" { (expression_statement "iVar2 = 10;" (assignment_expression "iVar2 = 10" identifier = number_literal) ;) (expression_statement "pbVar3 = (byte *)memspec;" (assignment_expression "pbVar3 = (byte *)memspec" identifier = (cast_expression "(byte *)memspec" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (expression_statement "pbVar4 = (byte *)"*default*";" (assignment_expression "pbVar4 = (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        bVar5 = *pbVar3 < *pbVar4;\n        bVar6 = *pbVar3 == *pbVar4;\n        pbVar3 = pbVar3 + (uint)bVar7 * -2 + 1;\n        pbVar4 = pbVar4 + (uint)bVar7 * -2 + 1;\n      } while (bVar6);" do (compound_statement "{\n        if (iVar2 == 0) break;\n        iVar2 = iVar2 + -1;\n        bVar5 = *pbVar3 < *pbVar4;\n        bVar6 = *pbVar3 == *pbVar4;\n        pbVar3 = pbVar3 + (uint)bVar7 * -2 + 1;\n        pbVar4 = pbVar4 + (uint)bVar7 * -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 "bVar5 = *pbVar3 < *pbVar4;" (assignment_expression "bVar5 = *pbVar3 < *pbVar4" identifier = (binary_expression "*pbVar3 < *pbVar4" (pointer_expression "*pbVar3" * identifier) < (pointer_expression "*pbVar4" * identifier))) ;) (expression_statement "bVar6 = *pbVar3 == *pbVar4;" (assignment_expression "bVar6 = *pbVar3 == *pbVar4" identifier = (binary_expression "*pbVar3 == *pbVar4" (pointer_expression "*pbVar3" * identifier) == (pointer_expression "*pbVar4" * identifier))) ;) (expression_statement "pbVar3 = pbVar3 + (uint)bVar7 * -2 + 1;" (assignment_expression "pbVar3 = pbVar3 + (uint)bVar7 * -2 + 1" identifier = (binary_expression "pbVar3 + (uint)bVar7 * -2 + 1" (binary_expression "pbVar3 + (uint)bVar7 * -2" identifier + (binary_expression "(uint)bVar7 * -2" (cast_expression "(uint)bVar7" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) (expression_statement "pbVar4 = pbVar4 + (uint)bVar7 * -2 + 1;" (assignment_expression "pbVar4 = pbVar4 + (uint)bVar7 * -2 + 1" identifier = (binary_expression "pbVar4 + (uint)bVar7 * -2 + 1" (binary_expression "pbVar4 + (uint)bVar7 * -2" identifier + (binary_expression "(uint)bVar7 * -2" (cast_expression "(uint)bVar7" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) }) while (parenthesized_expression "(bVar6)" ( identifier )) ;) (if_statement "if ((!bVar5 && !bVar6) == bVar5) {\n        *region = plVar1;\n        goto LAB_00022a8f;\n      }" if (parenthesized_expression "((!bVar5 && !bVar6) == bVar5)" ( (binary_expression "(!bVar5 && !bVar6) == bVar5" (parenthesized_expression "(!bVar5 && !bVar6)" ( (binary_expression "!bVar5 && !bVar6" (unary_expression "!bVar5" ! identifier) && (unary_expression "!bVar6" ! identifier)) )) == identifier) )) (compound_statement "{\n        *region = plVar1;\n        goto LAB_00022a8f;\n      }" { (expression_statement "*region = plVar1;" (assignment_expression "*region = plVar1" (pointer_expression "*region" * identifier) = identifier) ;) (goto_statement "goto LAB_00022a8f;" goto statement_identifier ;) })) })) })) (expression_statement "plVar1 = lang_memory_region_lookup(memspec,0);" (assignment_expression "plVar1 = lang_memory_region_lookup(memspec,0)" identifier = (call_expression "lang_memory_region_lookup(memspec,0)" identifier (argument_list "(memspec,0)" ( identifier , number_literal )))) ;) (expression_statement "*region = plVar1;" (assignment_expression "*region = plVar1" (pointer_expression "*region" * identifier) = identifier) ;) (labeled_statement "LAB_00022a8f:\n  if (((have_lma & 1U) != 0) && (lma_memspec != (char *)0x0)) {\n    fmt = (char *)dcgettext(0,"%X%P:%pS: section has both a load address and a load region\n",5);\n    einfo(fmt,0);\n    return;\n  }" statement_identifier : (if_statement "if (((have_lma & 1U) != 0) && (lma_memspec != (char *)0x0)) {\n    fmt = (char *)dcgettext(0,"%X%P:%pS: section has both a load address and a load region\n",5);\n    einfo(fmt,0);\n    return;\n  }" if (parenthesized_expression "(((have_lma & 1U) != 0) && (lma_memspec != (char *)0x0))" ( (binary_expression "((have_lma & 1U) != 0) && (lma_memspec != (char *)0x0)" (parenthesized_expression "((have_lma & 1U) != 0)" ( (binary_expression "(have_lma & 1U) != 0" (parenthesized_expression "(have_lma & 1U)" ( (binary_expression "have_lma & 1U" identifier & number_literal) )) != number_literal) )) && (parenthesized_expression "(lma_memspec != (char *)0x0)" ( (binary_expression "lma_memspec != (char *)0x0" identifier != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ))) )) (compound_statement "{\n    fmt = (char *)dcgettext(0,"%X%P:%pS: section has both a load address and a load region\n",5);\n    einfo(fmt,0);\n    return;\n  }" { (expression_statement "fmt = (char *)dcgettext(0,"%X%P:%pS: section has both a load address and a load region\n",5);" (assignment_expression "fmt = (char *)dcgettext(0,"%X%P:%pS: section has both a load address and a load region\n",5)" identifier = (cast_expression "(char *)dcgettext(0,"%X%P:%pS: section has both a load address and a load region\n",5)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "dcgettext(0,"%X%P:%pS: section has both a load address and a load region\n",5)" identifier (argument_list "(0,"%X%P:%pS: section has both a load address and a load region\n",5)" ( number_literal , (string_literal ""%X%P:%pS: section has both a load address and a load region\n"" " string_content escape_sequence ") , number_literal ))))) ;) (expression_statement "einfo(fmt,0);" (call_expression "einfo(fmt,0)" identifier (argument_list "(fmt,0)" ( identifier , number_literal ))) ;) (return_statement "return;" return ;) }))) (return_statement "return;" return ;) })))
(translation_unit "void __regparm3\nFUN_00022a20(undefined4 *param_1,undefined4 *param_2,byte *param_3,int param_4,byte param_5,\n            byte param_6)\n\n{\n  undefined4 uVar1;\n  int iVar2;\n  byte *pbVar3;\n  byte *pbVar4;\n  bool bVar5;\n  bool bVar6;\n  byte bVar7;\n  \n  bVar7 = 0;\n  uVar1 = FUN_00021900(param_4,0);\n  *param_2 = uVar1;\n  if ((param_6 & 1) == 0) {\n    bVar5 = false;\n    bVar6 = param_4 == 0;\n    if (!bVar6) {\n      iVar2 = 10;\n      pbVar3 = param_3;\n      pbVar4 = (byte *)"*default*";\n      do {\n        if (iVar2 == 0) break;\n        iVar2 = iVar2 + -1;\n        bVar5 = *pbVar3 < *pbVar4;\n        bVar6 = *pbVar3 == *pbVar4;\n        pbVar3 = pbVar3 + (uint)bVar7 * -2 + 1;\n        pbVar4 = pbVar4 + (uint)bVar7 * -2 + 1;\n      } while (bVar6);\n      if ((!bVar5 && !bVar6) == bVar5) {\n        *param_1 = uVar1;\n        goto LAB_00022a8f;\n      }\n    }\n  }\n  uVar1 = FUN_00021900(param_3,0);\n  *param_1 = uVar1;\nLAB_00022a8f:\n  if (((param_5 & 1) != 0) && (param_4 != 0)) {\n    uVar1 = dcgettext(0,"%X%P:%pS: section has both a load address and a load region\n",5);\n    FUN_000316f0(uVar1,0);\n    return;\n  }\n  return;\n}\n\n" (function_definition "void __regparm3\nFUN_00022a20(undefined4 *param_1,undefined4 *param_2,byte *param_3,int param_4,byte param_5,\n            byte param_6)\n\n{\n  undefined4 uVar1;\n  int iVar2;\n  byte *pbVar3;\n  byte *pbVar4;\n  bool bVar5;\n  bool bVar6;\n  byte bVar7;\n  \n  bVar7 = 0;\n  uVar1 = FUN_00021900(param_4,0);\n  *param_2 = uVar1;\n  if ((param_6 & 1) == 0) {\n    bVar5 = false;\n    bVar6 = param_4 == 0;\n    if (!bVar6) {\n      iVar2 = 10;\n      pbVar3 = param_3;\n      pbVar4 = (byte *)"*default*";\n      do {\n        if (iVar2 == 0) break;\n        iVar2 = iVar2 + -1;\n        bVar5 = *pbVar3 < *pbVar4;\n        bVar6 = *pbVar3 == *pbVar4;\n        pbVar3 = pbVar3 + (uint)bVar7 * -2 + 1;\n        pbVar4 = pbVar4 + (uint)bVar7 * -2 + 1;\n      } while (bVar6);\n      if ((!bVar5 && !bVar6) == bVar5) {\n        *param_1 = uVar1;\n        goto LAB_00022a8f;\n      }\n    }\n  }\n  uVar1 = FUN_00021900(param_3,0);\n  *param_1 = uVar1;\nLAB_00022a8f:\n  if (((param_5 & 1) != 0) && (param_4 != 0)) {\n    uVar1 = dcgettext(0,"%X%P:%pS: section has both a load address and a load region\n",5);\n    FUN_000316f0(uVar1,0);\n    return;\n  }\n  return;\n}" primitive_type (ERROR "__regparm3" identifier) (function_declarator "FUN_00022a20(undefined4 *param_1,undefined4 *param_2,byte *param_3,int param_4,byte param_5,\n            byte param_6)" identifier (parameter_list "(undefined4 *param_1,undefined4 *param_2,byte *param_3,int param_4,byte param_5,\n            byte param_6)" ( (parameter_declaration "undefined4 *param_1" type_identifier (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "undefined4 *param_2" type_identifier (pointer_declarator "*param_2" * identifier)) , (parameter_declaration "byte *param_3" type_identifier (pointer_declarator "*param_3" * identifier)) , (parameter_declaration "int param_4" primitive_type identifier) , (parameter_declaration "byte param_5" type_identifier identifier) , (parameter_declaration "byte param_6" type_identifier identifier) ))) (compound_statement "{\n  undefined4 uVar1;\n  int iVar2;\n  byte *pbVar3;\n  byte *pbVar4;\n  bool bVar5;\n  bool bVar6;\n  byte bVar7;\n  \n  bVar7 = 0;\n  uVar1 = FUN_00021900(param_4,0);\n  *param_2 = uVar1;\n  if ((param_6 & 1) == 0) {\n    bVar5 = false;\n    bVar6 = param_4 == 0;\n    if (!bVar6) {\n      iVar2 = 10;\n      pbVar3 = param_3;\n      pbVar4 = (byte *)"*default*";\n      do {\n        if (iVar2 == 0) break;\n        iVar2 = iVar2 + -1;\n        bVar5 = *pbVar3 < *pbVar4;\n        bVar6 = *pbVar3 == *pbVar4;\n        pbVar3 = pbVar3 + (uint)bVar7 * -2 + 1;\n        pbVar4 = pbVar4 + (uint)bVar7 * -2 + 1;\n      } while (bVar6);\n      if ((!bVar5 && !bVar6) == bVar5) {\n        *param_1 = uVar1;\n        goto LAB_00022a8f;\n      }\n    }\n  }\n  uVar1 = FUN_00021900(param_3,0);\n  *param_1 = uVar1;\nLAB_00022a8f:\n  if (((param_5 & 1) != 0) && (param_4 != 0)) {\n    uVar1 = dcgettext(0,"%X%P:%pS: section has both a load address and a load region\n",5);\n    FUN_000316f0(uVar1,0);\n    return;\n  }\n  return;\n}" { (declaration "undefined4 uVar1;" type_identifier identifier ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "byte *pbVar3;" type_identifier (pointer_declarator "*pbVar3" * identifier) ;) (declaration "byte *pbVar4;" type_identifier (pointer_declarator "*pbVar4" * identifier) ;) (declaration "bool bVar5;" primitive_type identifier ;) (declaration "bool bVar6;" primitive_type identifier ;) (declaration "byte bVar7;" type_identifier identifier ;) (expression_statement "bVar7 = 0;" (assignment_expression "bVar7 = 0" identifier = number_literal) ;) (expression_statement "uVar1 = FUN_00021900(param_4,0);" (assignment_expression "uVar1 = FUN_00021900(param_4,0)" identifier = (call_expression "FUN_00021900(param_4,0)" identifier (argument_list "(param_4,0)" ( identifier , number_literal )))) ;) (expression_statement "*param_2 = uVar1;" (assignment_expression "*param_2 = uVar1" (pointer_expression "*param_2" * identifier) = identifier) ;) (if_statement "if ((param_6 & 1) == 0) {\n    bVar5 = false;\n    bVar6 = param_4 == 0;\n    if (!bVar6) {\n      iVar2 = 10;\n      pbVar3 = param_3;\n      pbVar4 = (byte *)"*default*";\n      do {\n        if (iVar2 == 0) break;\n        iVar2 = iVar2 + -1;\n        bVar5 = *pbVar3 < *pbVar4;\n        bVar6 = *pbVar3 == *pbVar4;\n        pbVar3 = pbVar3 + (uint)bVar7 * -2 + 1;\n        pbVar4 = pbVar4 + (uint)bVar7 * -2 + 1;\n      } while (bVar6);\n      if ((!bVar5 && !bVar6) == bVar5) {\n        *param_1 = uVar1;\n        goto LAB_00022a8f;\n      }\n    }\n  }" if (parenthesized_expression "((param_6 & 1) == 0)" ( (binary_expression "(param_6 & 1) == 0" (parenthesized_expression "(param_6 & 1)" ( (binary_expression "param_6 & 1" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n    bVar5 = false;\n    bVar6 = param_4 == 0;\n    if (!bVar6) {\n      iVar2 = 10;\n      pbVar3 = param_3;\n      pbVar4 = (byte *)"*default*";\n      do {\n        if (iVar2 == 0) break;\n        iVar2 = iVar2 + -1;\n        bVar5 = *pbVar3 < *pbVar4;\n        bVar6 = *pbVar3 == *pbVar4;\n        pbVar3 = pbVar3 + (uint)bVar7 * -2 + 1;\n        pbVar4 = pbVar4 + (uint)bVar7 * -2 + 1;\n      } while (bVar6);\n      if ((!bVar5 && !bVar6) == bVar5) {\n        *param_1 = uVar1;\n        goto LAB_00022a8f;\n      }\n    }\n  }" { (expression_statement "bVar5 = false;" (assignment_expression "bVar5 = false" identifier = false) ;) (expression_statement "bVar6 = param_4 == 0;" (assignment_expression "bVar6 = param_4 == 0" identifier = (binary_expression "param_4 == 0" identifier == number_literal)) ;) (if_statement "if (!bVar6) {\n      iVar2 = 10;\n      pbVar3 = param_3;\n      pbVar4 = (byte *)"*default*";\n      do {\n        if (iVar2 == 0) break;\n        iVar2 = iVar2 + -1;\n        bVar5 = *pbVar3 < *pbVar4;\n        bVar6 = *pbVar3 == *pbVar4;\n        pbVar3 = pbVar3 + (uint)bVar7 * -2 + 1;\n        pbVar4 = pbVar4 + (uint)bVar7 * -2 + 1;\n      } while (bVar6);\n      if ((!bVar5 && !bVar6) == bVar5) {\n        *param_1 = uVar1;\n        goto LAB_00022a8f;\n      }\n    }" if (parenthesized_expression "(!bVar6)" ( (unary_expression "!bVar6" ! identifier) )) (compound_statement "{\n      iVar2 = 10;\n      pbVar3 = param_3;\n      pbVar4 = (byte *)"*default*";\n      do {\n        if (iVar2 == 0) break;\n        iVar2 = iVar2 + -1;\n        bVar5 = *pbVar3 < *pbVar4;\n        bVar6 = *pbVar3 == *pbVar4;\n        pbVar3 = pbVar3 + (uint)bVar7 * -2 + 1;\n        pbVar4 = pbVar4 + (uint)bVar7 * -2 + 1;\n      } while (bVar6);\n      if ((!bVar5 && !bVar6) == bVar5) {\n        *param_1 = uVar1;\n        goto LAB_00022a8f;\n      }\n    }" { (expression_statement "iVar2 = 10;" (assignment_expression "iVar2 = 10" identifier = number_literal) ;) (expression_statement "pbVar3 = param_3;" (assignment_expression "pbVar3 = param_3" identifier = identifier) ;) (expression_statement "pbVar4 = (byte *)"*default*";" (assignment_expression "pbVar4 = (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        bVar5 = *pbVar3 < *pbVar4;\n        bVar6 = *pbVar3 == *pbVar4;\n        pbVar3 = pbVar3 + (uint)bVar7 * -2 + 1;\n        pbVar4 = pbVar4 + (uint)bVar7 * -2 + 1;\n      } while (bVar6);" do (compound_statement "{\n        if (iVar2 == 0) break;\n        iVar2 = iVar2 + -1;\n        bVar5 = *pbVar3 < *pbVar4;\n        bVar6 = *pbVar3 == *pbVar4;\n        pbVar3 = pbVar3 + (uint)bVar7 * -2 + 1;\n        pbVar4 = pbVar4 + (uint)bVar7 * -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 "bVar5 = *pbVar3 < *pbVar4;" (assignment_expression "bVar5 = *pbVar3 < *pbVar4" identifier = (binary_expression "*pbVar3 < *pbVar4" (pointer_expression "*pbVar3" * identifier) < (pointer_expression "*pbVar4" * identifier))) ;) (expression_statement "bVar6 = *pbVar3 == *pbVar4;" (assignment_expression "bVar6 = *pbVar3 == *pbVar4" identifier = (binary_expression "*pbVar3 == *pbVar4" (pointer_expression "*pbVar3" * identifier) == (pointer_expression "*pbVar4" * identifier))) ;) (expression_statement "pbVar3 = pbVar3 + (uint)bVar7 * -2 + 1;" (assignment_expression "pbVar3 = pbVar3 + (uint)bVar7 * -2 + 1" identifier = (binary_expression "pbVar3 + (uint)bVar7 * -2 + 1" (binary_expression "pbVar3 + (uint)bVar7 * -2" identifier + (binary_expression "(uint)bVar7 * -2" (cast_expression "(uint)bVar7" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) (expression_statement "pbVar4 = pbVar4 + (uint)bVar7 * -2 + 1;" (assignment_expression "pbVar4 = pbVar4 + (uint)bVar7 * -2 + 1" identifier = (binary_expression "pbVar4 + (uint)bVar7 * -2 + 1" (binary_expression "pbVar4 + (uint)bVar7 * -2" identifier + (binary_expression "(uint)bVar7 * -2" (cast_expression "(uint)bVar7" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) }) while (parenthesized_expression "(bVar6)" ( identifier )) ;) (if_statement "if ((!bVar5 && !bVar6) == bVar5) {\n        *param_1 = uVar1;\n        goto LAB_00022a8f;\n      }" if (parenthesized_expression "((!bVar5 && !bVar6) == bVar5)" ( (binary_expression "(!bVar5 && !bVar6) == bVar5" (parenthesized_expression "(!bVar5 && !bVar6)" ( (binary_expression "!bVar5 && !bVar6" (unary_expression "!bVar5" ! identifier) && (unary_expression "!bVar6" ! identifier)) )) == identifier) )) (compound_statement "{\n        *param_1 = uVar1;\n        goto LAB_00022a8f;\n      }" { (expression_statement "*param_1 = uVar1;" (assignment_expression "*param_1 = uVar1" (pointer_expression "*param_1" * identifier) = identifier) ;) (goto_statement "goto LAB_00022a8f;" goto statement_identifier ;) })) })) })) (expression_statement "uVar1 = FUN_00021900(param_3,0);" (assignment_expression "uVar1 = FUN_00021900(param_3,0)" identifier = (call_expression "FUN_00021900(param_3,0)" identifier (argument_list "(param_3,0)" ( identifier , number_literal )))) ;) (expression_statement "*param_1 = uVar1;" (assignment_expression "*param_1 = uVar1" (pointer_expression "*param_1" * identifier) = identifier) ;) (labeled_statement "LAB_00022a8f:\n  if (((param_5 & 1) != 0) && (param_4 != 0)) {\n    uVar1 = dcgettext(0,"%X%P:%pS: section has both a load address and a load region\n",5);\n    FUN_000316f0(uVar1,0);\n    return;\n  }" statement_identifier : (if_statement "if (((param_5 & 1) != 0) && (param_4 != 0)) {\n    uVar1 = dcgettext(0,"%X%P:%pS: section has both a load address and a load region\n",5);\n    FUN_000316f0(uVar1,0);\n    return;\n  }" if (parenthesized_expression "(((param_5 & 1) != 0) && (param_4 != 0))" ( (binary_expression "((param_5 & 1) != 0) && (param_4 != 0)" (parenthesized_expression "((param_5 & 1) != 0)" ( (binary_expression "(param_5 & 1) != 0" (parenthesized_expression "(param_5 & 1)" ( (binary_expression "param_5 & 1" identifier & number_literal) )) != number_literal) )) && (parenthesized_expression "(param_4 != 0)" ( (binary_expression "param_4 != 0" identifier != number_literal) ))) )) (compound_statement "{\n    uVar1 = dcgettext(0,"%X%P:%pS: section has both a load address and a load region\n",5);\n    FUN_000316f0(uVar1,0);\n    return;\n  }" { (expression_statement "uVar1 = dcgettext(0,"%X%P:%pS: section has both a load address and a load region\n",5);" (assignment_expression "uVar1 = dcgettext(0,"%X%P:%pS: section has both a load address and a load region\n",5)" identifier = (call_expression "dcgettext(0,"%X%P:%pS: section has both a load address and a load region\n",5)" identifier (argument_list "(0,"%X%P:%pS: section has both a load address and a load region\n",5)" ( number_literal , (string_literal ""%X%P:%pS: section has both a load address and a load region\n"" " string_content escape_sequence ") , number_literal )))) ;) (expression_statement "FUN_000316f0(uVar1,0);" (call_expression "FUN_000316f0(uVar1,0)" identifier (argument_list "(uVar1,0)" ( identifier , number_literal ))) ;) (return_statement "return;" return ;) }))) (return_statement "return;" return ;) })))
(translation_unit (function_definition TYPE (ERROR IDENT) (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) ))) (compound_statement { (declaration TYPE IDENT ;) (declaration TYPE 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) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , LIT )))) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = BOOL) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT == LIT)) ;) (if_statement if (parenthesized_expression ( (unary_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 (pointer_expression * IDENT) = IDENT) ;) (goto_statement goto statement_identifier ;) })) })) })) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , LIT )))) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) != LIT) )) && (parenthesized_expression ( (binary_expression IDENT != LIT) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( LIT , (string_literal " string_content escape_sequence ") , LIT )))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , LIT ))) ;) (return_statement return ;) }))) (return_statement return ;) })))
(function_definition "void __regparm3\nFUN_00022a20(undefined4 *param_1,undefined4 *param_2,byte *param_3,int param_4,byte param_5,\n            byte param_6)\n\n{\n  undefined4 uVar1;\n  int iVar2;\n  byte *pbVar3;\n  byte *pbVar4;\n  bool bVar5;\n  bool bVar6;\n  byte bVar7;\n  \n  bVar7 = 0;\n  uVar1 = FUN_00021900(param_4,0);\n  *param_2 = uVar1;\n  if ((param_6 & 1) == 0) {\n    bVar5 = false;\n    bVar6 = param_4 == 0;\n    if (!bVar6) {\n      iVar2 = 10;\n      pbVar3 = param_3;\n      pbVar4 = (byte *)"*default*";\n      do {\n        if (iVar2 == 0) break;\n        iVar2 = iVar2 + -1;\n        bVar5 = *pbVar3 < *pbVar4;\n        bVar6 = *pbVar3 == *pbVar4;\n        pbVar3 = pbVar3 + (uint)bVar7 * -2 + 1;\n        pbVar4 = pbVar4 + (uint)bVar7 * -2 + 1;\n      } while (bVar6);\n      if ((!bVar5 && !bVar6) == bVar5) {\n        *param_1 = uVar1;\n        goto LAB_00022a8f;\n      }\n    }\n  }\n  uVar1 = FUN_00021900(param_3,0);\n  *param_1 = uVar1;\nLAB_00022a8f:\n  if (((param_5 & 1) != 0) && (param_4 != 0)) {\n    uVar1 = dcgettext(0,"%X%P:%pS: section has both a load address and a load region\n",5);\n    FUN_000316f0(uVar1,0);\n    return;\n  }\n  return;\n}" (primitive_type "void") (ERROR "__regparm3" (identifier "__regparm3")) (function_declarator "FUN_00022a20(undefined4 *param_1,undefined4 *param_2,byte *param_3,int param_4,byte param_5,\n            byte param_6)" (identifier "FUN_00022a20") (parameter_list "(undefined4 *param_1,undefined4 *param_2,byte *param_3,int param_4,byte param_5,\n            byte param_6)" (( "(") (parameter_declaration "undefined4 *param_1" (type_identifier "undefined4") (pointer_declarator "*param_1" (* "*") (identifier "param_1"))) (, ",") (parameter_declaration "undefined4 *param_2" (type_identifier "undefined4") (pointer_declarator "*param_2" (* "*") (identifier "param_2"))) (, ",") (parameter_declaration "byte *param_3" (type_identifier "byte") (pointer_declarator "*param_3" (* "*") (identifier "param_3"))) (, ",") (parameter_declaration "int param_4" (primitive_type "int") (identifier "param_4")) (, ",") (parameter_declaration "byte param_5" (type_identifier "byte") (identifier "param_5")) (, ",") (parameter_declaration "byte param_6" (type_identifier "byte") (identifier "param_6")) () ")"))) (compound_statement "{\n  undefined4 uVar1;\n  int iVar2;\n  byte *pbVar3;\n  byte *pbVar4;\n  bool bVar5;\n  bool bVar6;\n  byte bVar7;\n  \n  bVar7 = 0;\n  uVar1 = FUN_00021900(param_4,0);\n  *param_2 = uVar1;\n  if ((param_6 & 1) == 0) {\n    bVar5 = false;\n    bVar6 = param_4 == 0;\n    if (!bVar6) {\n      iVar2 = 10;\n      pbVar3 = param_3;\n      pbVar4 = (byte *)"*default*";\n      do {\n        if (iVar2 == 0) break;\n        iVar2 = iVar2 + -1;\n        bVar5 = *pbVar3 < *pbVar4;\n        bVar6 = *pbVar3 == *pbVar4;\n        pbVar3 = pbVar3 + (uint)bVar7 * -2 + 1;\n        pbVar4 = pbVar4 + (uint)bVar7 * -2 + 1;\n      } while (bVar6);\n      if ((!bVar5 && !bVar6) == bVar5) {\n        *param_1 = uVar1;\n        goto LAB_00022a8f;\n      }\n    }\n  }\n  uVar1 = FUN_00021900(param_3,0);\n  *param_1 = uVar1;\nLAB_00022a8f:\n  if (((param_5 & 1) != 0) && (param_4 != 0)) {\n    uVar1 = dcgettext(0,"%X%P:%pS: section has both a load address and a load region\n",5);\n    FUN_000316f0(uVar1,0);\n    return;\n  }\n  return;\n}" ({ "{") (declaration "undefined4 uVar1;" (type_identifier "undefined4") (identifier "uVar1") (; ";")) (declaration "int iVar2;" (primitive_type "int") (identifier "iVar2") (; ";")) (declaration "byte *pbVar3;" (type_identifier "byte") (pointer_declarator "*pbVar3" (* "*") (identifier "pbVar3")) (; ";")) (declaration "byte *pbVar4;" (type_identifier "byte") (pointer_declarator "*pbVar4" (* "*") (identifier "pbVar4")) (; ";")) (declaration "bool bVar5;" (primitive_type "bool") (identifier "bVar5") (; ";")) (declaration "bool bVar6;" (primitive_type "bool") (identifier "bVar6") (; ";")) (declaration "byte bVar7;" (type_identifier "byte") (identifier "bVar7") (; ";")) (expression_statement "bVar7 = 0;" (assignment_expression "bVar7 = 0" (identifier "bVar7") (= "=") (number_literal "0")) (; ";")) (expression_statement "uVar1 = FUN_00021900(param_4,0);" (assignment_expression "uVar1 = FUN_00021900(param_4,0)" (identifier "uVar1") (= "=") (call_expression "FUN_00021900(param_4,0)" (identifier "FUN_00021900") (argument_list "(param_4,0)" (( "(") (identifier "param_4") (, ",") (number_literal "0") () ")")))) (; ";")) (expression_statement "*param_2 = uVar1;" (assignment_expression "*param_2 = uVar1" (pointer_expression "*param_2" (* "*") (identifier "param_2")) (= "=") (identifier "uVar1")) (; ";")) (if_statement "if ((param_6 & 1) == 0) {\n    bVar5 = false;\n    bVar6 = param_4 == 0;\n    if (!bVar6) {\n      iVar2 = 10;\n      pbVar3 = param_3;\n      pbVar4 = (byte *)"*default*";\n      do {\n        if (iVar2 == 0) break;\n        iVar2 = iVar2 + -1;\n        bVar5 = *pbVar3 < *pbVar4;\n        bVar6 = *pbVar3 == *pbVar4;\n        pbVar3 = pbVar3 + (uint)bVar7 * -2 + 1;\n        pbVar4 = pbVar4 + (uint)bVar7 * -2 + 1;\n      } while (bVar6);\n      if ((!bVar5 && !bVar6) == bVar5) {\n        *param_1 = uVar1;\n        goto LAB_00022a8f;\n      }\n    }\n  }" (if "if") (parenthesized_expression "((param_6 & 1) == 0)" (( "(") (binary_expression "(param_6 & 1) == 0" (parenthesized_expression "(param_6 & 1)" (( "(") (binary_expression "param_6 & 1" (identifier "param_6") (& "&") (number_literal "1")) () ")")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n    bVar5 = false;\n    bVar6 = param_4 == 0;\n    if (!bVar6) {\n      iVar2 = 10;\n      pbVar3 = param_3;\n      pbVar4 = (byte *)"*default*";\n      do {\n        if (iVar2 == 0) break;\n        iVar2 = iVar2 + -1;\n        bVar5 = *pbVar3 < *pbVar4;\n        bVar6 = *pbVar3 == *pbVar4;\n        pbVar3 = pbVar3 + (uint)bVar7 * -2 + 1;\n        pbVar4 = pbVar4 + (uint)bVar7 * -2 + 1;\n      } while (bVar6);\n      if ((!bVar5 && !bVar6) == bVar5) {\n        *param_1 = uVar1;\n        goto LAB_00022a8f;\n      }\n    }\n  }" ({ "{") (expression_statement "bVar5 = false;" (assignment_expression "bVar5 = false" (identifier "bVar5") (= "=") (false "false")) (; ";")) (expression_statement "bVar6 = param_4 == 0;" (assignment_expression "bVar6 = param_4 == 0" (identifier "bVar6") (= "=") (binary_expression "param_4 == 0" (identifier "param_4") (== "==") (number_literal "0"))) (; ";")) (if_statement "if (!bVar6) {\n      iVar2 = 10;\n      pbVar3 = param_3;\n      pbVar4 = (byte *)"*default*";\n      do {\n        if (iVar2 == 0) break;\n        iVar2 = iVar2 + -1;\n        bVar5 = *pbVar3 < *pbVar4;\n        bVar6 = *pbVar3 == *pbVar4;\n        pbVar3 = pbVar3 + (uint)bVar7 * -2 + 1;\n        pbVar4 = pbVar4 + (uint)bVar7 * -2 + 1;\n      } while (bVar6);\n      if ((!bVar5 && !bVar6) == bVar5) {\n        *param_1 = uVar1;\n        goto LAB_00022a8f;\n      }\n    }" (if "if") (parenthesized_expression "(!bVar6)" (( "(") (unary_expression "!bVar6" (! "!") (identifier "bVar6")) () ")")) (compound_statement "{\n      iVar2 = 10;\n      pbVar3 = param_3;\n      pbVar4 = (byte *)"*default*";\n      do {\n        if (iVar2 == 0) break;\n        iVar2 = iVar2 + -1;\n        bVar5 = *pbVar3 < *pbVar4;\n        bVar6 = *pbVar3 == *pbVar4;\n        pbVar3 = pbVar3 + (uint)bVar7 * -2 + 1;\n        pbVar4 = pbVar4 + (uint)bVar7 * -2 + 1;\n      } while (bVar6);\n      if ((!bVar5 && !bVar6) == bVar5) {\n        *param_1 = uVar1;\n        goto LAB_00022a8f;\n      }\n    }" ({ "{") (expression_statement "iVar2 = 10;" (assignment_expression "iVar2 = 10" (identifier "iVar2") (= "=") (number_literal "10")) (; ";")) (expression_statement "pbVar3 = param_3;" (assignment_expression "pbVar3 = param_3" (identifier "pbVar3") (= "=") (identifier "param_3")) (; ";")) (expression_statement "pbVar4 = (byte *)"*default*";" (assignment_expression "pbVar4 = (byte *)"*default*"" (identifier "pbVar4") (= "=") (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        bVar5 = *pbVar3 < *pbVar4;\n        bVar6 = *pbVar3 == *pbVar4;\n        pbVar3 = pbVar3 + (uint)bVar7 * -2 + 1;\n        pbVar4 = pbVar4 + (uint)bVar7 * -2 + 1;\n      } while (bVar6);" (do "do") (compound_statement "{\n        if (iVar2 == 0) break;\n        iVar2 = iVar2 + -1;\n        bVar5 = *pbVar3 < *pbVar4;\n        bVar6 = *pbVar3 == *pbVar4;\n        pbVar3 = pbVar3 + (uint)bVar7 * -2 + 1;\n        pbVar4 = pbVar4 + (uint)bVar7 * -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 "bVar5 = *pbVar3 < *pbVar4;" (assignment_expression "bVar5 = *pbVar3 < *pbVar4" (identifier "bVar5") (= "=") (binary_expression "*pbVar3 < *pbVar4" (pointer_expression "*pbVar3" (* "*") (identifier "pbVar3")) (< "<") (pointer_expression "*pbVar4" (* "*") (identifier "pbVar4")))) (; ";")) (expression_statement "bVar6 = *pbVar3 == *pbVar4;" (assignment_expression "bVar6 = *pbVar3 == *pbVar4" (identifier "bVar6") (= "=") (binary_expression "*pbVar3 == *pbVar4" (pointer_expression "*pbVar3" (* "*") (identifier "pbVar3")) (== "==") (pointer_expression "*pbVar4" (* "*") (identifier "pbVar4")))) (; ";")) (expression_statement "pbVar3 = pbVar3 + (uint)bVar7 * -2 + 1;" (assignment_expression "pbVar3 = pbVar3 + (uint)bVar7 * -2 + 1" (identifier "pbVar3") (= "=") (binary_expression "pbVar3 + (uint)bVar7 * -2 + 1" (binary_expression "pbVar3 + (uint)bVar7 * -2" (identifier "pbVar3") (+ "+") (binary_expression "(uint)bVar7 * -2" (cast_expression "(uint)bVar7" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "bVar7")) (* "*") (number_literal "-2"))) (+ "+") (number_literal "1"))) (; ";")) (expression_statement "pbVar4 = pbVar4 + (uint)bVar7 * -2 + 1;" (assignment_expression "pbVar4 = pbVar4 + (uint)bVar7 * -2 + 1" (identifier "pbVar4") (= "=") (binary_expression "pbVar4 + (uint)bVar7 * -2 + 1" (binary_expression "pbVar4 + (uint)bVar7 * -2" (identifier "pbVar4") (+ "+") (binary_expression "(uint)bVar7 * -2" (cast_expression "(uint)bVar7" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "bVar7")) (* "*") (number_literal "-2"))) (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(bVar6)" (( "(") (identifier "bVar6") () ")")) (; ";")) (if_statement "if ((!bVar5 && !bVar6) == bVar5) {\n        *param_1 = uVar1;\n        goto LAB_00022a8f;\n      }" (if "if") (parenthesized_expression "((!bVar5 && !bVar6) == bVar5)" (( "(") (binary_expression "(!bVar5 && !bVar6) == bVar5" (parenthesized_expression "(!bVar5 && !bVar6)" (( "(") (binary_expression "!bVar5 && !bVar6" (unary_expression "!bVar5" (! "!") (identifier "bVar5")) (&& "&&") (unary_expression "!bVar6" (! "!") (identifier "bVar6"))) () ")")) (== "==") (identifier "bVar5")) () ")")) (compound_statement "{\n        *param_1 = uVar1;\n        goto LAB_00022a8f;\n      }" ({ "{") (expression_statement "*param_1 = uVar1;" (assignment_expression "*param_1 = uVar1" (pointer_expression "*param_1" (* "*") (identifier "param_1")) (= "=") (identifier "uVar1")) (; ";")) (goto_statement "goto LAB_00022a8f;" (goto "goto") (statement_identifier "LAB_00022a8f") (; ";")) (} "}"))) (} "}"))) (} "}"))) (expression_statement "uVar1 = FUN_00021900(param_3,0);" (assignment_expression "uVar1 = FUN_00021900(param_3,0)" (identifier "uVar1") (= "=") (call_expression "FUN_00021900(param_3,0)" (identifier "FUN_00021900") (argument_list "(param_3,0)" (( "(") (identifier "param_3") (, ",") (number_literal "0") () ")")))) (; ";")) (expression_statement "*param_1 = uVar1;" (assignment_expression "*param_1 = uVar1" (pointer_expression "*param_1" (* "*") (identifier "param_1")) (= "=") (identifier "uVar1")) (; ";")) (labeled_statement "LAB_00022a8f:\n  if (((param_5 & 1) != 0) && (param_4 != 0)) {\n    uVar1 = dcgettext(0,"%X%P:%pS: section has both a load address and a load region\n",5);\n    FUN_000316f0(uVar1,0);\n    return;\n  }" (statement_identifier "LAB_00022a8f") (: ":") (if_statement "if (((param_5 & 1) != 0) && (param_4 != 0)) {\n    uVar1 = dcgettext(0,"%X%P:%pS: section has both a load address and a load region\n",5);\n    FUN_000316f0(uVar1,0);\n    return;\n  }" (if "if") (parenthesized_expression "(((param_5 & 1) != 0) && (param_4 != 0))" (( "(") (binary_expression "((param_5 & 1) != 0) && (param_4 != 0)" (parenthesized_expression "((param_5 & 1) != 0)" (( "(") (binary_expression "(param_5 & 1) != 0" (parenthesized_expression "(param_5 & 1)" (( "(") (binary_expression "param_5 & 1" (identifier "param_5") (& "&") (number_literal "1")) () ")")) (!= "!=") (number_literal "0")) () ")")) (&& "&&") (parenthesized_expression "(param_4 != 0)" (( "(") (binary_expression "param_4 != 0" (identifier "param_4") (!= "!=") (number_literal "0")) () ")"))) () ")")) (compound_statement "{\n    uVar1 = dcgettext(0,"%X%P:%pS: section has both a load address and a load region\n",5);\n    FUN_000316f0(uVar1,0);\n    return;\n  }" ({ "{") (expression_statement "uVar1 = dcgettext(0,"%X%P:%pS: section has both a load address and a load region\n",5);" (assignment_expression "uVar1 = dcgettext(0,"%X%P:%pS: section has both a load address and a load region\n",5)" (identifier "uVar1") (= "=") (call_expression "dcgettext(0,"%X%P:%pS: section has both a load address and a load region\n",5)" (identifier "dcgettext") (argument_list "(0,"%X%P:%pS: section has both a load address and a load region\n",5)" (( "(") (number_literal "0") (, ",") (string_literal ""%X%P:%pS: section has both a load address and a load region\n"" (" """) (string_content "%X%P:%pS: section has both a load address and a load region") (escape_sequence "\n") (" """)) (, ",") (number_literal "5") () ")")))) (; ";")) (expression_statement "FUN_000316f0(uVar1,0);" (call_expression "FUN_000316f0(uVar1,0)" (identifier "FUN_000316f0") (argument_list "(uVar1,0)" (( "(") (identifier "uVar1") (, ",") (number_literal "0") () ")"))) (; ";")) (return_statement "return;" (return "return") (; ";")) (} "}")))) (return_statement "return;" (return "return") (; ";")) (} "}")))

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

void __regparm3
function_1(type_1 **region,type_1 **lma_region,char *memspec
                ,char *var_3,type_2 var_8,type_2 var_2)

{
  type_1 *plVar1;
  char *fmt;
  int var_4;
  type_3 *var_5;
  type_3 *var_6;
  bool var_7;
  bool bVar6;
  type_3 bVar7;
  
  bVar7 = 0;
  plVar1 = var_1(var_3,0);
  *lma_region = plVar1;
  if ((var_2 & 1U) == 0) {
    var_7 = false;
    bVar6 = var_3 == (char *)0x0;
    if (!bVar6) {
      var_4 = 10;
      var_5 = (type_3 *)memspec;
      var_6 = (type_3 *)"*default*";
      do {
        if (var_4 == 0) break;
        var_4 = var_4 + -1;
        var_7 = *var_5 < *var_6;
        bVar6 = *var_5 == *var_6;
        var_5 = var_5 + (type_4)bVar7 * -2 + 1;
        var_6 = var_6 + (type_4)bVar7 * -2 + 1;
      } while (bVar6);
      if ((!var_7 && !bVar6) == var_7) {
        *region = plVar1;
        goto LAB_00022a8f;
      }
    }
  }
  plVar1 = var_1(memspec,0);
  *region = plVar1;
LAB_00022a8f:
  if (((var_8 & 1U) != 0) && (var_3 != (char *)0x0)) {
    fmt = (char *)var_9(0,"%X%P:%pS: section has both a load address and a load region\n",5);
    var_10(fmt,0);
    return;
  }
  return;
}


(translation_unit (function_definition type: (primitive_type) (ERROR (identifier)) declarator: (function_declarator declarator: (identifier) parameters: (parameter_list (parameter_declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (parameter_declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (parameter_declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (parameter_declaration type: (primitive_type) declarator: (identifier)) (parameter_declaration type: (type_identifier) declarator: (identifier)) (parameter_declaration type: (type_identifier) declarator: (identifier)))) body: (compound_statement (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (primitive_type) 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))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier) (number_literal))))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (number_literal))) consequence: (compound_statement (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 (unary_expression argument: (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: (pointer_expression argument: (identifier)) right: (identifier))) (goto_statement label: (statement_identifier)))))))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier) (number_literal))))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (identifier))) (labeled_statement label: (statement_identifier) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (number_literal))) right: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (number_literal) (string_literal (string_content) (escape_sequence)) (number_literal))))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (number_literal)))) (return_statement)))) (return_statement))))

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

void __regparm3
MASKED(undefined4 *param_1,undefined4 *param_2,byte *param_3,int param_4,byte param_5,
            byte param_6)

{
  undefined4 uVar1;
  int iVar2;
  byte *pbVar3;
  byte *pbVar4;
  bool bVar5;
  bool bVar6;
  byte bVar7;
  
  bVar7 = 0;
  uVar1 = FUN_00021900(param_4,0);
  *param_2 = uVar1;
  if ((param_6 & 1) == 0) {
    bVar5 = false;
    bVar6 = param_4 == 0;
    if (!bVar6) {
      iVar2 = 10;
      pbVar3 = param_3;
      pbVar4 = (byte *)"*default*";
      do {
        if (iVar2 == 0) break;
        iVar2 = iVar2 + -1;
        bVar5 = *pbVar3 < *pbVar4;
        bVar6 = *pbVar3 == *pbVar4;
        pbVar3 = pbVar3 + (uint)bVar7 * -2 + 1;
        pbVar4 = pbVar4 + (uint)bVar7 * -2 + 1;
      } while (bVar6);
      if ((!bVar5 && !bVar6) == bVar5) {
        *param_1 = uVar1;
        goto LAB_00022a8f;
      }
    }
  }
  uVar1 = FUN_00021900(param_3,0);
  *param_1 = uVar1;
LAB_00022a8f:
  if (((param_5 & 1) != 0) && (param_4 != 0)) {
    uVar1 = dcgettext(0,"%X%P:%pS: section has both a load address and a load region\n",5);
    FUN_000316f0(uVar1,0);
    return;
  }
  return;
}

