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

void lang_new_phdr(char *name,etree_type *type,bfd_boolean filehdr,bfd_boolean phdrs,etree_type *at,
                  etree_type *flags)

{
  lang_phdr *plVar1;
  lang_phdr *plVar2;
  ulong uVar3;
  lang_phdr **pplVar4;
  char *fmt;
  lang_phdr **pplVar5;
  
  plVar2 = (lang_phdr *)stat_alloc(0x1c);
  plVar2->next = (lang_phdr *)0x0;
  plVar2->name = name;
  uVar3 = exp_get_value_int(type,0,"program header type");
  plVar2->filehdr = filehdr;
  plVar2->type = uVar3;
  plVar2->at = at;
  plVar2->phdrs = phdrs;
  plVar2->flags = flags;
  if ((uVar3 != 1) || (filehdr == 0 && phdrs == 0)) {
    pplVar4 = &lang_phdr_list;
    plVar1 = lang_phdr_list;
    goto joined_r0x00027b6e;
  }
  pplVar5 = &lang_phdr_list;
  plVar1 = lang_phdr_list;
  while (plVar1 != (lang_phdr *)0x0) {
    if (((plVar1->type == 1) && (plVar1->filehdr == 0)) && (plVar1->phdrs == 0)) {
      fmt = (char *)dcgettext(0,
                              "%X%P:%pS: PHDRS and FILEHDR are not supported when prior PT_LOAD headers lack them\n"
                              ,5);
      einfo(fmt,0);
      plVar1 = ((lang_phdr *)pplVar5)->next->next;
      pplVar5 = &((lang_phdr *)pplVar5)->next->next;
      if ((plVar1 != (lang_phdr *)0x0) &&
         (pplVar4 = &plVar1->next->next, pplVar5 = &plVar1->next,
         (lang_phdr *)pplVar4 != (lang_phdr *)0x0)) goto LAB_00027b78;
      break;
    }
    pplVar5 = &((lang_phdr *)pplVar5)->next->next;
    plVar1 = ((lang_phdr *)pplVar5)->next;
  }
  goto LAB_00027b80;
  while( true ) {
    pplVar5 = &((lang_phdr *)pplVar4)->next;
    pplVar4 = &(*pplVar5)->next->next;
    pplVar5 = &(*pplVar5)->next;
    if ((lang_phdr *)pplVar4 == (lang_phdr *)0x0) break;
LAB_00027b78:
    plVar1 = ((lang_phdr *)pplVar4)->next;
joined_r0x00027b6e:
    pplVar5 = pplVar4;
    if (plVar1 == (lang_phdr *)0x0) break;
  }
LAB_00027b80:
  ((lang_phdr *)pplVar5)->next = plVar2;
  return;
}



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

void FUN_00027b00(undefined4 param_1,undefined4 param_2,int param_3,int param_4,undefined4 param_5,
                 undefined4 param_6)

{
  int *piVar1;
  undefined4 *puVar2;
  int iVar3;
  int *piVar4;
  undefined4 uVar5;
  int *piVar6;
  
  puVar2 = (undefined4 *)FUN_000215d0(0x1c);
  *puVar2 = 0;
  puVar2[1] = param_1;
  iVar3 = FUN_00031020(param_2,0,"program header type");
  puVar2[3] = param_3;
  puVar2[2] = iVar3;
  puVar2[5] = param_5;
  puVar2[4] = param_4;
  puVar2[6] = param_6;
  if ((iVar3 != 1) || (param_3 == 0 && param_4 == 0)) {
    piVar4 = &DAT_00084b78;
    iVar3 = DAT_00084b78;
    goto joined_r0x00027b6e;
  }
  piVar6 = &DAT_00084b78;
  iVar3 = DAT_00084b78;
  while (iVar3 != 0) {
    if (((*(int *)(iVar3 + 8) == 1) && (*(int *)(iVar3 + 0xc) == 0)) &&
       (*(int *)(iVar3 + 0x10) == 0)) {
      uVar5 = dcgettext(0,
                        "%X%P:%pS: PHDRS and FILEHDR are not supported when prior PT_LOAD headers lack them\n"
                        ,5);
      FUN_00032b30(uVar5,0);
      piVar1 = *(int **)*piVar6;
      piVar6 = (int *)*piVar6;
      if ((piVar1 != (int *)0x0) && (piVar4 = (int *)*piVar1, piVar6 = piVar1, piVar4 != (int *)0x0)
         ) goto LAB_00027b78;
      break;
    }
    piVar6 = (int *)*piVar6;
    iVar3 = *piVar6;
  }
  goto LAB_00027b80;
  while( true ) {
    piVar6 = (int *)*piVar4;
    piVar4 = (int *)*piVar6;
    if (piVar4 == (int *)0x0) break;
LAB_00027b78:
    iVar3 = *piVar4;
joined_r0x00027b6e:
    piVar6 = piVar4;
    if (iVar3 == 0) break;
  }
LAB_00027b80:
  *piVar6 = (int)puVar2;
  return;
}


