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

wchar_t __regparm3 offset_from_vma(Filedata *filedata,bfd_vma vma,bfd_size_type size)

{
  int iVar1;
  uint uVar2;
  longlong lVar3;
  Elf_Internal_Phdr *pEVar4;
  char *message;
  bfd_boolean bVar5;
  uint in_ECX;
  uint uVar6;
  char *in_EDX;
  Elf_Internal_Phdr *pEVar7;
  uint uVar8;
  uint uVar9;
  char *pcVar10;
  
  pEVar4 = filedata->program_headers;
  if (pEVar4 == (Elf_Internal_Phdr *)0x0) {
    bVar5 = get_program_headers(filedata);
    if (bVar5 == 0) {
      pcVar10 = "Cannot interpret virtual addresses without program headers.\n";
      message = (char *)dcgettext(0,"Cannot interpret virtual addresses without program headers.\n",
                                  5);
      goto LAB_00026eab;
    }
    pEVar4 = filedata->program_headers;
  }
  pEVar7 = pEVar4 + (filedata->file_header).e_phnum;
  if (pEVar4 < pEVar7) {
    lVar3 = vma + CONCAT44(in_ECX,in_EDX);
    uVar8 = (uint)((ulonglong)lVar3 >> 0x20);
    do {
      if (pEVar4->p_type == 1) {
        iVar1 = (int)pEVar4->p_align;
        uVar9 = *(uint *)((int)&pEVar4->p_vaddr + 4);
        uVar2 = (uint)pEVar4->p_vaddr;
        uVar6 = -(*(int *)((int)&pEVar4->p_align + 4) + (uint)(iVar1 != 0)) & uVar9;
        if ((uVar6 <= in_ECX && (uint)(in_EDX < (char *)(-iVar1 & uVar2)) <= in_ECX - uVar6) &&
           (uVar9 = uVar9 + *(int *)((int)&pEVar4->p_filesz + 4) +
                    (uint)CARRY4(uVar2,(uint)pEVar4->p_filesz),
           uVar8 <= uVar9 && (uint)(uVar2 + (int)pEVar4->p_filesz < (uint)lVar3) <= uVar9 - uVar8))
        {
          return (wchar_t)(in_EDX + ((int)pEVar4->p_offset - uVar2));
        }
      }
      pEVar4 = pEVar4 + 1;
    } while (pEVar4 < pEVar7);
  }
  message = (char *)dcgettext(0,"Virtual address 0x%lx not located in any PT_LOAD segment.\n",5);
  pcVar10 = in_EDX;
LAB_00026eab:
  warn(message,pcVar10);
  return (wchar_t)in_EDX;
}



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

char * __regparm3 FUN_00026dc0(int param_1,char *param_2,uint param_3,uint param_4,int param_5)

{
  uint uVar1;
  int *piVar2;
  undefined4 uVar3;
  int iVar4;
  uint uVar5;
  int *piVar6;
  uint uVar7;
  char *pcVar8;
  
  piVar2 = *(int **)(param_1 + 0x60);
  if (piVar2 == (int *)0x0) {
    iVar4 = FUN_000269d0();
    if (iVar4 == 0) {
      pcVar8 = "Cannot interpret virtual addresses without program headers.\n";
      uVar3 = dcgettext(0,"Cannot interpret virtual addresses without program headers.\n",5);
      goto LAB_00026eab;
    }
    piVar2 = *(int **)(param_1 + 0x60);
  }
  piVar6 = piVar2 + *(int *)(param_1 + 0x4c) * 0xe;
  if (piVar2 < piVar6) {
    uVar7 = param_5 + param_3 + (uint)CARRY4(param_4,(uint)param_2);
    do {
      if (*piVar2 == 1) {
        uVar1 = piVar2[4];
        uVar5 = -(piVar2[0xd] + (uint)(piVar2[0xc] != 0)) & piVar2[5];
        if ((uVar5 <= param_3 && (uint)(param_2 < (char *)(-piVar2[0xc] & uVar1)) <= param_3 - uVar5
            ) && (uVar5 = piVar2[5] + piVar2[9] + (uint)CARRY4(uVar1,piVar2[8]),
                 uVar7 <= uVar5 &&
                 (uint)((char *)(uVar1 + piVar2[8]) < param_2 + param_4) <= uVar5 - uVar7)) {
          return param_2 + (piVar2[2] - uVar1);
        }
      }
      piVar2 = piVar2 + 0xe;
    } while (piVar2 < piVar6);
  }
  uVar3 = dcgettext(0,"Virtual address 0x%lx not located in any PT_LOAD segment.\n",5);
  pcVar8 = param_2;
LAB_00026eab:
  warn(uVar3,pcVar8);
  return param_2;
}


