
bfd_boolean is_strip_section(bfd *abfd,asection *sec)

{
  char *name;
  bfd *abfd_00;
  asection *sec_00;
  bfd *pbVar1;
  bfd_boolean bVar2;
  asymbol *paVar3;
  asection *extraout_EDX;
  asection *extraout_EDX_00;
  int unaff_EDI;
  undefined8 uVar4;
  
  uVar4 = __x86_get_pc_thunk_di();
  pbVar1 = (bfd *)uVar4;
  bVar2 = is_strip_section_1(pbVar1,(asection *)((ulonglong)uVar4 >> 0x20));
  if (bVar2 == 0) {
    if (((uint)pbVar1->lru_next & 0x2000000) == 0) {
      return 0;
    }
    paVar3 = group_signature((asection *)pbVar1->usrdata,(asection *)pbVar1->build_id);
    if ((paVar3 != (asymbol *)0x0) &&
       (((name = paVar3->name, *(int *)(unaff_EDI + 0x29179) != 7 ||
         (bVar2 = is_specified_symbol(name,*(htab_t *)(unaff_EDI + 0x290ed)), bVar2 != 0)) &&
        (bVar2 = is_specified_symbol(name,*(htab_t *)(unaff_EDI + 0x290f5)), bVar2 == 0)))) {
      pbVar1 = *(bfd **)((int)pbVar1->usrdata + 0x8c);
      abfd_00 = pbVar1;
      sec_00 = extraout_EDX;
      do {
        if (abfd_00 == (bfd *)0x0) {
          return 1;
        }
        bVar2 = is_strip_section_1(abfd_00,sec_00);
        if (bVar2 == 0) {
          return 0;
        }
        abfd_00 = *(bfd **)((int)abfd_00->usrdata + 0x8c);
        sec_00 = extraout_EDX_00;
      } while (pbVar1 != abfd_00);
    }
  }
  return 1;
}



undefined4 FUN_00017a30(void)

{
  int iVar1;
  int iVar2;
  int iVar3;
  int unaff_EDI;
  
  iVar1 = FUN_0001c3b7();
  iVar2 = FUN_000177e0();
  if (iVar2 == 0) {
    if ((*(byte *)(iVar1 + 0x17) & 2) == 0) {
      return 0;
    }
    iVar2 = FUN_00017590();
    if ((iVar2 != 0) &&
       (((*(int *)(unaff_EDI + 0x29179) != 7 || (iVar2 = FUN_000179c0(), iVar2 != 0)) &&
        (iVar2 = FUN_000179c0(), iVar2 == 0)))) {
      iVar1 = *(int *)(*(int *)(iVar1 + 0xa4) + 0x8c);
      iVar2 = iVar1;
      do {
        if (iVar2 == 0) {
          return 1;
        }
        iVar3 = FUN_000177e0();
        if (iVar3 == 0) {
          return 0;
        }
        iVar2 = *(int *)(*(int *)(iVar2 + 0xa4) + 0x8c);
      } while (iVar1 != iVar2);
    }
  }
  return 1;
}