PUSH EBP
PUSH EDI
PUSH ESI
PUSH EBX
CALL 0x000159c0
ADD EBX,0x5c4f7
SUB ESP,0x18
MOV EBP,dword ptr [ESP + 0x34]
MOV ESI,dword ptr [ESP + 0x38]
PUSH 0x1c
CALL 0x000215d0
MOV EDI,EAX
MOV dword ptr [EAX],0x0
MOV EAX,dword ptr [ESP + 0x30]
ADD ESP,0xc
MOV dword ptr [EDI + 0x4],EAX
LEA EAX,[EBX + 0xfffc90da]
PUSH EAX
PUSH 0x0
PUSH dword ptr [ESP + 0x30]
CALL 0x00031020
MOV EDX,dword ptr [ESP + 0x40]
MOV dword ptr [EDI + 0xc],EBP
MOV dword ptr [EDI + 0x8],EAX
MOV dword ptr [EDI + 0x14],EDX
MOV EDX,dword ptr [ESP + 0x44]
ADD ESP,0x10
MOV dword ptr [EDI + 0x10],ESI
MOV dword ptr [EDI + 0x18],EDX
CMP EAX,0x1
JZ 0x00027b90
LEA ESI,[EBX + 0xb78]
MOV EAX,dword ptr [ESI]
TEST EAX,EAX
JZ 0x00027b80
MOV ESI,dword ptr [ESI]
MOV EAX,dword ptr [ESI]
TEST EAX,EAX
JZ 0x00027b80
MOV EDX,dword ptr [EAX]
MOV ESI,EAX
TEST EDX,EDX
JNZ 0x00027b70
MOV dword ptr [ESI],EDI
ADD ESP,0xc
POP EBX
POP ESI
POP EDI
POP EBP
RET
OR EBP,ESI
JZ 0x00027b64
LEA ESI,[EBX + 0xb78]
MOV EAX,dword ptr [ESI]
TEST EAX,EAX
JNZ 0x00027bb0
JMP 0x00027b80
MOV ESI,dword ptr [ESI]
MOV EAX,dword ptr [ESI]
TEST EAX,EAX
JZ 0x00027b80
CMP dword ptr [EAX + 0x8],0x1
JNZ 0x00027ba8
MOV EDX,dword ptr [EAX + 0xc]
TEST EDX,EDX
JNZ 0x00027ba8
MOV EAX,dword ptr [EAX + 0x10]
TEST EAX,EAX
JNZ 0x00027ba8
SUB ESP,0x4
LEA EAX,[EBX + 0xfffc9964]
PUSH 0x5
PUSH EAX
PUSH 0x0
CALL 0x000142c0
POP ECX
POP EBP
PUSH 0x0
PUSH EAX
CALL 0x00032b30
MOV EAX,dword ptr [ESI]
ADD ESP,0x10
MOV ESI,dword ptr [EAX]
TEST ESI,ESI
JZ 0x00027bf4
MOV EAX,dword ptr [ESI]
TEST EAX,EAX
JNZ 0x00027b78
JMP 0x00027b80
MOV ESI,EAX
JMP 0x00027b80
(translation_unit "/* WARNING: Function: __i686.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */\n\nvoid FUN_00027b00(undefined4 param_1,undefined4 param_2,int param_3,int param_4,undefined4 param_5,\n                 undefined4 param_6)\n\n{\n  int *piVar1;\n  undefined4 *puVar2;\n  int iVar3;\n  int *piVar4;\n  undefined4 uVar5;\n  int *piVar6;\n  \n  puVar2 = (undefined4 *)FUN_000215d0(0x1c);\n  *puVar2 = 0;\n  puVar2[1] = param_1;\n  iVar3 = FUN_00031020(param_2,0,"program header type");\n  puVar2[3] = param_3;\n  puVar2[2] = iVar3;\n  puVar2[5] = param_5;\n  puVar2[4] = param_4;\n  puVar2[6] = param_6;\n  if ((iVar3 != 1) || (param_3 == 0 && param_4 == 0)) {\n    piVar4 = &DAT_00084b78;\n    iVar3 = DAT_00084b78;\n    goto joined_r0x00027b6e;\n  }\n  piVar6 = &DAT_00084b78;\n  iVar3 = DAT_00084b78;\n  while (iVar3 != 0) {\n    if (((*(int *)(iVar3 + 8) == 1) && (*(int *)(iVar3 + 0xc) == 0)) &&\n       (*(int *)(iVar3 + 0x10) == 0)) {\n      uVar5 = dcgettext(0,\n                        "%X%P:%pS: PHDRS and FILEHDR are not supported when prior PT_LOAD headers lack them\n"\n                        ,5);\n      FUN_00032b30(uVar5,0);\n      piVar1 = *(int **)*piVar6;\n      piVar6 = (int *)*piVar6;\n      if ((piVar1 != (int *)0x0) && (piVar4 = (int *)*piVar1, piVar6 = piVar1, piVar4 != (int *)0x0)\n         ) goto LAB_00027b78;\n      break;\n    }\n    piVar6 = (int *)*piVar6;\n    iVar3 = *piVar6;\n  }\n  goto LAB_00027b80;\n  while( true ) {\n    piVar6 = (int *)*piVar4;\n    piVar4 = (int *)*piVar6;\n    if (piVar4 == (int *)0x0) break;\nLAB_00027b78:\n    iVar3 = *piVar4;\njoined_r0x00027b6e:\n    piVar6 = piVar4;\n    if (iVar3 == 0) break;\n  }\nLAB_00027b80:\n  *piVar6 = (int)puVar2;\n  return;\n}\n\n" comment (function_definition "void FUN_00027b00(undefined4 param_1,undefined4 param_2,int param_3,int param_4,undefined4 param_5,\n                 undefined4 param_6)\n\n{\n  int *piVar1;\n  undefined4 *puVar2;\n  int iVar3;\n  int *piVar4;\n  undefined4 uVar5;\n  int *piVar6;\n  \n  puVar2 = (undefined4 *)FUN_000215d0(0x1c);\n  *puVar2 = 0;\n  puVar2[1] = param_1;\n  iVar3 = FUN_00031020(param_2,0,"program header type");\n  puVar2[3] = param_3;\n  puVar2[2] = iVar3;\n  puVar2[5] = param_5;\n  puVar2[4] = param_4;\n  puVar2[6] = param_6;\n  if ((iVar3 != 1) || (param_3 == 0 && param_4 == 0)) {\n    piVar4 = &DAT_00084b78;\n    iVar3 = DAT_00084b78;\n    goto joined_r0x00027b6e;\n  }\n  piVar6 = &DAT_00084b78;\n  iVar3 = DAT_00084b78;\n  while (iVar3 != 0) {\n    if (((*(int *)(iVar3 + 8) == 1) && (*(int *)(iVar3 + 0xc) == 0)) &&\n       (*(int *)(iVar3 + 0x10) == 0)) {\n      uVar5 = dcgettext(0,\n                        "%X%P:%pS: PHDRS and FILEHDR are not supported when prior PT_LOAD headers lack them\n"\n                        ,5);\n      FUN_00032b30(uVar5,0);\n      piVar1 = *(int **)*piVar6;\n      piVar6 = (int *)*piVar6;\n      if ((piVar1 != (int *)0x0) && (piVar4 = (int *)*piVar1, piVar6 = piVar1, piVar4 != (int *)0x0)\n         ) goto LAB_00027b78;\n      break;\n    }\n    piVar6 = (int *)*piVar6;\n    iVar3 = *piVar6;\n  }\n  goto LAB_00027b80;\n  while( true ) {\n    piVar6 = (int *)*piVar4;\n    piVar4 = (int *)*piVar6;\n    if (piVar4 == (int *)0x0) break;\nLAB_00027b78:\n    iVar3 = *piVar4;\njoined_r0x00027b6e:\n    piVar6 = piVar4;\n    if (iVar3 == 0) break;\n  }\nLAB_00027b80:\n  *piVar6 = (int)puVar2;\n  return;\n}" primitive_type (function_declarator "FUN_00027b00(undefined4 param_1,undefined4 param_2,int param_3,int param_4,undefined4 param_5,\n                 undefined4 param_6)" identifier (parameter_list "(undefined4 param_1,undefined4 param_2,int param_3,int param_4,undefined4 param_5,\n                 undefined4 param_6)" ( (parameter_declaration "undefined4 param_1" type_identifier identifier) , (parameter_declaration "undefined4 param_2" type_identifier identifier) , (parameter_declaration "int param_3" primitive_type identifier) , (parameter_declaration "int param_4" primitive_type identifier) , (parameter_declaration "undefined4 param_5" type_identifier identifier) , (parameter_declaration "undefined4 param_6" type_identifier identifier) ))) (compound_statement "{\n  int *piVar1;\n  undefined4 *puVar2;\n  int iVar3;\n  int *piVar4;\n  undefined4 uVar5;\n  int *piVar6;\n  \n  puVar2 = (undefined4 *)FUN_000215d0(0x1c);\n  *puVar2 = 0;\n  puVar2[1] = param_1;\n  iVar3 = FUN_00031020(param_2,0,"program header type");\n  puVar2[3] = param_3;\n  puVar2[2] = iVar3;\n  puVar2[5] = param_5;\n  puVar2[4] = param_4;\n  puVar2[6] = param_6;\n  if ((iVar3 != 1) || (param_3 == 0 && param_4 == 0)) {\n    piVar4 = &DAT_00084b78;\n    iVar3 = DAT_00084b78;\n    goto joined_r0x00027b6e;\n  }\n  piVar6 = &DAT_00084b78;\n  iVar3 = DAT_00084b78;\n  while (iVar3 != 0) {\n    if (((*(int *)(iVar3 + 8) == 1) && (*(int *)(iVar3 + 0xc) == 0)) &&\n       (*(int *)(iVar3 + 0x10) == 0)) {\n      uVar5 = dcgettext(0,\n                        "%X%P:%pS: PHDRS and FILEHDR are not supported when prior PT_LOAD headers lack them\n"\n                        ,5);\n      FUN_00032b30(uVar5,0);\n      piVar1 = *(int **)*piVar6;\n      piVar6 = (int *)*piVar6;\n      if ((piVar1 != (int *)0x0) && (piVar4 = (int *)*piVar1, piVar6 = piVar1, piVar4 != (int *)0x0)\n         ) goto LAB_00027b78;\n      break;\n    }\n    piVar6 = (int *)*piVar6;\n    iVar3 = *piVar6;\n  }\n  goto LAB_00027b80;\n  while( true ) {\n    piVar6 = (int *)*piVar4;\n    piVar4 = (int *)*piVar6;\n    if (piVar4 == (int *)0x0) break;\nLAB_00027b78:\n    iVar3 = *piVar4;\njoined_r0x00027b6e:\n    piVar6 = piVar4;\n    if (iVar3 == 0) break;\n  }\nLAB_00027b80:\n  *piVar6 = (int)puVar2;\n  return;\n}" { (declaration "int *piVar1;" primitive_type (pointer_declarator "*piVar1" * identifier) ;) (declaration "undefined4 *puVar2;" type_identifier (pointer_declarator "*puVar2" * identifier) ;) (declaration "int iVar3;" primitive_type identifier ;) (declaration "int *piVar4;" primitive_type (pointer_declarator "*piVar4" * identifier) ;) (declaration "undefined4 uVar5;" type_identifier identifier ;) (declaration "int *piVar6;" primitive_type (pointer_declarator "*piVar6" * identifier) ;) (expression_statement "puVar2 = (undefined4 *)FUN_000215d0(0x1c);" (assignment_expression "puVar2 = (undefined4 *)FUN_000215d0(0x1c)" identifier = (cast_expression "(undefined4 *)FUN_000215d0(0x1c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_000215d0(0x1c)" identifier (argument_list "(0x1c)" ( number_literal ))))) ;) (expression_statement "*puVar2 = 0;" (assignment_expression "*puVar2 = 0" (pointer_expression "*puVar2" * identifier) = number_literal) ;) (expression_statement "puVar2[1] = param_1;" (assignment_expression "puVar2[1] = param_1" (subscript_expression "puVar2[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "iVar3 = FUN_00031020(param_2,0,"program header type");" (assignment_expression "iVar3 = FUN_00031020(param_2,0,"program header type")" identifier = (call_expression "FUN_00031020(param_2,0,"program header type")" identifier (argument_list "(param_2,0,"program header type")" ( identifier , number_literal , (string_literal ""program header type"" " string_content ") )))) ;) (expression_statement "puVar2[3] = param_3;" (assignment_expression "puVar2[3] = param_3" (subscript_expression "puVar2[3]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar2[2] = iVar3;" (assignment_expression "puVar2[2] = iVar3" (subscript_expression "puVar2[2]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar2[5] = param_5;" (assignment_expression "puVar2[5] = param_5" (subscript_expression "puVar2[5]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar2[4] = param_4;" (assignment_expression "puVar2[4] = param_4" (subscript_expression "puVar2[4]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar2[6] = param_6;" (assignment_expression "puVar2[6] = param_6" (subscript_expression "puVar2[6]" identifier [ number_literal ]) = identifier) ;) (if_statement "if ((iVar3 != 1) || (param_3 == 0 && param_4 == 0)) {\n    piVar4 = &DAT_00084b78;\n    iVar3 = DAT_00084b78;\n    goto joined_r0x00027b6e;\n  }" if (parenthesized_expression "((iVar3 != 1) || (param_3 == 0 && param_4 == 0))" ( (binary_expression "(iVar3 != 1) || (param_3 == 0 && param_4 == 0)" (parenthesized_expression "(iVar3 != 1)" ( (binary_expression "iVar3 != 1" identifier != number_literal) )) || (parenthesized_expression "(param_3 == 0 && param_4 == 0)" ( (binary_expression "param_3 == 0 && param_4 == 0" (binary_expression "param_3 == 0" identifier == number_literal) && (binary_expression "param_4 == 0" identifier == number_literal)) ))) )) (compound_statement "{\n    piVar4 = &DAT_00084b78;\n    iVar3 = DAT_00084b78;\n    goto joined_r0x00027b6e;\n  }" { (expression_statement "piVar4 = &DAT_00084b78;" (assignment_expression "piVar4 = &DAT_00084b78" identifier = (pointer_expression "&DAT_00084b78" & identifier)) ;) (expression_statement "iVar3 = DAT_00084b78;" (assignment_expression "iVar3 = DAT_00084b78" identifier = identifier) ;) (goto_statement "goto joined_r0x00027b6e;" goto statement_identifier ;) })) (expression_statement "piVar6 = &DAT_00084b78;" (assignment_expression "piVar6 = &DAT_00084b78" identifier = (pointer_expression "&DAT_00084b78" & identifier)) ;) (expression_statement "iVar3 = DAT_00084b78;" (assignment_expression "iVar3 = DAT_00084b78" identifier = identifier) ;) (while_statement "while (iVar3 != 0) {\n    if (((*(int *)(iVar3 + 8) == 1) && (*(int *)(iVar3 + 0xc) == 0)) &&\n       (*(int *)(iVar3 + 0x10) == 0)) {\n      uVar5 = dcgettext(0,\n                        "%X%P:%pS: PHDRS and FILEHDR are not supported when prior PT_LOAD headers lack them\n"\n                        ,5);\n      FUN_00032b30(uVar5,0);\n      piVar1 = *(int **)*piVar6;\n      piVar6 = (int *)*piVar6;\n      if ((piVar1 != (int *)0x0) && (piVar4 = (int *)*piVar1, piVar6 = piVar1, piVar4 != (int *)0x0)\n         ) goto LAB_00027b78;\n      break;\n    }\n    piVar6 = (int *)*piVar6;\n    iVar3 = *piVar6;\n  }" while (parenthesized_expression "(iVar3 != 0)" ( (binary_expression "iVar3 != 0" identifier != number_literal) )) (compound_statement "{\n    if (((*(int *)(iVar3 + 8) == 1) && (*(int *)(iVar3 + 0xc) == 0)) &&\n       (*(int *)(iVar3 + 0x10) == 0)) {\n      uVar5 = dcgettext(0,\n                        "%X%P:%pS: PHDRS and FILEHDR are not supported when prior PT_LOAD headers lack them\n"\n                        ,5);\n      FUN_00032b30(uVar5,0);\n      piVar1 = *(int **)*piVar6;\n      piVar6 = (int *)*piVar6;\n      if ((piVar1 != (int *)0x0) && (piVar4 = (int *)*piVar1, piVar6 = piVar1, piVar4 != (int *)0x0)\n         ) goto LAB_00027b78;\n      break;\n    }\n    piVar6 = (int *)*piVar6;\n    iVar3 = *piVar6;\n  }" { (if_statement "if (((*(int *)(iVar3 + 8) == 1) && (*(int *)(iVar3 + 0xc) == 0)) &&\n       (*(int *)(iVar3 + 0x10) == 0)) {\n      uVar5 = dcgettext(0,\n                        "%X%P:%pS: PHDRS and FILEHDR are not supported when prior PT_LOAD headers lack them\n"\n                        ,5);\n      FUN_00032b30(uVar5,0);\n      piVar1 = *(int **)*piVar6;\n      piVar6 = (int *)*piVar6;\n      if ((piVar1 != (int *)0x0) && (piVar4 = (int *)*piVar1, piVar6 = piVar1, piVar4 != (int *)0x0)\n         ) goto LAB_00027b78;\n      break;\n    }" if (parenthesized_expression "(((*(int *)(iVar3 + 8) == 1) && (*(int *)(iVar3 + 0xc) == 0)) &&\n       (*(int *)(iVar3 + 0x10) == 0))" ( (binary_expression "((*(int *)(iVar3 + 8) == 1) && (*(int *)(iVar3 + 0xc) == 0)) &&\n       (*(int *)(iVar3 + 0x10) == 0)" (parenthesized_expression "((*(int *)(iVar3 + 8) == 1) && (*(int *)(iVar3 + 0xc) == 0))" ( (binary_expression "(*(int *)(iVar3 + 8) == 1) && (*(int *)(iVar3 + 0xc) == 0)" (parenthesized_expression "(*(int *)(iVar3 + 8) == 1)" ( (binary_expression "*(int *)(iVar3 + 8) == 1" (pointer_expression "*(int *)(iVar3 + 8)" * (cast_expression "(int *)(iVar3 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + 8)" ( (binary_expression "iVar3 + 8" identifier + number_literal) )))) == number_literal) )) && (parenthesized_expression "(*(int *)(iVar3 + 0xc) == 0)" ( (binary_expression "*(int *)(iVar3 + 0xc) == 0" (pointer_expression "*(int *)(iVar3 + 0xc)" * (cast_expression "(int *)(iVar3 + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + 0xc)" ( (binary_expression "iVar3 + 0xc" identifier + number_literal) )))) == number_literal) ))) )) && (parenthesized_expression "(*(int *)(iVar3 + 0x10) == 0)" ( (binary_expression "*(int *)(iVar3 + 0x10) == 0" (pointer_expression "*(int *)(iVar3 + 0x10)" * (cast_expression "(int *)(iVar3 + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + 0x10)" ( (binary_expression "iVar3 + 0x10" identifier + number_literal) )))) == number_literal) ))) )) (compound_statement "{\n      uVar5 = dcgettext(0,\n                        "%X%P:%pS: PHDRS and FILEHDR are not supported when prior PT_LOAD headers lack them\n"\n                        ,5);\n      FUN_00032b30(uVar5,0);\n      piVar1 = *(int **)*piVar6;\n      piVar6 = (int *)*piVar6;\n      if ((piVar1 != (int *)0x0) && (piVar4 = (int *)*piVar1, piVar6 = piVar1, piVar4 != (int *)0x0)\n         ) goto LAB_00027b78;\n      break;\n    }" { (expression_statement "uVar5 = dcgettext(0,\n                        "%X%P:%pS: PHDRS and FILEHDR are not supported when prior PT_LOAD headers lack them\n"\n                        ,5);" (assignment_expression "uVar5 = dcgettext(0,\n                        "%X%P:%pS: PHDRS and FILEHDR are not supported when prior PT_LOAD headers lack them\n"\n                        ,5)" identifier = (call_expression "dcgettext(0,\n                        "%X%P:%pS: PHDRS and FILEHDR are not supported when prior PT_LOAD headers lack them\n"\n                        ,5)" identifier (argument_list "(0,\n                        "%X%P:%pS: PHDRS and FILEHDR are not supported when prior PT_LOAD headers lack them\n"\n                        ,5)" ( number_literal , (string_literal ""%X%P:%pS: PHDRS and FILEHDR are not supported when prior PT_LOAD headers lack them\n"" " string_content escape_sequence ") , number_literal )))) ;) (expression_statement "FUN_00032b30(uVar5,0);" (call_expression "FUN_00032b30(uVar5,0)" identifier (argument_list "(uVar5,0)" ( identifier , number_literal ))) ;) (expression_statement "piVar1 = *(int **)*piVar6;" (assignment_expression "piVar1 = *(int **)*piVar6" identifier = (pointer_expression "*(int **)*piVar6" * (cast_expression "(int **)*piVar6" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (pointer_expression "*piVar6" * identifier)))) ;) (expression_statement "piVar6 = (int *)*piVar6;" (assignment_expression "piVar6 = (int *)*piVar6" identifier = (cast_expression "(int *)*piVar6" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*piVar6" * identifier))) ;) (if_statement "if ((piVar1 != (int *)0x0) && (piVar4 = (int *)*piVar1, piVar6 = piVar1, piVar4 != (int *)0x0)\n         ) goto LAB_00027b78;" if (parenthesized_expression "((piVar1 != (int *)0x0) && (piVar4 = (int *)*piVar1, piVar6 = piVar1, piVar4 != (int *)0x0)\n         )" ( (binary_expression "(piVar1 != (int *)0x0) && (piVar4 = (int *)*piVar1, piVar6 = piVar1, piVar4 != (int *)0x0)" (parenthesized_expression "(piVar1 != (int *)0x0)" ( (binary_expression "piVar1 != (int *)0x0" identifier != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) && (parenthesized_expression "(piVar4 = (int *)*piVar1, piVar6 = piVar1, piVar4 != (int *)0x0)" ( (comma_expression "piVar4 = (int *)*piVar1, piVar6 = piVar1, piVar4 != (int *)0x0" (assignment_expression "piVar4 = (int *)*piVar1" identifier = (cast_expression "(int *)*piVar1" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*piVar1" * identifier))) , (comma_expression "piVar6 = piVar1, piVar4 != (int *)0x0" (assignment_expression "piVar6 = piVar1" identifier = identifier) , (binary_expression "piVar4 != (int *)0x0" identifier != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)))) ))) )) (goto_statement "goto LAB_00027b78;" goto statement_identifier ;)) (break_statement "break;" break ;) })) (expression_statement "piVar6 = (int *)*piVar6;" (assignment_expression "piVar6 = (int *)*piVar6" identifier = (cast_expression "(int *)*piVar6" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*piVar6" * identifier))) ;) (expression_statement "iVar3 = *piVar6;" (assignment_expression "iVar3 = *piVar6" identifier = (pointer_expression "*piVar6" * identifier)) ;) })) (goto_statement "goto LAB_00027b80;" goto statement_identifier ;) (while_statement "while( true ) {\n    piVar6 = (int *)*piVar4;\n    piVar4 = (int *)*piVar6;\n    if (piVar4 == (int *)0x0) break;\nLAB_00027b78:\n    iVar3 = *piVar4;\njoined_r0x00027b6e:\n    piVar6 = piVar4;\n    if (iVar3 == 0) break;\n  }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n    piVar6 = (int *)*piVar4;\n    piVar4 = (int *)*piVar6;\n    if (piVar4 == (int *)0x0) break;\nLAB_00027b78:\n    iVar3 = *piVar4;\njoined_r0x00027b6e:\n    piVar6 = piVar4;\n    if (iVar3 == 0) break;\n  }" { (expression_statement "piVar6 = (int *)*piVar4;" (assignment_expression "piVar6 = (int *)*piVar4" identifier = (cast_expression "(int *)*piVar4" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*piVar4" * identifier))) ;) (expression_statement "piVar4 = (int *)*piVar6;" (assignment_expression "piVar4 = (int *)*piVar6" identifier = (cast_expression "(int *)*piVar6" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*piVar6" * identifier))) ;) (if_statement "if (piVar4 == (int *)0x0) break;" if (parenthesized_expression "(piVar4 == (int *)0x0)" ( (binary_expression "piVar4 == (int *)0x0" identifier == (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (break_statement "break;" break ;)) (labeled_statement "LAB_00027b78:\n    iVar3 = *piVar4;" statement_identifier : (expression_statement "iVar3 = *piVar4;" (assignment_expression "iVar3 = *piVar4" identifier = (pointer_expression "*piVar4" * identifier)) ;)) (labeled_statement "joined_r0x00027b6e:\n    piVar6 = piVar4;" statement_identifier : (expression_statement "piVar6 = piVar4;" (assignment_expression "piVar6 = piVar4" identifier = identifier) ;)) (if_statement "if (iVar3 == 0) break;" if (parenthesized_expression "(iVar3 == 0)" ( (binary_expression "iVar3 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) })) (labeled_statement "LAB_00027b80:\n  *piVar6 = (int)puVar2;" statement_identifier : (expression_statement "*piVar6 = (int)puVar2;" (assignment_expression "*piVar6 = (int)puVar2" (pointer_expression "*piVar6" * identifier) = (cast_expression "(int)puVar2" ( (type_descriptor "int" primitive_type) ) identifier)) ;)) (return_statement "return;" return ;) })))
(translation_unit "/* WARNING: Function: __x86.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */\n\nvoid lang_new_phdr(char *name,etree_type *type,bfd_boolean filehdr,bfd_boolean phdrs,etree_type *at,\n                  etree_type *flags)\n\n{\n  lang_phdr *plVar1;\n  lang_phdr *plVar2;\n  ulong uVar3;\n  lang_phdr **pplVar4;\n  char *fmt;\n  lang_phdr **pplVar5;\n  \n  plVar2 = (lang_phdr *)stat_alloc(0x1c);\n  plVar2->next = (lang_phdr *)0x0;\n  plVar2->name = name;\n  uVar3 = exp_get_value_int(type,0,"program header type");\n  plVar2->filehdr = filehdr;\n  plVar2->type = uVar3;\n  plVar2->at = at;\n  plVar2->phdrs = phdrs;\n  plVar2->flags = flags;\n  if ((uVar3 != 1) || (filehdr == 0 && phdrs == 0)) {\n    pplVar4 = &lang_phdr_list;\n    plVar1 = lang_phdr_list;\n    goto joined_r0x00027b6e;\n  }\n  pplVar5 = &lang_phdr_list;\n  plVar1 = lang_phdr_list;\n  while (plVar1 != (lang_phdr *)0x0) {\n    if (((plVar1->type == 1) && (plVar1->filehdr == 0)) && (plVar1->phdrs == 0)) {\n      fmt = (char *)dcgettext(0,\n                              "%X%P:%pS: PHDRS and FILEHDR are not supported when prior PT_LOAD headers lack them\n"\n                              ,5);\n      einfo(fmt,0);\n      plVar1 = ((lang_phdr *)pplVar5)->next->next;\n      pplVar5 = &((lang_phdr *)pplVar5)->next->next;\n      if ((plVar1 != (lang_phdr *)0x0) &&\n         (pplVar4 = &plVar1->next->next, pplVar5 = &plVar1->next,\n         (lang_phdr *)pplVar4 != (lang_phdr *)0x0)) goto LAB_00027b78;\n      break;\n    }\n    pplVar5 = &((lang_phdr *)pplVar5)->next->next;\n    plVar1 = ((lang_phdr *)pplVar5)->next;\n  }\n  goto LAB_00027b80;\n  while( true ) {\n    pplVar5 = &((lang_phdr *)pplVar4)->next;\n    pplVar4 = &(*pplVar5)->next->next;\n    pplVar5 = &(*pplVar5)->next;\n    if ((lang_phdr *)pplVar4 == (lang_phdr *)0x0) break;\nLAB_00027b78:\n    plVar1 = ((lang_phdr *)pplVar4)->next;\njoined_r0x00027b6e:\n    pplVar5 = pplVar4;\n    if (plVar1 == (lang_phdr *)0x0) break;\n  }\nLAB_00027b80:\n  ((lang_phdr *)pplVar5)->next = plVar2;\n  return;\n}\n\n" comment (function_definition "void lang_new_phdr(char *name,etree_type *type,bfd_boolean filehdr,bfd_boolean phdrs,etree_type *at,\n                  etree_type *flags)\n\n{\n  lang_phdr *plVar1;\n  lang_phdr *plVar2;\n  ulong uVar3;\n  lang_phdr **pplVar4;\n  char *fmt;\n  lang_phdr **pplVar5;\n  \n  plVar2 = (lang_phdr *)stat_alloc(0x1c);\n  plVar2->next = (lang_phdr *)0x0;\n  plVar2->name = name;\n  uVar3 = exp_get_value_int(type,0,"program header type");\n  plVar2->filehdr = filehdr;\n  plVar2->type = uVar3;\n  plVar2->at = at;\n  plVar2->phdrs = phdrs;\n  plVar2->flags = flags;\n  if ((uVar3 != 1) || (filehdr == 0 && phdrs == 0)) {\n    pplVar4 = &lang_phdr_list;\n    plVar1 = lang_phdr_list;\n    goto joined_r0x00027b6e;\n  }\n  pplVar5 = &lang_phdr_list;\n  plVar1 = lang_phdr_list;\n  while (plVar1 != (lang_phdr *)0x0) {\n    if (((plVar1->type == 1) && (plVar1->filehdr == 0)) && (plVar1->phdrs == 0)) {\n      fmt = (char *)dcgettext(0,\n                              "%X%P:%pS: PHDRS and FILEHDR are not supported when prior PT_LOAD headers lack them\n"\n                              ,5);\n      einfo(fmt,0);\n      plVar1 = ((lang_phdr *)pplVar5)->next->next;\n      pplVar5 = &((lang_phdr *)pplVar5)->next->next;\n      if ((plVar1 != (lang_phdr *)0x0) &&\n         (pplVar4 = &plVar1->next->next, pplVar5 = &plVar1->next,\n         (lang_phdr *)pplVar4 != (lang_phdr *)0x0)) goto LAB_00027b78;\n      break;\n    }\n    pplVar5 = &((lang_phdr *)pplVar5)->next->next;\n    plVar1 = ((lang_phdr *)pplVar5)->next;\n  }\n  goto LAB_00027b80;\n  while( true ) {\n    pplVar5 = &((lang_phdr *)pplVar4)->next;\n    pplVar4 = &(*pplVar5)->next->next;\n    pplVar5 = &(*pplVar5)->next;\n    if ((lang_phdr *)pplVar4 == (lang_phdr *)0x0) break;\nLAB_00027b78:\n    plVar1 = ((lang_phdr *)pplVar4)->next;\njoined_r0x00027b6e:\n    pplVar5 = pplVar4;\n    if (plVar1 == (lang_phdr *)0x0) break;\n  }\nLAB_00027b80:\n  ((lang_phdr *)pplVar5)->next = plVar2;\n  return;\n}" primitive_type (function_declarator "lang_new_phdr(char *name,etree_type *type,bfd_boolean filehdr,bfd_boolean phdrs,etree_type *at,\n                  etree_type *flags)" identifier (parameter_list "(char *name,etree_type *type,bfd_boolean filehdr,bfd_boolean phdrs,etree_type *at,\n                  etree_type *flags)" ( (parameter_declaration "char *name" primitive_type (pointer_declarator "*name" * identifier)) , (parameter_declaration "etree_type *type" type_identifier (pointer_declarator "*type" * identifier)) , (parameter_declaration "bfd_boolean filehdr" type_identifier identifier) , (parameter_declaration "bfd_boolean phdrs" type_identifier identifier) , (parameter_declaration "etree_type *at" type_identifier (pointer_declarator "*at" * identifier)) , (parameter_declaration "etree_type *flags" type_identifier (pointer_declarator "*flags" * identifier)) ))) (compound_statement "{\n  lang_phdr *plVar1;\n  lang_phdr *plVar2;\n  ulong uVar3;\n  lang_phdr **pplVar4;\n  char *fmt;\n  lang_phdr **pplVar5;\n  \n  plVar2 = (lang_phdr *)stat_alloc(0x1c);\n  plVar2->next = (lang_phdr *)0x0;\n  plVar2->name = name;\n  uVar3 = exp_get_value_int(type,0,"program header type");\n  plVar2->filehdr = filehdr;\n  plVar2->type = uVar3;\n  plVar2->at = at;\n  plVar2->phdrs = phdrs;\n  plVar2->flags = flags;\n  if ((uVar3 != 1) || (filehdr == 0 && phdrs == 0)) {\n    pplVar4 = &lang_phdr_list;\n    plVar1 = lang_phdr_list;\n    goto joined_r0x00027b6e;\n  }\n  pplVar5 = &lang_phdr_list;\n  plVar1 = lang_phdr_list;\n  while (plVar1 != (lang_phdr *)0x0) {\n    if (((plVar1->type == 1) && (plVar1->filehdr == 0)) && (plVar1->phdrs == 0)) {\n      fmt = (char *)dcgettext(0,\n                              "%X%P:%pS: PHDRS and FILEHDR are not supported when prior PT_LOAD headers lack them\n"\n                              ,5);\n      einfo(fmt,0);\n      plVar1 = ((lang_phdr *)pplVar5)->next->next;\n      pplVar5 = &((lang_phdr *)pplVar5)->next->next;\n      if ((plVar1 != (lang_phdr *)0x0) &&\n         (pplVar4 = &plVar1->next->next, pplVar5 = &plVar1->next,\n         (lang_phdr *)pplVar4 != (lang_phdr *)0x0)) goto LAB_00027b78;\n      break;\n    }\n    pplVar5 = &((lang_phdr *)pplVar5)->next->next;\n    plVar1 = ((lang_phdr *)pplVar5)->next;\n  }\n  goto LAB_00027b80;\n  while( true ) {\n    pplVar5 = &((lang_phdr *)pplVar4)->next;\n    pplVar4 = &(*pplVar5)->next->next;\n    pplVar5 = &(*pplVar5)->next;\n    if ((lang_phdr *)pplVar4 == (lang_phdr *)0x0) break;\nLAB_00027b78:\n    plVar1 = ((lang_phdr *)pplVar4)->next;\njoined_r0x00027b6e:\n    pplVar5 = pplVar4;\n    if (plVar1 == (lang_phdr *)0x0) break;\n  }\nLAB_00027b80:\n  ((lang_phdr *)pplVar5)->next = plVar2;\n  return;\n}" { (declaration "lang_phdr *plVar1;" type_identifier (pointer_declarator "*plVar1" * identifier) ;) (declaration "lang_phdr *plVar2;" type_identifier (pointer_declarator "*plVar2" * identifier) ;) (declaration "ulong uVar3;" type_identifier identifier ;) (declaration "lang_phdr **pplVar4;" type_identifier (pointer_declarator "**pplVar4" * (pointer_declarator "*pplVar4" * identifier)) ;) (declaration "char *fmt;" primitive_type (pointer_declarator "*fmt" * identifier) ;) (declaration "lang_phdr **pplVar5;" type_identifier (pointer_declarator "**pplVar5" * (pointer_declarator "*pplVar5" * identifier)) ;) (expression_statement "plVar2 = (lang_phdr *)stat_alloc(0x1c);" (assignment_expression "plVar2 = (lang_phdr *)stat_alloc(0x1c)" identifier = (cast_expression "(lang_phdr *)stat_alloc(0x1c)" ( (type_descriptor "lang_phdr *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "stat_alloc(0x1c)" identifier (argument_list "(0x1c)" ( number_literal ))))) ;) (expression_statement "plVar2->next = (lang_phdr *)0x0;" (assignment_expression "plVar2->next = (lang_phdr *)0x0" (field_expression "plVar2->next" identifier -> field_identifier) = (cast_expression "(lang_phdr *)0x0" ( (type_descriptor "lang_phdr *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "plVar2->name = name;" (assignment_expression "plVar2->name = name" (field_expression "plVar2->name" identifier -> field_identifier) = identifier) ;) (expression_statement "uVar3 = exp_get_value_int(type,0,"program header type");" (assignment_expression "uVar3 = exp_get_value_int(type,0,"program header type")" identifier = (call_expression "exp_get_value_int(type,0,"program header type")" identifier (argument_list "(type,0,"program header type")" ( identifier , number_literal , (string_literal ""program header type"" " string_content ") )))) ;) (expression_statement "plVar2->filehdr = filehdr;" (assignment_expression "plVar2->filehdr = filehdr" (field_expression "plVar2->filehdr" identifier -> field_identifier) = identifier) ;) (expression_statement "plVar2->type = uVar3;" (assignment_expression "plVar2->type = uVar3" (field_expression "plVar2->type" identifier -> field_identifier) = identifier) ;) (expression_statement "plVar2->at = at;" (assignment_expression "plVar2->at = at" (field_expression "plVar2->at" identifier -> field_identifier) = identifier) ;) (expression_statement "plVar2->phdrs = phdrs;" (assignment_expression "plVar2->phdrs = phdrs" (field_expression "plVar2->phdrs" identifier -> field_identifier) = identifier) ;) (expression_statement "plVar2->flags = flags;" (assignment_expression "plVar2->flags = flags" (field_expression "plVar2->flags" identifier -> field_identifier) = identifier) ;) (if_statement "if ((uVar3 != 1) || (filehdr == 0 && phdrs == 0)) {\n    pplVar4 = &lang_phdr_list;\n    plVar1 = lang_phdr_list;\n    goto joined_r0x00027b6e;\n  }" if (parenthesized_expression "((uVar3 != 1) || (filehdr == 0 && phdrs == 0))" ( (binary_expression "(uVar3 != 1) || (filehdr == 0 && phdrs == 0)" (parenthesized_expression "(uVar3 != 1)" ( (binary_expression "uVar3 != 1" identifier != number_literal) )) || (parenthesized_expression "(filehdr == 0 && phdrs == 0)" ( (binary_expression "filehdr == 0 && phdrs == 0" (binary_expression "filehdr == 0" identifier == number_literal) && (binary_expression "phdrs == 0" identifier == number_literal)) ))) )) (compound_statement "{\n    pplVar4 = &lang_phdr_list;\n    plVar1 = lang_phdr_list;\n    goto joined_r0x00027b6e;\n  }" { (expression_statement "pplVar4 = &lang_phdr_list;" (assignment_expression "pplVar4 = &lang_phdr_list" identifier = (pointer_expression "&lang_phdr_list" & identifier)) ;) (expression_statement "plVar1 = lang_phdr_list;" (assignment_expression "plVar1 = lang_phdr_list" identifier = identifier) ;) (goto_statement "goto joined_r0x00027b6e;" goto statement_identifier ;) })) (expression_statement "pplVar5 = &lang_phdr_list;" (assignment_expression "pplVar5 = &lang_phdr_list" identifier = (pointer_expression "&lang_phdr_list" & identifier)) ;) (expression_statement "plVar1 = lang_phdr_list;" (assignment_expression "plVar1 = lang_phdr_list" identifier = identifier) ;) (while_statement "while (plVar1 != (lang_phdr *)0x0) {\n    if (((plVar1->type == 1) && (plVar1->filehdr == 0)) && (plVar1->phdrs == 0)) {\n      fmt = (char *)dcgettext(0,\n                              "%X%P:%pS: PHDRS and FILEHDR are not supported when prior PT_LOAD headers lack them\n"\n                              ,5);\n      einfo(fmt,0);\n      plVar1 = ((lang_phdr *)pplVar5)->next->next;\n      pplVar5 = &((lang_phdr *)pplVar5)->next->next;\n      if ((plVar1 != (lang_phdr *)0x0) &&\n         (pplVar4 = &plVar1->next->next, pplVar5 = &plVar1->next,\n         (lang_phdr *)pplVar4 != (lang_phdr *)0x0)) goto LAB_00027b78;\n      break;\n    }\n    pplVar5 = &((lang_phdr *)pplVar5)->next->next;\n    plVar1 = ((lang_phdr *)pplVar5)->next;\n  }" while (parenthesized_expression "(plVar1 != (lang_phdr *)0x0)" ( (binary_expression "plVar1 != (lang_phdr *)0x0" identifier != (cast_expression "(lang_phdr *)0x0" ( (type_descriptor "lang_phdr *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    if (((plVar1->type == 1) && (plVar1->filehdr == 0)) && (plVar1->phdrs == 0)) {\n      fmt = (char *)dcgettext(0,\n                              "%X%P:%pS: PHDRS and FILEHDR are not supported when prior PT_LOAD headers lack them\n"\n                              ,5);\n      einfo(fmt,0);\n      plVar1 = ((lang_phdr *)pplVar5)->next->next;\n      pplVar5 = &((lang_phdr *)pplVar5)->next->next;\n      if ((plVar1 != (lang_phdr *)0x0) &&\n         (pplVar4 = &plVar1->next->next, pplVar5 = &plVar1->next,\n         (lang_phdr *)pplVar4 != (lang_phdr *)0x0)) goto LAB_00027b78;\n      break;\n    }\n    pplVar5 = &((lang_phdr *)pplVar5)->next->next;\n    plVar1 = ((lang_phdr *)pplVar5)->next;\n  }" { (if_statement "if (((plVar1->type == 1) && (plVar1->filehdr == 0)) && (plVar1->phdrs == 0)) {\n      fmt = (char *)dcgettext(0,\n                              "%X%P:%pS: PHDRS and FILEHDR are not supported when prior PT_LOAD headers lack them\n"\n                              ,5);\n      einfo(fmt,0);\n      plVar1 = ((lang_phdr *)pplVar5)->next->next;\n      pplVar5 = &((lang_phdr *)pplVar5)->next->next;\n      if ((plVar1 != (lang_phdr *)0x0) &&\n         (pplVar4 = &plVar1->next->next, pplVar5 = &plVar1->next,\n         (lang_phdr *)pplVar4 != (lang_phdr *)0x0)) goto LAB_00027b78;\n      break;\n    }" if (parenthesized_expression "(((plVar1->type == 1) && (plVar1->filehdr == 0)) && (plVar1->phdrs == 0))" ( (binary_expression "((plVar1->type == 1) && (plVar1->filehdr == 0)) && (plVar1->phdrs == 0)" (parenthesized_expression "((plVar1->type == 1) && (plVar1->filehdr == 0))" ( (binary_expression "(plVar1->type == 1) && (plVar1->filehdr == 0)" (parenthesized_expression "(plVar1->type == 1)" ( (binary_expression "plVar1->type == 1" (field_expression "plVar1->type" identifier -> field_identifier) == number_literal) )) && (parenthesized_expression "(plVar1->filehdr == 0)" ( (binary_expression "plVar1->filehdr == 0" (field_expression "plVar1->filehdr" identifier -> field_identifier) == number_literal) ))) )) && (parenthesized_expression "(plVar1->phdrs == 0)" ( (binary_expression "plVar1->phdrs == 0" (field_expression "plVar1->phdrs" identifier -> field_identifier) == number_literal) ))) )) (compound_statement "{\n      fmt = (char *)dcgettext(0,\n                              "%X%P:%pS: PHDRS and FILEHDR are not supported when prior PT_LOAD headers lack them\n"\n                              ,5);\n      einfo(fmt,0);\n      plVar1 = ((lang_phdr *)pplVar5)->next->next;\n      pplVar5 = &((lang_phdr *)pplVar5)->next->next;\n      if ((plVar1 != (lang_phdr *)0x0) &&\n         (pplVar4 = &plVar1->next->next, pplVar5 = &plVar1->next,\n         (lang_phdr *)pplVar4 != (lang_phdr *)0x0)) goto LAB_00027b78;\n      break;\n    }" { (expression_statement "fmt = (char *)dcgettext(0,\n                              "%X%P:%pS: PHDRS and FILEHDR are not supported when prior PT_LOAD headers lack them\n"\n                              ,5);" (assignment_expression "fmt = (char *)dcgettext(0,\n                              "%X%P:%pS: PHDRS and FILEHDR are not supported when prior PT_LOAD headers lack them\n"\n                              ,5)" identifier = (cast_expression "(char *)dcgettext(0,\n                              "%X%P:%pS: PHDRS and FILEHDR are not supported when prior PT_LOAD headers lack them\n"\n                              ,5)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "dcgettext(0,\n                              "%X%P:%pS: PHDRS and FILEHDR are not supported when prior PT_LOAD headers lack them\n"\n                              ,5)" identifier (argument_list "(0,\n                              "%X%P:%pS: PHDRS and FILEHDR are not supported when prior PT_LOAD headers lack them\n"\n                              ,5)" ( number_literal , (string_literal ""%X%P:%pS: PHDRS and FILEHDR are not supported when prior PT_LOAD headers lack them\n"" " string_content escape_sequence ") , number_literal ))))) ;) (expression_statement "einfo(fmt,0);" (call_expression "einfo(fmt,0)" identifier (argument_list "(fmt,0)" ( identifier , number_literal ))) ;) (expression_statement "plVar1 = ((lang_phdr *)pplVar5)->next->next;" (assignment_expression "plVar1 = ((lang_phdr *)pplVar5)->next->next" identifier = (field_expression "((lang_phdr *)pplVar5)->next->next" (field_expression "((lang_phdr *)pplVar5)->next" (parenthesized_expression "((lang_phdr *)pplVar5)" ( (cast_expression "(lang_phdr *)pplVar5" ( (type_descriptor "lang_phdr *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) )) -> field_identifier) -> field_identifier)) ;) (expression_statement "pplVar5 = &((lang_phdr *)pplVar5)->next->next;" (assignment_expression "pplVar5 = &((lang_phdr *)pplVar5)->next->next" identifier = (pointer_expression "&((lang_phdr *)pplVar5)->next->next" & (field_expression "((lang_phdr *)pplVar5)->next->next" (field_expression "((lang_phdr *)pplVar5)->next" (parenthesized_expression "((lang_phdr *)pplVar5)" ( (cast_expression "(lang_phdr *)pplVar5" ( (type_descriptor "lang_phdr *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) )) -> field_identifier) -> field_identifier))) ;) (if_statement "if ((plVar1 != (lang_phdr *)0x0) &&\n         (pplVar4 = &plVar1->next->next, pplVar5 = &plVar1->next,\n         (lang_phdr *)pplVar4 != (lang_phdr *)0x0)) goto LAB_00027b78;" if (parenthesized_expression "((plVar1 != (lang_phdr *)0x0) &&\n         (pplVar4 = &plVar1->next->next, pplVar5 = &plVar1->next,\n         (lang_phdr *)pplVar4 != (lang_phdr *)0x0))" ( (binary_expression "(plVar1 != (lang_phdr *)0x0) &&\n         (pplVar4 = &plVar1->next->next, pplVar5 = &plVar1->next,\n         (lang_phdr *)pplVar4 != (lang_phdr *)0x0)" (parenthesized_expression "(plVar1 != (lang_phdr *)0x0)" ( (binary_expression "plVar1 != (lang_phdr *)0x0" identifier != (cast_expression "(lang_phdr *)0x0" ( (type_descriptor "lang_phdr *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) && (parenthesized_expression "(pplVar4 = &plVar1->next->next, pplVar5 = &plVar1->next,\n         (lang_phdr *)pplVar4 != (lang_phdr *)0x0)" ( (comma_expression "pplVar4 = &plVar1->next->next, pplVar5 = &plVar1->next,\n         (lang_phdr *)pplVar4 != (lang_phdr *)0x0" (assignment_expression "pplVar4 = &plVar1->next->next" identifier = (pointer_expression "&plVar1->next->next" & (field_expression "plVar1->next->next" (field_expression "plVar1->next" identifier -> field_identifier) -> field_identifier))) , (comma_expression "pplVar5 = &plVar1->next,\n         (lang_phdr *)pplVar4 != (lang_phdr *)0x0" (assignment_expression "pplVar5 = &plVar1->next" identifier = (pointer_expression "&plVar1->next" & (field_expression "plVar1->next" identifier -> field_identifier))) , (binary_expression "(lang_phdr *)pplVar4 != (lang_phdr *)0x0" (cast_expression "(lang_phdr *)pplVar4" ( (type_descriptor "lang_phdr *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) != (cast_expression "(lang_phdr *)0x0" ( (type_descriptor "lang_phdr *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)))) ))) )) (goto_statement "goto LAB_00027b78;" goto statement_identifier ;)) (break_statement "break;" break ;) })) (expression_statement "pplVar5 = &((lang_phdr *)pplVar5)->next->next;" (assignment_expression "pplVar5 = &((lang_phdr *)pplVar5)->next->next" identifier = (pointer_expression "&((lang_phdr *)pplVar5)->next->next" & (field_expression "((lang_phdr *)pplVar5)->next->next" (field_expression "((lang_phdr *)pplVar5)->next" (parenthesized_expression "((lang_phdr *)pplVar5)" ( (cast_expression "(lang_phdr *)pplVar5" ( (type_descriptor "lang_phdr *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) )) -> field_identifier) -> field_identifier))) ;) (expression_statement "plVar1 = ((lang_phdr *)pplVar5)->next;" (assignment_expression "plVar1 = ((lang_phdr *)pplVar5)->next" identifier = (field_expression "((lang_phdr *)pplVar5)->next" (parenthesized_expression "((lang_phdr *)pplVar5)" ( (cast_expression "(lang_phdr *)pplVar5" ( (type_descriptor "lang_phdr *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) )) -> field_identifier)) ;) })) (goto_statement "goto LAB_00027b80;" goto statement_identifier ;) (while_statement "while( true ) {\n    pplVar5 = &((lang_phdr *)pplVar4)->next;\n    pplVar4 = &(*pplVar5)->next->next;\n    pplVar5 = &(*pplVar5)->next;\n    if ((lang_phdr *)pplVar4 == (lang_phdr *)0x0) break;\nLAB_00027b78:\n    plVar1 = ((lang_phdr *)pplVar4)->next;\njoined_r0x00027b6e:\n    pplVar5 = pplVar4;\n    if (plVar1 == (lang_phdr *)0x0) break;\n  }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n    pplVar5 = &((lang_phdr *)pplVar4)->next;\n    pplVar4 = &(*pplVar5)->next->next;\n    pplVar5 = &(*pplVar5)->next;\n    if ((lang_phdr *)pplVar4 == (lang_phdr *)0x0) break;\nLAB_00027b78:\n    plVar1 = ((lang_phdr *)pplVar4)->next;\njoined_r0x00027b6e:\n    pplVar5 = pplVar4;\n    if (plVar1 == (lang_phdr *)0x0) break;\n  }" { (expression_statement "pplVar5 = &((lang_phdr *)pplVar4)->next;" (assignment_expression "pplVar5 = &((lang_phdr *)pplVar4)->next" identifier = (pointer_expression "&((lang_phdr *)pplVar4)->next" & (field_expression "((lang_phdr *)pplVar4)->next" (parenthesized_expression "((lang_phdr *)pplVar4)" ( (cast_expression "(lang_phdr *)pplVar4" ( (type_descriptor "lang_phdr *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) )) -> field_identifier))) ;) (expression_statement "pplVar4 = &(*pplVar5)->next->next;" (assignment_expression "pplVar4 = &(*pplVar5)->next->next" identifier = (pointer_expression "&(*pplVar5)->next->next" & (field_expression "(*pplVar5)->next->next" (field_expression "(*pplVar5)->next" (parenthesized_expression "(*pplVar5)" ( (pointer_expression "*pplVar5" * identifier) )) -> field_identifier) -> field_identifier))) ;) (expression_statement "pplVar5 = &(*pplVar5)->next;" (assignment_expression "pplVar5 = &(*pplVar5)->next" identifier = (pointer_expression "&(*pplVar5)->next" & (field_expression "(*pplVar5)->next" (parenthesized_expression "(*pplVar5)" ( (pointer_expression "*pplVar5" * identifier) )) -> field_identifier))) ;) (if_statement "if ((lang_phdr *)pplVar4 == (lang_phdr *)0x0) break;" if (parenthesized_expression "((lang_phdr *)pplVar4 == (lang_phdr *)0x0)" ( (binary_expression "(lang_phdr *)pplVar4 == (lang_phdr *)0x0" (cast_expression "(lang_phdr *)pplVar4" ( (type_descriptor "lang_phdr *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) == (cast_expression "(lang_phdr *)0x0" ( (type_descriptor "lang_phdr *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (break_statement "break;" break ;)) (labeled_statement "LAB_00027b78:\n    plVar1 = ((lang_phdr *)pplVar4)->next;" statement_identifier : (expression_statement "plVar1 = ((lang_phdr *)pplVar4)->next;" (assignment_expression "plVar1 = ((lang_phdr *)pplVar4)->next" identifier = (field_expression "((lang_phdr *)pplVar4)->next" (parenthesized_expression "((lang_phdr *)pplVar4)" ( (cast_expression "(lang_phdr *)pplVar4" ( (type_descriptor "lang_phdr *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) )) -> field_identifier)) ;)) (labeled_statement "joined_r0x00027b6e:\n    pplVar5 = pplVar4;" statement_identifier : (expression_statement "pplVar5 = pplVar4;" (assignment_expression "pplVar5 = pplVar4" identifier = identifier) ;)) (if_statement "if (plVar1 == (lang_phdr *)0x0) break;" if (parenthesized_expression "(plVar1 == (lang_phdr *)0x0)" ( (binary_expression "plVar1 == (lang_phdr *)0x0" identifier == (cast_expression "(lang_phdr *)0x0" ( (type_descriptor "lang_phdr *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (break_statement "break;" break ;)) })) (labeled_statement "LAB_00027b80:\n  ((lang_phdr *)pplVar5)->next = plVar2;" statement_identifier : (expression_statement "((lang_phdr *)pplVar5)->next = plVar2;" (assignment_expression "((lang_phdr *)pplVar5)->next = plVar2" (field_expression "((lang_phdr *)pplVar5)->next" (parenthesized_expression "((lang_phdr *)pplVar5)" ( (cast_expression "(lang_phdr *)pplVar5" ( (type_descriptor "lang_phdr *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) )) -> field_identifier) = identifier) ;)) (return_statement "return;" return ;) })))
(translation_unit "void FUN_00027b00(undefined4 param_1,undefined4 param_2,int param_3,int param_4,undefined4 param_5,\n                 undefined4 param_6)\n\n{\n  int *piVar1;\n  undefined4 *puVar2;\n  int iVar3;\n  int *piVar4;\n  undefined4 uVar5;\n  int *piVar6;\n  \n  puVar2 = (undefined4 *)FUN_000215d0(0x1c);\n  *puVar2 = 0;\n  puVar2[1] = param_1;\n  iVar3 = FUN_00031020(param_2,0,"program header type");\n  puVar2[3] = param_3;\n  puVar2[2] = iVar3;\n  puVar2[5] = param_5;\n  puVar2[4] = param_4;\n  puVar2[6] = param_6;\n  if ((iVar3 != 1) || (param_3 == 0 && param_4 == 0)) {\n    piVar4 = &DAT_00084b78;\n    iVar3 = DAT_00084b78;\n    goto joined_r0x00027b6e;\n  }\n  piVar6 = &DAT_00084b78;\n  iVar3 = DAT_00084b78;\n  while (iVar3 != 0) {\n    if (((*(int *)(iVar3 + 8) == 1) && (*(int *)(iVar3 + 0xc) == 0)) &&\n       (*(int *)(iVar3 + 0x10) == 0)) {\n      uVar5 = dcgettext(0,\n                        "%X%P:%pS: PHDRS and FILEHDR are not supported when prior PT_LOAD headers lack them\n"\n                        ,5);\n      FUN_00032b30(uVar5,0);\n      piVar1 = *(int **)*piVar6;\n      piVar6 = (int *)*piVar6;\n      if ((piVar1 != (int *)0x0) && (piVar4 = (int *)*piVar1, piVar6 = piVar1, piVar4 != (int *)0x0)\n         ) goto LAB_00027b78;\n      break;\n    }\n    piVar6 = (int *)*piVar6;\n    iVar3 = *piVar6;\n  }\n  goto LAB_00027b80;\n  while( true ) {\n    piVar6 = (int *)*piVar4;\n    piVar4 = (int *)*piVar6;\n    if (piVar4 == (int *)0x0) break;\nLAB_00027b78:\n    iVar3 = *piVar4;\njoined_r0x00027b6e:\n    piVar6 = piVar4;\n    if (iVar3 == 0) break;\n  }\nLAB_00027b80:\n  *piVar6 = (int)puVar2;\n  return;\n}\n\n" (function_definition "void FUN_00027b00(undefined4 param_1,undefined4 param_2,int param_3,int param_4,undefined4 param_5,\n                 undefined4 param_6)\n\n{\n  int *piVar1;\n  undefined4 *puVar2;\n  int iVar3;\n  int *piVar4;\n  undefined4 uVar5;\n  int *piVar6;\n  \n  puVar2 = (undefined4 *)FUN_000215d0(0x1c);\n  *puVar2 = 0;\n  puVar2[1] = param_1;\n  iVar3 = FUN_00031020(param_2,0,"program header type");\n  puVar2[3] = param_3;\n  puVar2[2] = iVar3;\n  puVar2[5] = param_5;\n  puVar2[4] = param_4;\n  puVar2[6] = param_6;\n  if ((iVar3 != 1) || (param_3 == 0 && param_4 == 0)) {\n    piVar4 = &DAT_00084b78;\n    iVar3 = DAT_00084b78;\n    goto joined_r0x00027b6e;\n  }\n  piVar6 = &DAT_00084b78;\n  iVar3 = DAT_00084b78;\n  while (iVar3 != 0) {\n    if (((*(int *)(iVar3 + 8) == 1) && (*(int *)(iVar3 + 0xc) == 0)) &&\n       (*(int *)(iVar3 + 0x10) == 0)) {\n      uVar5 = dcgettext(0,\n                        "%X%P:%pS: PHDRS and FILEHDR are not supported when prior PT_LOAD headers lack them\n"\n                        ,5);\n      FUN_00032b30(uVar5,0);\n      piVar1 = *(int **)*piVar6;\n      piVar6 = (int *)*piVar6;\n      if ((piVar1 != (int *)0x0) && (piVar4 = (int *)*piVar1, piVar6 = piVar1, piVar4 != (int *)0x0)\n         ) goto LAB_00027b78;\n      break;\n    }\n    piVar6 = (int *)*piVar6;\n    iVar3 = *piVar6;\n  }\n  goto LAB_00027b80;\n  while( true ) {\n    piVar6 = (int *)*piVar4;\n    piVar4 = (int *)*piVar6;\n    if (piVar4 == (int *)0x0) break;\nLAB_00027b78:\n    iVar3 = *piVar4;\njoined_r0x00027b6e:\n    piVar6 = piVar4;\n    if (iVar3 == 0) break;\n  }\nLAB_00027b80:\n  *piVar6 = (int)puVar2;\n  return;\n}" primitive_type (function_declarator "FUN_00027b00(undefined4 param_1,undefined4 param_2,int param_3,int param_4,undefined4 param_5,\n                 undefined4 param_6)" identifier (parameter_list "(undefined4 param_1,undefined4 param_2,int param_3,int param_4,undefined4 param_5,\n                 undefined4 param_6)" ( (parameter_declaration "undefined4 param_1" type_identifier identifier) , (parameter_declaration "undefined4 param_2" type_identifier identifier) , (parameter_declaration "int param_3" primitive_type identifier) , (parameter_declaration "int param_4" primitive_type identifier) , (parameter_declaration "undefined4 param_5" type_identifier identifier) , (parameter_declaration "undefined4 param_6" type_identifier identifier) ))) (compound_statement "{\n  int *piVar1;\n  undefined4 *puVar2;\n  int iVar3;\n  int *piVar4;\n  undefined4 uVar5;\n  int *piVar6;\n  \n  puVar2 = (undefined4 *)FUN_000215d0(0x1c);\n  *puVar2 = 0;\n  puVar2[1] = param_1;\n  iVar3 = FUN_00031020(param_2,0,"program header type");\n  puVar2[3] = param_3;\n  puVar2[2] = iVar3;\n  puVar2[5] = param_5;\n  puVar2[4] = param_4;\n  puVar2[6] = param_6;\n  if ((iVar3 != 1) || (param_3 == 0 && param_4 == 0)) {\n    piVar4 = &DAT_00084b78;\n    iVar3 = DAT_00084b78;\n    goto joined_r0x00027b6e;\n  }\n  piVar6 = &DAT_00084b78;\n  iVar3 = DAT_00084b78;\n  while (iVar3 != 0) {\n    if (((*(int *)(iVar3 + 8) == 1) && (*(int *)(iVar3 + 0xc) == 0)) &&\n       (*(int *)(iVar3 + 0x10) == 0)) {\n      uVar5 = dcgettext(0,\n                        "%X%P:%pS: PHDRS and FILEHDR are not supported when prior PT_LOAD headers lack them\n"\n                        ,5);\n      FUN_00032b30(uVar5,0);\n      piVar1 = *(int **)*piVar6;\n      piVar6 = (int *)*piVar6;\n      if ((piVar1 != (int *)0x0) && (piVar4 = (int *)*piVar1, piVar6 = piVar1, piVar4 != (int *)0x0)\n         ) goto LAB_00027b78;\n      break;\n    }\n    piVar6 = (int *)*piVar6;\n    iVar3 = *piVar6;\n  }\n  goto LAB_00027b80;\n  while( true ) {\n    piVar6 = (int *)*piVar4;\n    piVar4 = (int *)*piVar6;\n    if (piVar4 == (int *)0x0) break;\nLAB_00027b78:\n    iVar3 = *piVar4;\njoined_r0x00027b6e:\n    piVar6 = piVar4;\n    if (iVar3 == 0) break;\n  }\nLAB_00027b80:\n  *piVar6 = (int)puVar2;\n  return;\n}" { (declaration "int *piVar1;" primitive_type (pointer_declarator "*piVar1" * identifier) ;) (declaration "undefined4 *puVar2;" type_identifier (pointer_declarator "*puVar2" * identifier) ;) (declaration "int iVar3;" primitive_type identifier ;) (declaration "int *piVar4;" primitive_type (pointer_declarator "*piVar4" * identifier) ;) (declaration "undefined4 uVar5;" type_identifier identifier ;) (declaration "int *piVar6;" primitive_type (pointer_declarator "*piVar6" * identifier) ;) (expression_statement "puVar2 = (undefined4 *)FUN_000215d0(0x1c);" (assignment_expression "puVar2 = (undefined4 *)FUN_000215d0(0x1c)" identifier = (cast_expression "(undefined4 *)FUN_000215d0(0x1c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_000215d0(0x1c)" identifier (argument_list "(0x1c)" ( number_literal ))))) ;) (expression_statement "*puVar2 = 0;" (assignment_expression "*puVar2 = 0" (pointer_expression "*puVar2" * identifier) = number_literal) ;) (expression_statement "puVar2[1] = param_1;" (assignment_expression "puVar2[1] = param_1" (subscript_expression "puVar2[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "iVar3 = FUN_00031020(param_2,0,"program header type");" (assignment_expression "iVar3 = FUN_00031020(param_2,0,"program header type")" identifier = (call_expression "FUN_00031020(param_2,0,"program header type")" identifier (argument_list "(param_2,0,"program header type")" ( identifier , number_literal , (string_literal ""program header type"" " string_content ") )))) ;) (expression_statement "puVar2[3] = param_3;" (assignment_expression "puVar2[3] = param_3" (subscript_expression "puVar2[3]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar2[2] = iVar3;" (assignment_expression "puVar2[2] = iVar3" (subscript_expression "puVar2[2]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar2[5] = param_5;" (assignment_expression "puVar2[5] = param_5" (subscript_expression "puVar2[5]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar2[4] = param_4;" (assignment_expression "puVar2[4] = param_4" (subscript_expression "puVar2[4]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar2[6] = param_6;" (assignment_expression "puVar2[6] = param_6" (subscript_expression "puVar2[6]" identifier [ number_literal ]) = identifier) ;) (if_statement "if ((iVar3 != 1) || (param_3 == 0 && param_4 == 0)) {\n    piVar4 = &DAT_00084b78;\n    iVar3 = DAT_00084b78;\n    goto joined_r0x00027b6e;\n  }" if (parenthesized_expression "((iVar3 != 1) || (param_3 == 0 && param_4 == 0))" ( (binary_expression "(iVar3 != 1) || (param_3 == 0 && param_4 == 0)" (parenthesized_expression "(iVar3 != 1)" ( (binary_expression "iVar3 != 1" identifier != number_literal) )) || (parenthesized_expression "(param_3 == 0 && param_4 == 0)" ( (binary_expression "param_3 == 0 && param_4 == 0" (binary_expression "param_3 == 0" identifier == number_literal) && (binary_expression "param_4 == 0" identifier == number_literal)) ))) )) (compound_statement "{\n    piVar4 = &DAT_00084b78;\n    iVar3 = DAT_00084b78;\n    goto joined_r0x00027b6e;\n  }" { (expression_statement "piVar4 = &DAT_00084b78;" (assignment_expression "piVar4 = &DAT_00084b78" identifier = (pointer_expression "&DAT_00084b78" & identifier)) ;) (expression_statement "iVar3 = DAT_00084b78;" (assignment_expression "iVar3 = DAT_00084b78" identifier = identifier) ;) (goto_statement "goto joined_r0x00027b6e;" goto statement_identifier ;) })) (expression_statement "piVar6 = &DAT_00084b78;" (assignment_expression "piVar6 = &DAT_00084b78" identifier = (pointer_expression "&DAT_00084b78" & identifier)) ;) (expression_statement "iVar3 = DAT_00084b78;" (assignment_expression "iVar3 = DAT_00084b78" identifier = identifier) ;) (while_statement "while (iVar3 != 0) {\n    if (((*(int *)(iVar3 + 8) == 1) && (*(int *)(iVar3 + 0xc) == 0)) &&\n       (*(int *)(iVar3 + 0x10) == 0)) {\n      uVar5 = dcgettext(0,\n                        "%X%P:%pS: PHDRS and FILEHDR are not supported when prior PT_LOAD headers lack them\n"\n                        ,5);\n      FUN_00032b30(uVar5,0);\n      piVar1 = *(int **)*piVar6;\n      piVar6 = (int *)*piVar6;\n      if ((piVar1 != (int *)0x0) && (piVar4 = (int *)*piVar1, piVar6 = piVar1, piVar4 != (int *)0x0)\n         ) goto LAB_00027b78;\n      break;\n    }\n    piVar6 = (int *)*piVar6;\n    iVar3 = *piVar6;\n  }" while (parenthesized_expression "(iVar3 != 0)" ( (binary_expression "iVar3 != 0" identifier != number_literal) )) (compound_statement "{\n    if (((*(int *)(iVar3 + 8) == 1) && (*(int *)(iVar3 + 0xc) == 0)) &&\n       (*(int *)(iVar3 + 0x10) == 0)) {\n      uVar5 = dcgettext(0,\n                        "%X%P:%pS: PHDRS and FILEHDR are not supported when prior PT_LOAD headers lack them\n"\n                        ,5);\n      FUN_00032b30(uVar5,0);\n      piVar1 = *(int **)*piVar6;\n      piVar6 = (int *)*piVar6;\n      if ((piVar1 != (int *)0x0) && (piVar4 = (int *)*piVar1, piVar6 = piVar1, piVar4 != (int *)0x0)\n         ) goto LAB_00027b78;\n      break;\n    }\n    piVar6 = (int *)*piVar6;\n    iVar3 = *piVar6;\n  }" { (if_statement "if (((*(int *)(iVar3 + 8) == 1) && (*(int *)(iVar3 + 0xc) == 0)) &&\n       (*(int *)(iVar3 + 0x10) == 0)) {\n      uVar5 = dcgettext(0,\n                        "%X%P:%pS: PHDRS and FILEHDR are not supported when prior PT_LOAD headers lack them\n"\n                        ,5);\n      FUN_00032b30(uVar5,0);\n      piVar1 = *(int **)*piVar6;\n      piVar6 = (int *)*piVar6;\n      if ((piVar1 != (int *)0x0) && (piVar4 = (int *)*piVar1, piVar6 = piVar1, piVar4 != (int *)0x0)\n         ) goto LAB_00027b78;\n      break;\n    }" if (parenthesized_expression "(((*(int *)(iVar3 + 8) == 1) && (*(int *)(iVar3 + 0xc) == 0)) &&\n       (*(int *)(iVar3 + 0x10) == 0))" ( (binary_expression "((*(int *)(iVar3 + 8) == 1) && (*(int *)(iVar3 + 0xc) == 0)) &&\n       (*(int *)(iVar3 + 0x10) == 0)" (parenthesized_expression "((*(int *)(iVar3 + 8) == 1) && (*(int *)(iVar3 + 0xc) == 0))" ( (binary_expression "(*(int *)(iVar3 + 8) == 1) && (*(int *)(iVar3 + 0xc) == 0)" (parenthesized_expression "(*(int *)(iVar3 + 8) == 1)" ( (binary_expression "*(int *)(iVar3 + 8) == 1" (pointer_expression "*(int *)(iVar3 + 8)" * (cast_expression "(int *)(iVar3 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + 8)" ( (binary_expression "iVar3 + 8" identifier + number_literal) )))) == number_literal) )) && (parenthesized_expression "(*(int *)(iVar3 + 0xc) == 0)" ( (binary_expression "*(int *)(iVar3 + 0xc) == 0" (pointer_expression "*(int *)(iVar3 + 0xc)" * (cast_expression "(int *)(iVar3 + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + 0xc)" ( (binary_expression "iVar3 + 0xc" identifier + number_literal) )))) == number_literal) ))) )) && (parenthesized_expression "(*(int *)(iVar3 + 0x10) == 0)" ( (binary_expression "*(int *)(iVar3 + 0x10) == 0" (pointer_expression "*(int *)(iVar3 + 0x10)" * (cast_expression "(int *)(iVar3 + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + 0x10)" ( (binary_expression "iVar3 + 0x10" identifier + number_literal) )))) == number_literal) ))) )) (compound_statement "{\n      uVar5 = dcgettext(0,\n                        "%X%P:%pS: PHDRS and FILEHDR are not supported when prior PT_LOAD headers lack them\n"\n                        ,5);\n      FUN_00032b30(uVar5,0);\n      piVar1 = *(int **)*piVar6;\n      piVar6 = (int *)*piVar6;\n      if ((piVar1 != (int *)0x0) && (piVar4 = (int *)*piVar1, piVar6 = piVar1, piVar4 != (int *)0x0)\n         ) goto LAB_00027b78;\n      break;\n    }" { (expression_statement "uVar5 = dcgettext(0,\n                        "%X%P:%pS: PHDRS and FILEHDR are not supported when prior PT_LOAD headers lack them\n"\n                        ,5);" (assignment_expression "uVar5 = dcgettext(0,\n                        "%X%P:%pS: PHDRS and FILEHDR are not supported when prior PT_LOAD headers lack them\n"\n                        ,5)" identifier = (call_expression "dcgettext(0,\n                        "%X%P:%pS: PHDRS and FILEHDR are not supported when prior PT_LOAD headers lack them\n"\n                        ,5)" identifier (argument_list "(0,\n                        "%X%P:%pS: PHDRS and FILEHDR are not supported when prior PT_LOAD headers lack them\n"\n                        ,5)" ( number_literal , (string_literal ""%X%P:%pS: PHDRS and FILEHDR are not supported when prior PT_LOAD headers lack them\n"" " string_content escape_sequence ") , number_literal )))) ;) (expression_statement "FUN_00032b30(uVar5,0);" (call_expression "FUN_00032b30(uVar5,0)" identifier (argument_list "(uVar5,0)" ( identifier , number_literal ))) ;) (expression_statement "piVar1 = *(int **)*piVar6;" (assignment_expression "piVar1 = *(int **)*piVar6" identifier = (pointer_expression "*(int **)*piVar6" * (cast_expression "(int **)*piVar6" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (pointer_expression "*piVar6" * identifier)))) ;) (expression_statement "piVar6 = (int *)*piVar6;" (assignment_expression "piVar6 = (int *)*piVar6" identifier = (cast_expression "(int *)*piVar6" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*piVar6" * identifier))) ;) (if_statement "if ((piVar1 != (int *)0x0) && (piVar4 = (int *)*piVar1, piVar6 = piVar1, piVar4 != (int *)0x0)\n         ) goto LAB_00027b78;" if (parenthesized_expression "((piVar1 != (int *)0x0) && (piVar4 = (int *)*piVar1, piVar6 = piVar1, piVar4 != (int *)0x0)\n         )" ( (binary_expression "(piVar1 != (int *)0x0) && (piVar4 = (int *)*piVar1, piVar6 = piVar1, piVar4 != (int *)0x0)" (parenthesized_expression "(piVar1 != (int *)0x0)" ( (binary_expression "piVar1 != (int *)0x0" identifier != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) && (parenthesized_expression "(piVar4 = (int *)*piVar1, piVar6 = piVar1, piVar4 != (int *)0x0)" ( (comma_expression "piVar4 = (int *)*piVar1, piVar6 = piVar1, piVar4 != (int *)0x0" (assignment_expression "piVar4 = (int *)*piVar1" identifier = (cast_expression "(int *)*piVar1" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*piVar1" * identifier))) , (comma_expression "piVar6 = piVar1, piVar4 != (int *)0x0" (assignment_expression "piVar6 = piVar1" identifier = identifier) , (binary_expression "piVar4 != (int *)0x0" identifier != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)))) ))) )) (goto_statement "goto LAB_00027b78;" goto statement_identifier ;)) (break_statement "break;" break ;) })) (expression_statement "piVar6 = (int *)*piVar6;" (assignment_expression "piVar6 = (int *)*piVar6" identifier = (cast_expression "(int *)*piVar6" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*piVar6" * identifier))) ;) (expression_statement "iVar3 = *piVar6;" (assignment_expression "iVar3 = *piVar6" identifier = (pointer_expression "*piVar6" * identifier)) ;) })) (goto_statement "goto LAB_00027b80;" goto statement_identifier ;) (while_statement "while( true ) {\n    piVar6 = (int *)*piVar4;\n    piVar4 = (int *)*piVar6;\n    if (piVar4 == (int *)0x0) break;\nLAB_00027b78:\n    iVar3 = *piVar4;\njoined_r0x00027b6e:\n    piVar6 = piVar4;\n    if (iVar3 == 0) break;\n  }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n    piVar6 = (int *)*piVar4;\n    piVar4 = (int *)*piVar6;\n    if (piVar4 == (int *)0x0) break;\nLAB_00027b78:\n    iVar3 = *piVar4;\njoined_r0x00027b6e:\n    piVar6 = piVar4;\n    if (iVar3 == 0) break;\n  }" { (expression_statement "piVar6 = (int *)*piVar4;" (assignment_expression "piVar6 = (int *)*piVar4" identifier = (cast_expression "(int *)*piVar4" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*piVar4" * identifier))) ;) (expression_statement "piVar4 = (int *)*piVar6;" (assignment_expression "piVar4 = (int *)*piVar6" identifier = (cast_expression "(int *)*piVar6" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*piVar6" * identifier))) ;) (if_statement "if (piVar4 == (int *)0x0) break;" if (parenthesized_expression "(piVar4 == (int *)0x0)" ( (binary_expression "piVar4 == (int *)0x0" identifier == (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (break_statement "break;" break ;)) (labeled_statement "LAB_00027b78:\n    iVar3 = *piVar4;" statement_identifier : (expression_statement "iVar3 = *piVar4;" (assignment_expression "iVar3 = *piVar4" identifier = (pointer_expression "*piVar4" * identifier)) ;)) (labeled_statement "joined_r0x00027b6e:\n    piVar6 = piVar4;" statement_identifier : (expression_statement "piVar6 = piVar4;" (assignment_expression "piVar6 = piVar4" identifier = identifier) ;)) (if_statement "if (iVar3 == 0) break;" if (parenthesized_expression "(iVar3 == 0)" ( (binary_expression "iVar3 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) })) (labeled_statement "LAB_00027b80:\n  *piVar6 = (int)puVar2;" statement_identifier : (expression_statement "*piVar6 = (int)puVar2;" (assignment_expression "*piVar6 = (int)puVar2" (pointer_expression "*piVar6" * identifier) = (cast_expression "(int)puVar2" ( (type_descriptor "int" primitive_type) ) identifier)) ;)) (return_statement "return;" return ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) ))) (compound_statement { (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( LIT ))))) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , LIT , (string_literal " string_content ") )))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT != LIT) )) || (parenthesized_expression ( (binary_expression (binary_expression IDENT == LIT) && (binary_expression IDENT == LIT)) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression & IDENT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = (pointer_expression & IDENT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (while_statement while (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == LIT) )) && (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == LIT) ))) )) && (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == LIT) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( LIT , (string_literal " string_content escape_sequence ") , LIT )))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , LIT ))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (pointer_expression * IDENT)))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) && (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) , (comma_expression (assignment_expression IDENT = IDENT) , (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)))) ))) )) (goto_statement goto statement_identifier ;)) (break_statement break ;) })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) })) (goto_statement goto statement_identifier ;) (while_statement while (parenthesized_expression ( BOOL )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (break_statement break ;)) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;)) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = IDENT) ;)) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (break_statement break ;)) })) (labeled_statement statement_identifier : (expression_statement (assignment_expression (pointer_expression * IDENT) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;)) (return_statement return ;) })))
(function_definition "void FUN_00027b00(undefined4 param_1,undefined4 param_2,int param_3,int param_4,undefined4 param_5,\n                 undefined4 param_6)\n\n{\n  int *piVar1;\n  undefined4 *puVar2;\n  int iVar3;\n  int *piVar4;\n  undefined4 uVar5;\n  int *piVar6;\n  \n  puVar2 = (undefined4 *)FUN_000215d0(0x1c);\n  *puVar2 = 0;\n  puVar2[1] = param_1;\n  iVar3 = FUN_00031020(param_2,0,"program header type");\n  puVar2[3] = param_3;\n  puVar2[2] = iVar3;\n  puVar2[5] = param_5;\n  puVar2[4] = param_4;\n  puVar2[6] = param_6;\n  if ((iVar3 != 1) || (param_3 == 0 && param_4 == 0)) {\n    piVar4 = &DAT_00084b78;\n    iVar3 = DAT_00084b78;\n    goto joined_r0x00027b6e;\n  }\n  piVar6 = &DAT_00084b78;\n  iVar3 = DAT_00084b78;\n  while (iVar3 != 0) {\n    if (((*(int *)(iVar3 + 8) == 1) && (*(int *)(iVar3 + 0xc) == 0)) &&\n       (*(int *)(iVar3 + 0x10) == 0)) {\n      uVar5 = dcgettext(0,\n                        "%X%P:%pS: PHDRS and FILEHDR are not supported when prior PT_LOAD headers lack them\n"\n                        ,5);\n      FUN_00032b30(uVar5,0);\n      piVar1 = *(int **)*piVar6;\n      piVar6 = (int *)*piVar6;\n      if ((piVar1 != (int *)0x0) && (piVar4 = (int *)*piVar1, piVar6 = piVar1, piVar4 != (int *)0x0)\n         ) goto LAB_00027b78;\n      break;\n    }\n    piVar6 = (int *)*piVar6;\n    iVar3 = *piVar6;\n  }\n  goto LAB_00027b80;\n  while( true ) {\n    piVar6 = (int *)*piVar4;\n    piVar4 = (int *)*piVar6;\n    if (piVar4 == (int *)0x0) break;\nLAB_00027b78:\n    iVar3 = *piVar4;\njoined_r0x00027b6e:\n    piVar6 = piVar4;\n    if (iVar3 == 0) break;\n  }\nLAB_00027b80:\n  *piVar6 = (int)puVar2;\n  return;\n}" (primitive_type "void") (function_declarator "FUN_00027b00(undefined4 param_1,undefined4 param_2,int param_3,int param_4,undefined4 param_5,\n                 undefined4 param_6)" (identifier "FUN_00027b00") (parameter_list "(undefined4 param_1,undefined4 param_2,int param_3,int param_4,undefined4 param_5,\n                 undefined4 param_6)" (( "(") (parameter_declaration "undefined4 param_1" (type_identifier "undefined4") (identifier "param_1")) (, ",") (parameter_declaration "undefined4 param_2" (type_identifier "undefined4") (identifier "param_2")) (, ",") (parameter_declaration "int param_3" (primitive_type "int") (identifier "param_3")) (, ",") (parameter_declaration "int param_4" (primitive_type "int") (identifier "param_4")) (, ",") (parameter_declaration "undefined4 param_5" (type_identifier "undefined4") (identifier "param_5")) (, ",") (parameter_declaration "undefined4 param_6" (type_identifier "undefined4") (identifier "param_6")) () ")"))) (compound_statement "{\n  int *piVar1;\n  undefined4 *puVar2;\n  int iVar3;\n  int *piVar4;\n  undefined4 uVar5;\n  int *piVar6;\n  \n  puVar2 = (undefined4 *)FUN_000215d0(0x1c);\n  *puVar2 = 0;\n  puVar2[1] = param_1;\n  iVar3 = FUN_00031020(param_2,0,"program header type");\n  puVar2[3] = param_3;\n  puVar2[2] = iVar3;\n  puVar2[5] = param_5;\n  puVar2[4] = param_4;\n  puVar2[6] = param_6;\n  if ((iVar3 != 1) || (param_3 == 0 && param_4 == 0)) {\n    piVar4 = &DAT_00084b78;\n    iVar3 = DAT_00084b78;\n    goto joined_r0x00027b6e;\n  }\n  piVar6 = &DAT_00084b78;\n  iVar3 = DAT_00084b78;\n  while (iVar3 != 0) {\n    if (((*(int *)(iVar3 + 8) == 1) && (*(int *)(iVar3 + 0xc) == 0)) &&\n       (*(int *)(iVar3 + 0x10) == 0)) {\n      uVar5 = dcgettext(0,\n                        "%X%P:%pS: PHDRS and FILEHDR are not supported when prior PT_LOAD headers lack them\n"\n                        ,5);\n      FUN_00032b30(uVar5,0);\n      piVar1 = *(int **)*piVar6;\n      piVar6 = (int *)*piVar6;\n      if ((piVar1 != (int *)0x0) && (piVar4 = (int *)*piVar1, piVar6 = piVar1, piVar4 != (int *)0x0)\n         ) goto LAB_00027b78;\n      break;\n    }\n    piVar6 = (int *)*piVar6;\n    iVar3 = *piVar6;\n  }\n  goto LAB_00027b80;\n  while( true ) {\n    piVar6 = (int *)*piVar4;\n    piVar4 = (int *)*piVar6;\n    if (piVar4 == (int *)0x0) break;\nLAB_00027b78:\n    iVar3 = *piVar4;\njoined_r0x00027b6e:\n    piVar6 = piVar4;\n    if (iVar3 == 0) break;\n  }\nLAB_00027b80:\n  *piVar6 = (int)puVar2;\n  return;\n}" ({ "{") (declaration "int *piVar1;" (primitive_type "int") (pointer_declarator "*piVar1" (* "*") (identifier "piVar1")) (; ";")) (declaration "undefined4 *puVar2;" (type_identifier "undefined4") (pointer_declarator "*puVar2" (* "*") (identifier "puVar2")) (; ";")) (declaration "int iVar3;" (primitive_type "int") (identifier "iVar3") (; ";")) (declaration "int *piVar4;" (primitive_type "int") (pointer_declarator "*piVar4" (* "*") (identifier "piVar4")) (; ";")) (declaration "undefined4 uVar5;" (type_identifier "undefined4") (identifier "uVar5") (; ";")) (declaration "int *piVar6;" (primitive_type "int") (pointer_declarator "*piVar6" (* "*") (identifier "piVar6")) (; ";")) (expression_statement "puVar2 = (undefined4 *)FUN_000215d0(0x1c);" (assignment_expression "puVar2 = (undefined4 *)FUN_000215d0(0x1c)" (identifier "puVar2") (= "=") (cast_expression "(undefined4 *)FUN_000215d0(0x1c)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_000215d0(0x1c)" (identifier "FUN_000215d0") (argument_list "(0x1c)" (( "(") (number_literal "0x1c") () ")"))))) (; ";")) (expression_statement "*puVar2 = 0;" (assignment_expression "*puVar2 = 0" (pointer_expression "*puVar2" (* "*") (identifier "puVar2")) (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar2[1] = param_1;" (assignment_expression "puVar2[1] = param_1" (subscript_expression "puVar2[1]" (identifier "puVar2") ([ "[") (number_literal "1") (] "]")) (= "=") (identifier "param_1")) (; ";")) (expression_statement "iVar3 = FUN_00031020(param_2,0,"program header type");" (assignment_expression "iVar3 = FUN_00031020(param_2,0,"program header type")" (identifier "iVar3") (= "=") (call_expression "FUN_00031020(param_2,0,"program header type")" (identifier "FUN_00031020") (argument_list "(param_2,0,"program header type")" (( "(") (identifier "param_2") (, ",") (number_literal "0") (, ",") (string_literal ""program header type"" (" """) (string_content "program header type") (" """)) () ")")))) (; ";")) (expression_statement "puVar2[3] = param_3;" (assignment_expression "puVar2[3] = param_3" (subscript_expression "puVar2[3]" (identifier "puVar2") ([ "[") (number_literal "3") (] "]")) (= "=") (identifier "param_3")) (; ";")) (expression_statement "puVar2[2] = iVar3;" (assignment_expression "puVar2[2] = iVar3" (subscript_expression "puVar2[2]" (identifier "puVar2") ([ "[") (number_literal "2") (] "]")) (= "=") (identifier "iVar3")) (; ";")) (expression_statement "puVar2[5] = param_5;" (assignment_expression "puVar2[5] = param_5" (subscript_expression "puVar2[5]" (identifier "puVar2") ([ "[") (number_literal "5") (] "]")) (= "=") (identifier "param_5")) (; ";")) (expression_statement "puVar2[4] = param_4;" (assignment_expression "puVar2[4] = param_4" (subscript_expression "puVar2[4]" (identifier "puVar2") ([ "[") (number_literal "4") (] "]")) (= "=") (identifier "param_4")) (; ";")) (expression_statement "puVar2[6] = param_6;" (assignment_expression "puVar2[6] = param_6" (subscript_expression "puVar2[6]" (identifier "puVar2") ([ "[") (number_literal "6") (] "]")) (= "=") (identifier "param_6")) (; ";")) (if_statement "if ((iVar3 != 1) || (param_3 == 0 && param_4 == 0)) {\n    piVar4 = &DAT_00084b78;\n    iVar3 = DAT_00084b78;\n    goto joined_r0x00027b6e;\n  }" (if "if") (parenthesized_expression "((iVar3 != 1) || (param_3 == 0 && param_4 == 0))" (( "(") (binary_expression "(iVar3 != 1) || (param_3 == 0 && param_4 == 0)" (parenthesized_expression "(iVar3 != 1)" (( "(") (binary_expression "iVar3 != 1" (identifier "iVar3") (!= "!=") (number_literal "1")) () ")")) (|| "||") (parenthesized_expression "(param_3 == 0 && param_4 == 0)" (( "(") (binary_expression "param_3 == 0 && param_4 == 0" (binary_expression "param_3 == 0" (identifier "param_3") (== "==") (number_literal "0")) (&& "&&") (binary_expression "param_4 == 0" (identifier "param_4") (== "==") (number_literal "0"))) () ")"))) () ")")) (compound_statement "{\n    piVar4 = &DAT_00084b78;\n    iVar3 = DAT_00084b78;\n    goto joined_r0x00027b6e;\n  }" ({ "{") (expression_statement "piVar4 = &DAT_00084b78;" (assignment_expression "piVar4 = &DAT_00084b78" (identifier "piVar4") (= "=") (pointer_expression "&DAT_00084b78" (& "&") (identifier "DAT_00084b78"))) (; ";")) (expression_statement "iVar3 = DAT_00084b78;" (assignment_expression "iVar3 = DAT_00084b78" (identifier "iVar3") (= "=") (identifier "DAT_00084b78")) (; ";")) (goto_statement "goto joined_r0x00027b6e;" (goto "goto") (statement_identifier "joined_r0x00027b6e") (; ";")) (} "}"))) (expression_statement "piVar6 = &DAT_00084b78;" (assignment_expression "piVar6 = &DAT_00084b78" (identifier "piVar6") (= "=") (pointer_expression "&DAT_00084b78" (& "&") (identifier "DAT_00084b78"))) (; ";")) (expression_statement "iVar3 = DAT_00084b78;" (assignment_expression "iVar3 = DAT_00084b78" (identifier "iVar3") (= "=") (identifier "DAT_00084b78")) (; ";")) (while_statement "while (iVar3 != 0) {\n    if (((*(int *)(iVar3 + 8) == 1) && (*(int *)(iVar3 + 0xc) == 0)) &&\n       (*(int *)(iVar3 + 0x10) == 0)) {\n      uVar5 = dcgettext(0,\n                        "%X%P:%pS: PHDRS and FILEHDR are not supported when prior PT_LOAD headers lack them\n"\n                        ,5);\n      FUN_00032b30(uVar5,0);\n      piVar1 = *(int **)*piVar6;\n      piVar6 = (int *)*piVar6;\n      if ((piVar1 != (int *)0x0) && (piVar4 = (int *)*piVar1, piVar6 = piVar1, piVar4 != (int *)0x0)\n         ) goto LAB_00027b78;\n      break;\n    }\n    piVar6 = (int *)*piVar6;\n    iVar3 = *piVar6;\n  }" (while "while") (parenthesized_expression "(iVar3 != 0)" (( "(") (binary_expression "iVar3 != 0" (identifier "iVar3") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n    if (((*(int *)(iVar3 + 8) == 1) && (*(int *)(iVar3 + 0xc) == 0)) &&\n       (*(int *)(iVar3 + 0x10) == 0)) {\n      uVar5 = dcgettext(0,\n                        "%X%P:%pS: PHDRS and FILEHDR are not supported when prior PT_LOAD headers lack them\n"\n                        ,5);\n      FUN_00032b30(uVar5,0);\n      piVar1 = *(int **)*piVar6;\n      piVar6 = (int *)*piVar6;\n      if ((piVar1 != (int *)0x0) && (piVar4 = (int *)*piVar1, piVar6 = piVar1, piVar4 != (int *)0x0)\n         ) goto LAB_00027b78;\n      break;\n    }\n    piVar6 = (int *)*piVar6;\n    iVar3 = *piVar6;\n  }" ({ "{") (if_statement "if (((*(int *)(iVar3 + 8) == 1) && (*(int *)(iVar3 + 0xc) == 0)) &&\n       (*(int *)(iVar3 + 0x10) == 0)) {\n      uVar5 = dcgettext(0,\n                        "%X%P:%pS: PHDRS and FILEHDR are not supported when prior PT_LOAD headers lack them\n"\n                        ,5);\n      FUN_00032b30(uVar5,0);\n      piVar1 = *(int **)*piVar6;\n      piVar6 = (int *)*piVar6;\n      if ((piVar1 != (int *)0x0) && (piVar4 = (int *)*piVar1, piVar6 = piVar1, piVar4 != (int *)0x0)\n         ) goto LAB_00027b78;\n      break;\n    }" (if "if") (parenthesized_expression "(((*(int *)(iVar3 + 8) == 1) && (*(int *)(iVar3 + 0xc) == 0)) &&\n       (*(int *)(iVar3 + 0x10) == 0))" (( "(") (binary_expression "((*(int *)(iVar3 + 8) == 1) && (*(int *)(iVar3 + 0xc) == 0)) &&\n       (*(int *)(iVar3 + 0x10) == 0)" (parenthesized_expression "((*(int *)(iVar3 + 8) == 1) && (*(int *)(iVar3 + 0xc) == 0))" (( "(") (binary_expression "(*(int *)(iVar3 + 8) == 1) && (*(int *)(iVar3 + 0xc) == 0)" (parenthesized_expression "(*(int *)(iVar3 + 8) == 1)" (( "(") (binary_expression "*(int *)(iVar3 + 8) == 1" (pointer_expression "*(int *)(iVar3 + 8)" (* "*") (cast_expression "(int *)(iVar3 + 8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar3 + 8)" (( "(") (binary_expression "iVar3 + 8" (identifier "iVar3") (+ "+") (number_literal "8")) () ")")))) (== "==") (number_literal "1")) () ")")) (&& "&&") (parenthesized_expression "(*(int *)(iVar3 + 0xc) == 0)" (( "(") (binary_expression "*(int *)(iVar3 + 0xc) == 0" (pointer_expression "*(int *)(iVar3 + 0xc)" (* "*") (cast_expression "(int *)(iVar3 + 0xc)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar3 + 0xc)" (( "(") (binary_expression "iVar3 + 0xc" (identifier "iVar3") (+ "+") (number_literal "0xc")) () ")")))) (== "==") (number_literal "0")) () ")"))) () ")")) (&& "&&") (parenthesized_expression "(*(int *)(iVar3 + 0x10) == 0)" (( "(") (binary_expression "*(int *)(iVar3 + 0x10) == 0" (pointer_expression "*(int *)(iVar3 + 0x10)" (* "*") (cast_expression "(int *)(iVar3 + 0x10)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar3 + 0x10)" (( "(") (binary_expression "iVar3 + 0x10" (identifier "iVar3") (+ "+") (number_literal "0x10")) () ")")))) (== "==") (number_literal "0")) () ")"))) () ")")) (compound_statement "{\n      uVar5 = dcgettext(0,\n                        "%X%P:%pS: PHDRS and FILEHDR are not supported when prior PT_LOAD headers lack them\n"\n                        ,5);\n      FUN_00032b30(uVar5,0);\n      piVar1 = *(int **)*piVar6;\n      piVar6 = (int *)*piVar6;\n      if ((piVar1 != (int *)0x0) && (piVar4 = (int *)*piVar1, piVar6 = piVar1, piVar4 != (int *)0x0)\n         ) goto LAB_00027b78;\n      break;\n    }" ({ "{") (expression_statement "uVar5 = dcgettext(0,\n                        "%X%P:%pS: PHDRS and FILEHDR are not supported when prior PT_LOAD headers lack them\n"\n                        ,5);" (assignment_expression "uVar5 = dcgettext(0,\n                        "%X%P:%pS: PHDRS and FILEHDR are not supported when prior PT_LOAD headers lack them\n"\n                        ,5)" (identifier "uVar5") (= "=") (call_expression "dcgettext(0,\n                        "%X%P:%pS: PHDRS and FILEHDR are not supported when prior PT_LOAD headers lack them\n"\n                        ,5)" (identifier "dcgettext") (argument_list "(0,\n                        "%X%P:%pS: PHDRS and FILEHDR are not supported when prior PT_LOAD headers lack them\n"\n                        ,5)" (( "(") (number_literal "0") (, ",") (string_literal ""%X%P:%pS: PHDRS and FILEHDR are not supported when prior PT_LOAD headers lack them\n"" (" """) (string_content "%X%P:%pS: PHDRS and FILEHDR are not supported when prior PT_LOAD headers lack them") (escape_sequence "\n") (" """)) (, ",") (number_literal "5") () ")")))) (; ";")) (expression_statement "FUN_00032b30(uVar5,0);" (call_expression "FUN_00032b30(uVar5,0)" (identifier "FUN_00032b30") (argument_list "(uVar5,0)" (( "(") (identifier "uVar5") (, ",") (number_literal "0") () ")"))) (; ";")) (expression_statement "piVar1 = *(int **)*piVar6;" (assignment_expression "piVar1 = *(int **)*piVar6" (identifier "piVar1") (= "=") (pointer_expression "*(int **)*piVar6" (* "*") (cast_expression "(int **)*piVar6" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (pointer_expression "*piVar6" (* "*") (identifier "piVar6"))))) (; ";")) (expression_statement "piVar6 = (int *)*piVar6;" (assignment_expression "piVar6 = (int *)*piVar6" (identifier "piVar6") (= "=") (cast_expression "(int *)*piVar6" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*piVar6" (* "*") (identifier "piVar6")))) (; ";")) (if_statement "if ((piVar1 != (int *)0x0) && (piVar4 = (int *)*piVar1, piVar6 = piVar1, piVar4 != (int *)0x0)\n         ) goto LAB_00027b78;" (if "if") (parenthesized_expression "((piVar1 != (int *)0x0) && (piVar4 = (int *)*piVar1, piVar6 = piVar1, piVar4 != (int *)0x0)\n         )" (( "(") (binary_expression "(piVar1 != (int *)0x0) && (piVar4 = (int *)*piVar1, piVar6 = piVar1, piVar4 != (int *)0x0)" (parenthesized_expression "(piVar1 != (int *)0x0)" (( "(") (binary_expression "piVar1 != (int *)0x0" (identifier "piVar1") (!= "!=") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (&& "&&") (parenthesized_expression "(piVar4 = (int *)*piVar1, piVar6 = piVar1, piVar4 != (int *)0x0)" (( "(") (comma_expression "piVar4 = (int *)*piVar1, piVar6 = piVar1, piVar4 != (int *)0x0" (assignment_expression "piVar4 = (int *)*piVar1" (identifier "piVar4") (= "=") (cast_expression "(int *)*piVar1" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*piVar1" (* "*") (identifier "piVar1")))) (, ",") (comma_expression "piVar6 = piVar1, piVar4 != (int *)0x0" (assignment_expression "piVar6 = piVar1" (identifier "piVar6") (= "=") (identifier "piVar1")) (, ",") (binary_expression "piVar4 != (int *)0x0" (identifier "piVar4") (!= "!=") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))))) () ")"))) () ")")) (goto_statement "goto LAB_00027b78;" (goto "goto") (statement_identifier "LAB_00027b78") (; ";"))) (break_statement "break;" (break "break") (; ";")) (} "}"))) (expression_statement "piVar6 = (int *)*piVar6;" (assignment_expression "piVar6 = (int *)*piVar6" (identifier "piVar6") (= "=") (cast_expression "(int *)*piVar6" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*piVar6" (* "*") (identifier "piVar6")))) (; ";")) (expression_statement "iVar3 = *piVar6;" (assignment_expression "iVar3 = *piVar6" (identifier "iVar3") (= "=") (pointer_expression "*piVar6" (* "*") (identifier "piVar6"))) (; ";")) (} "}"))) (goto_statement "goto LAB_00027b80;" (goto "goto") (statement_identifier "LAB_00027b80") (; ";")) (while_statement "while( true ) {\n    piVar6 = (int *)*piVar4;\n    piVar4 = (int *)*piVar6;\n    if (piVar4 == (int *)0x0) break;\nLAB_00027b78:\n    iVar3 = *piVar4;\njoined_r0x00027b6e:\n    piVar6 = piVar4;\n    if (iVar3 == 0) break;\n  }" (while "while") (parenthesized_expression "( true )" (( "(") (true "true") () ")")) (compound_statement "{\n    piVar6 = (int *)*piVar4;\n    piVar4 = (int *)*piVar6;\n    if (piVar4 == (int *)0x0) break;\nLAB_00027b78:\n    iVar3 = *piVar4;\njoined_r0x00027b6e:\n    piVar6 = piVar4;\n    if (iVar3 == 0) break;\n  }" ({ "{") (expression_statement "piVar6 = (int *)*piVar4;" (assignment_expression "piVar6 = (int *)*piVar4" (identifier "piVar6") (= "=") (cast_expression "(int *)*piVar4" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*piVar4" (* "*") (identifier "piVar4")))) (; ";")) (expression_statement "piVar4 = (int *)*piVar6;" (assignment_expression "piVar4 = (int *)*piVar6" (identifier "piVar4") (= "=") (cast_expression "(int *)*piVar6" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*piVar6" (* "*") (identifier "piVar6")))) (; ";")) (if_statement "if (piVar4 == (int *)0x0) break;" (if "if") (parenthesized_expression "(piVar4 == (int *)0x0)" (( "(") (binary_expression "piVar4 == (int *)0x0" (identifier "piVar4") (== "==") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (break_statement "break;" (break "break") (; ";"))) (labeled_statement "LAB_00027b78:\n    iVar3 = *piVar4;" (statement_identifier "LAB_00027b78") (: ":") (expression_statement "iVar3 = *piVar4;" (assignment_expression "iVar3 = *piVar4" (identifier "iVar3") (= "=") (pointer_expression "*piVar4" (* "*") (identifier "piVar4"))) (; ";"))) (labeled_statement "joined_r0x00027b6e:\n    piVar6 = piVar4;" (statement_identifier "joined_r0x00027b6e") (: ":") (expression_statement "piVar6 = piVar4;" (assignment_expression "piVar6 = piVar4" (identifier "piVar6") (= "=") (identifier "piVar4")) (; ";"))) (if_statement "if (iVar3 == 0) break;" (if "if") (parenthesized_expression "(iVar3 == 0)" (( "(") (binary_expression "iVar3 == 0" (identifier "iVar3") (== "==") (number_literal "0")) () ")")) (break_statement "break;" (break "break") (; ";"))) (} "}"))) (labeled_statement "LAB_00027b80:\n  *piVar6 = (int)puVar2;" (statement_identifier "LAB_00027b80") (: ":") (expression_statement "*piVar6 = (int)puVar2;" (assignment_expression "*piVar6 = (int)puVar2" (pointer_expression "*piVar6" (* "*") (identifier "piVar6")) (= "=") (cast_expression "(int)puVar2" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar2"))) (; ";"))) (return_statement "return;" (return "return") (; ";")) (} "}")))

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

void function_1(char *name,type_1 *type,type_2 var_4,type_2 var_5,type_1 *at,
                  type_1 *flags)

{
  type_3 *var_6;
  type_3 *plVar2;
  type_4 var_3;
  type_3 **pplVar4;
  char *fmt;
  type_3 **pplVar5;
  
  plVar2 = (type_3 *)var_1(0x1c);
  plVar2->next = (type_3 *)0x0;
  plVar2->name = name;
  var_3 = var_2(type,0,"program header type");
  plVar2->var_4 = var_4;
  plVar2->type = var_3;
  plVar2->at = at;
  plVar2->var_5 = var_5;
  plVar2->flags = flags;
  if ((var_3 != 1) || (var_4 == 0 && var_5 == 0)) {
    pplVar4 = &lang_phdr_list;
    var_6 = lang_phdr_list;
    goto joined_r0x00027b6e;
  }
  pplVar5 = &lang_phdr_list;
  var_6 = lang_phdr_list;
  while (var_6 != (type_3 *)0x0) {
    if (((var_6->type == 1) && (var_6->var_4 == 0)) && (var_6->var_5 == 0)) {
      fmt = (char *)var_7(0,
                              "%X%P:%pS: PHDRS and FILEHDR are not supported when prior PT_LOAD headers lack them\n"
                              ,5);
      var_8(fmt,0);
      var_6 = ((type_3 *)pplVar5)->next->next;
      pplVar5 = &((type_3 *)pplVar5)->next->next;
      if ((var_6 != (type_3 *)0x0) &&
         (pplVar4 = &var_6->next->next, pplVar5 = &var_6->next,
         (type_3 *)pplVar4 != (type_3 *)0x0)) goto LAB_00027b78;
      break;
    }
    pplVar5 = &((type_3 *)pplVar5)->next->next;
    var_6 = ((type_3 *)pplVar5)->next;
  }
  goto LAB_00027b80;
  while( true ) {
    pplVar5 = &((type_3 *)pplVar4)->next;
    pplVar4 = &(*pplVar5)->next->next;
    pplVar5 = &(*pplVar5)->next;
    if ((type_3 *)pplVar4 == (type_3 *)0x0) break;
LAB_00027b78:
    var_6 = ((type_3 *)pplVar4)->next;
joined_r0x00027b6e:
    pplVar5 = pplVar4;
    if (var_6 == (type_3 *)0x0) break;
  }
LAB_00027b80:
  ((type_3 *)pplVar5)->next = plVar2;
  return;
}


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

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

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

{
  int *piVar1;
  undefined4 *puVar2;
  int iVar3;
  int *piVar4;
  undefined4 uVar5;
  int *piVar6;
  
  puVar2 = (undefined4 *)FUN_000215d0(0x1c);
  *puVar2 = 0;
  puVar2[1] = param_1;
  iVar3 = FUN_00031020(param_2,0,"program header type");
  puVar2[3] = param_3;
  puVar2[2] = iVar3;
  puVar2[5] = param_5;
  puVar2[4] = param_4;
  puVar2[6] = param_6;
  if ((iVar3 != 1) || (param_3 == 0 && param_4 == 0)) {
    piVar4 = &DAT_00084b78;
    iVar3 = DAT_00084b78;
    goto joined_r0x00027b6e;
  }
  piVar6 = &DAT_00084b78;
  iVar3 = DAT_00084b78;
  while (iVar3 != 0) {
    if (((*(int *)(iVar3 + 8) == 1) && (*(int *)(iVar3 + 0xc) == 0)) &&
       (*(int *)(iVar3 + 0x10) == 0)) {
      uVar5 = dcgettext(0,
                        "%X%P:%pS: PHDRS and FILEHDR are not supported when prior PT_LOAD headers lack them\n"
                        ,5);
      FUN_00032b30(uVar5,0);
      piVar1 = *(int **)*piVar6;
      piVar6 = (int *)*piVar6;
      if ((piVar1 != (int *)0x0) && (piVar4 = (int *)*piVar1, piVar6 = piVar1, piVar4 != (int *)0x0)
         ) goto LAB_00027b78;
      break;
    }
    piVar6 = (int *)*piVar6;
    iVar3 = *piVar6;
  }
  goto LAB_00027b80;
  while( true ) {
    piVar6 = (int *)*piVar4;
    piVar4 = (int *)*piVar6;
    if (piVar4 == (int *)0x0) break;
LAB_00027b78:
    iVar3 = *piVar4;
joined_r0x00027b6e:
    piVar6 = piVar4;
    if (iVar3 == 0) break;
  }
LAB_00027b80:
  *piVar6 = (int)puVar2;
  return;
}