PUSH EBP
PUSH EDI
PUSH ESI
PUSH EBX
CALL 0x00013f70
ADD EBX,0x8d237
SUB ESP,0x2c
MOV ESI,dword ptr [ESP + 0x40]
MOV EDI,dword ptr [ESP + 0x44]
MOV dword ptr [ESP + 0x1c],EBX
MOV EBX,EAX
MOV EAX,dword ptr [EAX + 0x60]
TEST EAX,EAX
JZ 0x00026ec8
IMUL EBX,dword ptr [EBX + 0x4c],0x38
ADD EBX,EAX
CMP EBX,EAX
JBE 0x00026e77
ADD ESI,EDX
MOV dword ptr [ESP + 0x8],EDX
ADC EDI,ECX
MOV dword ptr [ESP + 0x10],ESI
MOV dword ptr [ESP + 0x14],EDI
MOV dword ptr [ESP + 0xc],ECX
LEA ESI,[ESI]
CMP dword ptr [EAX],0x1
JNZ 0x00026e68
MOV EDX,dword ptr [EAX + 0x30]
MOV ECX,dword ptr [EAX + 0x34]
MOV EBP,dword ptr [EAX + 0x14]
MOV EDI,dword ptr [EAX + 0x10]
NEG EDX
ADC ECX,0x0
MOV ESI,EDX
MOV dword ptr [ESP + 0x4],EBP
MOV EDX,dword ptr [ESP + 0x8]
NEG ECX
AND ECX,dword ptr [ESP + 0x4]
AND ESI,EDI
MOV dword ptr [ESP],EDI
MOV EDI,ECX
MOV ECX,dword ptr [ESP + 0xc]
CMP EDX,ESI
SBB ECX,EDI
JC 0x00026e68
MOV EDX,dword ptr [ESP + 0x10]
MOV ESI,dword ptr [ESP]
MOV EDI,dword ptr [ESP + 0x4]
ADD ESI,dword ptr [EAX + 0x20]
MOV ECX,dword ptr [ESP + 0x14]
ADC EDI,dword ptr [EAX + 0x24]
CMP ESI,EDX
MOV ESI,EDI
SBB ESI,ECX
JNC 0x00026ef0
ADD EAX,0x38
CMP EAX,EBX
JC 0x00026e10
MOV EDX,dword ptr [ESP + 0x8]
MOV ECX,dword ptr [ESP + 0xc]
MOV dword ptr [ESP],EDX
SUB ESP,0x4
MOV dword ptr [ESP + 0x8],ECX
PUSH 0x5
MOV ESI,dword ptr [ESP + 0x24]
LEA EAX,[ESI + 0xfffce874]
MOV EBX,ESI
PUSH EAX
PUSH 0x0
CALL 0x000130f0
POP EDX
POP ECX
MOV EDX,dword ptr [ESP + 0x8]
MOV ECX,dword ptr [ESP + 0xc]
PUSH EDX
MOV dword ptr [ESP + 0xc],EDX
MOV dword ptr [ESP + 0x10],ECX
PUSH EAX
CALL 0x00066db0
MOV EDX,dword ptr [ESP + 0x10]
ADD ESP,0x10
ADD ESP,0x2c
POP EBX
MOV EAX,EDX
POP ESI
POP EDI
POP EBP
RET
MOV EAX,EBX
MOV dword ptr [ESP],EDX
MOV dword ptr [ESP + 0x4],ECX
CALL 0x000269d0
MOV EDX,dword ptr [ESP]
MOV ECX,dword ptr [ESP + 0x4]
TEST EAX,EAX
JZ 0x00026f04
MOV EAX,dword ptr [EBX + 0x60]
JMP 0x00026deb
MOV EDX,dword ptr [ESP + 0x8]
MOV EAX,dword ptr [EAX + 0x8]
SUB EAX,dword ptr [ESP]
ADD ESP,0x2c
POP EBX
ADD EAX,EDX
POP ESI
POP EDI
POP EBP
RET
MOV dword ptr [ESP],EDX
SUB ESP,0x4
MOV dword ptr [ESP + 0x8],ECX
PUSH 0x5
MOV ESI,dword ptr [ESP + 0x24]
LEA EAX,[ESI + 0xfffce834]
MOV EBX,ESI
PUSH EAX
PUSH 0x0
CALL 0x000130f0
MOV dword ptr [ESP],EAX
JMP 0x00026eab
(translation_unit "/* WARNING: Function: __i686.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */\n\nchar * __regparm3 FUN_00026dc0(int param_1,char *param_2,uint param_3,uint param_4,int param_5)\n\n{\n  uint uVar1;\n  int *piVar2;\n  undefined4 uVar3;\n  int iVar4;\n  uint uVar5;\n  int *piVar6;\n  uint uVar7;\n  char *pcVar8;\n  \n  piVar2 = *(int **)(param_1 + 0x60);\n  if (piVar2 == (int *)0x0) {\n    iVar4 = FUN_000269d0();\n    if (iVar4 == 0) {\n      pcVar8 = "Cannot interpret virtual addresses without program headers.\n";\n      uVar3 = dcgettext(0,"Cannot interpret virtual addresses without program headers.\n",5);\n      goto LAB_00026eab;\n    }\n    piVar2 = *(int **)(param_1 + 0x60);\n  }\n  piVar6 = piVar2 + *(int *)(param_1 + 0x4c) * 0xe;\n  if (piVar2 < piVar6) {\n    uVar7 = param_5 + param_3 + (uint)CARRY4(param_4,(uint)param_2);\n    do {\n      if (*piVar2 == 1) {\n        uVar1 = piVar2[4];\n        uVar5 = -(piVar2[0xd] + (uint)(piVar2[0xc] != 0)) & piVar2[5];\n        if ((uVar5 <= param_3 && (uint)(param_2 < (char *)(-piVar2[0xc] & uVar1)) <= param_3 - uVar5\n            ) && (uVar5 = piVar2[5] + piVar2[9] + (uint)CARRY4(uVar1,piVar2[8]),\n                 uVar7 <= uVar5 &&\n                 (uint)((char *)(uVar1 + piVar2[8]) < param_2 + param_4) <= uVar5 - uVar7)) {\n          return param_2 + (piVar2[2] - uVar1);\n        }\n      }\n      piVar2 = piVar2 + 0xe;\n    } while (piVar2 < piVar6);\n  }\n  uVar3 = dcgettext(0,"Virtual address 0x%lx not located in any PT_LOAD segment.\n",5);\n  pcVar8 = param_2;\nLAB_00026eab:\n  warn(uVar3,pcVar8);\n  return param_2;\n}\n\n" comment (function_definition "char * __regparm3 FUN_00026dc0(int param_1,char *param_2,uint param_3,uint param_4,int param_5)\n\n{\n  uint uVar1;\n  int *piVar2;\n  undefined4 uVar3;\n  int iVar4;\n  uint uVar5;\n  int *piVar6;\n  uint uVar7;\n  char *pcVar8;\n  \n  piVar2 = *(int **)(param_1 + 0x60);\n  if (piVar2 == (int *)0x0) {\n    iVar4 = FUN_000269d0();\n    if (iVar4 == 0) {\n      pcVar8 = "Cannot interpret virtual addresses without program headers.\n";\n      uVar3 = dcgettext(0,"Cannot interpret virtual addresses without program headers.\n",5);\n      goto LAB_00026eab;\n    }\n    piVar2 = *(int **)(param_1 + 0x60);\n  }\n  piVar6 = piVar2 + *(int *)(param_1 + 0x4c) * 0xe;\n  if (piVar2 < piVar6) {\n    uVar7 = param_5 + param_3 + (uint)CARRY4(param_4,(uint)param_2);\n    do {\n      if (*piVar2 == 1) {\n        uVar1 = piVar2[4];\n        uVar5 = -(piVar2[0xd] + (uint)(piVar2[0xc] != 0)) & piVar2[5];\n        if ((uVar5 <= param_3 && (uint)(param_2 < (char *)(-piVar2[0xc] & uVar1)) <= param_3 - uVar5\n            ) && (uVar5 = piVar2[5] + piVar2[9] + (uint)CARRY4(uVar1,piVar2[8]),\n                 uVar7 <= uVar5 &&\n                 (uint)((char *)(uVar1 + piVar2[8]) < param_2 + param_4) <= uVar5 - uVar7)) {\n          return param_2 + (piVar2[2] - uVar1);\n        }\n      }\n      piVar2 = piVar2 + 0xe;\n    } while (piVar2 < piVar6);\n  }\n  uVar3 = dcgettext(0,"Virtual address 0x%lx not located in any PT_LOAD segment.\n",5);\n  pcVar8 = param_2;\nLAB_00026eab:\n  warn(uVar3,pcVar8);\n  return param_2;\n}" primitive_type (pointer_declarator "* __regparm3 FUN_00026dc0(int param_1,char *param_2,uint param_3,uint param_4,int param_5)" * (ERROR "__regparm3" identifier) (function_declarator "FUN_00026dc0(int param_1,char *param_2,uint param_3,uint param_4,int param_5)" identifier (parameter_list "(int param_1,char *param_2,uint param_3,uint param_4,int param_5)" ( (parameter_declaration "int param_1" primitive_type identifier) , (parameter_declaration "char *param_2" primitive_type (pointer_declarator "*param_2" * identifier)) , (parameter_declaration "uint param_3" type_identifier identifier) , (parameter_declaration "uint param_4" type_identifier identifier) , (parameter_declaration "int param_5" primitive_type identifier) )))) (compound_statement "{\n  uint uVar1;\n  int *piVar2;\n  undefined4 uVar3;\n  int iVar4;\n  uint uVar5;\n  int *piVar6;\n  uint uVar7;\n  char *pcVar8;\n  \n  piVar2 = *(int **)(param_1 + 0x60);\n  if (piVar2 == (int *)0x0) {\n    iVar4 = FUN_000269d0();\n    if (iVar4 == 0) {\n      pcVar8 = "Cannot interpret virtual addresses without program headers.\n";\n      uVar3 = dcgettext(0,"Cannot interpret virtual addresses without program headers.\n",5);\n      goto LAB_00026eab;\n    }\n    piVar2 = *(int **)(param_1 + 0x60);\n  }\n  piVar6 = piVar2 + *(int *)(param_1 + 0x4c) * 0xe;\n  if (piVar2 < piVar6) {\n    uVar7 = param_5 + param_3 + (uint)CARRY4(param_4,(uint)param_2);\n    do {\n      if (*piVar2 == 1) {\n        uVar1 = piVar2[4];\n        uVar5 = -(piVar2[0xd] + (uint)(piVar2[0xc] != 0)) & piVar2[5];\n        if ((uVar5 <= param_3 && (uint)(param_2 < (char *)(-piVar2[0xc] & uVar1)) <= param_3 - uVar5\n            ) && (uVar5 = piVar2[5] + piVar2[9] + (uint)CARRY4(uVar1,piVar2[8]),\n                 uVar7 <= uVar5 &&\n                 (uint)((char *)(uVar1 + piVar2[8]) < param_2 + param_4) <= uVar5 - uVar7)) {\n          return param_2 + (piVar2[2] - uVar1);\n        }\n      }\n      piVar2 = piVar2 + 0xe;\n    } while (piVar2 < piVar6);\n  }\n  uVar3 = dcgettext(0,"Virtual address 0x%lx not located in any PT_LOAD segment.\n",5);\n  pcVar8 = param_2;\nLAB_00026eab:\n  warn(uVar3,pcVar8);\n  return param_2;\n}" { (declaration "uint uVar1;" type_identifier identifier ;) (declaration "int *piVar2;" primitive_type (pointer_declarator "*piVar2" * identifier) ;) (declaration "undefined4 uVar3;" type_identifier identifier ;) (declaration "int iVar4;" primitive_type identifier ;) (declaration "uint uVar5;" type_identifier identifier ;) (declaration "int *piVar6;" primitive_type (pointer_declarator "*piVar6" * identifier) ;) (declaration "uint uVar7;" type_identifier identifier ;) (declaration "char *pcVar8;" primitive_type (pointer_declarator "*pcVar8" * identifier) ;) (expression_statement "piVar2 = *(int **)(param_1 + 0x60);" (assignment_expression "piVar2 = *(int **)(param_1 + 0x60)" identifier = (pointer_expression "*(int **)(param_1 + 0x60)" * (cast_expression "(int **)(param_1 + 0x60)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x60)" ( (binary_expression "param_1 + 0x60" identifier + number_literal) ))))) ;) (if_statement "if (piVar2 == (int *)0x0) {\n    iVar4 = FUN_000269d0();\n    if (iVar4 == 0) {\n      pcVar8 = "Cannot interpret virtual addresses without program headers.\n";\n      uVar3 = dcgettext(0,"Cannot interpret virtual addresses without program headers.\n",5);\n      goto LAB_00026eab;\n    }\n    piVar2 = *(int **)(param_1 + 0x60);\n  }" if (parenthesized_expression "(piVar2 == (int *)0x0)" ( (binary_expression "piVar2 == (int *)0x0" identifier == (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    iVar4 = FUN_000269d0();\n    if (iVar4 == 0) {\n      pcVar8 = "Cannot interpret virtual addresses without program headers.\n";\n      uVar3 = dcgettext(0,"Cannot interpret virtual addresses without program headers.\n",5);\n      goto LAB_00026eab;\n    }\n    piVar2 = *(int **)(param_1 + 0x60);\n  }" { (expression_statement "iVar4 = FUN_000269d0();" (assignment_expression "iVar4 = FUN_000269d0()" identifier = (call_expression "FUN_000269d0()" identifier (argument_list "()" ( )))) ;) (if_statement "if (iVar4 == 0) {\n      pcVar8 = "Cannot interpret virtual addresses without program headers.\n";\n      uVar3 = dcgettext(0,"Cannot interpret virtual addresses without program headers.\n",5);\n      goto LAB_00026eab;\n    }" if (parenthesized_expression "(iVar4 == 0)" ( (binary_expression "iVar4 == 0" identifier == number_literal) )) (compound_statement "{\n      pcVar8 = "Cannot interpret virtual addresses without program headers.\n";\n      uVar3 = dcgettext(0,"Cannot interpret virtual addresses without program headers.\n",5);\n      goto LAB_00026eab;\n    }" { (expression_statement "pcVar8 = "Cannot interpret virtual addresses without program headers.\n";" (assignment_expression "pcVar8 = "Cannot interpret virtual addresses without program headers.\n"" identifier = (string_literal ""Cannot interpret virtual addresses without program headers.\n"" " string_content escape_sequence ")) ;) (expression_statement "uVar3 = dcgettext(0,"Cannot interpret virtual addresses without program headers.\n",5);" (assignment_expression "uVar3 = dcgettext(0,"Cannot interpret virtual addresses without program headers.\n",5)" identifier = (call_expression "dcgettext(0,"Cannot interpret virtual addresses without program headers.\n",5)" identifier (argument_list "(0,"Cannot interpret virtual addresses without program headers.\n",5)" ( number_literal , (string_literal ""Cannot interpret virtual addresses without program headers.\n"" " string_content escape_sequence ") , number_literal )))) ;) (goto_statement "goto LAB_00026eab;" goto statement_identifier ;) })) (expression_statement "piVar2 = *(int **)(param_1 + 0x60);" (assignment_expression "piVar2 = *(int **)(param_1 + 0x60)" identifier = (pointer_expression "*(int **)(param_1 + 0x60)" * (cast_expression "(int **)(param_1 + 0x60)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x60)" ( (binary_expression "param_1 + 0x60" identifier + number_literal) ))))) ;) })) (expression_statement "piVar6 = piVar2 + *(int *)(param_1 + 0x4c) * 0xe;" (assignment_expression "piVar6 = piVar2 + *(int *)(param_1 + 0x4c) * 0xe" identifier = (binary_expression "piVar2 + *(int *)(param_1 + 0x4c) * 0xe" identifier + (binary_expression "*(int *)(param_1 + 0x4c) * 0xe" (pointer_expression "*(int *)(param_1 + 0x4c)" * (cast_expression "(int *)(param_1 + 0x4c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x4c)" ( (binary_expression "param_1 + 0x4c" identifier + number_literal) )))) * number_literal))) ;) (if_statement "if (piVar2 < piVar6) {\n    uVar7 = param_5 + param_3 + (uint)CARRY4(param_4,(uint)param_2);\n    do {\n      if (*piVar2 == 1) {\n        uVar1 = piVar2[4];\n        uVar5 = -(piVar2[0xd] + (uint)(piVar2[0xc] != 0)) & piVar2[5];\n        if ((uVar5 <= param_3 && (uint)(param_2 < (char *)(-piVar2[0xc] & uVar1)) <= param_3 - uVar5\n            ) && (uVar5 = piVar2[5] + piVar2[9] + (uint)CARRY4(uVar1,piVar2[8]),\n                 uVar7 <= uVar5 &&\n                 (uint)((char *)(uVar1 + piVar2[8]) < param_2 + param_4) <= uVar5 - uVar7)) {\n          return param_2 + (piVar2[2] - uVar1);\n        }\n      }\n      piVar2 = piVar2 + 0xe;\n    } while (piVar2 < piVar6);\n  }" if (parenthesized_expression "(piVar2 < piVar6)" ( (binary_expression "piVar2 < piVar6" identifier < identifier) )) (compound_statement "{\n    uVar7 = param_5 + param_3 + (uint)CARRY4(param_4,(uint)param_2);\n    do {\n      if (*piVar2 == 1) {\n        uVar1 = piVar2[4];\n        uVar5 = -(piVar2[0xd] + (uint)(piVar2[0xc] != 0)) & piVar2[5];\n        if ((uVar5 <= param_3 && (uint)(param_2 < (char *)(-piVar2[0xc] & uVar1)) <= param_3 - uVar5\n            ) && (uVar5 = piVar2[5] + piVar2[9] + (uint)CARRY4(uVar1,piVar2[8]),\n                 uVar7 <= uVar5 &&\n                 (uint)((char *)(uVar1 + piVar2[8]) < param_2 + param_4) <= uVar5 - uVar7)) {\n          return param_2 + (piVar2[2] - uVar1);\n        }\n      }\n      piVar2 = piVar2 + 0xe;\n    } while (piVar2 < piVar6);\n  }" { (expression_statement "uVar7 = param_5 + param_3 + (uint)CARRY4(param_4,(uint)param_2);" (assignment_expression "uVar7 = param_5 + param_3 + (uint)CARRY4(param_4,(uint)param_2)" identifier = (binary_expression "param_5 + param_3 + (uint)CARRY4(param_4,(uint)param_2)" (binary_expression "param_5 + param_3" identifier + identifier) + (cast_expression "(uint)CARRY4(param_4,(uint)param_2)" ( (type_descriptor "uint" type_identifier) ) (call_expression "CARRY4(param_4,(uint)param_2)" identifier (argument_list "(param_4,(uint)param_2)" ( identifier , (cast_expression "(uint)param_2" ( (type_descriptor "uint" type_identifier) ) identifier) )))))) ;) (do_statement "do {\n      if (*piVar2 == 1) {\n        uVar1 = piVar2[4];\n        uVar5 = -(piVar2[0xd] + (uint)(piVar2[0xc] != 0)) & piVar2[5];\n        if ((uVar5 <= param_3 && (uint)(param_2 < (char *)(-piVar2[0xc] & uVar1)) <= param_3 - uVar5\n            ) && (uVar5 = piVar2[5] + piVar2[9] + (uint)CARRY4(uVar1,piVar2[8]),\n                 uVar7 <= uVar5 &&\n                 (uint)((char *)(uVar1 + piVar2[8]) < param_2 + param_4) <= uVar5 - uVar7)) {\n          return param_2 + (piVar2[2] - uVar1);\n        }\n      }\n      piVar2 = piVar2 + 0xe;\n    } while (piVar2 < piVar6);" do (compound_statement "{\n      if (*piVar2 == 1) {\n        uVar1 = piVar2[4];\n        uVar5 = -(piVar2[0xd] + (uint)(piVar2[0xc] != 0)) & piVar2[5];\n        if ((uVar5 <= param_3 && (uint)(param_2 < (char *)(-piVar2[0xc] & uVar1)) <= param_3 - uVar5\n            ) && (uVar5 = piVar2[5] + piVar2[9] + (uint)CARRY4(uVar1,piVar2[8]),\n                 uVar7 <= uVar5 &&\n                 (uint)((char *)(uVar1 + piVar2[8]) < param_2 + param_4) <= uVar5 - uVar7)) {\n          return param_2 + (piVar2[2] - uVar1);\n        }\n      }\n      piVar2 = piVar2 + 0xe;\n    }" { (if_statement "if (*piVar2 == 1) {\n        uVar1 = piVar2[4];\n        uVar5 = -(piVar2[0xd] + (uint)(piVar2[0xc] != 0)) & piVar2[5];\n        if ((uVar5 <= param_3 && (uint)(param_2 < (char *)(-piVar2[0xc] & uVar1)) <= param_3 - uVar5\n            ) && (uVar5 = piVar2[5] + piVar2[9] + (uint)CARRY4(uVar1,piVar2[8]),\n                 uVar7 <= uVar5 &&\n                 (uint)((char *)(uVar1 + piVar2[8]) < param_2 + param_4) <= uVar5 - uVar7)) {\n          return param_2 + (piVar2[2] - uVar1);\n        }\n      }" if (parenthesized_expression "(*piVar2 == 1)" ( (binary_expression "*piVar2 == 1" (pointer_expression "*piVar2" * identifier) == number_literal) )) (compound_statement "{\n        uVar1 = piVar2[4];\n        uVar5 = -(piVar2[0xd] + (uint)(piVar2[0xc] != 0)) & piVar2[5];\n        if ((uVar5 <= param_3 && (uint)(param_2 < (char *)(-piVar2[0xc] & uVar1)) <= param_3 - uVar5\n            ) && (uVar5 = piVar2[5] + piVar2[9] + (uint)CARRY4(uVar1,piVar2[8]),\n                 uVar7 <= uVar5 &&\n                 (uint)((char *)(uVar1 + piVar2[8]) < param_2 + param_4) <= uVar5 - uVar7)) {\n          return param_2 + (piVar2[2] - uVar1);\n        }\n      }" { (expression_statement "uVar1 = piVar2[4];" (assignment_expression "uVar1 = piVar2[4]" identifier = (subscript_expression "piVar2[4]" identifier [ number_literal ])) ;) (expression_statement "uVar5 = -(piVar2[0xd] + (uint)(piVar2[0xc] != 0)) & piVar2[5];" (assignment_expression "uVar5 = -(piVar2[0xd] + (uint)(piVar2[0xc] != 0)) & piVar2[5]" identifier = (binary_expression "-(piVar2[0xd] + (uint)(piVar2[0xc] != 0)) & piVar2[5]" (unary_expression "-(piVar2[0xd] + (uint)(piVar2[0xc] != 0))" - (parenthesized_expression "(piVar2[0xd] + (uint)(piVar2[0xc] != 0))" ( (binary_expression "piVar2[0xd] + (uint)(piVar2[0xc] != 0)" (subscript_expression "piVar2[0xd]" identifier [ number_literal ]) + (call_expression "(uint)(piVar2[0xc] != 0)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(piVar2[0xc] != 0)" ( (binary_expression "piVar2[0xc] != 0" (subscript_expression "piVar2[0xc]" identifier [ number_literal ]) != number_literal) )))) ))) & (subscript_expression "piVar2[5]" identifier [ number_literal ]))) ;) (if_statement "if ((uVar5 <= param_3 && (uint)(param_2 < (char *)(-piVar2[0xc] & uVar1)) <= param_3 - uVar5\n            ) && (uVar5 = piVar2[5] + piVar2[9] + (uint)CARRY4(uVar1,piVar2[8]),\n                 uVar7 <= uVar5 &&\n                 (uint)((char *)(uVar1 + piVar2[8]) < param_2 + param_4) <= uVar5 - uVar7)) {\n          return param_2 + (piVar2[2] - uVar1);\n        }" if (parenthesized_expression "((uVar5 <= param_3 && (uint)(param_2 < (char *)(-piVar2[0xc] & uVar1)) <= param_3 - uVar5\n            ) && (uVar5 = piVar2[5] + piVar2[9] + (uint)CARRY4(uVar1,piVar2[8]),\n                 uVar7 <= uVar5 &&\n                 (uint)((char *)(uVar1 + piVar2[8]) < param_2 + param_4) <= uVar5 - uVar7))" ( (binary_expression "(uVar5 <= param_3 && (uint)(param_2 < (char *)(-piVar2[0xc] & uVar1)) <= param_3 - uVar5\n            ) && (uVar5 = piVar2[5] + piVar2[9] + (uint)CARRY4(uVar1,piVar2[8]),\n                 uVar7 <= uVar5 &&\n                 (uint)((char *)(uVar1 + piVar2[8]) < param_2 + param_4) <= uVar5 - uVar7)" (parenthesized_expression "(uVar5 <= param_3 && (uint)(param_2 < (char *)(-piVar2[0xc] & uVar1)) <= param_3 - uVar5\n            )" ( (binary_expression "uVar5 <= param_3 && (uint)(param_2 < (char *)(-piVar2[0xc] & uVar1)) <= param_3 - uVar5" (binary_expression "uVar5 <= param_3" identifier <= identifier) && (binary_expression "(uint)(param_2 < (char *)(-piVar2[0xc] & uVar1)) <= param_3 - uVar5" (call_expression "(uint)(param_2 < (char *)(-piVar2[0xc] & uVar1))" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(param_2 < (char *)(-piVar2[0xc] & uVar1))" ( (binary_expression "param_2 < (char *)(-piVar2[0xc] & uVar1)" identifier < (cast_expression "(char *)(-piVar2[0xc] & uVar1)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(-piVar2[0xc] & uVar1)" ( (binary_expression "-piVar2[0xc] & uVar1" (unary_expression "-piVar2[0xc]" - (subscript_expression "piVar2[0xc]" identifier [ number_literal ])) & identifier) )))) ))) <= (binary_expression "param_3 - uVar5" identifier - identifier))) )) && (parenthesized_expression "(uVar5 = piVar2[5] + piVar2[9] + (uint)CARRY4(uVar1,piVar2[8]),\n                 uVar7 <= uVar5 &&\n                 (uint)((char *)(uVar1 + piVar2[8]) < param_2 + param_4) <= uVar5 - uVar7)" ( (comma_expression "uVar5 = piVar2[5] + piVar2[9] + (uint)CARRY4(uVar1,piVar2[8]),\n                 uVar7 <= uVar5 &&\n                 (uint)((char *)(uVar1 + piVar2[8]) < param_2 + param_4) <= uVar5 - uVar7" (assignment_expression "uVar5 = piVar2[5] + piVar2[9] + (uint)CARRY4(uVar1,piVar2[8])" identifier = (binary_expression "piVar2[5] + piVar2[9] + (uint)CARRY4(uVar1,piVar2[8])" (binary_expression "piVar2[5] + piVar2[9]" (subscript_expression "piVar2[5]" identifier [ number_literal ]) + (subscript_expression "piVar2[9]" identifier [ number_literal ])) + (cast_expression "(uint)CARRY4(uVar1,piVar2[8])" ( (type_descriptor "uint" type_identifier) ) (call_expression "CARRY4(uVar1,piVar2[8])" identifier (argument_list "(uVar1,piVar2[8])" ( identifier , (subscript_expression "piVar2[8]" identifier [ number_literal ]) )))))) , (binary_expression "uVar7 <= uVar5 &&\n                 (uint)((char *)(uVar1 + piVar2[8]) < param_2 + param_4) <= uVar5 - uVar7" (binary_expression "uVar7 <= uVar5" identifier <= identifier) && (binary_expression "(uint)((char *)(uVar1 + piVar2[8]) < param_2 + param_4) <= uVar5 - uVar7" (call_expression "(uint)((char *)(uVar1 + piVar2[8]) < param_2 + param_4)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((char *)(uVar1 + piVar2[8]) < param_2 + param_4)" ( (binary_expression "(char *)(uVar1 + piVar2[8]) < param_2 + param_4" (cast_expression "(char *)(uVar1 + piVar2[8])" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar1 + piVar2[8])" ( (binary_expression "uVar1 + piVar2[8]" identifier + (subscript_expression "piVar2[8]" identifier [ number_literal ])) ))) < (binary_expression "param_2 + param_4" identifier + identifier)) ))) <= (binary_expression "uVar5 - uVar7" identifier - identifier)))) ))) )) (compound_statement "{\n          return param_2 + (piVar2[2] - uVar1);\n        }" { (return_statement "return param_2 + (piVar2[2] - uVar1);" return (binary_expression "param_2 + (piVar2[2] - uVar1)" identifier + (parenthesized_expression "(piVar2[2] - uVar1)" ( (binary_expression "piVar2[2] - uVar1" (subscript_expression "piVar2[2]" identifier [ number_literal ]) - identifier) ))) ;) })) })) (expression_statement "piVar2 = piVar2 + 0xe;" (assignment_expression "piVar2 = piVar2 + 0xe" identifier = (binary_expression "piVar2 + 0xe" identifier + number_literal)) ;) }) while (parenthesized_expression "(piVar2 < piVar6)" ( (binary_expression "piVar2 < piVar6" identifier < identifier) )) ;) })) (expression_statement "uVar3 = dcgettext(0,"Virtual address 0x%lx not located in any PT_LOAD segment.\n",5);" (assignment_expression "uVar3 = dcgettext(0,"Virtual address 0x%lx not located in any PT_LOAD segment.\n",5)" identifier = (call_expression "dcgettext(0,"Virtual address 0x%lx not located in any PT_LOAD segment.\n",5)" identifier (argument_list "(0,"Virtual address 0x%lx not located in any PT_LOAD segment.\n",5)" ( number_literal , (string_literal ""Virtual address 0x%lx not located in any PT_LOAD segment.\n"" " string_content escape_sequence ") , number_literal )))) ;) (expression_statement "pcVar8 = param_2;" (assignment_expression "pcVar8 = param_2" identifier = identifier) ;) (labeled_statement "LAB_00026eab:\n  warn(uVar3,pcVar8);" statement_identifier : (expression_statement "warn(uVar3,pcVar8);" (call_expression "warn(uVar3,pcVar8)" identifier (argument_list "(uVar3,pcVar8)" ( identifier , identifier ))) ;)) (return_statement "return param_2;" return identifier ;) })))
(translation_unit "/* WARNING: Function: __x86.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */\n\nwchar_t __regparm3 offset_from_vma(Filedata *filedata,bfd_vma vma,bfd_size_type size)\n\n{\n  int iVar1;\n  uint uVar2;\n  longlong lVar3;\n  Elf_Internal_Phdr *pEVar4;\n  char *message;\n  bfd_boolean bVar5;\n  uint in_ECX;\n  uint uVar6;\n  char *in_EDX;\n  Elf_Internal_Phdr *pEVar7;\n  uint uVar8;\n  uint uVar9;\n  char *pcVar10;\n  \n  pEVar4 = filedata->program_headers;\n  if (pEVar4 == (Elf_Internal_Phdr *)0x0) {\n    bVar5 = get_program_headers(filedata);\n    if (bVar5 == 0) {\n      pcVar10 = "Cannot interpret virtual addresses without program headers.\n";\n      message = (char *)dcgettext(0,"Cannot interpret virtual addresses without program headers.\n",\n                                  5);\n      goto LAB_00026eab;\n    }\n    pEVar4 = filedata->program_headers;\n  }\n  pEVar7 = pEVar4 + (filedata->file_header).e_phnum;\n  if (pEVar4 < pEVar7) {\n    lVar3 = vma + CONCAT44(in_ECX,in_EDX);\n    uVar8 = (uint)((ulonglong)lVar3 >> 0x20);\n    do {\n      if (pEVar4->p_type == 1) {\n        iVar1 = (int)pEVar4->p_align;\n        uVar9 = *(uint *)((int)&pEVar4->p_vaddr + 4);\n        uVar2 = (uint)pEVar4->p_vaddr;\n        uVar6 = -(*(int *)((int)&pEVar4->p_align + 4) + (uint)(iVar1 != 0)) & uVar9;\n        if ((uVar6 <= in_ECX && (uint)(in_EDX < (char *)(-iVar1 & uVar2)) <= in_ECX - uVar6) &&\n           (uVar9 = uVar9 + *(int *)((int)&pEVar4->p_filesz + 4) +\n                    (uint)CARRY4(uVar2,(uint)pEVar4->p_filesz),\n           uVar8 <= uVar9 && (uint)(uVar2 + (int)pEVar4->p_filesz < (uint)lVar3) <= uVar9 - uVar8))\n        {\n          return (wchar_t)(in_EDX + ((int)pEVar4->p_offset - uVar2));\n        }\n      }\n      pEVar4 = pEVar4 + 1;\n    } while (pEVar4 < pEVar7);\n  }\n  message = (char *)dcgettext(0,"Virtual address 0x%lx not located in any PT_LOAD segment.\n",5);\n  pcVar10 = in_EDX;\nLAB_00026eab:\n  warn(message,pcVar10);\n  return (wchar_t)in_EDX;\n}\n\n" comment (function_definition "wchar_t __regparm3 offset_from_vma(Filedata *filedata,bfd_vma vma,bfd_size_type size)\n\n{\n  int iVar1;\n  uint uVar2;\n  longlong lVar3;\n  Elf_Internal_Phdr *pEVar4;\n  char *message;\n  bfd_boolean bVar5;\n  uint in_ECX;\n  uint uVar6;\n  char *in_EDX;\n  Elf_Internal_Phdr *pEVar7;\n  uint uVar8;\n  uint uVar9;\n  char *pcVar10;\n  \n  pEVar4 = filedata->program_headers;\n  if (pEVar4 == (Elf_Internal_Phdr *)0x0) {\n    bVar5 = get_program_headers(filedata);\n    if (bVar5 == 0) {\n      pcVar10 = "Cannot interpret virtual addresses without program headers.\n";\n      message = (char *)dcgettext(0,"Cannot interpret virtual addresses without program headers.\n",\n                                  5);\n      goto LAB_00026eab;\n    }\n    pEVar4 = filedata->program_headers;\n  }\n  pEVar7 = pEVar4 + (filedata->file_header).e_phnum;\n  if (pEVar4 < pEVar7) {\n    lVar3 = vma + CONCAT44(in_ECX,in_EDX);\n    uVar8 = (uint)((ulonglong)lVar3 >> 0x20);\n    do {\n      if (pEVar4->p_type == 1) {\n        iVar1 = (int)pEVar4->p_align;\n        uVar9 = *(uint *)((int)&pEVar4->p_vaddr + 4);\n        uVar2 = (uint)pEVar4->p_vaddr;\n        uVar6 = -(*(int *)((int)&pEVar4->p_align + 4) + (uint)(iVar1 != 0)) & uVar9;\n        if ((uVar6 <= in_ECX && (uint)(in_EDX < (char *)(-iVar1 & uVar2)) <= in_ECX - uVar6) &&\n           (uVar9 = uVar9 + *(int *)((int)&pEVar4->p_filesz + 4) +\n                    (uint)CARRY4(uVar2,(uint)pEVar4->p_filesz),\n           uVar8 <= uVar9 && (uint)(uVar2 + (int)pEVar4->p_filesz < (uint)lVar3) <= uVar9 - uVar8))\n        {\n          return (wchar_t)(in_EDX + ((int)pEVar4->p_offset - uVar2));\n        }\n      }\n      pEVar4 = pEVar4 + 1;\n    } while (pEVar4 < pEVar7);\n  }\n  message = (char *)dcgettext(0,"Virtual address 0x%lx not located in any PT_LOAD segment.\n",5);\n  pcVar10 = in_EDX;\nLAB_00026eab:\n  warn(message,pcVar10);\n  return (wchar_t)in_EDX;\n}" type_identifier (ERROR "__regparm3" identifier) (function_declarator "offset_from_vma(Filedata *filedata,bfd_vma vma,bfd_size_type size)" identifier (parameter_list "(Filedata *filedata,bfd_vma vma,bfd_size_type size)" ( (parameter_declaration "Filedata *filedata" type_identifier (pointer_declarator "*filedata" * identifier)) , (parameter_declaration "bfd_vma vma" type_identifier identifier) , (parameter_declaration "bfd_size_type size" type_identifier identifier) ))) (compound_statement "{\n  int iVar1;\n  uint uVar2;\n  longlong lVar3;\n  Elf_Internal_Phdr *pEVar4;\n  char *message;\n  bfd_boolean bVar5;\n  uint in_ECX;\n  uint uVar6;\n  char *in_EDX;\n  Elf_Internal_Phdr *pEVar7;\n  uint uVar8;\n  uint uVar9;\n  char *pcVar10;\n  \n  pEVar4 = filedata->program_headers;\n  if (pEVar4 == (Elf_Internal_Phdr *)0x0) {\n    bVar5 = get_program_headers(filedata);\n    if (bVar5 == 0) {\n      pcVar10 = "Cannot interpret virtual addresses without program headers.\n";\n      message = (char *)dcgettext(0,"Cannot interpret virtual addresses without program headers.\n",\n                                  5);\n      goto LAB_00026eab;\n    }\n    pEVar4 = filedata->program_headers;\n  }\n  pEVar7 = pEVar4 + (filedata->file_header).e_phnum;\n  if (pEVar4 < pEVar7) {\n    lVar3 = vma + CONCAT44(in_ECX,in_EDX);\n    uVar8 = (uint)((ulonglong)lVar3 >> 0x20);\n    do {\n      if (pEVar4->p_type == 1) {\n        iVar1 = (int)pEVar4->p_align;\n        uVar9 = *(uint *)((int)&pEVar4->p_vaddr + 4);\n        uVar2 = (uint)pEVar4->p_vaddr;\n        uVar6 = -(*(int *)((int)&pEVar4->p_align + 4) + (uint)(iVar1 != 0)) & uVar9;\n        if ((uVar6 <= in_ECX && (uint)(in_EDX < (char *)(-iVar1 & uVar2)) <= in_ECX - uVar6) &&\n           (uVar9 = uVar9 + *(int *)((int)&pEVar4->p_filesz + 4) +\n                    (uint)CARRY4(uVar2,(uint)pEVar4->p_filesz),\n           uVar8 <= uVar9 && (uint)(uVar2 + (int)pEVar4->p_filesz < (uint)lVar3) <= uVar9 - uVar8))\n        {\n          return (wchar_t)(in_EDX + ((int)pEVar4->p_offset - uVar2));\n        }\n      }\n      pEVar4 = pEVar4 + 1;\n    } while (pEVar4 < pEVar7);\n  }\n  message = (char *)dcgettext(0,"Virtual address 0x%lx not located in any PT_LOAD segment.\n",5);\n  pcVar10 = in_EDX;\nLAB_00026eab:\n  warn(message,pcVar10);\n  return (wchar_t)in_EDX;\n}" { (declaration "int iVar1;" primitive_type identifier ;) (declaration "uint uVar2;" type_identifier identifier ;) (declaration "longlong lVar3;" type_identifier identifier ;) (declaration "Elf_Internal_Phdr *pEVar4;" type_identifier (pointer_declarator "*pEVar4" * identifier) ;) (declaration "char *message;" primitive_type (pointer_declarator "*message" * identifier) ;) (declaration "bfd_boolean bVar5;" type_identifier identifier ;) (declaration "uint in_ECX;" type_identifier identifier ;) (declaration "uint uVar6;" type_identifier identifier ;) (declaration "char *in_EDX;" primitive_type (pointer_declarator "*in_EDX" * identifier) ;) (declaration "Elf_Internal_Phdr *pEVar7;" type_identifier (pointer_declarator "*pEVar7" * identifier) ;) (declaration "uint uVar8;" type_identifier identifier ;) (declaration "uint uVar9;" type_identifier identifier ;) (declaration "char *pcVar10;" primitive_type (pointer_declarator "*pcVar10" * identifier) ;) (expression_statement "pEVar4 = filedata->program_headers;" (assignment_expression "pEVar4 = filedata->program_headers" identifier = (field_expression "filedata->program_headers" identifier -> field_identifier)) ;) (if_statement "if (pEVar4 == (Elf_Internal_Phdr *)0x0) {\n    bVar5 = get_program_headers(filedata);\n    if (bVar5 == 0) {\n      pcVar10 = "Cannot interpret virtual addresses without program headers.\n";\n      message = (char *)dcgettext(0,"Cannot interpret virtual addresses without program headers.\n",\n                                  5);\n      goto LAB_00026eab;\n    }\n    pEVar4 = filedata->program_headers;\n  }" if (parenthesized_expression "(pEVar4 == (Elf_Internal_Phdr *)0x0)" ( (binary_expression "pEVar4 == (Elf_Internal_Phdr *)0x0" identifier == (cast_expression "(Elf_Internal_Phdr *)0x0" ( (type_descriptor "Elf_Internal_Phdr *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    bVar5 = get_program_headers(filedata);\n    if (bVar5 == 0) {\n      pcVar10 = "Cannot interpret virtual addresses without program headers.\n";\n      message = (char *)dcgettext(0,"Cannot interpret virtual addresses without program headers.\n",\n                                  5);\n      goto LAB_00026eab;\n    }\n    pEVar4 = filedata->program_headers;\n  }" { (expression_statement "bVar5 = get_program_headers(filedata);" (assignment_expression "bVar5 = get_program_headers(filedata)" identifier = (call_expression "get_program_headers(filedata)" identifier (argument_list "(filedata)" ( identifier )))) ;) (if_statement "if (bVar5 == 0) {\n      pcVar10 = "Cannot interpret virtual addresses without program headers.\n";\n      message = (char *)dcgettext(0,"Cannot interpret virtual addresses without program headers.\n",\n                                  5);\n      goto LAB_00026eab;\n    }" if (parenthesized_expression "(bVar5 == 0)" ( (binary_expression "bVar5 == 0" identifier == number_literal) )) (compound_statement "{\n      pcVar10 = "Cannot interpret virtual addresses without program headers.\n";\n      message = (char *)dcgettext(0,"Cannot interpret virtual addresses without program headers.\n",\n                                  5);\n      goto LAB_00026eab;\n    }" { (expression_statement "pcVar10 = "Cannot interpret virtual addresses without program headers.\n";" (assignment_expression "pcVar10 = "Cannot interpret virtual addresses without program headers.\n"" identifier = (string_literal ""Cannot interpret virtual addresses without program headers.\n"" " string_content escape_sequence ")) ;) (expression_statement "message = (char *)dcgettext(0,"Cannot interpret virtual addresses without program headers.\n",\n                                  5);" (assignment_expression "message = (char *)dcgettext(0,"Cannot interpret virtual addresses without program headers.\n",\n                                  5)" identifier = (cast_expression "(char *)dcgettext(0,"Cannot interpret virtual addresses without program headers.\n",\n                                  5)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "dcgettext(0,"Cannot interpret virtual addresses without program headers.\n",\n                                  5)" identifier (argument_list "(0,"Cannot interpret virtual addresses without program headers.\n",\n                                  5)" ( number_literal , (string_literal ""Cannot interpret virtual addresses without program headers.\n"" " string_content escape_sequence ") , number_literal ))))) ;) (goto_statement "goto LAB_00026eab;" goto statement_identifier ;) })) (expression_statement "pEVar4 = filedata->program_headers;" (assignment_expression "pEVar4 = filedata->program_headers" identifier = (field_expression "filedata->program_headers" identifier -> field_identifier)) ;) })) (expression_statement "pEVar7 = pEVar4 + (filedata->file_header).e_phnum;" (assignment_expression "pEVar7 = pEVar4 + (filedata->file_header).e_phnum" identifier = (binary_expression "pEVar4 + (filedata->file_header).e_phnum" identifier + (field_expression "(filedata->file_header).e_phnum" (parenthesized_expression "(filedata->file_header)" ( (field_expression "filedata->file_header" identifier -> field_identifier) )) . field_identifier))) ;) (if_statement "if (pEVar4 < pEVar7) {\n    lVar3 = vma + CONCAT44(in_ECX,in_EDX);\n    uVar8 = (uint)((ulonglong)lVar3 >> 0x20);\n    do {\n      if (pEVar4->p_type == 1) {\n        iVar1 = (int)pEVar4->p_align;\n        uVar9 = *(uint *)((int)&pEVar4->p_vaddr + 4);\n        uVar2 = (uint)pEVar4->p_vaddr;\n        uVar6 = -(*(int *)((int)&pEVar4->p_align + 4) + (uint)(iVar1 != 0)) & uVar9;\n        if ((uVar6 <= in_ECX && (uint)(in_EDX < (char *)(-iVar1 & uVar2)) <= in_ECX - uVar6) &&\n           (uVar9 = uVar9 + *(int *)((int)&pEVar4->p_filesz + 4) +\n                    (uint)CARRY4(uVar2,(uint)pEVar4->p_filesz),\n           uVar8 <= uVar9 && (uint)(uVar2 + (int)pEVar4->p_filesz < (uint)lVar3) <= uVar9 - uVar8))\n        {\n          return (wchar_t)(in_EDX + ((int)pEVar4->p_offset - uVar2));\n        }\n      }\n      pEVar4 = pEVar4 + 1;\n    } while (pEVar4 < pEVar7);\n  }" if (parenthesized_expression "(pEVar4 < pEVar7)" ( (binary_expression "pEVar4 < pEVar7" identifier < identifier) )) (compound_statement "{\n    lVar3 = vma + CONCAT44(in_ECX,in_EDX);\n    uVar8 = (uint)((ulonglong)lVar3 >> 0x20);\n    do {\n      if (pEVar4->p_type == 1) {\n        iVar1 = (int)pEVar4->p_align;\n        uVar9 = *(uint *)((int)&pEVar4->p_vaddr + 4);\n        uVar2 = (uint)pEVar4->p_vaddr;\n        uVar6 = -(*(int *)((int)&pEVar4->p_align + 4) + (uint)(iVar1 != 0)) & uVar9;\n        if ((uVar6 <= in_ECX && (uint)(in_EDX < (char *)(-iVar1 & uVar2)) <= in_ECX - uVar6) &&\n           (uVar9 = uVar9 + *(int *)((int)&pEVar4->p_filesz + 4) +\n                    (uint)CARRY4(uVar2,(uint)pEVar4->p_filesz),\n           uVar8 <= uVar9 && (uint)(uVar2 + (int)pEVar4->p_filesz < (uint)lVar3) <= uVar9 - uVar8))\n        {\n          return (wchar_t)(in_EDX + ((int)pEVar4->p_offset - uVar2));\n        }\n      }\n      pEVar4 = pEVar4 + 1;\n    } while (pEVar4 < pEVar7);\n  }" { (expression_statement "lVar3 = vma + CONCAT44(in_ECX,in_EDX);" (assignment_expression "lVar3 = vma + CONCAT44(in_ECX,in_EDX)" identifier = (binary_expression "vma + CONCAT44(in_ECX,in_EDX)" identifier + (call_expression "CONCAT44(in_ECX,in_EDX)" identifier (argument_list "(in_ECX,in_EDX)" ( identifier , identifier ))))) ;) (expression_statement "uVar8 = (uint)((ulonglong)lVar3 >> 0x20);" (assignment_expression "uVar8 = (uint)((ulonglong)lVar3 >> 0x20)" identifier = (call_expression "(uint)((ulonglong)lVar3 >> 0x20)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((ulonglong)lVar3 >> 0x20)" ( (binary_expression "(ulonglong)lVar3 >> 0x20" (cast_expression "(ulonglong)lVar3" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) )))) ;) (do_statement "do {\n      if (pEVar4->p_type == 1) {\n        iVar1 = (int)pEVar4->p_align;\n        uVar9 = *(uint *)((int)&pEVar4->p_vaddr + 4);\n        uVar2 = (uint)pEVar4->p_vaddr;\n        uVar6 = -(*(int *)((int)&pEVar4->p_align + 4) + (uint)(iVar1 != 0)) & uVar9;\n        if ((uVar6 <= in_ECX && (uint)(in_EDX < (char *)(-iVar1 & uVar2)) <= in_ECX - uVar6) &&\n           (uVar9 = uVar9 + *(int *)((int)&pEVar4->p_filesz + 4) +\n                    (uint)CARRY4(uVar2,(uint)pEVar4->p_filesz),\n           uVar8 <= uVar9 && (uint)(uVar2 + (int)pEVar4->p_filesz < (uint)lVar3) <= uVar9 - uVar8))\n        {\n          return (wchar_t)(in_EDX + ((int)pEVar4->p_offset - uVar2));\n        }\n      }\n      pEVar4 = pEVar4 + 1;\n    } while (pEVar4 < pEVar7);" do (compound_statement "{\n      if (pEVar4->p_type == 1) {\n        iVar1 = (int)pEVar4->p_align;\n        uVar9 = *(uint *)((int)&pEVar4->p_vaddr + 4);\n        uVar2 = (uint)pEVar4->p_vaddr;\n        uVar6 = -(*(int *)((int)&pEVar4->p_align + 4) + (uint)(iVar1 != 0)) & uVar9;\n        if ((uVar6 <= in_ECX && (uint)(in_EDX < (char *)(-iVar1 & uVar2)) <= in_ECX - uVar6) &&\n           (uVar9 = uVar9 + *(int *)((int)&pEVar4->p_filesz + 4) +\n                    (uint)CARRY4(uVar2,(uint)pEVar4->p_filesz),\n           uVar8 <= uVar9 && (uint)(uVar2 + (int)pEVar4->p_filesz < (uint)lVar3) <= uVar9 - uVar8))\n        {\n          return (wchar_t)(in_EDX + ((int)pEVar4->p_offset - uVar2));\n        }\n      }\n      pEVar4 = pEVar4 + 1;\n    }" { (if_statement "if (pEVar4->p_type == 1) {\n        iVar1 = (int)pEVar4->p_align;\n        uVar9 = *(uint *)((int)&pEVar4->p_vaddr + 4);\n        uVar2 = (uint)pEVar4->p_vaddr;\n        uVar6 = -(*(int *)((int)&pEVar4->p_align + 4) + (uint)(iVar1 != 0)) & uVar9;\n        if ((uVar6 <= in_ECX && (uint)(in_EDX < (char *)(-iVar1 & uVar2)) <= in_ECX - uVar6) &&\n           (uVar9 = uVar9 + *(int *)((int)&pEVar4->p_filesz + 4) +\n                    (uint)CARRY4(uVar2,(uint)pEVar4->p_filesz),\n           uVar8 <= uVar9 && (uint)(uVar2 + (int)pEVar4->p_filesz < (uint)lVar3) <= uVar9 - uVar8))\n        {\n          return (wchar_t)(in_EDX + ((int)pEVar4->p_offset - uVar2));\n        }\n      }" if (parenthesized_expression "(pEVar4->p_type == 1)" ( (binary_expression "pEVar4->p_type == 1" (field_expression "pEVar4->p_type" identifier -> field_identifier) == number_literal) )) (compound_statement "{\n        iVar1 = (int)pEVar4->p_align;\n        uVar9 = *(uint *)((int)&pEVar4->p_vaddr + 4);\n        uVar2 = (uint)pEVar4->p_vaddr;\n        uVar6 = -(*(int *)((int)&pEVar4->p_align + 4) + (uint)(iVar1 != 0)) & uVar9;\n        if ((uVar6 <= in_ECX && (uint)(in_EDX < (char *)(-iVar1 & uVar2)) <= in_ECX - uVar6) &&\n           (uVar9 = uVar9 + *(int *)((int)&pEVar4->p_filesz + 4) +\n                    (uint)CARRY4(uVar2,(uint)pEVar4->p_filesz),\n           uVar8 <= uVar9 && (uint)(uVar2 + (int)pEVar4->p_filesz < (uint)lVar3) <= uVar9 - uVar8))\n        {\n          return (wchar_t)(in_EDX + ((int)pEVar4->p_offset - uVar2));\n        }\n      }" { (expression_statement "iVar1 = (int)pEVar4->p_align;" (assignment_expression "iVar1 = (int)pEVar4->p_align" identifier = (cast_expression "(int)pEVar4->p_align" ( (type_descriptor "int" primitive_type) ) (field_expression "pEVar4->p_align" identifier -> field_identifier))) ;) (expression_statement "uVar9 = *(uint *)((int)&pEVar4->p_vaddr + 4);" (assignment_expression "uVar9 = *(uint *)((int)&pEVar4->p_vaddr + 4)" identifier = (pointer_expression "*(uint *)((int)&pEVar4->p_vaddr + 4)" * (cast_expression "(uint *)((int)&pEVar4->p_vaddr + 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&pEVar4->p_vaddr + 4)" ( (binary_expression "(int)&pEVar4->p_vaddr + 4" (cast_expression "(int)&pEVar4->p_vaddr" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&pEVar4->p_vaddr" & (field_expression "pEVar4->p_vaddr" identifier -> field_identifier))) + number_literal) ))))) ;) (expression_statement "uVar2 = (uint)pEVar4->p_vaddr;" (assignment_expression "uVar2 = (uint)pEVar4->p_vaddr" identifier = (cast_expression "(uint)pEVar4->p_vaddr" ( (type_descriptor "uint" type_identifier) ) (field_expression "pEVar4->p_vaddr" identifier -> field_identifier))) ;) (expression_statement "uVar6 = -(*(int *)((int)&pEVar4->p_align + 4) + (uint)(iVar1 != 0)) & uVar9;" (assignment_expression "uVar6 = -(*(int *)((int)&pEVar4->p_align + 4) + (uint)(iVar1 != 0)) & uVar9" identifier = (binary_expression "-(*(int *)((int)&pEVar4->p_align + 4) + (uint)(iVar1 != 0)) & uVar9" (unary_expression "-(*(int *)((int)&pEVar4->p_align + 4) + (uint)(iVar1 != 0))" - (parenthesized_expression "(*(int *)((int)&pEVar4->p_align + 4) + (uint)(iVar1 != 0))" ( (binary_expression "*(int *)((int)&pEVar4->p_align + 4) + (uint)(iVar1 != 0)" (pointer_expression "*(int *)((int)&pEVar4->p_align + 4)" * (cast_expression "(int *)((int)&pEVar4->p_align + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&pEVar4->p_align + 4)" ( (binary_expression "(int)&pEVar4->p_align + 4" (cast_expression "(int)&pEVar4->p_align" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&pEVar4->p_align" & (field_expression "pEVar4->p_align" identifier -> field_identifier))) + number_literal) )))) + (call_expression "(uint)(iVar1 != 0)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(iVar1 != 0)" ( (binary_expression "iVar1 != 0" identifier != number_literal) )))) ))) & identifier)) ;) (if_statement "if ((uVar6 <= in_ECX && (uint)(in_EDX < (char *)(-iVar1 & uVar2)) <= in_ECX - uVar6) &&\n           (uVar9 = uVar9 + *(int *)((int)&pEVar4->p_filesz + 4) +\n                    (uint)CARRY4(uVar2,(uint)pEVar4->p_filesz),\n           uVar8 <= uVar9 && (uint)(uVar2 + (int)pEVar4->p_filesz < (uint)lVar3) <= uVar9 - uVar8))\n        {\n          return (wchar_t)(in_EDX + ((int)pEVar4->p_offset - uVar2));\n        }" if (parenthesized_expression "((uVar6 <= in_ECX && (uint)(in_EDX < (char *)(-iVar1 & uVar2)) <= in_ECX - uVar6) &&\n           (uVar9 = uVar9 + *(int *)((int)&pEVar4->p_filesz + 4) +\n                    (uint)CARRY4(uVar2,(uint)pEVar4->p_filesz),\n           uVar8 <= uVar9 && (uint)(uVar2 + (int)pEVar4->p_filesz < (uint)lVar3) <= uVar9 - uVar8))" ( (binary_expression "(uVar6 <= in_ECX && (uint)(in_EDX < (char *)(-iVar1 & uVar2)) <= in_ECX - uVar6) &&\n           (uVar9 = uVar9 + *(int *)((int)&pEVar4->p_filesz + 4) +\n                    (uint)CARRY4(uVar2,(uint)pEVar4->p_filesz),\n           uVar8 <= uVar9 && (uint)(uVar2 + (int)pEVar4->p_filesz < (uint)lVar3) <= uVar9 - uVar8)" (parenthesized_expression "(uVar6 <= in_ECX && (uint)(in_EDX < (char *)(-iVar1 & uVar2)) <= in_ECX - uVar6)" ( (binary_expression "uVar6 <= in_ECX && (uint)(in_EDX < (char *)(-iVar1 & uVar2)) <= in_ECX - uVar6" (binary_expression "uVar6 <= in_ECX" identifier <= identifier) && (binary_expression "(uint)(in_EDX < (char *)(-iVar1 & uVar2)) <= in_ECX - uVar6" (call_expression "(uint)(in_EDX < (char *)(-iVar1 & uVar2))" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(in_EDX < (char *)(-iVar1 & uVar2))" ( (binary_expression "in_EDX < (char *)(-iVar1 & uVar2)" identifier < (cast_expression "(char *)(-iVar1 & uVar2)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(-iVar1 & uVar2)" ( (binary_expression "-iVar1 & uVar2" (unary_expression "-iVar1" - identifier) & identifier) )))) ))) <= (binary_expression "in_ECX - uVar6" identifier - identifier))) )) && (parenthesized_expression "(uVar9 = uVar9 + *(int *)((int)&pEVar4->p_filesz + 4) +\n                    (uint)CARRY4(uVar2,(uint)pEVar4->p_filesz),\n           uVar8 <= uVar9 && (uint)(uVar2 + (int)pEVar4->p_filesz < (uint)lVar3) <= uVar9 - uVar8)" ( (comma_expression "uVar9 = uVar9 + *(int *)((int)&pEVar4->p_filesz + 4) +\n                    (uint)CARRY4(uVar2,(uint)pEVar4->p_filesz),\n           uVar8 <= uVar9 && (uint)(uVar2 + (int)pEVar4->p_filesz < (uint)lVar3) <= uVar9 - uVar8" (assignment_expression "uVar9 = uVar9 + *(int *)((int)&pEVar4->p_filesz + 4) +\n                    (uint)CARRY4(uVar2,(uint)pEVar4->p_filesz)" identifier = (binary_expression "uVar9 + *(int *)((int)&pEVar4->p_filesz + 4) +\n                    (uint)CARRY4(uVar2,(uint)pEVar4->p_filesz)" (binary_expression "uVar9 + *(int *)((int)&pEVar4->p_filesz + 4)" identifier + (pointer_expression "*(int *)((int)&pEVar4->p_filesz + 4)" * (cast_expression "(int *)((int)&pEVar4->p_filesz + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&pEVar4->p_filesz + 4)" ( (binary_expression "(int)&pEVar4->p_filesz + 4" (cast_expression "(int)&pEVar4->p_filesz" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&pEVar4->p_filesz" & (field_expression "pEVar4->p_filesz" identifier -> field_identifier))) + number_literal) ))))) + (cast_expression "(uint)CARRY4(uVar2,(uint)pEVar4->p_filesz)" ( (type_descriptor "uint" type_identifier) ) (call_expression "CARRY4(uVar2,(uint)pEVar4->p_filesz)" identifier (argument_list "(uVar2,(uint)pEVar4->p_filesz)" ( identifier , (cast_expression "(uint)pEVar4->p_filesz" ( (type_descriptor "uint" type_identifier) ) (field_expression "pEVar4->p_filesz" identifier -> field_identifier)) )))))) , (binary_expression "uVar8 <= uVar9 && (uint)(uVar2 + (int)pEVar4->p_filesz < (uint)lVar3) <= uVar9 - uVar8" (binary_expression "uVar8 <= uVar9" identifier <= identifier) && (binary_expression "(uint)(uVar2 + (int)pEVar4->p_filesz < (uint)lVar3) <= uVar9 - uVar8" (call_expression "(uint)(uVar2 + (int)pEVar4->p_filesz < (uint)lVar3)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar2 + (int)pEVar4->p_filesz < (uint)lVar3)" ( (binary_expression "uVar2 + (int)pEVar4->p_filesz < (uint)lVar3" (binary_expression "uVar2 + (int)pEVar4->p_filesz" identifier + (cast_expression "(int)pEVar4->p_filesz" ( (type_descriptor "int" primitive_type) ) (field_expression "pEVar4->p_filesz" identifier -> field_identifier))) < (cast_expression "(uint)lVar3" ( (type_descriptor "uint" type_identifier) ) identifier)) ))) <= (binary_expression "uVar9 - uVar8" identifier - identifier)))) ))) )) (compound_statement "{\n          return (wchar_t)(in_EDX + ((int)pEVar4->p_offset - uVar2));\n        }" { (return_statement "return (wchar_t)(in_EDX + ((int)pEVar4->p_offset - uVar2));" return (call_expression "(wchar_t)(in_EDX + ((int)pEVar4->p_offset - uVar2))" (parenthesized_expression "(wchar_t)" ( identifier )) (argument_list "(in_EDX + ((int)pEVar4->p_offset - uVar2))" ( (binary_expression "in_EDX + ((int)pEVar4->p_offset - uVar2)" identifier + (parenthesized_expression "((int)pEVar4->p_offset - uVar2)" ( (binary_expression "(int)pEVar4->p_offset - uVar2" (cast_expression "(int)pEVar4->p_offset" ( (type_descriptor "int" primitive_type) ) (field_expression "pEVar4->p_offset" identifier -> field_identifier)) - identifier) ))) ))) ;) })) })) (expression_statement "pEVar4 = pEVar4 + 1;" (assignment_expression "pEVar4 = pEVar4 + 1" identifier = (binary_expression "pEVar4 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(pEVar4 < pEVar7)" ( (binary_expression "pEVar4 < pEVar7" identifier < identifier) )) ;) })) (expression_statement "message = (char *)dcgettext(0,"Virtual address 0x%lx not located in any PT_LOAD segment.\n",5);" (assignment_expression "message = (char *)dcgettext(0,"Virtual address 0x%lx not located in any PT_LOAD segment.\n",5)" identifier = (cast_expression "(char *)dcgettext(0,"Virtual address 0x%lx not located in any PT_LOAD segment.\n",5)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "dcgettext(0,"Virtual address 0x%lx not located in any PT_LOAD segment.\n",5)" identifier (argument_list "(0,"Virtual address 0x%lx not located in any PT_LOAD segment.\n",5)" ( number_literal , (string_literal ""Virtual address 0x%lx not located in any PT_LOAD segment.\n"" " string_content escape_sequence ") , number_literal ))))) ;) (expression_statement "pcVar10 = in_EDX;" (assignment_expression "pcVar10 = in_EDX" identifier = identifier) ;) (labeled_statement "LAB_00026eab:\n  warn(message,pcVar10);" statement_identifier : (expression_statement "warn(message,pcVar10);" (call_expression "warn(message,pcVar10)" identifier (argument_list "(message,pcVar10)" ( identifier , identifier ))) ;)) (return_statement "return (wchar_t)in_EDX;" return (cast_expression "(wchar_t)in_EDX" ( (type_descriptor "wchar_t" type_identifier) ) identifier) ;) })))
(translation_unit "char * __regparm3 FUN_00026dc0(int param_1,char *param_2,uint param_3,uint param_4,int param_5)\n\n{\n  uint uVar1;\n  int *piVar2;\n  undefined4 uVar3;\n  int iVar4;\n  uint uVar5;\n  int *piVar6;\n  uint uVar7;\n  char *pcVar8;\n  \n  piVar2 = *(int **)(param_1 + 0x60);\n  if (piVar2 == (int *)0x0) {\n    iVar4 = FUN_000269d0();\n    if (iVar4 == 0) {\n      pcVar8 = "Cannot interpret virtual addresses without program headers.\n";\n      uVar3 = dcgettext(0,"Cannot interpret virtual addresses without program headers.\n",5);\n      goto LAB_00026eab;\n    }\n    piVar2 = *(int **)(param_1 + 0x60);\n  }\n  piVar6 = piVar2 + *(int *)(param_1 + 0x4c) * 0xe;\n  if (piVar2 < piVar6) {\n    uVar7 = param_5 + param_3 + (uint)CARRY4(param_4,(uint)param_2);\n    do {\n      if (*piVar2 == 1) {\n        uVar1 = piVar2[4];\n        uVar5 = -(piVar2[0xd] + (uint)(piVar2[0xc] != 0)) & piVar2[5];\n        if ((uVar5 <= param_3 && (uint)(param_2 < (char *)(-piVar2[0xc] & uVar1)) <= param_3 - uVar5\n            ) && (uVar5 = piVar2[5] + piVar2[9] + (uint)CARRY4(uVar1,piVar2[8]),\n                 uVar7 <= uVar5 &&\n                 (uint)((char *)(uVar1 + piVar2[8]) < param_2 + param_4) <= uVar5 - uVar7)) {\n          return param_2 + (piVar2[2] - uVar1);\n        }\n      }\n      piVar2 = piVar2 + 0xe;\n    } while (piVar2 < piVar6);\n  }\n  uVar3 = dcgettext(0,"Virtual address 0x%lx not located in any PT_LOAD segment.\n",5);\n  pcVar8 = param_2;\nLAB_00026eab:\n  warn(uVar3,pcVar8);\n  return param_2;\n}\n\n" (function_definition "char * __regparm3 FUN_00026dc0(int param_1,char *param_2,uint param_3,uint param_4,int param_5)\n\n{\n  uint uVar1;\n  int *piVar2;\n  undefined4 uVar3;\n  int iVar4;\n  uint uVar5;\n  int *piVar6;\n  uint uVar7;\n  char *pcVar8;\n  \n  piVar2 = *(int **)(param_1 + 0x60);\n  if (piVar2 == (int *)0x0) {\n    iVar4 = FUN_000269d0();\n    if (iVar4 == 0) {\n      pcVar8 = "Cannot interpret virtual addresses without program headers.\n";\n      uVar3 = dcgettext(0,"Cannot interpret virtual addresses without program headers.\n",5);\n      goto LAB_00026eab;\n    }\n    piVar2 = *(int **)(param_1 + 0x60);\n  }\n  piVar6 = piVar2 + *(int *)(param_1 + 0x4c) * 0xe;\n  if (piVar2 < piVar6) {\n    uVar7 = param_5 + param_3 + (uint)CARRY4(param_4,(uint)param_2);\n    do {\n      if (*piVar2 == 1) {\n        uVar1 = piVar2[4];\n        uVar5 = -(piVar2[0xd] + (uint)(piVar2[0xc] != 0)) & piVar2[5];\n        if ((uVar5 <= param_3 && (uint)(param_2 < (char *)(-piVar2[0xc] & uVar1)) <= param_3 - uVar5\n            ) && (uVar5 = piVar2[5] + piVar2[9] + (uint)CARRY4(uVar1,piVar2[8]),\n                 uVar7 <= uVar5 &&\n                 (uint)((char *)(uVar1 + piVar2[8]) < param_2 + param_4) <= uVar5 - uVar7)) {\n          return param_2 + (piVar2[2] - uVar1);\n        }\n      }\n      piVar2 = piVar2 + 0xe;\n    } while (piVar2 < piVar6);\n  }\n  uVar3 = dcgettext(0,"Virtual address 0x%lx not located in any PT_LOAD segment.\n",5);\n  pcVar8 = param_2;\nLAB_00026eab:\n  warn(uVar3,pcVar8);\n  return param_2;\n}" primitive_type (pointer_declarator "* __regparm3 FUN_00026dc0(int param_1,char *param_2,uint param_3,uint param_4,int param_5)" * (ERROR "__regparm3" identifier) (function_declarator "FUN_00026dc0(int param_1,char *param_2,uint param_3,uint param_4,int param_5)" identifier (parameter_list "(int param_1,char *param_2,uint param_3,uint param_4,int param_5)" ( (parameter_declaration "int param_1" primitive_type identifier) , (parameter_declaration "char *param_2" primitive_type (pointer_declarator "*param_2" * identifier)) , (parameter_declaration "uint param_3" type_identifier identifier) , (parameter_declaration "uint param_4" type_identifier identifier) , (parameter_declaration "int param_5" primitive_type identifier) )))) (compound_statement "{\n  uint uVar1;\n  int *piVar2;\n  undefined4 uVar3;\n  int iVar4;\n  uint uVar5;\n  int *piVar6;\n  uint uVar7;\n  char *pcVar8;\n  \n  piVar2 = *(int **)(param_1 + 0x60);\n  if (piVar2 == (int *)0x0) {\n    iVar4 = FUN_000269d0();\n    if (iVar4 == 0) {\n      pcVar8 = "Cannot interpret virtual addresses without program headers.\n";\n      uVar3 = dcgettext(0,"Cannot interpret virtual addresses without program headers.\n",5);\n      goto LAB_00026eab;\n    }\n    piVar2 = *(int **)(param_1 + 0x60);\n  }\n  piVar6 = piVar2 + *(int *)(param_1 + 0x4c) * 0xe;\n  if (piVar2 < piVar6) {\n    uVar7 = param_5 + param_3 + (uint)CARRY4(param_4,(uint)param_2);\n    do {\n      if (*piVar2 == 1) {\n        uVar1 = piVar2[4];\n        uVar5 = -(piVar2[0xd] + (uint)(piVar2[0xc] != 0)) & piVar2[5];\n        if ((uVar5 <= param_3 && (uint)(param_2 < (char *)(-piVar2[0xc] & uVar1)) <= param_3 - uVar5\n            ) && (uVar5 = piVar2[5] + piVar2[9] + (uint)CARRY4(uVar1,piVar2[8]),\n                 uVar7 <= uVar5 &&\n                 (uint)((char *)(uVar1 + piVar2[8]) < param_2 + param_4) <= uVar5 - uVar7)) {\n          return param_2 + (piVar2[2] - uVar1);\n        }\n      }\n      piVar2 = piVar2 + 0xe;\n    } while (piVar2 < piVar6);\n  }\n  uVar3 = dcgettext(0,"Virtual address 0x%lx not located in any PT_LOAD segment.\n",5);\n  pcVar8 = param_2;\nLAB_00026eab:\n  warn(uVar3,pcVar8);\n  return param_2;\n}" { (declaration "uint uVar1;" type_identifier identifier ;) (declaration "int *piVar2;" primitive_type (pointer_declarator "*piVar2" * identifier) ;) (declaration "undefined4 uVar3;" type_identifier identifier ;) (declaration "int iVar4;" primitive_type identifier ;) (declaration "uint uVar5;" type_identifier identifier ;) (declaration "int *piVar6;" primitive_type (pointer_declarator "*piVar6" * identifier) ;) (declaration "uint uVar7;" type_identifier identifier ;) (declaration "char *pcVar8;" primitive_type (pointer_declarator "*pcVar8" * identifier) ;) (expression_statement "piVar2 = *(int **)(param_1 + 0x60);" (assignment_expression "piVar2 = *(int **)(param_1 + 0x60)" identifier = (pointer_expression "*(int **)(param_1 + 0x60)" * (cast_expression "(int **)(param_1 + 0x60)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x60)" ( (binary_expression "param_1 + 0x60" identifier + number_literal) ))))) ;) (if_statement "if (piVar2 == (int *)0x0) {\n    iVar4 = FUN_000269d0();\n    if (iVar4 == 0) {\n      pcVar8 = "Cannot interpret virtual addresses without program headers.\n";\n      uVar3 = dcgettext(0,"Cannot interpret virtual addresses without program headers.\n",5);\n      goto LAB_00026eab;\n    }\n    piVar2 = *(int **)(param_1 + 0x60);\n  }" if (parenthesized_expression "(piVar2 == (int *)0x0)" ( (binary_expression "piVar2 == (int *)0x0" identifier == (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    iVar4 = FUN_000269d0();\n    if (iVar4 == 0) {\n      pcVar8 = "Cannot interpret virtual addresses without program headers.\n";\n      uVar3 = dcgettext(0,"Cannot interpret virtual addresses without program headers.\n",5);\n      goto LAB_00026eab;\n    }\n    piVar2 = *(int **)(param_1 + 0x60);\n  }" { (expression_statement "iVar4 = FUN_000269d0();" (assignment_expression "iVar4 = FUN_000269d0()" identifier = (call_expression "FUN_000269d0()" identifier (argument_list "()" ( )))) ;) (if_statement "if (iVar4 == 0) {\n      pcVar8 = "Cannot interpret virtual addresses without program headers.\n";\n      uVar3 = dcgettext(0,"Cannot interpret virtual addresses without program headers.\n",5);\n      goto LAB_00026eab;\n    }" if (parenthesized_expression "(iVar4 == 0)" ( (binary_expression "iVar4 == 0" identifier == number_literal) )) (compound_statement "{\n      pcVar8 = "Cannot interpret virtual addresses without program headers.\n";\n      uVar3 = dcgettext(0,"Cannot interpret virtual addresses without program headers.\n",5);\n      goto LAB_00026eab;\n    }" { (expression_statement "pcVar8 = "Cannot interpret virtual addresses without program headers.\n";" (assignment_expression "pcVar8 = "Cannot interpret virtual addresses without program headers.\n"" identifier = (string_literal ""Cannot interpret virtual addresses without program headers.\n"" " string_content escape_sequence ")) ;) (expression_statement "uVar3 = dcgettext(0,"Cannot interpret virtual addresses without program headers.\n",5);" (assignment_expression "uVar3 = dcgettext(0,"Cannot interpret virtual addresses without program headers.\n",5)" identifier = (call_expression "dcgettext(0,"Cannot interpret virtual addresses without program headers.\n",5)" identifier (argument_list "(0,"Cannot interpret virtual addresses without program headers.\n",5)" ( number_literal , (string_literal ""Cannot interpret virtual addresses without program headers.\n"" " string_content escape_sequence ") , number_literal )))) ;) (goto_statement "goto LAB_00026eab;" goto statement_identifier ;) })) (expression_statement "piVar2 = *(int **)(param_1 + 0x60);" (assignment_expression "piVar2 = *(int **)(param_1 + 0x60)" identifier = (pointer_expression "*(int **)(param_1 + 0x60)" * (cast_expression "(int **)(param_1 + 0x60)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x60)" ( (binary_expression "param_1 + 0x60" identifier + number_literal) ))))) ;) })) (expression_statement "piVar6 = piVar2 + *(int *)(param_1 + 0x4c) * 0xe;" (assignment_expression "piVar6 = piVar2 + *(int *)(param_1 + 0x4c) * 0xe" identifier = (binary_expression "piVar2 + *(int *)(param_1 + 0x4c) * 0xe" identifier + (binary_expression "*(int *)(param_1 + 0x4c) * 0xe" (pointer_expression "*(int *)(param_1 + 0x4c)" * (cast_expression "(int *)(param_1 + 0x4c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x4c)" ( (binary_expression "param_1 + 0x4c" identifier + number_literal) )))) * number_literal))) ;) (if_statement "if (piVar2 < piVar6) {\n    uVar7 = param_5 + param_3 + (uint)CARRY4(param_4,(uint)param_2);\n    do {\n      if (*piVar2 == 1) {\n        uVar1 = piVar2[4];\n        uVar5 = -(piVar2[0xd] + (uint)(piVar2[0xc] != 0)) & piVar2[5];\n        if ((uVar5 <= param_3 && (uint)(param_2 < (char *)(-piVar2[0xc] & uVar1)) <= param_3 - uVar5\n            ) && (uVar5 = piVar2[5] + piVar2[9] + (uint)CARRY4(uVar1,piVar2[8]),\n                 uVar7 <= uVar5 &&\n                 (uint)((char *)(uVar1 + piVar2[8]) < param_2 + param_4) <= uVar5 - uVar7)) {\n          return param_2 + (piVar2[2] - uVar1);\n        }\n      }\n      piVar2 = piVar2 + 0xe;\n    } while (piVar2 < piVar6);\n  }" if (parenthesized_expression "(piVar2 < piVar6)" ( (binary_expression "piVar2 < piVar6" identifier < identifier) )) (compound_statement "{\n    uVar7 = param_5 + param_3 + (uint)CARRY4(param_4,(uint)param_2);\n    do {\n      if (*piVar2 == 1) {\n        uVar1 = piVar2[4];\n        uVar5 = -(piVar2[0xd] + (uint)(piVar2[0xc] != 0)) & piVar2[5];\n        if ((uVar5 <= param_3 && (uint)(param_2 < (char *)(-piVar2[0xc] & uVar1)) <= param_3 - uVar5\n            ) && (uVar5 = piVar2[5] + piVar2[9] + (uint)CARRY4(uVar1,piVar2[8]),\n                 uVar7 <= uVar5 &&\n                 (uint)((char *)(uVar1 + piVar2[8]) < param_2 + param_4) <= uVar5 - uVar7)) {\n          return param_2 + (piVar2[2] - uVar1);\n        }\n      }\n      piVar2 = piVar2 + 0xe;\n    } while (piVar2 < piVar6);\n  }" { (expression_statement "uVar7 = param_5 + param_3 + (uint)CARRY4(param_4,(uint)param_2);" (assignment_expression "uVar7 = param_5 + param_3 + (uint)CARRY4(param_4,(uint)param_2)" identifier = (binary_expression "param_5 + param_3 + (uint)CARRY4(param_4,(uint)param_2)" (binary_expression "param_5 + param_3" identifier + identifier) + (cast_expression "(uint)CARRY4(param_4,(uint)param_2)" ( (type_descriptor "uint" type_identifier) ) (call_expression "CARRY4(param_4,(uint)param_2)" identifier (argument_list "(param_4,(uint)param_2)" ( identifier , (cast_expression "(uint)param_2" ( (type_descriptor "uint" type_identifier) ) identifier) )))))) ;) (do_statement "do {\n      if (*piVar2 == 1) {\n        uVar1 = piVar2[4];\n        uVar5 = -(piVar2[0xd] + (uint)(piVar2[0xc] != 0)) & piVar2[5];\n        if ((uVar5 <= param_3 && (uint)(param_2 < (char *)(-piVar2[0xc] & uVar1)) <= param_3 - uVar5\n            ) && (uVar5 = piVar2[5] + piVar2[9] + (uint)CARRY4(uVar1,piVar2[8]),\n                 uVar7 <= uVar5 &&\n                 (uint)((char *)(uVar1 + piVar2[8]) < param_2 + param_4) <= uVar5 - uVar7)) {\n          return param_2 + (piVar2[2] - uVar1);\n        }\n      }\n      piVar2 = piVar2 + 0xe;\n    } while (piVar2 < piVar6);" do (compound_statement "{\n      if (*piVar2 == 1) {\n        uVar1 = piVar2[4];\n        uVar5 = -(piVar2[0xd] + (uint)(piVar2[0xc] != 0)) & piVar2[5];\n        if ((uVar5 <= param_3 && (uint)(param_2 < (char *)(-piVar2[0xc] & uVar1)) <= param_3 - uVar5\n            ) && (uVar5 = piVar2[5] + piVar2[9] + (uint)CARRY4(uVar1,piVar2[8]),\n                 uVar7 <= uVar5 &&\n                 (uint)((char *)(uVar1 + piVar2[8]) < param_2 + param_4) <= uVar5 - uVar7)) {\n          return param_2 + (piVar2[2] - uVar1);\n        }\n      }\n      piVar2 = piVar2 + 0xe;\n    }" { (if_statement "if (*piVar2 == 1) {\n        uVar1 = piVar2[4];\n        uVar5 = -(piVar2[0xd] + (uint)(piVar2[0xc] != 0)) & piVar2[5];\n        if ((uVar5 <= param_3 && (uint)(param_2 < (char *)(-piVar2[0xc] & uVar1)) <= param_3 - uVar5\n            ) && (uVar5 = piVar2[5] + piVar2[9] + (uint)CARRY4(uVar1,piVar2[8]),\n                 uVar7 <= uVar5 &&\n                 (uint)((char *)(uVar1 + piVar2[8]) < param_2 + param_4) <= uVar5 - uVar7)) {\n          return param_2 + (piVar2[2] - uVar1);\n        }\n      }" if (parenthesized_expression "(*piVar2 == 1)" ( (binary_expression "*piVar2 == 1" (pointer_expression "*piVar2" * identifier) == number_literal) )) (compound_statement "{\n        uVar1 = piVar2[4];\n        uVar5 = -(piVar2[0xd] + (uint)(piVar2[0xc] != 0)) & piVar2[5];\n        if ((uVar5 <= param_3 && (uint)(param_2 < (char *)(-piVar2[0xc] & uVar1)) <= param_3 - uVar5\n            ) && (uVar5 = piVar2[5] + piVar2[9] + (uint)CARRY4(uVar1,piVar2[8]),\n                 uVar7 <= uVar5 &&\n                 (uint)((char *)(uVar1 + piVar2[8]) < param_2 + param_4) <= uVar5 - uVar7)) {\n          return param_2 + (piVar2[2] - uVar1);\n        }\n      }" { (expression_statement "uVar1 = piVar2[4];" (assignment_expression "uVar1 = piVar2[4]" identifier = (subscript_expression "piVar2[4]" identifier [ number_literal ])) ;) (expression_statement "uVar5 = -(piVar2[0xd] + (uint)(piVar2[0xc] != 0)) & piVar2[5];" (assignment_expression "uVar5 = -(piVar2[0xd] + (uint)(piVar2[0xc] != 0)) & piVar2[5]" identifier = (binary_expression "-(piVar2[0xd] + (uint)(piVar2[0xc] != 0)) & piVar2[5]" (unary_expression "-(piVar2[0xd] + (uint)(piVar2[0xc] != 0))" - (parenthesized_expression "(piVar2[0xd] + (uint)(piVar2[0xc] != 0))" ( (binary_expression "piVar2[0xd] + (uint)(piVar2[0xc] != 0)" (subscript_expression "piVar2[0xd]" identifier [ number_literal ]) + (call_expression "(uint)(piVar2[0xc] != 0)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(piVar2[0xc] != 0)" ( (binary_expression "piVar2[0xc] != 0" (subscript_expression "piVar2[0xc]" identifier [ number_literal ]) != number_literal) )))) ))) & (subscript_expression "piVar2[5]" identifier [ number_literal ]))) ;) (if_statement "if ((uVar5 <= param_3 && (uint)(param_2 < (char *)(-piVar2[0xc] & uVar1)) <= param_3 - uVar5\n            ) && (uVar5 = piVar2[5] + piVar2[9] + (uint)CARRY4(uVar1,piVar2[8]),\n                 uVar7 <= uVar5 &&\n                 (uint)((char *)(uVar1 + piVar2[8]) < param_2 + param_4) <= uVar5 - uVar7)) {\n          return param_2 + (piVar2[2] - uVar1);\n        }" if (parenthesized_expression "((uVar5 <= param_3 && (uint)(param_2 < (char *)(-piVar2[0xc] & uVar1)) <= param_3 - uVar5\n            ) && (uVar5 = piVar2[5] + piVar2[9] + (uint)CARRY4(uVar1,piVar2[8]),\n                 uVar7 <= uVar5 &&\n                 (uint)((char *)(uVar1 + piVar2[8]) < param_2 + param_4) <= uVar5 - uVar7))" ( (binary_expression "(uVar5 <= param_3 && (uint)(param_2 < (char *)(-piVar2[0xc] & uVar1)) <= param_3 - uVar5\n            ) && (uVar5 = piVar2[5] + piVar2[9] + (uint)CARRY4(uVar1,piVar2[8]),\n                 uVar7 <= uVar5 &&\n                 (uint)((char *)(uVar1 + piVar2[8]) < param_2 + param_4) <= uVar5 - uVar7)" (parenthesized_expression "(uVar5 <= param_3 && (uint)(param_2 < (char *)(-piVar2[0xc] & uVar1)) <= param_3 - uVar5\n            )" ( (binary_expression "uVar5 <= param_3 && (uint)(param_2 < (char *)(-piVar2[0xc] & uVar1)) <= param_3 - uVar5" (binary_expression "uVar5 <= param_3" identifier <= identifier) && (binary_expression "(uint)(param_2 < (char *)(-piVar2[0xc] & uVar1)) <= param_3 - uVar5" (call_expression "(uint)(param_2 < (char *)(-piVar2[0xc] & uVar1))" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(param_2 < (char *)(-piVar2[0xc] & uVar1))" ( (binary_expression "param_2 < (char *)(-piVar2[0xc] & uVar1)" identifier < (cast_expression "(char *)(-piVar2[0xc] & uVar1)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(-piVar2[0xc] & uVar1)" ( (binary_expression "-piVar2[0xc] & uVar1" (unary_expression "-piVar2[0xc]" - (subscript_expression "piVar2[0xc]" identifier [ number_literal ])) & identifier) )))) ))) <= (binary_expression "param_3 - uVar5" identifier - identifier))) )) && (parenthesized_expression "(uVar5 = piVar2[5] + piVar2[9] + (uint)CARRY4(uVar1,piVar2[8]),\n                 uVar7 <= uVar5 &&\n                 (uint)((char *)(uVar1 + piVar2[8]) < param_2 + param_4) <= uVar5 - uVar7)" ( (comma_expression "uVar5 = piVar2[5] + piVar2[9] + (uint)CARRY4(uVar1,piVar2[8]),\n                 uVar7 <= uVar5 &&\n                 (uint)((char *)(uVar1 + piVar2[8]) < param_2 + param_4) <= uVar5 - uVar7" (assignment_expression "uVar5 = piVar2[5] + piVar2[9] + (uint)CARRY4(uVar1,piVar2[8])" identifier = (binary_expression "piVar2[5] + piVar2[9] + (uint)CARRY4(uVar1,piVar2[8])" (binary_expression "piVar2[5] + piVar2[9]" (subscript_expression "piVar2[5]" identifier [ number_literal ]) + (subscript_expression "piVar2[9]" identifier [ number_literal ])) + (cast_expression "(uint)CARRY4(uVar1,piVar2[8])" ( (type_descriptor "uint" type_identifier) ) (call_expression "CARRY4(uVar1,piVar2[8])" identifier (argument_list "(uVar1,piVar2[8])" ( identifier , (subscript_expression "piVar2[8]" identifier [ number_literal ]) )))))) , (binary_expression "uVar7 <= uVar5 &&\n                 (uint)((char *)(uVar1 + piVar2[8]) < param_2 + param_4) <= uVar5 - uVar7" (binary_expression "uVar7 <= uVar5" identifier <= identifier) && (binary_expression "(uint)((char *)(uVar1 + piVar2[8]) < param_2 + param_4) <= uVar5 - uVar7" (call_expression "(uint)((char *)(uVar1 + piVar2[8]) < param_2 + param_4)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((char *)(uVar1 + piVar2[8]) < param_2 + param_4)" ( (binary_expression "(char *)(uVar1 + piVar2[8]) < param_2 + param_4" (cast_expression "(char *)(uVar1 + piVar2[8])" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar1 + piVar2[8])" ( (binary_expression "uVar1 + piVar2[8]" identifier + (subscript_expression "piVar2[8]" identifier [ number_literal ])) ))) < (binary_expression "param_2 + param_4" identifier + identifier)) ))) <= (binary_expression "uVar5 - uVar7" identifier - identifier)))) ))) )) (compound_statement "{\n          return param_2 + (piVar2[2] - uVar1);\n        }" { (return_statement "return param_2 + (piVar2[2] - uVar1);" return (binary_expression "param_2 + (piVar2[2] - uVar1)" identifier + (parenthesized_expression "(piVar2[2] - uVar1)" ( (binary_expression "piVar2[2] - uVar1" (subscript_expression "piVar2[2]" identifier [ number_literal ]) - identifier) ))) ;) })) })) (expression_statement "piVar2 = piVar2 + 0xe;" (assignment_expression "piVar2 = piVar2 + 0xe" identifier = (binary_expression "piVar2 + 0xe" identifier + number_literal)) ;) }) while (parenthesized_expression "(piVar2 < piVar6)" ( (binary_expression "piVar2 < piVar6" identifier < identifier) )) ;) })) (expression_statement "uVar3 = dcgettext(0,"Virtual address 0x%lx not located in any PT_LOAD segment.\n",5);" (assignment_expression "uVar3 = dcgettext(0,"Virtual address 0x%lx not located in any PT_LOAD segment.\n",5)" identifier = (call_expression "dcgettext(0,"Virtual address 0x%lx not located in any PT_LOAD segment.\n",5)" identifier (argument_list "(0,"Virtual address 0x%lx not located in any PT_LOAD segment.\n",5)" ( number_literal , (string_literal ""Virtual address 0x%lx not located in any PT_LOAD segment.\n"" " string_content escape_sequence ") , number_literal )))) ;) (expression_statement "pcVar8 = param_2;" (assignment_expression "pcVar8 = param_2" identifier = identifier) ;) (labeled_statement "LAB_00026eab:\n  warn(uVar3,pcVar8);" statement_identifier : (expression_statement "warn(uVar3,pcVar8);" (call_expression "warn(uVar3,pcVar8)" identifier (argument_list "(uVar3,pcVar8)" ( identifier , identifier ))) ;)) (return_statement "return param_2;" return identifier ;) })))
(translation_unit (function_definition TYPE (pointer_declarator * (ERROR IDENT) (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) )))) (compound_statement { (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_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 = (call_expression IDENT (argument_list ( )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (string_literal " string_content escape_sequence ")) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( LIT , (string_literal " string_content escape_sequence ") , LIT )))) ;) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) * LIT))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT + IDENT) + (cast_expression ( (type_descriptor TYPE) ) (call_expression IDENT (argument_list ( IDENT , (cast_expression ( (type_descriptor TYPE) ) IDENT) )))))) ;) (do_statement do (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (binary_expression (unary_expression - (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) + (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (subscript_expression IDENT [ LIT ]) != LIT) )))) ))) & (subscript_expression IDENT [ LIT ]))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (binary_expression IDENT <= IDENT) && (binary_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT < (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (unary_expression - (subscript_expression IDENT [ LIT ])) & IDENT) )))) ))) <= (binary_expression IDENT - IDENT))) )) && (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (binary_expression (binary_expression (subscript_expression IDENT [ LIT ]) + (subscript_expression IDENT [ LIT ])) + (cast_expression ( (type_descriptor TYPE) ) (call_expression IDENT (argument_list ( IDENT , (subscript_expression IDENT [ LIT ]) )))))) , (binary_expression (binary_expression IDENT <= IDENT) && (binary_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (subscript_expression IDENT [ LIT ])) ))) < (binary_expression IDENT + IDENT)) ))) <= (binary_expression IDENT - IDENT)))) ))) )) (compound_statement { (return_statement return (binary_expression IDENT + (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) - IDENT) ))) ;) })) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT < IDENT) )) ;) })) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( LIT , (string_literal " string_content escape_sequence ") , LIT )))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (labeled_statement statement_identifier : (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT ))) ;)) (return_statement return IDENT ;) })))
(function_definition "char * __regparm3 FUN_00026dc0(int param_1,char *param_2,uint param_3,uint param_4,int param_5)\n\n{\n  uint uVar1;\n  int *piVar2;\n  undefined4 uVar3;\n  int iVar4;\n  uint uVar5;\n  int *piVar6;\n  uint uVar7;\n  char *pcVar8;\n  \n  piVar2 = *(int **)(param_1 + 0x60);\n  if (piVar2 == (int *)0x0) {\n    iVar4 = FUN_000269d0();\n    if (iVar4 == 0) {\n      pcVar8 = "Cannot interpret virtual addresses without program headers.\n";\n      uVar3 = dcgettext(0,"Cannot interpret virtual addresses without program headers.\n",5);\n      goto LAB_00026eab;\n    }\n    piVar2 = *(int **)(param_1 + 0x60);\n  }\n  piVar6 = piVar2 + *(int *)(param_1 + 0x4c) * 0xe;\n  if (piVar2 < piVar6) {\n    uVar7 = param_5 + param_3 + (uint)CARRY4(param_4,(uint)param_2);\n    do {\n      if (*piVar2 == 1) {\n        uVar1 = piVar2[4];\n        uVar5 = -(piVar2[0xd] + (uint)(piVar2[0xc] != 0)) & piVar2[5];\n        if ((uVar5 <= param_3 && (uint)(param_2 < (char *)(-piVar2[0xc] & uVar1)) <= param_3 - uVar5\n            ) && (uVar5 = piVar2[5] + piVar2[9] + (uint)CARRY4(uVar1,piVar2[8]),\n                 uVar7 <= uVar5 &&\n                 (uint)((char *)(uVar1 + piVar2[8]) < param_2 + param_4) <= uVar5 - uVar7)) {\n          return param_2 + (piVar2[2] - uVar1);\n        }\n      }\n      piVar2 = piVar2 + 0xe;\n    } while (piVar2 < piVar6);\n  }\n  uVar3 = dcgettext(0,"Virtual address 0x%lx not located in any PT_LOAD segment.\n",5);\n  pcVar8 = param_2;\nLAB_00026eab:\n  warn(uVar3,pcVar8);\n  return param_2;\n}" (primitive_type "char") (pointer_declarator "* __regparm3 FUN_00026dc0(int param_1,char *param_2,uint param_3,uint param_4,int param_5)" (* "*") (ERROR "__regparm3" (identifier "__regparm3")) (function_declarator "FUN_00026dc0(int param_1,char *param_2,uint param_3,uint param_4,int param_5)" (identifier "FUN_00026dc0") (parameter_list "(int param_1,char *param_2,uint param_3,uint param_4,int param_5)" (( "(") (parameter_declaration "int param_1" (primitive_type "int") (identifier "param_1")) (, ",") (parameter_declaration "char *param_2" (primitive_type "char") (pointer_declarator "*param_2" (* "*") (identifier "param_2"))) (, ",") (parameter_declaration "uint param_3" (type_identifier "uint") (identifier "param_3")) (, ",") (parameter_declaration "uint param_4" (type_identifier "uint") (identifier "param_4")) (, ",") (parameter_declaration "int param_5" (primitive_type "int") (identifier "param_5")) () ")")))) (compound_statement "{\n  uint uVar1;\n  int *piVar2;\n  undefined4 uVar3;\n  int iVar4;\n  uint uVar5;\n  int *piVar6;\n  uint uVar7;\n  char *pcVar8;\n  \n  piVar2 = *(int **)(param_1 + 0x60);\n  if (piVar2 == (int *)0x0) {\n    iVar4 = FUN_000269d0();\n    if (iVar4 == 0) {\n      pcVar8 = "Cannot interpret virtual addresses without program headers.\n";\n      uVar3 = dcgettext(0,"Cannot interpret virtual addresses without program headers.\n",5);\n      goto LAB_00026eab;\n    }\n    piVar2 = *(int **)(param_1 + 0x60);\n  }\n  piVar6 = piVar2 + *(int *)(param_1 + 0x4c) * 0xe;\n  if (piVar2 < piVar6) {\n    uVar7 = param_5 + param_3 + (uint)CARRY4(param_4,(uint)param_2);\n    do {\n      if (*piVar2 == 1) {\n        uVar1 = piVar2[4];\n        uVar5 = -(piVar2[0xd] + (uint)(piVar2[0xc] != 0)) & piVar2[5];\n        if ((uVar5 <= param_3 && (uint)(param_2 < (char *)(-piVar2[0xc] & uVar1)) <= param_3 - uVar5\n            ) && (uVar5 = piVar2[5] + piVar2[9] + (uint)CARRY4(uVar1,piVar2[8]),\n                 uVar7 <= uVar5 &&\n                 (uint)((char *)(uVar1 + piVar2[8]) < param_2 + param_4) <= uVar5 - uVar7)) {\n          return param_2 + (piVar2[2] - uVar1);\n        }\n      }\n      piVar2 = piVar2 + 0xe;\n    } while (piVar2 < piVar6);\n  }\n  uVar3 = dcgettext(0,"Virtual address 0x%lx not located in any PT_LOAD segment.\n",5);\n  pcVar8 = param_2;\nLAB_00026eab:\n  warn(uVar3,pcVar8);\n  return param_2;\n}" ({ "{") (declaration "uint uVar1;" (type_identifier "uint") (identifier "uVar1") (; ";")) (declaration "int *piVar2;" (primitive_type "int") (pointer_declarator "*piVar2" (* "*") (identifier "piVar2")) (; ";")) (declaration "undefined4 uVar3;" (type_identifier "undefined4") (identifier "uVar3") (; ";")) (declaration "int iVar4;" (primitive_type "int") (identifier "iVar4") (; ";")) (declaration "uint uVar5;" (type_identifier "uint") (identifier "uVar5") (; ";")) (declaration "int *piVar6;" (primitive_type "int") (pointer_declarator "*piVar6" (* "*") (identifier "piVar6")) (; ";")) (declaration "uint uVar7;" (type_identifier "uint") (identifier "uVar7") (; ";")) (declaration "char *pcVar8;" (primitive_type "char") (pointer_declarator "*pcVar8" (* "*") (identifier "pcVar8")) (; ";")) (expression_statement "piVar2 = *(int **)(param_1 + 0x60);" (assignment_expression "piVar2 = *(int **)(param_1 + 0x60)" (identifier "piVar2") (= "=") (pointer_expression "*(int **)(param_1 + 0x60)" (* "*") (cast_expression "(int **)(param_1 + 0x60)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 0x60)" (( "(") (binary_expression "param_1 + 0x60" (identifier "param_1") (+ "+") (number_literal "0x60")) () ")"))))) (; ";")) (if_statement "if (piVar2 == (int *)0x0) {\n    iVar4 = FUN_000269d0();\n    if (iVar4 == 0) {\n      pcVar8 = "Cannot interpret virtual addresses without program headers.\n";\n      uVar3 = dcgettext(0,"Cannot interpret virtual addresses without program headers.\n",5);\n      goto LAB_00026eab;\n    }\n    piVar2 = *(int **)(param_1 + 0x60);\n  }" (if "if") (parenthesized_expression "(piVar2 == (int *)0x0)" (( "(") (binary_expression "piVar2 == (int *)0x0" (identifier "piVar2") (== "==") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n    iVar4 = FUN_000269d0();\n    if (iVar4 == 0) {\n      pcVar8 = "Cannot interpret virtual addresses without program headers.\n";\n      uVar3 = dcgettext(0,"Cannot interpret virtual addresses without program headers.\n",5);\n      goto LAB_00026eab;\n    }\n    piVar2 = *(int **)(param_1 + 0x60);\n  }" ({ "{") (expression_statement "iVar4 = FUN_000269d0();" (assignment_expression "iVar4 = FUN_000269d0()" (identifier "iVar4") (= "=") (call_expression "FUN_000269d0()" (identifier "FUN_000269d0") (argument_list "()" (( "(") () ")")))) (; ";")) (if_statement "if (iVar4 == 0) {\n      pcVar8 = "Cannot interpret virtual addresses without program headers.\n";\n      uVar3 = dcgettext(0,"Cannot interpret virtual addresses without program headers.\n",5);\n      goto LAB_00026eab;\n    }" (if "if") (parenthesized_expression "(iVar4 == 0)" (( "(") (binary_expression "iVar4 == 0" (identifier "iVar4") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n      pcVar8 = "Cannot interpret virtual addresses without program headers.\n";\n      uVar3 = dcgettext(0,"Cannot interpret virtual addresses without program headers.\n",5);\n      goto LAB_00026eab;\n    }" ({ "{") (expression_statement "pcVar8 = "Cannot interpret virtual addresses without program headers.\n";" (assignment_expression "pcVar8 = "Cannot interpret virtual addresses without program headers.\n"" (identifier "pcVar8") (= "=") (string_literal ""Cannot interpret virtual addresses without program headers.\n"" (" """) (string_content "Cannot interpret virtual addresses without program headers.") (escape_sequence "\n") (" """))) (; ";")) (expression_statement "uVar3 = dcgettext(0,"Cannot interpret virtual addresses without program headers.\n",5);" (assignment_expression "uVar3 = dcgettext(0,"Cannot interpret virtual addresses without program headers.\n",5)" (identifier "uVar3") (= "=") (call_expression "dcgettext(0,"Cannot interpret virtual addresses without program headers.\n",5)" (identifier "dcgettext") (argument_list "(0,"Cannot interpret virtual addresses without program headers.\n",5)" (( "(") (number_literal "0") (, ",") (string_literal ""Cannot interpret virtual addresses without program headers.\n"" (" """) (string_content "Cannot interpret virtual addresses without program headers.") (escape_sequence "\n") (" """)) (, ",") (number_literal "5") () ")")))) (; ";")) (goto_statement "goto LAB_00026eab;" (goto "goto") (statement_identifier "LAB_00026eab") (; ";")) (} "}"))) (expression_statement "piVar2 = *(int **)(param_1 + 0x60);" (assignment_expression "piVar2 = *(int **)(param_1 + 0x60)" (identifier "piVar2") (= "=") (pointer_expression "*(int **)(param_1 + 0x60)" (* "*") (cast_expression "(int **)(param_1 + 0x60)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 0x60)" (( "(") (binary_expression "param_1 + 0x60" (identifier "param_1") (+ "+") (number_literal "0x60")) () ")"))))) (; ";")) (} "}"))) (expression_statement "piVar6 = piVar2 + *(int *)(param_1 + 0x4c) * 0xe;" (assignment_expression "piVar6 = piVar2 + *(int *)(param_1 + 0x4c) * 0xe" (identifier "piVar6") (= "=") (binary_expression "piVar2 + *(int *)(param_1 + 0x4c) * 0xe" (identifier "piVar2") (+ "+") (binary_expression "*(int *)(param_1 + 0x4c) * 0xe" (pointer_expression "*(int *)(param_1 + 0x4c)" (* "*") (cast_expression "(int *)(param_1 + 0x4c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x4c)" (( "(") (binary_expression "param_1 + 0x4c" (identifier "param_1") (+ "+") (number_literal "0x4c")) () ")")))) (* "*") (number_literal "0xe")))) (; ";")) (if_statement "if (piVar2 < piVar6) {\n    uVar7 = param_5 + param_3 + (uint)CARRY4(param_4,(uint)param_2);\n    do {\n      if (*piVar2 == 1) {\n        uVar1 = piVar2[4];\n        uVar5 = -(piVar2[0xd] + (uint)(piVar2[0xc] != 0)) & piVar2[5];\n        if ((uVar5 <= param_3 && (uint)(param_2 < (char *)(-piVar2[0xc] & uVar1)) <= param_3 - uVar5\n            ) && (uVar5 = piVar2[5] + piVar2[9] + (uint)CARRY4(uVar1,piVar2[8]),\n                 uVar7 <= uVar5 &&\n                 (uint)((char *)(uVar1 + piVar2[8]) < param_2 + param_4) <= uVar5 - uVar7)) {\n          return param_2 + (piVar2[2] - uVar1);\n        }\n      }\n      piVar2 = piVar2 + 0xe;\n    } while (piVar2 < piVar6);\n  }" (if "if") (parenthesized_expression "(piVar2 < piVar6)" (( "(") (binary_expression "piVar2 < piVar6" (identifier "piVar2") (< "<") (identifier "piVar6")) () ")")) (compound_statement "{\n    uVar7 = param_5 + param_3 + (uint)CARRY4(param_4,(uint)param_2);\n    do {\n      if (*piVar2 == 1) {\n        uVar1 = piVar2[4];\n        uVar5 = -(piVar2[0xd] + (uint)(piVar2[0xc] != 0)) & piVar2[5];\n        if ((uVar5 <= param_3 && (uint)(param_2 < (char *)(-piVar2[0xc] & uVar1)) <= param_3 - uVar5\n            ) && (uVar5 = piVar2[5] + piVar2[9] + (uint)CARRY4(uVar1,piVar2[8]),\n                 uVar7 <= uVar5 &&\n                 (uint)((char *)(uVar1 + piVar2[8]) < param_2 + param_4) <= uVar5 - uVar7)) {\n          return param_2 + (piVar2[2] - uVar1);\n        }\n      }\n      piVar2 = piVar2 + 0xe;\n    } while (piVar2 < piVar6);\n  }" ({ "{") (expression_statement "uVar7 = param_5 + param_3 + (uint)CARRY4(param_4,(uint)param_2);" (assignment_expression "uVar7 = param_5 + param_3 + (uint)CARRY4(param_4,(uint)param_2)" (identifier "uVar7") (= "=") (binary_expression "param_5 + param_3 + (uint)CARRY4(param_4,(uint)param_2)" (binary_expression "param_5 + param_3" (identifier "param_5") (+ "+") (identifier "param_3")) (+ "+") (cast_expression "(uint)CARRY4(param_4,(uint)param_2)" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (call_expression "CARRY4(param_4,(uint)param_2)" (identifier "CARRY4") (argument_list "(param_4,(uint)param_2)" (( "(") (identifier "param_4") (, ",") (cast_expression "(uint)param_2" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "param_2")) () ")")))))) (; ";")) (do_statement "do {\n      if (*piVar2 == 1) {\n        uVar1 = piVar2[4];\n        uVar5 = -(piVar2[0xd] + (uint)(piVar2[0xc] != 0)) & piVar2[5];\n        if ((uVar5 <= param_3 && (uint)(param_2 < (char *)(-piVar2[0xc] & uVar1)) <= param_3 - uVar5\n            ) && (uVar5 = piVar2[5] + piVar2[9] + (uint)CARRY4(uVar1,piVar2[8]),\n                 uVar7 <= uVar5 &&\n                 (uint)((char *)(uVar1 + piVar2[8]) < param_2 + param_4) <= uVar5 - uVar7)) {\n          return param_2 + (piVar2[2] - uVar1);\n        }\n      }\n      piVar2 = piVar2 + 0xe;\n    } while (piVar2 < piVar6);" (do "do") (compound_statement "{\n      if (*piVar2 == 1) {\n        uVar1 = piVar2[4];\n        uVar5 = -(piVar2[0xd] + (uint)(piVar2[0xc] != 0)) & piVar2[5];\n        if ((uVar5 <= param_3 && (uint)(param_2 < (char *)(-piVar2[0xc] & uVar1)) <= param_3 - uVar5\n            ) && (uVar5 = piVar2[5] + piVar2[9] + (uint)CARRY4(uVar1,piVar2[8]),\n                 uVar7 <= uVar5 &&\n                 (uint)((char *)(uVar1 + piVar2[8]) < param_2 + param_4) <= uVar5 - uVar7)) {\n          return param_2 + (piVar2[2] - uVar1);\n        }\n      }\n      piVar2 = piVar2 + 0xe;\n    }" ({ "{") (if_statement "if (*piVar2 == 1) {\n        uVar1 = piVar2[4];\n        uVar5 = -(piVar2[0xd] + (uint)(piVar2[0xc] != 0)) & piVar2[5];\n        if ((uVar5 <= param_3 && (uint)(param_2 < (char *)(-piVar2[0xc] & uVar1)) <= param_3 - uVar5\n            ) && (uVar5 = piVar2[5] + piVar2[9] + (uint)CARRY4(uVar1,piVar2[8]),\n                 uVar7 <= uVar5 &&\n                 (uint)((char *)(uVar1 + piVar2[8]) < param_2 + param_4) <= uVar5 - uVar7)) {\n          return param_2 + (piVar2[2] - uVar1);\n        }\n      }" (if "if") (parenthesized_expression "(*piVar2 == 1)" (( "(") (binary_expression "*piVar2 == 1" (pointer_expression "*piVar2" (* "*") (identifier "piVar2")) (== "==") (number_literal "1")) () ")")) (compound_statement "{\n        uVar1 = piVar2[4];\n        uVar5 = -(piVar2[0xd] + (uint)(piVar2[0xc] != 0)) & piVar2[5];\n        if ((uVar5 <= param_3 && (uint)(param_2 < (char *)(-piVar2[0xc] & uVar1)) <= param_3 - uVar5\n            ) && (uVar5 = piVar2[5] + piVar2[9] + (uint)CARRY4(uVar1,piVar2[8]),\n                 uVar7 <= uVar5 &&\n                 (uint)((char *)(uVar1 + piVar2[8]) < param_2 + param_4) <= uVar5 - uVar7)) {\n          return param_2 + (piVar2[2] - uVar1);\n        }\n      }" ({ "{") (expression_statement "uVar1 = piVar2[4];" (assignment_expression "uVar1 = piVar2[4]" (identifier "uVar1") (= "=") (subscript_expression "piVar2[4]" (identifier "piVar2") ([ "[") (number_literal "4") (] "]"))) (; ";")) (expression_statement "uVar5 = -(piVar2[0xd] + (uint)(piVar2[0xc] != 0)) & piVar2[5];" (assignment_expression "uVar5 = -(piVar2[0xd] + (uint)(piVar2[0xc] != 0)) & piVar2[5]" (identifier "uVar5") (= "=") (binary_expression "-(piVar2[0xd] + (uint)(piVar2[0xc] != 0)) & piVar2[5]" (unary_expression "-(piVar2[0xd] + (uint)(piVar2[0xc] != 0))" (- "-") (parenthesized_expression "(piVar2[0xd] + (uint)(piVar2[0xc] != 0))" (( "(") (binary_expression "piVar2[0xd] + (uint)(piVar2[0xc] != 0)" (subscript_expression "piVar2[0xd]" (identifier "piVar2") ([ "[") (number_literal "0xd") (] "]")) (+ "+") (call_expression "(uint)(piVar2[0xc] != 0)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(piVar2[0xc] != 0)" (( "(") (binary_expression "piVar2[0xc] != 0" (subscript_expression "piVar2[0xc]" (identifier "piVar2") ([ "[") (number_literal "0xc") (] "]")) (!= "!=") (number_literal "0")) () ")")))) () ")"))) (& "&") (subscript_expression "piVar2[5]" (identifier "piVar2") ([ "[") (number_literal "5") (] "]")))) (; ";")) (if_statement "if ((uVar5 <= param_3 && (uint)(param_2 < (char *)(-piVar2[0xc] & uVar1)) <= param_3 - uVar5\n            ) && (uVar5 = piVar2[5] + piVar2[9] + (uint)CARRY4(uVar1,piVar2[8]),\n                 uVar7 <= uVar5 &&\n                 (uint)((char *)(uVar1 + piVar2[8]) < param_2 + param_4) <= uVar5 - uVar7)) {\n          return param_2 + (piVar2[2] - uVar1);\n        }" (if "if") (parenthesized_expression "((uVar5 <= param_3 && (uint)(param_2 < (char *)(-piVar2[0xc] & uVar1)) <= param_3 - uVar5\n            ) && (uVar5 = piVar2[5] + piVar2[9] + (uint)CARRY4(uVar1,piVar2[8]),\n                 uVar7 <= uVar5 &&\n                 (uint)((char *)(uVar1 + piVar2[8]) < param_2 + param_4) <= uVar5 - uVar7))" (( "(") (binary_expression "(uVar5 <= param_3 && (uint)(param_2 < (char *)(-piVar2[0xc] & uVar1)) <= param_3 - uVar5\n            ) && (uVar5 = piVar2[5] + piVar2[9] + (uint)CARRY4(uVar1,piVar2[8]),\n                 uVar7 <= uVar5 &&\n                 (uint)((char *)(uVar1 + piVar2[8]) < param_2 + param_4) <= uVar5 - uVar7)" (parenthesized_expression "(uVar5 <= param_3 && (uint)(param_2 < (char *)(-piVar2[0xc] & uVar1)) <= param_3 - uVar5\n            )" (( "(") (binary_expression "uVar5 <= param_3 && (uint)(param_2 < (char *)(-piVar2[0xc] & uVar1)) <= param_3 - uVar5" (binary_expression "uVar5 <= param_3" (identifier "uVar5") (<= "<=") (identifier "param_3")) (&& "&&") (binary_expression "(uint)(param_2 < (char *)(-piVar2[0xc] & uVar1)) <= param_3 - uVar5" (call_expression "(uint)(param_2 < (char *)(-piVar2[0xc] & uVar1))" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(param_2 < (char *)(-piVar2[0xc] & uVar1))" (( "(") (binary_expression "param_2 < (char *)(-piVar2[0xc] & uVar1)" (identifier "param_2") (< "<") (cast_expression "(char *)(-piVar2[0xc] & uVar1)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(-piVar2[0xc] & uVar1)" (( "(") (binary_expression "-piVar2[0xc] & uVar1" (unary_expression "-piVar2[0xc]" (- "-") (subscript_expression "piVar2[0xc]" (identifier "piVar2") ([ "[") (number_literal "0xc") (] "]"))) (& "&") (identifier "uVar1")) () ")")))) () ")"))) (<= "<=") (binary_expression "param_3 - uVar5" (identifier "param_3") (- "-") (identifier "uVar5")))) () ")")) (&& "&&") (parenthesized_expression "(uVar5 = piVar2[5] + piVar2[9] + (uint)CARRY4(uVar1,piVar2[8]),\n                 uVar7 <= uVar5 &&\n                 (uint)((char *)(uVar1 + piVar2[8]) < param_2 + param_4) <= uVar5 - uVar7)" (( "(") (comma_expression "uVar5 = piVar2[5] + piVar2[9] + (uint)CARRY4(uVar1,piVar2[8]),\n                 uVar7 <= uVar5 &&\n                 (uint)((char *)(uVar1 + piVar2[8]) < param_2 + param_4) <= uVar5 - uVar7" (assignment_expression "uVar5 = piVar2[5] + piVar2[9] + (uint)CARRY4(uVar1,piVar2[8])" (identifier "uVar5") (= "=") (binary_expression "piVar2[5] + piVar2[9] + (uint)CARRY4(uVar1,piVar2[8])" (binary_expression "piVar2[5] + piVar2[9]" (subscript_expression "piVar2[5]" (identifier "piVar2") ([ "[") (number_literal "5") (] "]")) (+ "+") (subscript_expression "piVar2[9]" (identifier "piVar2") ([ "[") (number_literal "9") (] "]"))) (+ "+") (cast_expression "(uint)CARRY4(uVar1,piVar2[8])" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (call_expression "CARRY4(uVar1,piVar2[8])" (identifier "CARRY4") (argument_list "(uVar1,piVar2[8])" (( "(") (identifier "uVar1") (, ",") (subscript_expression "piVar2[8]" (identifier "piVar2") ([ "[") (number_literal "8") (] "]")) () ")")))))) (, ",") (binary_expression "uVar7 <= uVar5 &&\n                 (uint)((char *)(uVar1 + piVar2[8]) < param_2 + param_4) <= uVar5 - uVar7" (binary_expression "uVar7 <= uVar5" (identifier "uVar7") (<= "<=") (identifier "uVar5")) (&& "&&") (binary_expression "(uint)((char *)(uVar1 + piVar2[8]) < param_2 + param_4) <= uVar5 - uVar7" (call_expression "(uint)((char *)(uVar1 + piVar2[8]) < param_2 + param_4)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "((char *)(uVar1 + piVar2[8]) < param_2 + param_4)" (( "(") (binary_expression "(char *)(uVar1 + piVar2[8]) < param_2 + param_4" (cast_expression "(char *)(uVar1 + piVar2[8])" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar1 + piVar2[8])" (( "(") (binary_expression "uVar1 + piVar2[8]" (identifier "uVar1") (+ "+") (subscript_expression "piVar2[8]" (identifier "piVar2") ([ "[") (number_literal "8") (] "]"))) () ")"))) (< "<") (binary_expression "param_2 + param_4" (identifier "param_2") (+ "+") (identifier "param_4"))) () ")"))) (<= "<=") (binary_expression "uVar5 - uVar7" (identifier "uVar5") (- "-") (identifier "uVar7"))))) () ")"))) () ")")) (compound_statement "{\n          return param_2 + (piVar2[2] - uVar1);\n        }" ({ "{") (return_statement "return param_2 + (piVar2[2] - uVar1);" (return "return") (binary_expression "param_2 + (piVar2[2] - uVar1)" (identifier "param_2") (+ "+") (parenthesized_expression "(piVar2[2] - uVar1)" (( "(") (binary_expression "piVar2[2] - uVar1" (subscript_expression "piVar2[2]" (identifier "piVar2") ([ "[") (number_literal "2") (] "]")) (- "-") (identifier "uVar1")) () ")"))) (; ";")) (} "}"))) (} "}"))) (expression_statement "piVar2 = piVar2 + 0xe;" (assignment_expression "piVar2 = piVar2 + 0xe" (identifier "piVar2") (= "=") (binary_expression "piVar2 + 0xe" (identifier "piVar2") (+ "+") (number_literal "0xe"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(piVar2 < piVar6)" (( "(") (binary_expression "piVar2 < piVar6" (identifier "piVar2") (< "<") (identifier "piVar6")) () ")")) (; ";")) (} "}"))) (expression_statement "uVar3 = dcgettext(0,"Virtual address 0x%lx not located in any PT_LOAD segment.\n",5);" (assignment_expression "uVar3 = dcgettext(0,"Virtual address 0x%lx not located in any PT_LOAD segment.\n",5)" (identifier "uVar3") (= "=") (call_expression "dcgettext(0,"Virtual address 0x%lx not located in any PT_LOAD segment.\n",5)" (identifier "dcgettext") (argument_list "(0,"Virtual address 0x%lx not located in any PT_LOAD segment.\n",5)" (( "(") (number_literal "0") (, ",") (string_literal ""Virtual address 0x%lx not located in any PT_LOAD segment.\n"" (" """) (string_content "Virtual address 0x%lx not located in any PT_LOAD segment.") (escape_sequence "\n") (" """)) (, ",") (number_literal "5") () ")")))) (; ";")) (expression_statement "pcVar8 = param_2;" (assignment_expression "pcVar8 = param_2" (identifier "pcVar8") (= "=") (identifier "param_2")) (; ";")) (labeled_statement "LAB_00026eab:\n  warn(uVar3,pcVar8);" (statement_identifier "LAB_00026eab") (: ":") (expression_statement "warn(uVar3,pcVar8);" (call_expression "warn(uVar3,pcVar8)" (identifier "warn") (argument_list "(uVar3,pcVar8)" (( "(") (identifier "uVar3") (, ",") (identifier "pcVar8") () ")"))) (; ";"))) (return_statement "return param_2;" (return "return") (identifier "param_2") (; ";")) (} "}")))

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

type_1 __regparm3 function_1(type_2 *filedata,type_3 var_6,type_4 size)

{
  int var_8;
  type_5 var_13;
  type_6 lVar3;
  type_7 *var_1;
  char *message;
  type_8 var_3;
  type_5 var_11;
  type_5 var_10;
  char *var_12;
  type_7 *var_5;
  type_5 var_15;
  type_5 var_9;
  char *pcVar10;
  
  var_1 = filedata->program_headers;
  if (var_1 == (type_7 *)0x0) {
    var_3 = var_2(filedata);
    if (var_3 == 0) {
      pcVar10 = "Cannot interpret virtual addresses without program headers.\n";
      message = (char *)var_4(0,"Cannot interpret virtual addresses without program headers.\n",
                                  5);
      goto LAB_00026eab;
    }
    var_1 = filedata->program_headers;
  }
  var_5 = var_1 + (filedata->file_header).e_phnum;
  if (var_1 < var_5) {
    lVar3 = var_6 + var_7(var_11,var_12);
    var_15 = (type_5)((type_9)lVar3 >> 0x20);
    do {
      if (var_1->p_type == 1) {
        var_8 = (int)var_1->p_align;
        var_9 = *(type_5 *)((int)&var_1->p_vaddr + 4);
        var_13 = (type_5)var_1->p_vaddr;
        var_10 = -(*(int *)((int)&var_1->p_align + 4) + (type_5)(var_8 != 0)) & var_9;
        if ((var_10 <= var_11 && (type_5)(var_12 < (char *)(-var_8 & var_13)) <= var_11 - var_10) &&
           (var_9 = var_9 + *(int *)((int)&var_1->p_filesz + 4) +
                    (type_5)var_14(var_13,(type_5)var_1->p_filesz),
           var_15 <= var_9 && (type_5)(var_13 + (int)var_1->p_filesz < (type_5)lVar3) <= var_9 - var_15))
        {
          return (type_1)(var_12 + ((int)var_1->p_offset - var_13));
        }
      }
      var_1 = var_1 + 1;
    } while (var_1 < var_5);
  }
  message = (char *)var_4(0,"Virtual address 0x%lx not located in any PT_LOAD segment.\n",5);
  pcVar10 = var_12;
LAB_00026eab:
  var_16(message,pcVar10);
  return (type_1)var_12;
}


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

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

char * __regparm3 MASKED(int param_1,char *param_2,uint param_3,uint param_4,int param_5)

{
  uint uVar1;
  int *piVar2;
  undefined4 uVar3;
  int iVar4;
  uint uVar5;
  int *piVar6;
  uint uVar7;
  char *pcVar8;
  
  piVar2 = *(int **)(param_1 + 0x60);
  if (piVar2 == (int *)0x0) {
    iVar4 = FUN_000269d0();
    if (iVar4 == 0) {
      pcVar8 = "Cannot interpret virtual addresses without program headers.\n";
      uVar3 = dcgettext(0,"Cannot interpret virtual addresses without program headers.\n",5);
      goto LAB_00026eab;
    }
    piVar2 = *(int **)(param_1 + 0x60);
  }
  piVar6 = piVar2 + *(int *)(param_1 + 0x4c) * 0xe;
  if (piVar2 < piVar6) {
    uVar7 = param_5 + param_3 + (uint)CARRY4(param_4,(uint)param_2);
    do {
      if (*piVar2 == 1) {
        uVar1 = piVar2[4];
        uVar5 = -(piVar2[0xd] + (uint)(piVar2[0xc] != 0)) & piVar2[5];
        if ((uVar5 <= param_3 && (uint)(param_2 < (char *)(-piVar2[0xc] & uVar1)) <= param_3 - uVar5
            ) && (uVar5 = piVar2[5] + piVar2[9] + (uint)CARRY4(uVar1,piVar2[8]),
                 uVar7 <= uVar5 &&
                 (uint)((char *)(uVar1 + piVar2[8]) < param_2 + param_4) <= uVar5 - uVar7)) {
          return param_2 + (piVar2[2] - uVar1);
        }
      }
      piVar2 = piVar2 + 0xe;
    } while (piVar2 < piVar6);
  }
  uVar3 = dcgettext(0,"Virtual address 0x%lx not located in any PT_LOAD segment.\n",5);
  pcVar8 = param_2;
LAB_00026eab:
  warn(uVar3,pcVar8);
  return param_2;
}