PUSH EBP
PUSH EDI
CALL 0x0001c3b7
ADD EDI,0x285c9
PUSH ESI
PUSH EBX
MOV EBX,EAX
SUB ESP,0xc
CALL 0x000177e0
TEST EAX,EAX
JNZ 0x00017ae1
MOV ESI,EAX
TEST byte ptr [EBX + 0x17],0x2
JZ 0x00017abf
MOV EDX,dword ptr [EBX + 0xac]
MOV EAX,dword ptr [EBX + 0xa4]
CALL 0x00017590
TEST EAX,EAX
JZ 0x00017ae1
CMP dword ptr [EDI + 0xbb0],0x7
MOV EBP,dword ptr [EAX + 0x4]
JZ 0x00017ad0
MOV EDX,dword ptr [EDI + 0xb2c]
MOV EAX,EBP
CALL 0x000179c0
TEST EAX,EAX
JNZ 0x00017ae1
MOV EAX,dword ptr [EBX + 0xa4]
MOV EDI,dword ptr [EAX + 0x8c]
TEST EDI,EDI
JZ 0x00017ae1
MOV EBX,EDI
JMP 0x00017ab4
MOV EAX,dword ptr [EBX + 0xa4]
MOV EBX,dword ptr [EAX + 0x8c]
CMP EDI,EBX
JZ 0x00017ae1
TEST EBX,EBX
JZ 0x00017ae1
MOV EAX,EBX
CALL 0x000177e0
TEST EAX,EAX
JNZ 0x00017aa0
ADD ESP,0xc
MOV EAX,ESI
POP EBX
POP ESI
POP EDI
POP EBP
RET
MOV EDX,dword ptr [EDI + 0xb24]
MOV EAX,EBP
CALL 0x000179c0
TEST EAX,EAX
JNZ 0x00017a7a
ADD ESP,0xc
MOV ESI,0x1
POP EBX
MOV EAX,ESI
POP ESI
POP EDI
POP EBP
RET
(translation_unit "undefined4 FUN_00017a30(void)\n\n{\n  int iVar1;\n  int iVar2;\n  int iVar3;\n  int unaff_EDI;\n  \n  iVar1 = FUN_0001c3b7();\n  iVar2 = FUN_000177e0();\n  if (iVar2 == 0) {\n    if ((*(byte *)(iVar1 + 0x17) & 2) == 0) {\n      return 0;\n    }\n    iVar2 = FUN_00017590();\n    if ((iVar2 != 0) &&\n       (((*(int *)(unaff_EDI + 0x29179) != 7 || (iVar2 = FUN_000179c0(), iVar2 != 0)) &&\n        (iVar2 = FUN_000179c0(), iVar2 == 0)))) {\n      iVar1 = *(int *)(*(int *)(iVar1 + 0xa4) + 0x8c);\n      iVar2 = iVar1;\n      do {\n        if (iVar2 == 0) {\n          return 1;\n        }\n        iVar3 = FUN_000177e0();\n        if (iVar3 == 0) {\n          return 0;\n        }\n        iVar2 = *(int *)(*(int *)(iVar2 + 0xa4) + 0x8c);\n      } while (iVar1 != iVar2);\n    }\n  }\n  return 1;\n}\n\n" (function_definition "undefined4 FUN_00017a30(void)\n\n{\n  int iVar1;\n  int iVar2;\n  int iVar3;\n  int unaff_EDI;\n  \n  iVar1 = FUN_0001c3b7();\n  iVar2 = FUN_000177e0();\n  if (iVar2 == 0) {\n    if ((*(byte *)(iVar1 + 0x17) & 2) == 0) {\n      return 0;\n    }\n    iVar2 = FUN_00017590();\n    if ((iVar2 != 0) &&\n       (((*(int *)(unaff_EDI + 0x29179) != 7 || (iVar2 = FUN_000179c0(), iVar2 != 0)) &&\n        (iVar2 = FUN_000179c0(), iVar2 == 0)))) {\n      iVar1 = *(int *)(*(int *)(iVar1 + 0xa4) + 0x8c);\n      iVar2 = iVar1;\n      do {\n        if (iVar2 == 0) {\n          return 1;\n        }\n        iVar3 = FUN_000177e0();\n        if (iVar3 == 0) {\n          return 0;\n        }\n        iVar2 = *(int *)(*(int *)(iVar2 + 0xa4) + 0x8c);\n      } while (iVar1 != iVar2);\n    }\n  }\n  return 1;\n}" type_identifier (function_declarator "FUN_00017a30(void)" identifier (parameter_list "(void)" ( (parameter_declaration "void" primitive_type) ))) (compound_statement "{\n  int iVar1;\n  int iVar2;\n  int iVar3;\n  int unaff_EDI;\n  \n  iVar1 = FUN_0001c3b7();\n  iVar2 = FUN_000177e0();\n  if (iVar2 == 0) {\n    if ((*(byte *)(iVar1 + 0x17) & 2) == 0) {\n      return 0;\n    }\n    iVar2 = FUN_00017590();\n    if ((iVar2 != 0) &&\n       (((*(int *)(unaff_EDI + 0x29179) != 7 || (iVar2 = FUN_000179c0(), iVar2 != 0)) &&\n        (iVar2 = FUN_000179c0(), iVar2 == 0)))) {\n      iVar1 = *(int *)(*(int *)(iVar1 + 0xa4) + 0x8c);\n      iVar2 = iVar1;\n      do {\n        if (iVar2 == 0) {\n          return 1;\n        }\n        iVar3 = FUN_000177e0();\n        if (iVar3 == 0) {\n          return 0;\n        }\n        iVar2 = *(int *)(*(int *)(iVar2 + 0xa4) + 0x8c);\n      } while (iVar1 != iVar2);\n    }\n  }\n  return 1;\n}" { (declaration "int iVar1;" primitive_type identifier ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "int iVar3;" primitive_type identifier ;) (declaration "int unaff_EDI;" primitive_type identifier ;) (expression_statement "iVar1 = FUN_0001c3b7();" (assignment_expression "iVar1 = FUN_0001c3b7()" identifier = (call_expression "FUN_0001c3b7()" identifier (argument_list "()" ( )))) ;) (expression_statement "iVar2 = FUN_000177e0();" (assignment_expression "iVar2 = FUN_000177e0()" identifier = (call_expression "FUN_000177e0()" identifier (argument_list "()" ( )))) ;) (if_statement "if (iVar2 == 0) {\n    if ((*(byte *)(iVar1 + 0x17) & 2) == 0) {\n      return 0;\n    }\n    iVar2 = FUN_00017590();\n    if ((iVar2 != 0) &&\n       (((*(int *)(unaff_EDI + 0x29179) != 7 || (iVar2 = FUN_000179c0(), iVar2 != 0)) &&\n        (iVar2 = FUN_000179c0(), iVar2 == 0)))) {\n      iVar1 = *(int *)(*(int *)(iVar1 + 0xa4) + 0x8c);\n      iVar2 = iVar1;\n      do {\n        if (iVar2 == 0) {\n          return 1;\n        }\n        iVar3 = FUN_000177e0();\n        if (iVar3 == 0) {\n          return 0;\n        }\n        iVar2 = *(int *)(*(int *)(iVar2 + 0xa4) + 0x8c);\n      } while (iVar1 != iVar2);\n    }\n  }" if (parenthesized_expression "(iVar2 == 0)" ( (binary_expression "iVar2 == 0" identifier == number_literal) )) (compound_statement "{\n    if ((*(byte *)(iVar1 + 0x17) & 2) == 0) {\n      return 0;\n    }\n    iVar2 = FUN_00017590();\n    if ((iVar2 != 0) &&\n       (((*(int *)(unaff_EDI + 0x29179) != 7 || (iVar2 = FUN_000179c0(), iVar2 != 0)) &&\n        (iVar2 = FUN_000179c0(), iVar2 == 0)))) {\n      iVar1 = *(int *)(*(int *)(iVar1 + 0xa4) + 0x8c);\n      iVar2 = iVar1;\n      do {\n        if (iVar2 == 0) {\n          return 1;\n        }\n        iVar3 = FUN_000177e0();\n        if (iVar3 == 0) {\n          return 0;\n        }\n        iVar2 = *(int *)(*(int *)(iVar2 + 0xa4) + 0x8c);\n      } while (iVar1 != iVar2);\n    }\n  }" { (if_statement "if ((*(byte *)(iVar1 + 0x17) & 2) == 0) {\n      return 0;\n    }" if (parenthesized_expression "((*(byte *)(iVar1 + 0x17) & 2) == 0)" ( (binary_expression "(*(byte *)(iVar1 + 0x17) & 2) == 0" (parenthesized_expression "(*(byte *)(iVar1 + 0x17) & 2)" ( (binary_expression "*(byte *)(iVar1 + 0x17) & 2" (pointer_expression "*(byte *)(iVar1 + 0x17)" * (cast_expression "(byte *)(iVar1 + 0x17)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 0x17)" ( (binary_expression "iVar1 + 0x17" identifier + number_literal) )))) & number_literal) )) == number_literal) )) (compound_statement "{\n      return 0;\n    }" { (return_statement "return 0;" return number_literal ;) })) (expression_statement "iVar2 = FUN_00017590();" (assignment_expression "iVar2 = FUN_00017590()" identifier = (call_expression "FUN_00017590()" identifier (argument_list "()" ( )))) ;) (if_statement "if ((iVar2 != 0) &&\n       (((*(int *)(unaff_EDI + 0x29179) != 7 || (iVar2 = FUN_000179c0(), iVar2 != 0)) &&\n        (iVar2 = FUN_000179c0(), iVar2 == 0)))) {\n      iVar1 = *(int *)(*(int *)(iVar1 + 0xa4) + 0x8c);\n      iVar2 = iVar1;\n      do {\n        if (iVar2 == 0) {\n          return 1;\n        }\n        iVar3 = FUN_000177e0();\n        if (iVar3 == 0) {\n          return 0;\n        }\n        iVar2 = *(int *)(*(int *)(iVar2 + 0xa4) + 0x8c);\n      } while (iVar1 != iVar2);\n    }" if (parenthesized_expression "((iVar2 != 0) &&\n       (((*(int *)(unaff_EDI + 0x29179) != 7 || (iVar2 = FUN_000179c0(), iVar2 != 0)) &&\n        (iVar2 = FUN_000179c0(), iVar2 == 0))))" ( (binary_expression "(iVar2 != 0) &&\n       (((*(int *)(unaff_EDI + 0x29179) != 7 || (iVar2 = FUN_000179c0(), iVar2 != 0)) &&\n        (iVar2 = FUN_000179c0(), iVar2 == 0)))" (parenthesized_expression "(iVar2 != 0)" ( (binary_expression "iVar2 != 0" identifier != number_literal) )) && (parenthesized_expression "(((*(int *)(unaff_EDI + 0x29179) != 7 || (iVar2 = FUN_000179c0(), iVar2 != 0)) &&\n        (iVar2 = FUN_000179c0(), iVar2 == 0)))" ( (parenthesized_expression "((*(int *)(unaff_EDI + 0x29179) != 7 || (iVar2 = FUN_000179c0(), iVar2 != 0)) &&\n        (iVar2 = FUN_000179c0(), iVar2 == 0))" ( (binary_expression "(*(int *)(unaff_EDI + 0x29179) != 7 || (iVar2 = FUN_000179c0(), iVar2 != 0)) &&\n        (iVar2 = FUN_000179c0(), iVar2 == 0)" (parenthesized_expression "(*(int *)(unaff_EDI + 0x29179) != 7 || (iVar2 = FUN_000179c0(), iVar2 != 0))" ( (binary_expression "*(int *)(unaff_EDI + 0x29179) != 7 || (iVar2 = FUN_000179c0(), iVar2 != 0)" (binary_expression "*(int *)(unaff_EDI + 0x29179) != 7" (pointer_expression "*(int *)(unaff_EDI + 0x29179)" * (cast_expression "(int *)(unaff_EDI + 0x29179)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EDI + 0x29179)" ( (binary_expression "unaff_EDI + 0x29179" identifier + number_literal) )))) != number_literal) || (parenthesized_expression "(iVar2 = FUN_000179c0(), iVar2 != 0)" ( (comma_expression "iVar2 = FUN_000179c0(), iVar2 != 0" (assignment_expression "iVar2 = FUN_000179c0()" identifier = (call_expression "FUN_000179c0()" identifier (argument_list "()" ( )))) , (binary_expression "iVar2 != 0" identifier != number_literal)) ))) )) && (parenthesized_expression "(iVar2 = FUN_000179c0(), iVar2 == 0)" ( (comma_expression "iVar2 = FUN_000179c0(), iVar2 == 0" (assignment_expression "iVar2 = FUN_000179c0()" identifier = (call_expression "FUN_000179c0()" identifier (argument_list "()" ( )))) , (binary_expression "iVar2 == 0" identifier == number_literal)) ))) )) ))) )) (compound_statement "{\n      iVar1 = *(int *)(*(int *)(iVar1 + 0xa4) + 0x8c);\n      iVar2 = iVar1;\n      do {\n        if (iVar2 == 0) {\n          return 1;\n        }\n        iVar3 = FUN_000177e0();\n        if (iVar3 == 0) {\n          return 0;\n        }\n        iVar2 = *(int *)(*(int *)(iVar2 + 0xa4) + 0x8c);\n      } while (iVar1 != iVar2);\n    }" { (expression_statement "iVar1 = *(int *)(*(int *)(iVar1 + 0xa4) + 0x8c);" (assignment_expression "iVar1 = *(int *)(*(int *)(iVar1 + 0xa4) + 0x8c)" identifier = (pointer_expression "*(int *)(*(int *)(iVar1 + 0xa4) + 0x8c)" * (cast_expression "(int *)(*(int *)(iVar1 + 0xa4) + 0x8c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(iVar1 + 0xa4) + 0x8c)" ( (binary_expression "*(int *)(iVar1 + 0xa4) + 0x8c" (pointer_expression "*(int *)(iVar1 + 0xa4)" * (cast_expression "(int *)(iVar1 + 0xa4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 0xa4)" ( (binary_expression "iVar1 + 0xa4" identifier + number_literal) )))) + number_literal) ))))) ;) (expression_statement "iVar2 = iVar1;" (assignment_expression "iVar2 = iVar1" identifier = identifier) ;) (do_statement "do {\n        if (iVar2 == 0) {\n          return 1;\n        }\n        iVar3 = FUN_000177e0();\n        if (iVar3 == 0) {\n          return 0;\n        }\n        iVar2 = *(int *)(*(int *)(iVar2 + 0xa4) + 0x8c);\n      } while (iVar1 != iVar2);" do (compound_statement "{\n        if (iVar2 == 0) {\n          return 1;\n        }\n        iVar3 = FUN_000177e0();\n        if (iVar3 == 0) {\n          return 0;\n        }\n        iVar2 = *(int *)(*(int *)(iVar2 + 0xa4) + 0x8c);\n      }" { (if_statement "if (iVar2 == 0) {\n          return 1;\n        }" if (parenthesized_expression "(iVar2 == 0)" ( (binary_expression "iVar2 == 0" identifier == number_literal) )) (compound_statement "{\n          return 1;\n        }" { (return_statement "return 1;" return number_literal ;) })) (expression_statement "iVar3 = FUN_000177e0();" (assignment_expression "iVar3 = FUN_000177e0()" identifier = (call_expression "FUN_000177e0()" identifier (argument_list "()" ( )))) ;) (if_statement "if (iVar3 == 0) {\n          return 0;\n        }" if (parenthesized_expression "(iVar3 == 0)" ( (binary_expression "iVar3 == 0" identifier == number_literal) )) (compound_statement "{\n          return 0;\n        }" { (return_statement "return 0;" return number_literal ;) })) (expression_statement "iVar2 = *(int *)(*(int *)(iVar2 + 0xa4) + 0x8c);" (assignment_expression "iVar2 = *(int *)(*(int *)(iVar2 + 0xa4) + 0x8c)" identifier = (pointer_expression "*(int *)(*(int *)(iVar2 + 0xa4) + 0x8c)" * (cast_expression "(int *)(*(int *)(iVar2 + 0xa4) + 0x8c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(iVar2 + 0xa4) + 0x8c)" ( (binary_expression "*(int *)(iVar2 + 0xa4) + 0x8c" (pointer_expression "*(int *)(iVar2 + 0xa4)" * (cast_expression "(int *)(iVar2 + 0xa4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 0xa4)" ( (binary_expression "iVar2 + 0xa4" identifier + number_literal) )))) + number_literal) ))))) ;) }) while (parenthesized_expression "(iVar1 != iVar2)" ( (binary_expression "iVar1 != iVar2" identifier != identifier) )) ;) })) })) (return_statement "return 1;" return number_literal ;) })))
(translation_unit "bfd_boolean is_strip_section(bfd *abfd,asection *sec)\n\n{\n  char *name;\n  bfd *abfd_00;\n  asection *sec_00;\n  bfd *pbVar1;\n  bfd_boolean bVar2;\n  asymbol *paVar3;\n  asection *extraout_EDX;\n  asection *extraout_EDX_00;\n  int unaff_EDI;\n  undefined8 uVar4;\n  \n  uVar4 = __x86_get_pc_thunk_di();\n  pbVar1 = (bfd *)uVar4;\n  bVar2 = is_strip_section_1(pbVar1,(asection *)((ulonglong)uVar4 >> 0x20));\n  if (bVar2 == 0) {\n    if (((uint)pbVar1->lru_next & 0x2000000) == 0) {\n      return 0;\n    }\n    paVar3 = group_signature((asection *)pbVar1->usrdata,(asection *)pbVar1->build_id);\n    if ((paVar3 != (asymbol *)0x0) &&\n       (((name = paVar3->name, *(int *)(unaff_EDI + 0x29179) != 7 ||\n         (bVar2 = is_specified_symbol(name,*(htab_t *)(unaff_EDI + 0x290ed)), bVar2 != 0)) &&\n        (bVar2 = is_specified_symbol(name,*(htab_t *)(unaff_EDI + 0x290f5)), bVar2 == 0)))) {\n      pbVar1 = *(bfd **)((int)pbVar1->usrdata + 0x8c);\n      abfd_00 = pbVar1;\n      sec_00 = extraout_EDX;\n      do {\n        if (abfd_00 == (bfd *)0x0) {\n          return 1;\n        }\n        bVar2 = is_strip_section_1(abfd_00,sec_00);\n        if (bVar2 == 0) {\n          return 0;\n        }\n        abfd_00 = *(bfd **)((int)abfd_00->usrdata + 0x8c);\n        sec_00 = extraout_EDX_00;\n      } while (pbVar1 != abfd_00);\n    }\n  }\n  return 1;\n}\n\n" (function_definition "bfd_boolean is_strip_section(bfd *abfd,asection *sec)\n\n{\n  char *name;\n  bfd *abfd_00;\n  asection *sec_00;\n  bfd *pbVar1;\n  bfd_boolean bVar2;\n  asymbol *paVar3;\n  asection *extraout_EDX;\n  asection *extraout_EDX_00;\n  int unaff_EDI;\n  undefined8 uVar4;\n  \n  uVar4 = __x86_get_pc_thunk_di();\n  pbVar1 = (bfd *)uVar4;\n  bVar2 = is_strip_section_1(pbVar1,(asection *)((ulonglong)uVar4 >> 0x20));\n  if (bVar2 == 0) {\n    if (((uint)pbVar1->lru_next & 0x2000000) == 0) {\n      return 0;\n    }\n    paVar3 = group_signature((asection *)pbVar1->usrdata,(asection *)pbVar1->build_id);\n    if ((paVar3 != (asymbol *)0x0) &&\n       (((name = paVar3->name, *(int *)(unaff_EDI + 0x29179) != 7 ||\n         (bVar2 = is_specified_symbol(name,*(htab_t *)(unaff_EDI + 0x290ed)), bVar2 != 0)) &&\n        (bVar2 = is_specified_symbol(name,*(htab_t *)(unaff_EDI + 0x290f5)), bVar2 == 0)))) {\n      pbVar1 = *(bfd **)((int)pbVar1->usrdata + 0x8c);\n      abfd_00 = pbVar1;\n      sec_00 = extraout_EDX;\n      do {\n        if (abfd_00 == (bfd *)0x0) {\n          return 1;\n        }\n        bVar2 = is_strip_section_1(abfd_00,sec_00);\n        if (bVar2 == 0) {\n          return 0;\n        }\n        abfd_00 = *(bfd **)((int)abfd_00->usrdata + 0x8c);\n        sec_00 = extraout_EDX_00;\n      } while (pbVar1 != abfd_00);\n    }\n  }\n  return 1;\n}" type_identifier (function_declarator "is_strip_section(bfd *abfd,asection *sec)" identifier (parameter_list "(bfd *abfd,asection *sec)" ( (parameter_declaration "bfd *abfd" type_identifier (pointer_declarator "*abfd" * identifier)) , (parameter_declaration "asection *sec" type_identifier (pointer_declarator "*sec" * identifier)) ))) (compound_statement "{\n  char *name;\n  bfd *abfd_00;\n  asection *sec_00;\n  bfd *pbVar1;\n  bfd_boolean bVar2;\n  asymbol *paVar3;\n  asection *extraout_EDX;\n  asection *extraout_EDX_00;\n  int unaff_EDI;\n  undefined8 uVar4;\n  \n  uVar4 = __x86_get_pc_thunk_di();\n  pbVar1 = (bfd *)uVar4;\n  bVar2 = is_strip_section_1(pbVar1,(asection *)((ulonglong)uVar4 >> 0x20));\n  if (bVar2 == 0) {\n    if (((uint)pbVar1->lru_next & 0x2000000) == 0) {\n      return 0;\n    }\n    paVar3 = group_signature((asection *)pbVar1->usrdata,(asection *)pbVar1->build_id);\n    if ((paVar3 != (asymbol *)0x0) &&\n       (((name = paVar3->name, *(int *)(unaff_EDI + 0x29179) != 7 ||\n         (bVar2 = is_specified_symbol(name,*(htab_t *)(unaff_EDI + 0x290ed)), bVar2 != 0)) &&\n        (bVar2 = is_specified_symbol(name,*(htab_t *)(unaff_EDI + 0x290f5)), bVar2 == 0)))) {\n      pbVar1 = *(bfd **)((int)pbVar1->usrdata + 0x8c);\n      abfd_00 = pbVar1;\n      sec_00 = extraout_EDX;\n      do {\n        if (abfd_00 == (bfd *)0x0) {\n          return 1;\n        }\n        bVar2 = is_strip_section_1(abfd_00,sec_00);\n        if (bVar2 == 0) {\n          return 0;\n        }\n        abfd_00 = *(bfd **)((int)abfd_00->usrdata + 0x8c);\n        sec_00 = extraout_EDX_00;\n      } while (pbVar1 != abfd_00);\n    }\n  }\n  return 1;\n}" { (declaration "char *name;" primitive_type (pointer_declarator "*name" * identifier) ;) (declaration "bfd *abfd_00;" type_identifier (pointer_declarator "*abfd_00" * identifier) ;) (declaration "asection *sec_00;" type_identifier (pointer_declarator "*sec_00" * identifier) ;) (declaration "bfd *pbVar1;" type_identifier (pointer_declarator "*pbVar1" * identifier) ;) (declaration "bfd_boolean bVar2;" type_identifier identifier ;) (declaration "asymbol *paVar3;" type_identifier (pointer_declarator "*paVar3" * identifier) ;) (declaration "asection *extraout_EDX;" type_identifier (pointer_declarator "*extraout_EDX" * identifier) ;) (declaration "asection *extraout_EDX_00;" type_identifier (pointer_declarator "*extraout_EDX_00" * identifier) ;) (declaration "int unaff_EDI;" primitive_type identifier ;) (declaration "undefined8 uVar4;" type_identifier identifier ;) (expression_statement "uVar4 = __x86_get_pc_thunk_di();" (assignment_expression "uVar4 = __x86_get_pc_thunk_di()" identifier = (call_expression "__x86_get_pc_thunk_di()" identifier (argument_list "()" ( )))) ;) (expression_statement "pbVar1 = (bfd *)uVar4;" (assignment_expression "pbVar1 = (bfd *)uVar4" identifier = (cast_expression "(bfd *)uVar4" ( (type_descriptor "bfd *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (expression_statement "bVar2 = is_strip_section_1(pbVar1,(asection *)((ulonglong)uVar4 >> 0x20));" (assignment_expression "bVar2 = is_strip_section_1(pbVar1,(asection *)((ulonglong)uVar4 >> 0x20))" identifier = (call_expression "is_strip_section_1(pbVar1,(asection *)((ulonglong)uVar4 >> 0x20))" identifier (argument_list "(pbVar1,(asection *)((ulonglong)uVar4 >> 0x20))" ( identifier , (cast_expression "(asection *)((ulonglong)uVar4 >> 0x20)" ( (type_descriptor "asection *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((ulonglong)uVar4 >> 0x20)" ( (binary_expression "(ulonglong)uVar4 >> 0x20" (cast_expression "(ulonglong)uVar4" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) ))) )))) ;) (if_statement "if (bVar2 == 0) {\n    if (((uint)pbVar1->lru_next & 0x2000000) == 0) {\n      return 0;\n    }\n    paVar3 = group_signature((asection *)pbVar1->usrdata,(asection *)pbVar1->build_id);\n    if ((paVar3 != (asymbol *)0x0) &&\n       (((name = paVar3->name, *(int *)(unaff_EDI + 0x29179) != 7 ||\n         (bVar2 = is_specified_symbol(name,*(htab_t *)(unaff_EDI + 0x290ed)), bVar2 != 0)) &&\n        (bVar2 = is_specified_symbol(name,*(htab_t *)(unaff_EDI + 0x290f5)), bVar2 == 0)))) {\n      pbVar1 = *(bfd **)((int)pbVar1->usrdata + 0x8c);\n      abfd_00 = pbVar1;\n      sec_00 = extraout_EDX;\n      do {\n        if (abfd_00 == (bfd *)0x0) {\n          return 1;\n        }\n        bVar2 = is_strip_section_1(abfd_00,sec_00);\n        if (bVar2 == 0) {\n          return 0;\n        }\n        abfd_00 = *(bfd **)((int)abfd_00->usrdata + 0x8c);\n        sec_00 = extraout_EDX_00;\n      } while (pbVar1 != abfd_00);\n    }\n  }" if (parenthesized_expression "(bVar2 == 0)" ( (binary_expression "bVar2 == 0" identifier == number_literal) )) (compound_statement "{\n    if (((uint)pbVar1->lru_next & 0x2000000) == 0) {\n      return 0;\n    }\n    paVar3 = group_signature((asection *)pbVar1->usrdata,(asection *)pbVar1->build_id);\n    if ((paVar3 != (asymbol *)0x0) &&\n       (((name = paVar3->name, *(int *)(unaff_EDI + 0x29179) != 7 ||\n         (bVar2 = is_specified_symbol(name,*(htab_t *)(unaff_EDI + 0x290ed)), bVar2 != 0)) &&\n        (bVar2 = is_specified_symbol(name,*(htab_t *)(unaff_EDI + 0x290f5)), bVar2 == 0)))) {\n      pbVar1 = *(bfd **)((int)pbVar1->usrdata + 0x8c);\n      abfd_00 = pbVar1;\n      sec_00 = extraout_EDX;\n      do {\n        if (abfd_00 == (bfd *)0x0) {\n          return 1;\n        }\n        bVar2 = is_strip_section_1(abfd_00,sec_00);\n        if (bVar2 == 0) {\n          return 0;\n        }\n        abfd_00 = *(bfd **)((int)abfd_00->usrdata + 0x8c);\n        sec_00 = extraout_EDX_00;\n      } while (pbVar1 != abfd_00);\n    }\n  }" { (if_statement "if (((uint)pbVar1->lru_next & 0x2000000) == 0) {\n      return 0;\n    }" if (parenthesized_expression "(((uint)pbVar1->lru_next & 0x2000000) == 0)" ( (binary_expression "((uint)pbVar1->lru_next & 0x2000000) == 0" (parenthesized_expression "((uint)pbVar1->lru_next & 0x2000000)" ( (binary_expression "(uint)pbVar1->lru_next & 0x2000000" (cast_expression "(uint)pbVar1->lru_next" ( (type_descriptor "uint" type_identifier) ) (field_expression "pbVar1->lru_next" identifier -> field_identifier)) & number_literal) )) == number_literal) )) (compound_statement "{\n      return 0;\n    }" { (return_statement "return 0;" return number_literal ;) })) (expression_statement "paVar3 = group_signature((asection *)pbVar1->usrdata,(asection *)pbVar1->build_id);" (assignment_expression "paVar3 = group_signature((asection *)pbVar1->usrdata,(asection *)pbVar1->build_id)" identifier = (call_expression "group_signature((asection *)pbVar1->usrdata,(asection *)pbVar1->build_id)" identifier (argument_list "((asection *)pbVar1->usrdata,(asection *)pbVar1->build_id)" ( (cast_expression "(asection *)pbVar1->usrdata" ( (type_descriptor "asection *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "pbVar1->usrdata" identifier -> field_identifier)) , (cast_expression "(asection *)pbVar1->build_id" ( (type_descriptor "asection *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "pbVar1->build_id" identifier -> field_identifier)) )))) ;) (if_statement "if ((paVar3 != (asymbol *)0x0) &&\n       (((name = paVar3->name, *(int *)(unaff_EDI + 0x29179) != 7 ||\n         (bVar2 = is_specified_symbol(name,*(htab_t *)(unaff_EDI + 0x290ed)), bVar2 != 0)) &&\n        (bVar2 = is_specified_symbol(name,*(htab_t *)(unaff_EDI + 0x290f5)), bVar2 == 0)))) {\n      pbVar1 = *(bfd **)((int)pbVar1->usrdata + 0x8c);\n      abfd_00 = pbVar1;\n      sec_00 = extraout_EDX;\n      do {\n        if (abfd_00 == (bfd *)0x0) {\n          return 1;\n        }\n        bVar2 = is_strip_section_1(abfd_00,sec_00);\n        if (bVar2 == 0) {\n          return 0;\n        }\n        abfd_00 = *(bfd **)((int)abfd_00->usrdata + 0x8c);\n        sec_00 = extraout_EDX_00;\n      } while (pbVar1 != abfd_00);\n    }" if (parenthesized_expression "((paVar3 != (asymbol *)0x0) &&\n       (((name = paVar3->name, *(int *)(unaff_EDI + 0x29179) != 7 ||\n         (bVar2 = is_specified_symbol(name,*(htab_t *)(unaff_EDI + 0x290ed)), bVar2 != 0)) &&\n        (bVar2 = is_specified_symbol(name,*(htab_t *)(unaff_EDI + 0x290f5)), bVar2 == 0))))" ( (binary_expression "(paVar3 != (asymbol *)0x0) &&\n       (((name = paVar3->name, *(int *)(unaff_EDI + 0x29179) != 7 ||\n         (bVar2 = is_specified_symbol(name,*(htab_t *)(unaff_EDI + 0x290ed)), bVar2 != 0)) &&\n        (bVar2 = is_specified_symbol(name,*(htab_t *)(unaff_EDI + 0x290f5)), bVar2 == 0)))" (parenthesized_expression "(paVar3 != (asymbol *)0x0)" ( (binary_expression "paVar3 != (asymbol *)0x0" identifier != (cast_expression "(asymbol *)0x0" ( (type_descriptor "asymbol *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) && (parenthesized_expression "(((name = paVar3->name, *(int *)(unaff_EDI + 0x29179) != 7 ||\n         (bVar2 = is_specified_symbol(name,*(htab_t *)(unaff_EDI + 0x290ed)), bVar2 != 0)) &&\n        (bVar2 = is_specified_symbol(name,*(htab_t *)(unaff_EDI + 0x290f5)), bVar2 == 0)))" ( (parenthesized_expression "((name = paVar3->name, *(int *)(unaff_EDI + 0x29179) != 7 ||\n         (bVar2 = is_specified_symbol(name,*(htab_t *)(unaff_EDI + 0x290ed)), bVar2 != 0)) &&\n        (bVar2 = is_specified_symbol(name,*(htab_t *)(unaff_EDI + 0x290f5)), bVar2 == 0))" ( (binary_expression "(name = paVar3->name, *(int *)(unaff_EDI + 0x29179) != 7 ||\n         (bVar2 = is_specified_symbol(name,*(htab_t *)(unaff_EDI + 0x290ed)), bVar2 != 0)) &&\n        (bVar2 = is_specified_symbol(name,*(htab_t *)(unaff_EDI + 0x290f5)), bVar2 == 0)" (parenthesized_expression "(name = paVar3->name, *(int *)(unaff_EDI + 0x29179) != 7 ||\n         (bVar2 = is_specified_symbol(name,*(htab_t *)(unaff_EDI + 0x290ed)), bVar2 != 0))" ( (comma_expression "name = paVar3->name, *(int *)(unaff_EDI + 0x29179) != 7 ||\n         (bVar2 = is_specified_symbol(name,*(htab_t *)(unaff_EDI + 0x290ed)), bVar2 != 0)" (assignment_expression "name = paVar3->name" identifier = (field_expression "paVar3->name" identifier -> field_identifier)) , (binary_expression "*(int *)(unaff_EDI + 0x29179) != 7 ||\n         (bVar2 = is_specified_symbol(name,*(htab_t *)(unaff_EDI + 0x290ed)), bVar2 != 0)" (binary_expression "*(int *)(unaff_EDI + 0x29179) != 7" (pointer_expression "*(int *)(unaff_EDI + 0x29179)" * (cast_expression "(int *)(unaff_EDI + 0x29179)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EDI + 0x29179)" ( (binary_expression "unaff_EDI + 0x29179" identifier + number_literal) )))) != number_literal) || (parenthesized_expression "(bVar2 = is_specified_symbol(name,*(htab_t *)(unaff_EDI + 0x290ed)), bVar2 != 0)" ( (comma_expression "bVar2 = is_specified_symbol(name,*(htab_t *)(unaff_EDI + 0x290ed)), bVar2 != 0" (assignment_expression "bVar2 = is_specified_symbol(name,*(htab_t *)(unaff_EDI + 0x290ed))" identifier = (call_expression "is_specified_symbol(name,*(htab_t *)(unaff_EDI + 0x290ed))" identifier (argument_list "(name,*(htab_t *)(unaff_EDI + 0x290ed))" ( identifier , (pointer_expression "*(htab_t *)(unaff_EDI + 0x290ed)" * (cast_expression "(htab_t *)(unaff_EDI + 0x290ed)" ( (type_descriptor "htab_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EDI + 0x290ed)" ( (binary_expression "unaff_EDI + 0x290ed" identifier + number_literal) )))) )))) , (binary_expression "bVar2 != 0" identifier != number_literal)) )))) )) && (parenthesized_expression "(bVar2 = is_specified_symbol(name,*(htab_t *)(unaff_EDI + 0x290f5)), bVar2 == 0)" ( (comma_expression "bVar2 = is_specified_symbol(name,*(htab_t *)(unaff_EDI + 0x290f5)), bVar2 == 0" (assignment_expression "bVar2 = is_specified_symbol(name,*(htab_t *)(unaff_EDI + 0x290f5))" identifier = (call_expression "is_specified_symbol(name,*(htab_t *)(unaff_EDI + 0x290f5))" identifier (argument_list "(name,*(htab_t *)(unaff_EDI + 0x290f5))" ( identifier , (pointer_expression "*(htab_t *)(unaff_EDI + 0x290f5)" * (cast_expression "(htab_t *)(unaff_EDI + 0x290f5)" ( (type_descriptor "htab_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EDI + 0x290f5)" ( (binary_expression "unaff_EDI + 0x290f5" identifier + number_literal) )))) )))) , (binary_expression "bVar2 == 0" identifier == number_literal)) ))) )) ))) )) (compound_statement "{\n      pbVar1 = *(bfd **)((int)pbVar1->usrdata + 0x8c);\n      abfd_00 = pbVar1;\n      sec_00 = extraout_EDX;\n      do {\n        if (abfd_00 == (bfd *)0x0) {\n          return 1;\n        }\n        bVar2 = is_strip_section_1(abfd_00,sec_00);\n        if (bVar2 == 0) {\n          return 0;\n        }\n        abfd_00 = *(bfd **)((int)abfd_00->usrdata + 0x8c);\n        sec_00 = extraout_EDX_00;\n      } while (pbVar1 != abfd_00);\n    }" { (expression_statement "pbVar1 = *(bfd **)((int)pbVar1->usrdata + 0x8c);" (assignment_expression "pbVar1 = *(bfd **)((int)pbVar1->usrdata + 0x8c)" identifier = (pointer_expression "*(bfd **)((int)pbVar1->usrdata + 0x8c)" * (cast_expression "(bfd **)((int)pbVar1->usrdata + 0x8c)" ( (type_descriptor "bfd **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)pbVar1->usrdata + 0x8c)" ( (binary_expression "(int)pbVar1->usrdata + 0x8c" (cast_expression "(int)pbVar1->usrdata" ( (type_descriptor "int" primitive_type) ) (field_expression "pbVar1->usrdata" identifier -> field_identifier)) + number_literal) ))))) ;) (expression_statement "abfd_00 = pbVar1;" (assignment_expression "abfd_00 = pbVar1" identifier = identifier) ;) (expression_statement "sec_00 = extraout_EDX;" (assignment_expression "sec_00 = extraout_EDX" identifier = identifier) ;) (do_statement "do {\n        if (abfd_00 == (bfd *)0x0) {\n          return 1;\n        }\n        bVar2 = is_strip_section_1(abfd_00,sec_00);\n        if (bVar2 == 0) {\n          return 0;\n        }\n        abfd_00 = *(bfd **)((int)abfd_00->usrdata + 0x8c);\n        sec_00 = extraout_EDX_00;\n      } while (pbVar1 != abfd_00);" do (compound_statement "{\n        if (abfd_00 == (bfd *)0x0) {\n          return 1;\n        }\n        bVar2 = is_strip_section_1(abfd_00,sec_00);\n        if (bVar2 == 0) {\n          return 0;\n        }\n        abfd_00 = *(bfd **)((int)abfd_00->usrdata + 0x8c);\n        sec_00 = extraout_EDX_00;\n      }" { (if_statement "if (abfd_00 == (bfd *)0x0) {\n          return 1;\n        }" if (parenthesized_expression "(abfd_00 == (bfd *)0x0)" ( (binary_expression "abfd_00 == (bfd *)0x0" identifier == (cast_expression "(bfd *)0x0" ( (type_descriptor "bfd *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n          return 1;\n        }" { (return_statement "return 1;" return number_literal ;) })) (expression_statement "bVar2 = is_strip_section_1(abfd_00,sec_00);" (assignment_expression "bVar2 = is_strip_section_1(abfd_00,sec_00)" identifier = (call_expression "is_strip_section_1(abfd_00,sec_00)" identifier (argument_list "(abfd_00,sec_00)" ( identifier , identifier )))) ;) (if_statement "if (bVar2 == 0) {\n          return 0;\n        }" if (parenthesized_expression "(bVar2 == 0)" ( (binary_expression "bVar2 == 0" identifier == number_literal) )) (compound_statement "{\n          return 0;\n        }" { (return_statement "return 0;" return number_literal ;) })) (expression_statement "abfd_00 = *(bfd **)((int)abfd_00->usrdata + 0x8c);" (assignment_expression "abfd_00 = *(bfd **)((int)abfd_00->usrdata + 0x8c)" identifier = (pointer_expression "*(bfd **)((int)abfd_00->usrdata + 0x8c)" * (cast_expression "(bfd **)((int)abfd_00->usrdata + 0x8c)" ( (type_descriptor "bfd **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)abfd_00->usrdata + 0x8c)" ( (binary_expression "(int)abfd_00->usrdata + 0x8c" (cast_expression "(int)abfd_00->usrdata" ( (type_descriptor "int" primitive_type) ) (field_expression "abfd_00->usrdata" identifier -> field_identifier)) + number_literal) ))))) ;) (expression_statement "sec_00 = extraout_EDX_00;" (assignment_expression "sec_00 = extraout_EDX_00" identifier = identifier) ;) }) while (parenthesized_expression "(pbVar1 != abfd_00)" ( (binary_expression "pbVar1 != abfd_00" identifier != identifier) )) ;) })) })) (return_statement "return 1;" return number_literal ;) })))
(translation_unit "undefined4 FUN_00017a30(void)\n\n{\n  int iVar1;\n  int iVar2;\n  int iVar3;\n  int unaff_EDI;\n  \n  iVar1 = FUN_0001c3b7();\n  iVar2 = FUN_000177e0();\n  if (iVar2 == 0) {\n    if ((*(byte *)(iVar1 + 0x17) & 2) == 0) {\n      return 0;\n    }\n    iVar2 = FUN_00017590();\n    if ((iVar2 != 0) &&\n       (((*(int *)(unaff_EDI + 0x29179) != 7 || (iVar2 = FUN_000179c0(), iVar2 != 0)) &&\n        (iVar2 = FUN_000179c0(), iVar2 == 0)))) {\n      iVar1 = *(int *)(*(int *)(iVar1 + 0xa4) + 0x8c);\n      iVar2 = iVar1;\n      do {\n        if (iVar2 == 0) {\n          return 1;\n        }\n        iVar3 = FUN_000177e0();\n        if (iVar3 == 0) {\n          return 0;\n        }\n        iVar2 = *(int *)(*(int *)(iVar2 + 0xa4) + 0x8c);\n      } while (iVar1 != iVar2);\n    }\n  }\n  return 1;\n}\n\n" (function_definition "undefined4 FUN_00017a30(void)\n\n{\n  int iVar1;\n  int iVar2;\n  int iVar3;\n  int unaff_EDI;\n  \n  iVar1 = FUN_0001c3b7();\n  iVar2 = FUN_000177e0();\n  if (iVar2 == 0) {\n    if ((*(byte *)(iVar1 + 0x17) & 2) == 0) {\n      return 0;\n    }\n    iVar2 = FUN_00017590();\n    if ((iVar2 != 0) &&\n       (((*(int *)(unaff_EDI + 0x29179) != 7 || (iVar2 = FUN_000179c0(), iVar2 != 0)) &&\n        (iVar2 = FUN_000179c0(), iVar2 == 0)))) {\n      iVar1 = *(int *)(*(int *)(iVar1 + 0xa4) + 0x8c);\n      iVar2 = iVar1;\n      do {\n        if (iVar2 == 0) {\n          return 1;\n        }\n        iVar3 = FUN_000177e0();\n        if (iVar3 == 0) {\n          return 0;\n        }\n        iVar2 = *(int *)(*(int *)(iVar2 + 0xa4) + 0x8c);\n      } while (iVar1 != iVar2);\n    }\n  }\n  return 1;\n}" type_identifier (function_declarator "FUN_00017a30(void)" identifier (parameter_list "(void)" ( (parameter_declaration "void" primitive_type) ))) (compound_statement "{\n  int iVar1;\n  int iVar2;\n  int iVar3;\n  int unaff_EDI;\n  \n  iVar1 = FUN_0001c3b7();\n  iVar2 = FUN_000177e0();\n  if (iVar2 == 0) {\n    if ((*(byte *)(iVar1 + 0x17) & 2) == 0) {\n      return 0;\n    }\n    iVar2 = FUN_00017590();\n    if ((iVar2 != 0) &&\n       (((*(int *)(unaff_EDI + 0x29179) != 7 || (iVar2 = FUN_000179c0(), iVar2 != 0)) &&\n        (iVar2 = FUN_000179c0(), iVar2 == 0)))) {\n      iVar1 = *(int *)(*(int *)(iVar1 + 0xa4) + 0x8c);\n      iVar2 = iVar1;\n      do {\n        if (iVar2 == 0) {\n          return 1;\n        }\n        iVar3 = FUN_000177e0();\n        if (iVar3 == 0) {\n          return 0;\n        }\n        iVar2 = *(int *)(*(int *)(iVar2 + 0xa4) + 0x8c);\n      } while (iVar1 != iVar2);\n    }\n  }\n  return 1;\n}" { (declaration "int iVar1;" primitive_type identifier ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "int iVar3;" primitive_type identifier ;) (declaration "int unaff_EDI;" primitive_type identifier ;) (expression_statement "iVar1 = FUN_0001c3b7();" (assignment_expression "iVar1 = FUN_0001c3b7()" identifier = (call_expression "FUN_0001c3b7()" identifier (argument_list "()" ( )))) ;) (expression_statement "iVar2 = FUN_000177e0();" (assignment_expression "iVar2 = FUN_000177e0()" identifier = (call_expression "FUN_000177e0()" identifier (argument_list "()" ( )))) ;) (if_statement "if (iVar2 == 0) {\n    if ((*(byte *)(iVar1 + 0x17) & 2) == 0) {\n      return 0;\n    }\n    iVar2 = FUN_00017590();\n    if ((iVar2 != 0) &&\n       (((*(int *)(unaff_EDI + 0x29179) != 7 || (iVar2 = FUN_000179c0(), iVar2 != 0)) &&\n        (iVar2 = FUN_000179c0(), iVar2 == 0)))) {\n      iVar1 = *(int *)(*(int *)(iVar1 + 0xa4) + 0x8c);\n      iVar2 = iVar1;\n      do {\n        if (iVar2 == 0) {\n          return 1;\n        }\n        iVar3 = FUN_000177e0();\n        if (iVar3 == 0) {\n          return 0;\n        }\n        iVar2 = *(int *)(*(int *)(iVar2 + 0xa4) + 0x8c);\n      } while (iVar1 != iVar2);\n    }\n  }" if (parenthesized_expression "(iVar2 == 0)" ( (binary_expression "iVar2 == 0" identifier == number_literal) )) (compound_statement "{\n    if ((*(byte *)(iVar1 + 0x17) & 2) == 0) {\n      return 0;\n    }\n    iVar2 = FUN_00017590();\n    if ((iVar2 != 0) &&\n       (((*(int *)(unaff_EDI + 0x29179) != 7 || (iVar2 = FUN_000179c0(), iVar2 != 0)) &&\n        (iVar2 = FUN_000179c0(), iVar2 == 0)))) {\n      iVar1 = *(int *)(*(int *)(iVar1 + 0xa4) + 0x8c);\n      iVar2 = iVar1;\n      do {\n        if (iVar2 == 0) {\n          return 1;\n        }\n        iVar3 = FUN_000177e0();\n        if (iVar3 == 0) {\n          return 0;\n        }\n        iVar2 = *(int *)(*(int *)(iVar2 + 0xa4) + 0x8c);\n      } while (iVar1 != iVar2);\n    }\n  }" { (if_statement "if ((*(byte *)(iVar1 + 0x17) & 2) == 0) {\n      return 0;\n    }" if (parenthesized_expression "((*(byte *)(iVar1 + 0x17) & 2) == 0)" ( (binary_expression "(*(byte *)(iVar1 + 0x17) & 2) == 0" (parenthesized_expression "(*(byte *)(iVar1 + 0x17) & 2)" ( (binary_expression "*(byte *)(iVar1 + 0x17) & 2" (pointer_expression "*(byte *)(iVar1 + 0x17)" * (cast_expression "(byte *)(iVar1 + 0x17)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 0x17)" ( (binary_expression "iVar1 + 0x17" identifier + number_literal) )))) & number_literal) )) == number_literal) )) (compound_statement "{\n      return 0;\n    }" { (return_statement "return 0;" return number_literal ;) })) (expression_statement "iVar2 = FUN_00017590();" (assignment_expression "iVar2 = FUN_00017590()" identifier = (call_expression "FUN_00017590()" identifier (argument_list "()" ( )))) ;) (if_statement "if ((iVar2 != 0) &&\n       (((*(int *)(unaff_EDI + 0x29179) != 7 || (iVar2 = FUN_000179c0(), iVar2 != 0)) &&\n        (iVar2 = FUN_000179c0(), iVar2 == 0)))) {\n      iVar1 = *(int *)(*(int *)(iVar1 + 0xa4) + 0x8c);\n      iVar2 = iVar1;\n      do {\n        if (iVar2 == 0) {\n          return 1;\n        }\n        iVar3 = FUN_000177e0();\n        if (iVar3 == 0) {\n          return 0;\n        }\n        iVar2 = *(int *)(*(int *)(iVar2 + 0xa4) + 0x8c);\n      } while (iVar1 != iVar2);\n    }" if (parenthesized_expression "((iVar2 != 0) &&\n       (((*(int *)(unaff_EDI + 0x29179) != 7 || (iVar2 = FUN_000179c0(), iVar2 != 0)) &&\n        (iVar2 = FUN_000179c0(), iVar2 == 0))))" ( (binary_expression "(iVar2 != 0) &&\n       (((*(int *)(unaff_EDI + 0x29179) != 7 || (iVar2 = FUN_000179c0(), iVar2 != 0)) &&\n        (iVar2 = FUN_000179c0(), iVar2 == 0)))" (parenthesized_expression "(iVar2 != 0)" ( (binary_expression "iVar2 != 0" identifier != number_literal) )) && (parenthesized_expression "(((*(int *)(unaff_EDI + 0x29179) != 7 || (iVar2 = FUN_000179c0(), iVar2 != 0)) &&\n        (iVar2 = FUN_000179c0(), iVar2 == 0)))" ( (parenthesized_expression "((*(int *)(unaff_EDI + 0x29179) != 7 || (iVar2 = FUN_000179c0(), iVar2 != 0)) &&\n        (iVar2 = FUN_000179c0(), iVar2 == 0))" ( (binary_expression "(*(int *)(unaff_EDI + 0x29179) != 7 || (iVar2 = FUN_000179c0(), iVar2 != 0)) &&\n        (iVar2 = FUN_000179c0(), iVar2 == 0)" (parenthesized_expression "(*(int *)(unaff_EDI + 0x29179) != 7 || (iVar2 = FUN_000179c0(), iVar2 != 0))" ( (binary_expression "*(int *)(unaff_EDI + 0x29179) != 7 || (iVar2 = FUN_000179c0(), iVar2 != 0)" (binary_expression "*(int *)(unaff_EDI + 0x29179) != 7" (pointer_expression "*(int *)(unaff_EDI + 0x29179)" * (cast_expression "(int *)(unaff_EDI + 0x29179)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EDI + 0x29179)" ( (binary_expression "unaff_EDI + 0x29179" identifier + number_literal) )))) != number_literal) || (parenthesized_expression "(iVar2 = FUN_000179c0(), iVar2 != 0)" ( (comma_expression "iVar2 = FUN_000179c0(), iVar2 != 0" (assignment_expression "iVar2 = FUN_000179c0()" identifier = (call_expression "FUN_000179c0()" identifier (argument_list "()" ( )))) , (binary_expression "iVar2 != 0" identifier != number_literal)) ))) )) && (parenthesized_expression "(iVar2 = FUN_000179c0(), iVar2 == 0)" ( (comma_expression "iVar2 = FUN_000179c0(), iVar2 == 0" (assignment_expression "iVar2 = FUN_000179c0()" identifier = (call_expression "FUN_000179c0()" identifier (argument_list "()" ( )))) , (binary_expression "iVar2 == 0" identifier == number_literal)) ))) )) ))) )) (compound_statement "{\n      iVar1 = *(int *)(*(int *)(iVar1 + 0xa4) + 0x8c);\n      iVar2 = iVar1;\n      do {\n        if (iVar2 == 0) {\n          return 1;\n        }\n        iVar3 = FUN_000177e0();\n        if (iVar3 == 0) {\n          return 0;\n        }\n        iVar2 = *(int *)(*(int *)(iVar2 + 0xa4) + 0x8c);\n      } while (iVar1 != iVar2);\n    }" { (expression_statement "iVar1 = *(int *)(*(int *)(iVar1 + 0xa4) + 0x8c);" (assignment_expression "iVar1 = *(int *)(*(int *)(iVar1 + 0xa4) + 0x8c)" identifier = (pointer_expression "*(int *)(*(int *)(iVar1 + 0xa4) + 0x8c)" * (cast_expression "(int *)(*(int *)(iVar1 + 0xa4) + 0x8c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(iVar1 + 0xa4) + 0x8c)" ( (binary_expression "*(int *)(iVar1 + 0xa4) + 0x8c" (pointer_expression "*(int *)(iVar1 + 0xa4)" * (cast_expression "(int *)(iVar1 + 0xa4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 0xa4)" ( (binary_expression "iVar1 + 0xa4" identifier + number_literal) )))) + number_literal) ))))) ;) (expression_statement "iVar2 = iVar1;" (assignment_expression "iVar2 = iVar1" identifier = identifier) ;) (do_statement "do {\n        if (iVar2 == 0) {\n          return 1;\n        }\n        iVar3 = FUN_000177e0();\n        if (iVar3 == 0) {\n          return 0;\n        }\n        iVar2 = *(int *)(*(int *)(iVar2 + 0xa4) + 0x8c);\n      } while (iVar1 != iVar2);" do (compound_statement "{\n        if (iVar2 == 0) {\n          return 1;\n        }\n        iVar3 = FUN_000177e0();\n        if (iVar3 == 0) {\n          return 0;\n        }\n        iVar2 = *(int *)(*(int *)(iVar2 + 0xa4) + 0x8c);\n      }" { (if_statement "if (iVar2 == 0) {\n          return 1;\n        }" if (parenthesized_expression "(iVar2 == 0)" ( (binary_expression "iVar2 == 0" identifier == number_literal) )) (compound_statement "{\n          return 1;\n        }" { (return_statement "return 1;" return number_literal ;) })) (expression_statement "iVar3 = FUN_000177e0();" (assignment_expression "iVar3 = FUN_000177e0()" identifier = (call_expression "FUN_000177e0()" identifier (argument_list "()" ( )))) ;) (if_statement "if (iVar3 == 0) {\n          return 0;\n        }" if (parenthesized_expression "(iVar3 == 0)" ( (binary_expression "iVar3 == 0" identifier == number_literal) )) (compound_statement "{\n          return 0;\n        }" { (return_statement "return 0;" return number_literal ;) })) (expression_statement "iVar2 = *(int *)(*(int *)(iVar2 + 0xa4) + 0x8c);" (assignment_expression "iVar2 = *(int *)(*(int *)(iVar2 + 0xa4) + 0x8c)" identifier = (pointer_expression "*(int *)(*(int *)(iVar2 + 0xa4) + 0x8c)" * (cast_expression "(int *)(*(int *)(iVar2 + 0xa4) + 0x8c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(iVar2 + 0xa4) + 0x8c)" ( (binary_expression "*(int *)(iVar2 + 0xa4) + 0x8c" (pointer_expression "*(int *)(iVar2 + 0xa4)" * (cast_expression "(int *)(iVar2 + 0xa4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 0xa4)" ( (binary_expression "iVar2 + 0xa4" identifier + number_literal) )))) + number_literal) ))))) ;) }) while (parenthesized_expression "(iVar1 != iVar2)" ( (binary_expression "iVar1 != iVar2" identifier != identifier) )) ;) })) })) (return_statement "return 1;" return number_literal ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE) ))) (compound_statement { (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (if_statement if (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) )) == LIT) )) (compound_statement { (return_statement return LIT ;) })) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT != LIT) )) && (parenthesized_expression ( (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) != LIT) || (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) , (binary_expression IDENT != LIT)) ))) )) && (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) , (binary_expression IDENT == LIT)) ))) )) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (do_statement do (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (return_statement return LIT ;) })) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (return_statement return LIT ;) })) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) ))))) ;) }) while (parenthesized_expression ( (binary_expression IDENT != IDENT) )) ;) })) })) (return_statement return LIT ;) })))
(function_definition "undefined4 FUN_00017a30(void)\n\n{\n  int iVar1;\n  int iVar2;\n  int iVar3;\n  int unaff_EDI;\n  \n  iVar1 = FUN_0001c3b7();\n  iVar2 = FUN_000177e0();\n  if (iVar2 == 0) {\n    if ((*(byte *)(iVar1 + 0x17) & 2) == 0) {\n      return 0;\n    }\n    iVar2 = FUN_00017590();\n    if ((iVar2 != 0) &&\n       (((*(int *)(unaff_EDI + 0x29179) != 7 || (iVar2 = FUN_000179c0(), iVar2 != 0)) &&\n        (iVar2 = FUN_000179c0(), iVar2 == 0)))) {\n      iVar1 = *(int *)(*(int *)(iVar1 + 0xa4) + 0x8c);\n      iVar2 = iVar1;\n      do {\n        if (iVar2 == 0) {\n          return 1;\n        }\n        iVar3 = FUN_000177e0();\n        if (iVar3 == 0) {\n          return 0;\n        }\n        iVar2 = *(int *)(*(int *)(iVar2 + 0xa4) + 0x8c);\n      } while (iVar1 != iVar2);\n    }\n  }\n  return 1;\n}" (type_identifier "undefined4") (function_declarator "FUN_00017a30(void)" (identifier "FUN_00017a30") (parameter_list "(void)" (( "(") (parameter_declaration "void" (primitive_type "void")) () ")"))) (compound_statement "{\n  int iVar1;\n  int iVar2;\n  int iVar3;\n  int unaff_EDI;\n  \n  iVar1 = FUN_0001c3b7();\n  iVar2 = FUN_000177e0();\n  if (iVar2 == 0) {\n    if ((*(byte *)(iVar1 + 0x17) & 2) == 0) {\n      return 0;\n    }\n    iVar2 = FUN_00017590();\n    if ((iVar2 != 0) &&\n       (((*(int *)(unaff_EDI + 0x29179) != 7 || (iVar2 = FUN_000179c0(), iVar2 != 0)) &&\n        (iVar2 = FUN_000179c0(), iVar2 == 0)))) {\n      iVar1 = *(int *)(*(int *)(iVar1 + 0xa4) + 0x8c);\n      iVar2 = iVar1;\n      do {\n        if (iVar2 == 0) {\n          return 1;\n        }\n        iVar3 = FUN_000177e0();\n        if (iVar3 == 0) {\n          return 0;\n        }\n        iVar2 = *(int *)(*(int *)(iVar2 + 0xa4) + 0x8c);\n      } while (iVar1 != iVar2);\n    }\n  }\n  return 1;\n}" ({ "{") (declaration "int iVar1;" (primitive_type "int") (identifier "iVar1") (; ";")) (declaration "int iVar2;" (primitive_type "int") (identifier "iVar2") (; ";")) (declaration "int iVar3;" (primitive_type "int") (identifier "iVar3") (; ";")) (declaration "int unaff_EDI;" (primitive_type "int") (identifier "unaff_EDI") (; ";")) (expression_statement "iVar1 = FUN_0001c3b7();" (assignment_expression "iVar1 = FUN_0001c3b7()" (identifier "iVar1") (= "=") (call_expression "FUN_0001c3b7()" (identifier "FUN_0001c3b7") (argument_list "()" (( "(") () ")")))) (; ";")) (expression_statement "iVar2 = FUN_000177e0();" (assignment_expression "iVar2 = FUN_000177e0()" (identifier "iVar2") (= "=") (call_expression "FUN_000177e0()" (identifier "FUN_000177e0") (argument_list "()" (( "(") () ")")))) (; ";")) (if_statement "if (iVar2 == 0) {\n    if ((*(byte *)(iVar1 + 0x17) & 2) == 0) {\n      return 0;\n    }\n    iVar2 = FUN_00017590();\n    if ((iVar2 != 0) &&\n       (((*(int *)(unaff_EDI + 0x29179) != 7 || (iVar2 = FUN_000179c0(), iVar2 != 0)) &&\n        (iVar2 = FUN_000179c0(), iVar2 == 0)))) {\n      iVar1 = *(int *)(*(int *)(iVar1 + 0xa4) + 0x8c);\n      iVar2 = iVar1;\n      do {\n        if (iVar2 == 0) {\n          return 1;\n        }\n        iVar3 = FUN_000177e0();\n        if (iVar3 == 0) {\n          return 0;\n        }\n        iVar2 = *(int *)(*(int *)(iVar2 + 0xa4) + 0x8c);\n      } while (iVar1 != iVar2);\n    }\n  }" (if "if") (parenthesized_expression "(iVar2 == 0)" (( "(") (binary_expression "iVar2 == 0" (identifier "iVar2") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n    if ((*(byte *)(iVar1 + 0x17) & 2) == 0) {\n      return 0;\n    }\n    iVar2 = FUN_00017590();\n    if ((iVar2 != 0) &&\n       (((*(int *)(unaff_EDI + 0x29179) != 7 || (iVar2 = FUN_000179c0(), iVar2 != 0)) &&\n        (iVar2 = FUN_000179c0(), iVar2 == 0)))) {\n      iVar1 = *(int *)(*(int *)(iVar1 + 0xa4) + 0x8c);\n      iVar2 = iVar1;\n      do {\n        if (iVar2 == 0) {\n          return 1;\n        }\n        iVar3 = FUN_000177e0();\n        if (iVar3 == 0) {\n          return 0;\n        }\n        iVar2 = *(int *)(*(int *)(iVar2 + 0xa4) + 0x8c);\n      } while (iVar1 != iVar2);\n    }\n  }" ({ "{") (if_statement "if ((*(byte *)(iVar1 + 0x17) & 2) == 0) {\n      return 0;\n    }" (if "if") (parenthesized_expression "((*(byte *)(iVar1 + 0x17) & 2) == 0)" (( "(") (binary_expression "(*(byte *)(iVar1 + 0x17) & 2) == 0" (parenthesized_expression "(*(byte *)(iVar1 + 0x17) & 2)" (( "(") (binary_expression "*(byte *)(iVar1 + 0x17) & 2" (pointer_expression "*(byte *)(iVar1 + 0x17)" (* "*") (cast_expression "(byte *)(iVar1 + 0x17)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar1 + 0x17)" (( "(") (binary_expression "iVar1 + 0x17" (identifier "iVar1") (+ "+") (number_literal "0x17")) () ")")))) (& "&") (number_literal "2")) () ")")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n      return 0;\n    }" ({ "{") (return_statement "return 0;" (return "return") (number_literal "0") (; ";")) (} "}"))) (expression_statement "iVar2 = FUN_00017590();" (assignment_expression "iVar2 = FUN_00017590()" (identifier "iVar2") (= "=") (call_expression "FUN_00017590()" (identifier "FUN_00017590") (argument_list "()" (( "(") () ")")))) (; ";")) (if_statement "if ((iVar2 != 0) &&\n       (((*(int *)(unaff_EDI + 0x29179) != 7 || (iVar2 = FUN_000179c0(), iVar2 != 0)) &&\n        (iVar2 = FUN_000179c0(), iVar2 == 0)))) {\n      iVar1 = *(int *)(*(int *)(iVar1 + 0xa4) + 0x8c);\n      iVar2 = iVar1;\n      do {\n        if (iVar2 == 0) {\n          return 1;\n        }\n        iVar3 = FUN_000177e0();\n        if (iVar3 == 0) {\n          return 0;\n        }\n        iVar2 = *(int *)(*(int *)(iVar2 + 0xa4) + 0x8c);\n      } while (iVar1 != iVar2);\n    }" (if "if") (parenthesized_expression "((iVar2 != 0) &&\n       (((*(int *)(unaff_EDI + 0x29179) != 7 || (iVar2 = FUN_000179c0(), iVar2 != 0)) &&\n        (iVar2 = FUN_000179c0(), iVar2 == 0))))" (( "(") (binary_expression "(iVar2 != 0) &&\n       (((*(int *)(unaff_EDI + 0x29179) != 7 || (iVar2 = FUN_000179c0(), iVar2 != 0)) &&\n        (iVar2 = FUN_000179c0(), iVar2 == 0)))" (parenthesized_expression "(iVar2 != 0)" (( "(") (binary_expression "iVar2 != 0" (identifier "iVar2") (!= "!=") (number_literal "0")) () ")")) (&& "&&") (parenthesized_expression "(((*(int *)(unaff_EDI + 0x29179) != 7 || (iVar2 = FUN_000179c0(), iVar2 != 0)) &&\n        (iVar2 = FUN_000179c0(), iVar2 == 0)))" (( "(") (parenthesized_expression "((*(int *)(unaff_EDI + 0x29179) != 7 || (iVar2 = FUN_000179c0(), iVar2 != 0)) &&\n        (iVar2 = FUN_000179c0(), iVar2 == 0))" (( "(") (binary_expression "(*(int *)(unaff_EDI + 0x29179) != 7 || (iVar2 = FUN_000179c0(), iVar2 != 0)) &&\n        (iVar2 = FUN_000179c0(), iVar2 == 0)" (parenthesized_expression "(*(int *)(unaff_EDI + 0x29179) != 7 || (iVar2 = FUN_000179c0(), iVar2 != 0))" (( "(") (binary_expression "*(int *)(unaff_EDI + 0x29179) != 7 || (iVar2 = FUN_000179c0(), iVar2 != 0)" (binary_expression "*(int *)(unaff_EDI + 0x29179) != 7" (pointer_expression "*(int *)(unaff_EDI + 0x29179)" (* "*") (cast_expression "(int *)(unaff_EDI + 0x29179)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(unaff_EDI + 0x29179)" (( "(") (binary_expression "unaff_EDI + 0x29179" (identifier "unaff_EDI") (+ "+") (number_literal "0x29179")) () ")")))) (!= "!=") (number_literal "7")) (|| "||") (parenthesized_expression "(iVar2 = FUN_000179c0(), iVar2 != 0)" (( "(") (comma_expression "iVar2 = FUN_000179c0(), iVar2 != 0" (assignment_expression "iVar2 = FUN_000179c0()" (identifier "iVar2") (= "=") (call_expression "FUN_000179c0()" (identifier "FUN_000179c0") (argument_list "()" (( "(") () ")")))) (, ",") (binary_expression "iVar2 != 0" (identifier "iVar2") (!= "!=") (number_literal "0"))) () ")"))) () ")")) (&& "&&") (parenthesized_expression "(iVar2 = FUN_000179c0(), iVar2 == 0)" (( "(") (comma_expression "iVar2 = FUN_000179c0(), iVar2 == 0" (assignment_expression "iVar2 = FUN_000179c0()" (identifier "iVar2") (= "=") (call_expression "FUN_000179c0()" (identifier "FUN_000179c0") (argument_list "()" (( "(") () ")")))) (, ",") (binary_expression "iVar2 == 0" (identifier "iVar2") (== "==") (number_literal "0"))) () ")"))) () ")")) () ")"))) () ")")) (compound_statement "{\n      iVar1 = *(int *)(*(int *)(iVar1 + 0xa4) + 0x8c);\n      iVar2 = iVar1;\n      do {\n        if (iVar2 == 0) {\n          return 1;\n        }\n        iVar3 = FUN_000177e0();\n        if (iVar3 == 0) {\n          return 0;\n        }\n        iVar2 = *(int *)(*(int *)(iVar2 + 0xa4) + 0x8c);\n      } while (iVar1 != iVar2);\n    }" ({ "{") (expression_statement "iVar1 = *(int *)(*(int *)(iVar1 + 0xa4) + 0x8c);" (assignment_expression "iVar1 = *(int *)(*(int *)(iVar1 + 0xa4) + 0x8c)" (identifier "iVar1") (= "=") (pointer_expression "*(int *)(*(int *)(iVar1 + 0xa4) + 0x8c)" (* "*") (cast_expression "(int *)(*(int *)(iVar1 + 0xa4) + 0x8c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(iVar1 + 0xa4) + 0x8c)" (( "(") (binary_expression "*(int *)(iVar1 + 0xa4) + 0x8c" (pointer_expression "*(int *)(iVar1 + 0xa4)" (* "*") (cast_expression "(int *)(iVar1 + 0xa4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar1 + 0xa4)" (( "(") (binary_expression "iVar1 + 0xa4" (identifier "iVar1") (+ "+") (number_literal "0xa4")) () ")")))) (+ "+") (number_literal "0x8c")) () ")"))))) (; ";")) (expression_statement "iVar2 = iVar1;" (assignment_expression "iVar2 = iVar1" (identifier "iVar2") (= "=") (identifier "iVar1")) (; ";")) (do_statement "do {\n        if (iVar2 == 0) {\n          return 1;\n        }\n        iVar3 = FUN_000177e0();\n        if (iVar3 == 0) {\n          return 0;\n        }\n        iVar2 = *(int *)(*(int *)(iVar2 + 0xa4) + 0x8c);\n      } while (iVar1 != iVar2);" (do "do") (compound_statement "{\n        if (iVar2 == 0) {\n          return 1;\n        }\n        iVar3 = FUN_000177e0();\n        if (iVar3 == 0) {\n          return 0;\n        }\n        iVar2 = *(int *)(*(int *)(iVar2 + 0xa4) + 0x8c);\n      }" ({ "{") (if_statement "if (iVar2 == 0) {\n          return 1;\n        }" (if "if") (parenthesized_expression "(iVar2 == 0)" (( "(") (binary_expression "iVar2 == 0" (identifier "iVar2") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n          return 1;\n        }" ({ "{") (return_statement "return 1;" (return "return") (number_literal "1") (; ";")) (} "}"))) (expression_statement "iVar3 = FUN_000177e0();" (assignment_expression "iVar3 = FUN_000177e0()" (identifier "iVar3") (= "=") (call_expression "FUN_000177e0()" (identifier "FUN_000177e0") (argument_list "()" (( "(") () ")")))) (; ";")) (if_statement "if (iVar3 == 0) {\n          return 0;\n        }" (if "if") (parenthesized_expression "(iVar3 == 0)" (( "(") (binary_expression "iVar3 == 0" (identifier "iVar3") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n          return 0;\n        }" ({ "{") (return_statement "return 0;" (return "return") (number_literal "0") (; ";")) (} "}"))) (expression_statement "iVar2 = *(int *)(*(int *)(iVar2 + 0xa4) + 0x8c);" (assignment_expression "iVar2 = *(int *)(*(int *)(iVar2 + 0xa4) + 0x8c)" (identifier "iVar2") (= "=") (pointer_expression "*(int *)(*(int *)(iVar2 + 0xa4) + 0x8c)" (* "*") (cast_expression "(int *)(*(int *)(iVar2 + 0xa4) + 0x8c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(iVar2 + 0xa4) + 0x8c)" (( "(") (binary_expression "*(int *)(iVar2 + 0xa4) + 0x8c" (pointer_expression "*(int *)(iVar2 + 0xa4)" (* "*") (cast_expression "(int *)(iVar2 + 0xa4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar2 + 0xa4)" (( "(") (binary_expression "iVar2 + 0xa4" (identifier "iVar2") (+ "+") (number_literal "0xa4")) () ")")))) (+ "+") (number_literal "0x8c")) () ")"))))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(iVar1 != iVar2)" (( "(") (binary_expression "iVar1 != iVar2" (identifier "iVar1") (!= "!=") (identifier "iVar2")) () ")")) (; ";")) (} "}"))) (} "}"))) (return_statement "return 1;" (return "return") (number_literal "1") (; ";")) (} "}")))

type_1 function_1(type_2 *abfd,type_3 *sec)

{
  char *name;
  type_2 *var_8;
  type_3 *sec_00;
  type_2 *var_9;
  type_1 var_3;
  type_4 *var_5;
  type_3 *extraout_EDX;
  type_3 *extraout_EDX_00;
  int var_6;
  type_5 uVar4;
  
  uVar4 = var_1();
  var_9 = (type_2 *)uVar4;
  var_3 = var_2(var_9,(type_3 *)((type_6)uVar4 >> 0x20));
  if (var_3 == 0) {
    if (((type_7)var_9->lru_next & 0x2000000) == 0) {
      return 0;
    }
    var_5 = var_4((type_3 *)var_9->usrdata,(type_3 *)var_9->build_id);
    if ((var_5 != (type_4 *)0x0) &&
       (((name = var_5->name, *(int *)(var_6 + 0x29179) != 7 ||
         (var_3 = var_7(name,*(type_8 *)(var_6 + 0x290ed)), var_3 != 0)) &&
        (var_3 = var_7(name,*(type_8 *)(var_6 + 0x290f5)), var_3 == 0)))) {
      var_9 = *(type_2 **)((int)var_9->usrdata + 0x8c);
      var_8 = var_9;
      sec_00 = extraout_EDX;
      do {
        if (var_8 == (type_2 *)0x0) {
          return 1;
        }
        var_3 = var_2(var_8,sec_00);
        if (var_3 == 0) {
          return 0;
        }
        var_8 = *(type_2 **)((int)var_8->usrdata + 0x8c);
        sec_00 = extraout_EDX_00;
      } while (var_9 != var_8);
    }
  }
  return 1;
}


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

undefined4 MASKED(void)

{
  int iVar1;
  int iVar2;
  int iVar3;
  int unaff_EDI;
  
  iVar1 = FUN_0001c3b7();
  iVar2 = FUN_000177e0();
  if (iVar2 == 0) {
    if ((*(byte *)(iVar1 + 0x17) & 2) == 0) {
      return 0;
    }
    iVar2 = FUN_00017590();
    if ((iVar2 != 0) &&
       (((*(int *)(unaff_EDI + 0x29179) != 7 || (iVar2 = FUN_000179c0(), iVar2 != 0)) &&
        (iVar2 = FUN_000179c0(), iVar2 == 0)))) {
      iVar1 = *(int *)(*(int *)(iVar1 + 0xa4) + 0x8c);
      iVar2 = iVar1;
      do {
        if (iVar2 == 0) {
          return 1;
        }
        iVar3 = FUN_000177e0();
        if (iVar3 == 0) {
          return 0;
        }
        iVar2 = *(int *)(*(int *)(iVar2 + 0xa4) + 0x8c);
      } while (iVar1 != iVar2);
    }
  }
  return 1;
}

