
/* WARNING: Function: __x86.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */
/* WARNING: Enum "DT": Some values do not have unique names */
/* DWARF original prototype: bool rescannable_defines(Plugin_manager * this, size_t i, Symbol * sym)
    */

bool __thiscall gold::Plugin_manager::rescannable_defines(Plugin_manager *this,size_t i,Symbol *sym)

{
  pointer pRVar1;
  Archive *this_00;
  bool bVar2;
  Task *pTVar3;
  
  pRVar1 = (this->rescannable_).
           super__Vector_base<gold::Plugin_manager::Rescannable,_std::allocator<gold::Plugin_manager::Rescannable>_>
           ._M_impl._M_start + i;
  this_00 = (pRVar1->u).archive;
  if (pRVar1->is_archive != false) {
    bVar2 = Archive::defines_symbol(this_00,sym);
    return bVar2;
  }
  pTVar3 = (Task *)(this_00->super_Library_base)._vptr_Library_base;
  if (pTVar3 != (this_00->super_Library_base).task_) {
    do {
      bVar2 = Archive::defines_symbol((Archive *)pTVar3->_vptr_Task,sym);
      if (bVar2) {
        return bVar2;
      }
      pTVar3 = (Task *)&pTVar3->list_next_;
    } while ((((pRVar1->u).archive)->super_Library_base).task_ != pTVar3);
  }
  return false;
}



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

undefined4 FUN_000efd60(int param_1,int param_2,undefined4 param_3)

{
  char *pcVar1;
  int *piVar2;
  undefined4 uVar3;
  undefined4 *puVar4;
  
  pcVar1 = (char *)(*(int *)(param_1 + 0x48) + param_2 * 8);
  piVar2 = *(int **)(pcVar1 + 4);
  if (*pcVar1 != '\0') {
    uVar3 = FUN_00139350(piVar2,param_3);
    return uVar3;
  }
  puVar4 = (undefined4 *)*piVar2;
  if (puVar4 != (undefined4 *)piVar2[1]) {
    do {
      uVar3 = FUN_00139350(*puVar4,param_3);
      if ((char)uVar3 != '\0') {
        return uVar3;
      }
      puVar4 = puVar4 + 1;
    } while (*(undefined4 **)(*(int *)(pcVar1 + 4) + 4) != puVar4);
  }
  return 0;
}


PUSH EBP
PUSH EDI
PUSH ESI
PUSH EBX
CALL 0x00032730
ADD EBX,0x212297
SUB ESP,0xc
MOV EAX,dword ptr [ESP + 0x20]
MOV EDX,dword ptr [ESP + 0x24]
MOV EDI,dword ptr [ESP + 0x28]
MOV EAX,dword ptr [EAX + 0x48]
LEA EBP,[EAX + EDX*0x8]
CMP byte ptr [EBP],0x0
MOV EAX,dword ptr [EBP + 0x4]
JNZ 0x000efdd8
MOV ESI,dword ptr [EAX]
CMP ESI,dword ptr [EAX + 0x4]
JNZ 0x000efdab
JMP 0x000efdc8
MOV EAX,dword ptr [EBP + 0x4]
ADD ESI,0x4
CMP dword ptr [EAX + 0x4],ESI
JZ 0x000efdc8
SUB ESP,0x8
PUSH EDI
PUSH dword ptr [ESI]
CALL 0x00139350
ADD ESP,0x10
TEST AL,AL
JZ 0x000efda0
ADD ESP,0xc
POP EBX
POP ESI
POP EDI
POP EBP
RET
ADD ESP,0xc
XOR EAX,EAX
POP EBX
POP ESI
POP EDI
POP EBP
RET
SUB ESP,0x8
PUSH EDI
PUSH EAX
CALL 0x00139350
ADD ESP,0x10
ADD ESP,0xc
POP EBX
POP ESI
POP EDI
POP EBP
RET
(translation_unit "/* WARNING: Function: __i686.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */\n\nundefined4 FUN_000efd60(int param_1,int param_2,undefined4 param_3)\n\n{\n  char *pcVar1;\n  int *piVar2;\n  undefined4 uVar3;\n  undefined4 *puVar4;\n  \n  pcVar1 = (char *)(*(int *)(param_1 + 0x48) + param_2 * 8);\n  piVar2 = *(int **)(pcVar1 + 4);\n  if (*pcVar1 != '\0') {\n    uVar3 = FUN_00139350(piVar2,param_3);\n    return uVar3;\n  }\n  puVar4 = (undefined4 *)*piVar2;\n  if (puVar4 != (undefined4 *)piVar2[1]) {\n    do {\n      uVar3 = FUN_00139350(*puVar4,param_3);\n      if ((char)uVar3 != '\0') {\n        return uVar3;\n      }\n      puVar4 = puVar4 + 1;\n    } while (*(undefined4 **)(*(int *)(pcVar1 + 4) + 4) != puVar4);\n  }\n  return 0;\n}\n\n" comment (function_definition "undefined4 FUN_000efd60(int param_1,int param_2,undefined4 param_3)\n\n{\n  char *pcVar1;\n  int *piVar2;\n  undefined4 uVar3;\n  undefined4 *puVar4;\n  \n  pcVar1 = (char *)(*(int *)(param_1 + 0x48) + param_2 * 8);\n  piVar2 = *(int **)(pcVar1 + 4);\n  if (*pcVar1 != '\0') {\n    uVar3 = FUN_00139350(piVar2,param_3);\n    return uVar3;\n  }\n  puVar4 = (undefined4 *)*piVar2;\n  if (puVar4 != (undefined4 *)piVar2[1]) {\n    do {\n      uVar3 = FUN_00139350(*puVar4,param_3);\n      if ((char)uVar3 != '\0') {\n        return uVar3;\n      }\n      puVar4 = puVar4 + 1;\n    } while (*(undefined4 **)(*(int *)(pcVar1 + 4) + 4) != puVar4);\n  }\n  return 0;\n}" type_identifier (function_declarator "FUN_000efd60(int param_1,int param_2,undefined4 param_3)" identifier (parameter_list "(int param_1,int param_2,undefined4 param_3)" ( (parameter_declaration "int param_1" primitive_type identifier) , (parameter_declaration "int param_2" primitive_type identifier) , (parameter_declaration "undefined4 param_3" type_identifier identifier) ))) (compound_statement "{\n  char *pcVar1;\n  int *piVar2;\n  undefined4 uVar3;\n  undefined4 *puVar4;\n  \n  pcVar1 = (char *)(*(int *)(param_1 + 0x48) + param_2 * 8);\n  piVar2 = *(int **)(pcVar1 + 4);\n  if (*pcVar1 != '\0') {\n    uVar3 = FUN_00139350(piVar2,param_3);\n    return uVar3;\n  }\n  puVar4 = (undefined4 *)*piVar2;\n  if (puVar4 != (undefined4 *)piVar2[1]) {\n    do {\n      uVar3 = FUN_00139350(*puVar4,param_3);\n      if ((char)uVar3 != '\0') {\n        return uVar3;\n      }\n      puVar4 = puVar4 + 1;\n    } while (*(undefined4 **)(*(int *)(pcVar1 + 4) + 4) != puVar4);\n  }\n  return 0;\n}" { (declaration "char *pcVar1;" primitive_type (pointer_declarator "*pcVar1" * identifier) ;) (declaration "int *piVar2;" primitive_type (pointer_declarator "*piVar2" * identifier) ;) (declaration "undefined4 uVar3;" type_identifier identifier ;) (declaration "undefined4 *puVar4;" type_identifier (pointer_declarator "*puVar4" * identifier) ;) (expression_statement "pcVar1 = (char *)(*(int *)(param_1 + 0x48) + param_2 * 8);" (assignment_expression "pcVar1 = (char *)(*(int *)(param_1 + 0x48) + param_2 * 8)" identifier = (cast_expression "(char *)(*(int *)(param_1 + 0x48) + param_2 * 8)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(param_1 + 0x48) + param_2 * 8)" ( (binary_expression "*(int *)(param_1 + 0x48) + param_2 * 8" (pointer_expression "*(int *)(param_1 + 0x48)" * (cast_expression "(int *)(param_1 + 0x48)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x48)" ( (binary_expression "param_1 + 0x48" identifier + number_literal) )))) + (binary_expression "param_2 * 8" identifier * number_literal)) )))) ;) (expression_statement "piVar2 = *(int **)(pcVar1 + 4);" (assignment_expression "piVar2 = *(int **)(pcVar1 + 4)" identifier = (pointer_expression "*(int **)(pcVar1 + 4)" * (cast_expression "(int **)(pcVar1 + 4)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar1 + 4)" ( (binary_expression "pcVar1 + 4" identifier + number_literal) ))))) ;) (if_statement "if (*pcVar1 != '\0') {\n    uVar3 = FUN_00139350(piVar2,param_3);\n    return uVar3;\n  }" if (parenthesized_expression "(*pcVar1 != '\0')" ( (binary_expression "*pcVar1 != '\0'" (pointer_expression "*pcVar1" * identifier) != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n    uVar3 = FUN_00139350(piVar2,param_3);\n    return uVar3;\n  }" { (expression_statement "uVar3 = FUN_00139350(piVar2,param_3);" (assignment_expression "uVar3 = FUN_00139350(piVar2,param_3)" identifier = (call_expression "FUN_00139350(piVar2,param_3)" identifier (argument_list "(piVar2,param_3)" ( identifier , identifier )))) ;) (return_statement "return uVar3;" return identifier ;) })) (expression_statement "puVar4 = (undefined4 *)*piVar2;" (assignment_expression "puVar4 = (undefined4 *)*piVar2" identifier = (cast_expression "(undefined4 *)*piVar2" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*piVar2" * identifier))) ;) (if_statement "if (puVar4 != (undefined4 *)piVar2[1]) {\n    do {\n      uVar3 = FUN_00139350(*puVar4,param_3);\n      if ((char)uVar3 != '\0') {\n        return uVar3;\n      }\n      puVar4 = puVar4 + 1;\n    } while (*(undefined4 **)(*(int *)(pcVar1 + 4) + 4) != puVar4);\n  }" if (parenthesized_expression "(puVar4 != (undefined4 *)piVar2[1])" ( (binary_expression "puVar4 != (undefined4 *)piVar2[1]" identifier != (cast_expression "(undefined4 *)piVar2[1]" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar2[1]" identifier [ number_literal ]))) )) (compound_statement "{\n    do {\n      uVar3 = FUN_00139350(*puVar4,param_3);\n      if ((char)uVar3 != '\0') {\n        return uVar3;\n      }\n      puVar4 = puVar4 + 1;\n    } while (*(undefined4 **)(*(int *)(pcVar1 + 4) + 4) != puVar4);\n  }" { (do_statement "do {\n      uVar3 = FUN_00139350(*puVar4,param_3);\n      if ((char)uVar3 != '\0') {\n        return uVar3;\n      }\n      puVar4 = puVar4 + 1;\n    } while (*(undefined4 **)(*(int *)(pcVar1 + 4) + 4) != puVar4);" do (compound_statement "{\n      uVar3 = FUN_00139350(*puVar4,param_3);\n      if ((char)uVar3 != '\0') {\n        return uVar3;\n      }\n      puVar4 = puVar4 + 1;\n    }" { (expression_statement "uVar3 = FUN_00139350(*puVar4,param_3);" (assignment_expression "uVar3 = FUN_00139350(*puVar4,param_3)" identifier = (call_expression "FUN_00139350(*puVar4,param_3)" identifier (argument_list "(*puVar4,param_3)" ( (pointer_expression "*puVar4" * identifier) , identifier )))) ;) (if_statement "if ((char)uVar3 != '\0') {\n        return uVar3;\n      }" if (parenthesized_expression "((char)uVar3 != '\0')" ( (binary_expression "(char)uVar3 != '\0'" (cast_expression "(char)uVar3" ( (type_descriptor "char" primitive_type) ) identifier) != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n        return uVar3;\n      }" { (return_statement "return uVar3;" return identifier ;) })) (expression_statement "puVar4 = puVar4 + 1;" (assignment_expression "puVar4 = puVar4 + 1" identifier = (binary_expression "puVar4 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(*(undefined4 **)(*(int *)(pcVar1 + 4) + 4) != puVar4)" ( (binary_expression "*(undefined4 **)(*(int *)(pcVar1 + 4) + 4) != puVar4" (pointer_expression "*(undefined4 **)(*(int *)(pcVar1 + 4) + 4)" * (cast_expression "(undefined4 **)(*(int *)(pcVar1 + 4) + 4)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(int *)(pcVar1 + 4) + 4)" ( (binary_expression "*(int *)(pcVar1 + 4) + 4" (pointer_expression "*(int *)(pcVar1 + 4)" * (cast_expression "(int *)(pcVar1 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar1 + 4)" ( (binary_expression "pcVar1 + 4" identifier + number_literal) )))) + number_literal) )))) != identifier) )) ;) })) (return_statement "return 0;" return number_literal ;) })))
(translation_unit "/* WARNING: Function: __x86.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */\n/* WARNING: Enum "DT": Some values do not have unique names */\n/* DWARF original prototype: bool rescannable_defines(Plugin_manager * this, size_t i, Symbol * sym)\n    */\n\nbool __thiscall gold::Plugin_manager::rescannable_defines(Plugin_manager *this,size_t i,Symbol *sym)\n\n{\n  pointer pRVar1;\n  Archive *this_00;\n  bool bVar2;\n  Task *pTVar3;\n  \n  pRVar1 = (this->rescannable_).\n           super__Vector_base<gold::Plugin_manager::Rescannable,_std::allocator<gold::Plugin_manager::Rescannable>_>\n           ._M_impl._M_start + i;\n  this_00 = (pRVar1->u).archive;\n  if (pRVar1->is_archive != false) {\n    bVar2 = Archive::defines_symbol(this_00,sym);\n    return bVar2;\n  }\n  pTVar3 = (Task *)(this_00->super_Library_base)._vptr_Library_base;\n  if (pTVar3 != (this_00->super_Library_base).task_) {\n    do {\n      bVar2 = Archive::defines_symbol((Archive *)pTVar3->_vptr_Task,sym);\n      if (bVar2) {\n        return bVar2;\n      }\n      pTVar3 = (Task *)&pTVar3->list_next_;\n    } while ((((pRVar1->u).archive)->super_Library_base).task_ != pTVar3);\n  }\n  return false;\n}\n\n" comment comment comment (function_definition "bool __thiscall gold::Plugin_manager::rescannable_defines(Plugin_manager *this,size_t i,Symbol *sym)\n\n{\n  pointer pRVar1;\n  Archive *this_00;\n  bool bVar2;\n  Task *pTVar3;\n  \n  pRVar1 = (this->rescannable_).\n           super__Vector_base<gold::Plugin_manager::Rescannable,_std::allocator<gold::Plugin_manager::Rescannable>_>\n           ._M_impl._M_start + i;\n  this_00 = (pRVar1->u).archive;\n  if (pRVar1->is_archive != false) {\n    bVar2 = Archive::defines_symbol(this_00,sym);\n    return bVar2;\n  }\n  pTVar3 = (Task *)(this_00->super_Library_base)._vptr_Library_base;\n  if (pTVar3 != (this_00->super_Library_base).task_) {\n    do {\n      bVar2 = Archive::defines_symbol((Archive *)pTVar3->_vptr_Task,sym);\n      if (bVar2) {\n        return bVar2;\n      }\n      pTVar3 = (Task *)&pTVar3->list_next_;\n    } while ((((pRVar1->u).archive)->super_Library_base).task_ != pTVar3);\n  }\n  return false;\n}" primitive_type (ms_call_modifier "__thiscall" __thiscall) (ERROR "gold::Plugin_manager::" identifier : : identifier : :) (function_declarator "rescannable_defines(Plugin_manager *this,size_t i,Symbol *sym)" identifier (parameter_list "(Plugin_manager *this,size_t i,Symbol *sym)" ( (parameter_declaration "Plugin_manager *this" type_identifier (pointer_declarator "*this" * identifier)) , (parameter_declaration "size_t i" primitive_type identifier) , (parameter_declaration "Symbol *sym" type_identifier (pointer_declarator "*sym" * identifier)) ))) (compound_statement "{\n  pointer pRVar1;\n  Archive *this_00;\n  bool bVar2;\n  Task *pTVar3;\n  \n  pRVar1 = (this->rescannable_).\n           super__Vector_base<gold::Plugin_manager::Rescannable,_std::allocator<gold::Plugin_manager::Rescannable>_>\n           ._M_impl._M_start + i;\n  this_00 = (pRVar1->u).archive;\n  if (pRVar1->is_archive != false) {\n    bVar2 = Archive::defines_symbol(this_00,sym);\n    return bVar2;\n  }\n  pTVar3 = (Task *)(this_00->super_Library_base)._vptr_Library_base;\n  if (pTVar3 != (this_00->super_Library_base).task_) {\n    do {\n      bVar2 = Archive::defines_symbol((Archive *)pTVar3->_vptr_Task,sym);\n      if (bVar2) {\n        return bVar2;\n      }\n      pTVar3 = (Task *)&pTVar3->list_next_;\n    } while ((((pRVar1->u).archive)->super_Library_base).task_ != pTVar3);\n  }\n  return false;\n}" { (declaration "pointer pRVar1;" type_identifier identifier ;) (declaration "Archive *this_00;" type_identifier (pointer_declarator "*this_00" * identifier) ;) (declaration "bool bVar2;" primitive_type identifier ;) (declaration "Task *pTVar3;" type_identifier (pointer_declarator "*pTVar3" * identifier) ;) (ERROR "pRVar1 = (this->rescannable_).\n           super__Vector_base<gold::" (assignment_expression "pRVar1 = (this->rescannable_).\n           super__Vector_base<gold" identifier = (binary_expression "(this->rescannable_).\n           super__Vector_base<gold" (field_expression "(this->rescannable_).\n           super__Vector_base" (parenthesized_expression "(this->rescannable_)" ( (field_expression "this->rescannable_" identifier -> field_identifier) )) . field_identifier) < identifier)) : :) (labeled_statement "Plugin_manager::Rescannable,_std::allocator<gold::Plugin_manager::Rescannable>_>\n           ._M_impl._M_start + i;" statement_identifier (ERROR "::Rescannable,_std::allocator<gold:" : : (comma_expression "Rescannable,_std" identifier , identifier) : : (binary_expression "allocator<gold" identifier < identifier) :) : (labeled_statement "Plugin_manager::Rescannable>_>\n           ._M_impl._M_start + i;" statement_identifier : (ERROR ":" :) (expression_statement "Rescannable>_>\n           ._M_impl._M_start + i;" (binary_expression "Rescannable>_>\n           ._M_impl._M_start + i" (field_expression "Rescannable>_>\n           ._M_impl._M_start" (field_expression "Rescannable>_>\n           ._M_impl" (binary_expression "Rescannable>_" identifier > identifier) (ERROR ">" >) . field_identifier) . field_identifier) + identifier) ;))) (expression_statement "this_00 = (pRVar1->u).archive;" (assignment_expression "this_00 = (pRVar1->u).archive" identifier = (field_expression "(pRVar1->u).archive" (parenthesized_expression "(pRVar1->u)" ( (field_expression "pRVar1->u" identifier -> field_identifier) )) . field_identifier)) ;) (if_statement "if (pRVar1->is_archive != false) {\n    bVar2 = Archive::defines_symbol(this_00,sym);\n    return bVar2;\n  }" if (parenthesized_expression "(pRVar1->is_archive != false)" ( (binary_expression "pRVar1->is_archive != false" (field_expression "pRVar1->is_archive" identifier -> field_identifier) != false) )) (compound_statement "{\n    bVar2 = Archive::defines_symbol(this_00,sym);\n    return bVar2;\n  }" { (ERROR "bVar2 = Archive::" (assignment_expression "bVar2 = Archive" identifier = identifier) : :) (expression_statement "defines_symbol(this_00,sym);" (call_expression "defines_symbol(this_00,sym)" identifier (argument_list "(this_00,sym)" ( identifier , identifier ))) ;) (return_statement "return bVar2;" return identifier ;) })) (expression_statement "pTVar3 = (Task *)(this_00->super_Library_base)._vptr_Library_base;" (assignment_expression "pTVar3 = (Task *)(this_00->super_Library_base)._vptr_Library_base" identifier = (cast_expression "(Task *)(this_00->super_Library_base)._vptr_Library_base" ( (type_descriptor "Task *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "(this_00->super_Library_base)._vptr_Library_base" (parenthesized_expression "(this_00->super_Library_base)" ( (field_expression "this_00->super_Library_base" identifier -> field_identifier) )) . field_identifier))) ;) (if_statement "if (pTVar3 != (this_00->super_Library_base).task_) {\n    do {\n      bVar2 = Archive::defines_symbol((Archive *)pTVar3->_vptr_Task,sym);\n      if (bVar2) {\n        return bVar2;\n      }\n      pTVar3 = (Task *)&pTVar3->list_next_;\n    } while ((((pRVar1->u).archive)->super_Library_base).task_ != pTVar3);\n  }" if (parenthesized_expression "(pTVar3 != (this_00->super_Library_base).task_)" ( (binary_expression "pTVar3 != (this_00->super_Library_base).task_" identifier != (field_expression "(this_00->super_Library_base).task_" (parenthesized_expression "(this_00->super_Library_base)" ( (field_expression "this_00->super_Library_base" identifier -> field_identifier) )) . field_identifier)) )) (compound_statement "{\n    do {\n      bVar2 = Archive::defines_symbol((Archive *)pTVar3->_vptr_Task,sym);\n      if (bVar2) {\n        return bVar2;\n      }\n      pTVar3 = (Task *)&pTVar3->list_next_;\n    } while ((((pRVar1->u).archive)->super_Library_base).task_ != pTVar3);\n  }" { (do_statement "do {\n      bVar2 = Archive::defines_symbol((Archive *)pTVar3->_vptr_Task,sym);\n      if (bVar2) {\n        return bVar2;\n      }\n      pTVar3 = (Task *)&pTVar3->list_next_;\n    } while ((((pRVar1->u).archive)->super_Library_base).task_ != pTVar3);" do (compound_statement "{\n      bVar2 = Archive::defines_symbol((Archive *)pTVar3->_vptr_Task,sym);\n      if (bVar2) {\n        return bVar2;\n      }\n      pTVar3 = (Task *)&pTVar3->list_next_;\n    }" { (ERROR "bVar2 = Archive::" (assignment_expression "bVar2 = Archive" identifier = identifier) : :) (expression_statement "defines_symbol((Archive *)pTVar3->_vptr_Task,sym);" (call_expression "defines_symbol((Archive *)pTVar3->_vptr_Task,sym)" identifier (argument_list "((Archive *)pTVar3->_vptr_Task,sym)" ( (cast_expression "(Archive *)pTVar3->_vptr_Task" ( (type_descriptor "Archive *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "pTVar3->_vptr_Task" identifier -> field_identifier)) , identifier ))) ;) (if_statement "if (bVar2) {\n        return bVar2;\n      }" if (parenthesized_expression "(bVar2)" ( identifier )) (compound_statement "{\n        return bVar2;\n      }" { (return_statement "return bVar2;" return identifier ;) })) (expression_statement "pTVar3 = (Task *)&pTVar3->list_next_;" (assignment_expression "pTVar3 = (Task *)&pTVar3->list_next_" identifier = (cast_expression "(Task *)&pTVar3->list_next_" ( (type_descriptor "Task *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&pTVar3->list_next_" & (field_expression "pTVar3->list_next_" identifier -> field_identifier)))) ;) }) while (parenthesized_expression "((((pRVar1->u).archive)->super_Library_base).task_ != pTVar3)" ( (binary_expression "(((pRVar1->u).archive)->super_Library_base).task_ != pTVar3" (field_expression "(((pRVar1->u).archive)->super_Library_base).task_" (parenthesized_expression "(((pRVar1->u).archive)->super_Library_base)" ( (field_expression "((pRVar1->u).archive)->super_Library_base" (parenthesized_expression "((pRVar1->u).archive)" ( (field_expression "(pRVar1->u).archive" (parenthesized_expression "(pRVar1->u)" ( (field_expression "pRVar1->u" identifier -> field_identifier) )) . field_identifier) )) -> field_identifier) )) . field_identifier) != identifier) )) ;) })) (return_statement "return false;" return false ;) })))
(translation_unit "undefined4 FUN_000efd60(int param_1,int param_2,undefined4 param_3)\n\n{\n  char *pcVar1;\n  int *piVar2;\n  undefined4 uVar3;\n  undefined4 *puVar4;\n  \n  pcVar1 = (char *)(*(int *)(param_1 + 0x48) + param_2 * 8);\n  piVar2 = *(int **)(pcVar1 + 4);\n  if (*pcVar1 != '\0') {\n    uVar3 = FUN_00139350(piVar2,param_3);\n    return uVar3;\n  }\n  puVar4 = (undefined4 *)*piVar2;\n  if (puVar4 != (undefined4 *)piVar2[1]) {\n    do {\n      uVar3 = FUN_00139350(*puVar4,param_3);\n      if ((char)uVar3 != '\0') {\n        return uVar3;\n      }\n      puVar4 = puVar4 + 1;\n    } while (*(undefined4 **)(*(int *)(pcVar1 + 4) + 4) != puVar4);\n  }\n  return 0;\n}\n\n" (function_definition "undefined4 FUN_000efd60(int param_1,int param_2,undefined4 param_3)\n\n{\n  char *pcVar1;\n  int *piVar2;\n  undefined4 uVar3;\n  undefined4 *puVar4;\n  \n  pcVar1 = (char *)(*(int *)(param_1 + 0x48) + param_2 * 8);\n  piVar2 = *(int **)(pcVar1 + 4);\n  if (*pcVar1 != '\0') {\n    uVar3 = FUN_00139350(piVar2,param_3);\n    return uVar3;\n  }\n  puVar4 = (undefined4 *)*piVar2;\n  if (puVar4 != (undefined4 *)piVar2[1]) {\n    do {\n      uVar3 = FUN_00139350(*puVar4,param_3);\n      if ((char)uVar3 != '\0') {\n        return uVar3;\n      }\n      puVar4 = puVar4 + 1;\n    } while (*(undefined4 **)(*(int *)(pcVar1 + 4) + 4) != puVar4);\n  }\n  return 0;\n}" type_identifier (function_declarator "FUN_000efd60(int param_1,int param_2,undefined4 param_3)" identifier (parameter_list "(int param_1,int param_2,undefined4 param_3)" ( (parameter_declaration "int param_1" primitive_type identifier) , (parameter_declaration "int param_2" primitive_type identifier) , (parameter_declaration "undefined4 param_3" type_identifier identifier) ))) (compound_statement "{\n  char *pcVar1;\n  int *piVar2;\n  undefined4 uVar3;\n  undefined4 *puVar4;\n  \n  pcVar1 = (char *)(*(int *)(param_1 + 0x48) + param_2 * 8);\n  piVar2 = *(int **)(pcVar1 + 4);\n  if (*pcVar1 != '\0') {\n    uVar3 = FUN_00139350(piVar2,param_3);\n    return uVar3;\n  }\n  puVar4 = (undefined4 *)*piVar2;\n  if (puVar4 != (undefined4 *)piVar2[1]) {\n    do {\n      uVar3 = FUN_00139350(*puVar4,param_3);\n      if ((char)uVar3 != '\0') {\n        return uVar3;\n      }\n      puVar4 = puVar4 + 1;\n    } while (*(undefined4 **)(*(int *)(pcVar1 + 4) + 4) != puVar4);\n  }\n  return 0;\n}" { (declaration "char *pcVar1;" primitive_type (pointer_declarator "*pcVar1" * identifier) ;) (declaration "int *piVar2;" primitive_type (pointer_declarator "*piVar2" * identifier) ;) (declaration "undefined4 uVar3;" type_identifier identifier ;) (declaration "undefined4 *puVar4;" type_identifier (pointer_declarator "*puVar4" * identifier) ;) (expression_statement "pcVar1 = (char *)(*(int *)(param_1 + 0x48) + param_2 * 8);" (assignment_expression "pcVar1 = (char *)(*(int *)(param_1 + 0x48) + param_2 * 8)" identifier = (cast_expression "(char *)(*(int *)(param_1 + 0x48) + param_2 * 8)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(param_1 + 0x48) + param_2 * 8)" ( (binary_expression "*(int *)(param_1 + 0x48) + param_2 * 8" (pointer_expression "*(int *)(param_1 + 0x48)" * (cast_expression "(int *)(param_1 + 0x48)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x48)" ( (binary_expression "param_1 + 0x48" identifier + number_literal) )))) + (binary_expression "param_2 * 8" identifier * number_literal)) )))) ;) (expression_statement "piVar2 = *(int **)(pcVar1 + 4);" (assignment_expression "piVar2 = *(int **)(pcVar1 + 4)" identifier = (pointer_expression "*(int **)(pcVar1 + 4)" * (cast_expression "(int **)(pcVar1 + 4)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar1 + 4)" ( (binary_expression "pcVar1 + 4" identifier + number_literal) ))))) ;) (if_statement "if (*pcVar1 != '\0') {\n    uVar3 = FUN_00139350(piVar2,param_3);\n    return uVar3;\n  }" if (parenthesized_expression "(*pcVar1 != '\0')" ( (binary_expression "*pcVar1 != '\0'" (pointer_expression "*pcVar1" * identifier) != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n    uVar3 = FUN_00139350(piVar2,param_3);\n    return uVar3;\n  }" { (expression_statement "uVar3 = FUN_00139350(piVar2,param_3);" (assignment_expression "uVar3 = FUN_00139350(piVar2,param_3)" identifier = (call_expression "FUN_00139350(piVar2,param_3)" identifier (argument_list "(piVar2,param_3)" ( identifier , identifier )))) ;) (return_statement "return uVar3;" return identifier ;) })) (expression_statement "puVar4 = (undefined4 *)*piVar2;" (assignment_expression "puVar4 = (undefined4 *)*piVar2" identifier = (cast_expression "(undefined4 *)*piVar2" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*piVar2" * identifier))) ;) (if_statement "if (puVar4 != (undefined4 *)piVar2[1]) {\n    do {\n      uVar3 = FUN_00139350(*puVar4,param_3);\n      if ((char)uVar3 != '\0') {\n        return uVar3;\n      }\n      puVar4 = puVar4 + 1;\n    } while (*(undefined4 **)(*(int *)(pcVar1 + 4) + 4) != puVar4);\n  }" if (parenthesized_expression "(puVar4 != (undefined4 *)piVar2[1])" ( (binary_expression "puVar4 != (undefined4 *)piVar2[1]" identifier != (cast_expression "(undefined4 *)piVar2[1]" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar2[1]" identifier [ number_literal ]))) )) (compound_statement "{\n    do {\n      uVar3 = FUN_00139350(*puVar4,param_3);\n      if ((char)uVar3 != '\0') {\n        return uVar3;\n      }\n      puVar4 = puVar4 + 1;\n    } while (*(undefined4 **)(*(int *)(pcVar1 + 4) + 4) != puVar4);\n  }" { (do_statement "do {\n      uVar3 = FUN_00139350(*puVar4,param_3);\n      if ((char)uVar3 != '\0') {\n        return uVar3;\n      }\n      puVar4 = puVar4 + 1;\n    } while (*(undefined4 **)(*(int *)(pcVar1 + 4) + 4) != puVar4);" do (compound_statement "{\n      uVar3 = FUN_00139350(*puVar4,param_3);\n      if ((char)uVar3 != '\0') {\n        return uVar3;\n      }\n      puVar4 = puVar4 + 1;\n    }" { (expression_statement "uVar3 = FUN_00139350(*puVar4,param_3);" (assignment_expression "uVar3 = FUN_00139350(*puVar4,param_3)" identifier = (call_expression "FUN_00139350(*puVar4,param_3)" identifier (argument_list "(*puVar4,param_3)" ( (pointer_expression "*puVar4" * identifier) , identifier )))) ;) (if_statement "if ((char)uVar3 != '\0') {\n        return uVar3;\n      }" if (parenthesized_expression "((char)uVar3 != '\0')" ( (binary_expression "(char)uVar3 != '\0'" (cast_expression "(char)uVar3" ( (type_descriptor "char" primitive_type) ) identifier) != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n        return uVar3;\n      }" { (return_statement "return uVar3;" return identifier ;) })) (expression_statement "puVar4 = puVar4 + 1;" (assignment_expression "puVar4 = puVar4 + 1" identifier = (binary_expression "puVar4 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(*(undefined4 **)(*(int *)(pcVar1 + 4) + 4) != puVar4)" ( (binary_expression "*(undefined4 **)(*(int *)(pcVar1 + 4) + 4) != puVar4" (pointer_expression "*(undefined4 **)(*(int *)(pcVar1 + 4) + 4)" * (cast_expression "(undefined4 **)(*(int *)(pcVar1 + 4) + 4)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(int *)(pcVar1 + 4) + 4)" ( (binary_expression "*(int *)(pcVar1 + 4) + 4" (pointer_expression "*(int *)(pcVar1 + 4)" * (cast_expression "(int *)(pcVar1 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar1 + 4)" ( (binary_expression "pcVar1 + 4" identifier + number_literal) )))) + number_literal) )))) != identifier) )) ;) })) (return_statement "return 0;" return number_literal ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (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) ;) (expression_statement (assignment_expression IDENT = (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) )))) + (binary_expression IDENT * LIT)) )))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) != (char_literal ' escape_sequence ')) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT )))) ;) (return_statement return 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 *)) ) (subscript_expression IDENT [ LIT ]))) )) (compound_statement { (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (pointer_expression * IDENT) , IDENT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) != (char_literal ' escape_sequence ')) )) (compound_statement { (return_statement return IDENT ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) )))) != IDENT) )) ;) })) (return_statement return LIT ;) })))
(function_definition "undefined4 FUN_000efd60(int param_1,int param_2,undefined4 param_3)\n\n{\n  char *pcVar1;\n  int *piVar2;\n  undefined4 uVar3;\n  undefined4 *puVar4;\n  \n  pcVar1 = (char *)(*(int *)(param_1 + 0x48) + param_2 * 8);\n  piVar2 = *(int **)(pcVar1 + 4);\n  if (*pcVar1 != '\0') {\n    uVar3 = FUN_00139350(piVar2,param_3);\n    return uVar3;\n  }\n  puVar4 = (undefined4 *)*piVar2;\n  if (puVar4 != (undefined4 *)piVar2[1]) {\n    do {\n      uVar3 = FUN_00139350(*puVar4,param_3);\n      if ((char)uVar3 != '\0') {\n        return uVar3;\n      }\n      puVar4 = puVar4 + 1;\n    } while (*(undefined4 **)(*(int *)(pcVar1 + 4) + 4) != puVar4);\n  }\n  return 0;\n}" (type_identifier "undefined4") (function_declarator "FUN_000efd60(int param_1,int param_2,undefined4 param_3)" (identifier "FUN_000efd60") (parameter_list "(int param_1,int param_2,undefined4 param_3)" (( "(") (parameter_declaration "int param_1" (primitive_type "int") (identifier "param_1")) (, ",") (parameter_declaration "int param_2" (primitive_type "int") (identifier "param_2")) (, ",") (parameter_declaration "undefined4 param_3" (type_identifier "undefined4") (identifier "param_3")) () ")"))) (compound_statement "{\n  char *pcVar1;\n  int *piVar2;\n  undefined4 uVar3;\n  undefined4 *puVar4;\n  \n  pcVar1 = (char *)(*(int *)(param_1 + 0x48) + param_2 * 8);\n  piVar2 = *(int **)(pcVar1 + 4);\n  if (*pcVar1 != '\0') {\n    uVar3 = FUN_00139350(piVar2,param_3);\n    return uVar3;\n  }\n  puVar4 = (undefined4 *)*piVar2;\n  if (puVar4 != (undefined4 *)piVar2[1]) {\n    do {\n      uVar3 = FUN_00139350(*puVar4,param_3);\n      if ((char)uVar3 != '\0') {\n        return uVar3;\n      }\n      puVar4 = puVar4 + 1;\n    } while (*(undefined4 **)(*(int *)(pcVar1 + 4) + 4) != puVar4);\n  }\n  return 0;\n}" ({ "{") (declaration "char *pcVar1;" (primitive_type "char") (pointer_declarator "*pcVar1" (* "*") (identifier "pcVar1")) (; ";")) (declaration "int *piVar2;" (primitive_type "int") (pointer_declarator "*piVar2" (* "*") (identifier "piVar2")) (; ";")) (declaration "undefined4 uVar3;" (type_identifier "undefined4") (identifier "uVar3") (; ";")) (declaration "undefined4 *puVar4;" (type_identifier "undefined4") (pointer_declarator "*puVar4" (* "*") (identifier "puVar4")) (; ";")) (expression_statement "pcVar1 = (char *)(*(int *)(param_1 + 0x48) + param_2 * 8);" (assignment_expression "pcVar1 = (char *)(*(int *)(param_1 + 0x48) + param_2 * 8)" (identifier "pcVar1") (= "=") (cast_expression "(char *)(*(int *)(param_1 + 0x48) + param_2 * 8)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(param_1 + 0x48) + param_2 * 8)" (( "(") (binary_expression "*(int *)(param_1 + 0x48) + param_2 * 8" (pointer_expression "*(int *)(param_1 + 0x48)" (* "*") (cast_expression "(int *)(param_1 + 0x48)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x48)" (( "(") (binary_expression "param_1 + 0x48" (identifier "param_1") (+ "+") (number_literal "0x48")) () ")")))) (+ "+") (binary_expression "param_2 * 8" (identifier "param_2") (* "*") (number_literal "8"))) () ")")))) (; ";")) (expression_statement "piVar2 = *(int **)(pcVar1 + 4);" (assignment_expression "piVar2 = *(int **)(pcVar1 + 4)" (identifier "piVar2") (= "=") (pointer_expression "*(int **)(pcVar1 + 4)" (* "*") (cast_expression "(int **)(pcVar1 + 4)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(pcVar1 + 4)" (( "(") (binary_expression "pcVar1 + 4" (identifier "pcVar1") (+ "+") (number_literal "4")) () ")"))))) (; ";")) (if_statement "if (*pcVar1 != '\0') {\n    uVar3 = FUN_00139350(piVar2,param_3);\n    return uVar3;\n  }" (if "if") (parenthesized_expression "(*pcVar1 != '\0')" (( "(") (binary_expression "*pcVar1 != '\0'" (pointer_expression "*pcVar1" (* "*") (identifier "pcVar1")) (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n    uVar3 = FUN_00139350(piVar2,param_3);\n    return uVar3;\n  }" ({ "{") (expression_statement "uVar3 = FUN_00139350(piVar2,param_3);" (assignment_expression "uVar3 = FUN_00139350(piVar2,param_3)" (identifier "uVar3") (= "=") (call_expression "FUN_00139350(piVar2,param_3)" (identifier "FUN_00139350") (argument_list "(piVar2,param_3)" (( "(") (identifier "piVar2") (, ",") (identifier "param_3") () ")")))) (; ";")) (return_statement "return uVar3;" (return "return") (identifier "uVar3") (; ";")) (} "}"))) (expression_statement "puVar4 = (undefined4 *)*piVar2;" (assignment_expression "puVar4 = (undefined4 *)*piVar2" (identifier "puVar4") (= "=") (cast_expression "(undefined4 *)*piVar2" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*piVar2" (* "*") (identifier "piVar2")))) (; ";")) (if_statement "if (puVar4 != (undefined4 *)piVar2[1]) {\n    do {\n      uVar3 = FUN_00139350(*puVar4,param_3);\n      if ((char)uVar3 != '\0') {\n        return uVar3;\n      }\n      puVar4 = puVar4 + 1;\n    } while (*(undefined4 **)(*(int *)(pcVar1 + 4) + 4) != puVar4);\n  }" (if "if") (parenthesized_expression "(puVar4 != (undefined4 *)piVar2[1])" (( "(") (binary_expression "puVar4 != (undefined4 *)piVar2[1]" (identifier "puVar4") (!= "!=") (cast_expression "(undefined4 *)piVar2[1]" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "piVar2[1]" (identifier "piVar2") ([ "[") (number_literal "1") (] "]")))) () ")")) (compound_statement "{\n    do {\n      uVar3 = FUN_00139350(*puVar4,param_3);\n      if ((char)uVar3 != '\0') {\n        return uVar3;\n      }\n      puVar4 = puVar4 + 1;\n    } while (*(undefined4 **)(*(int *)(pcVar1 + 4) + 4) != puVar4);\n  }" ({ "{") (do_statement "do {\n      uVar3 = FUN_00139350(*puVar4,param_3);\n      if ((char)uVar3 != '\0') {\n        return uVar3;\n      }\n      puVar4 = puVar4 + 1;\n    } while (*(undefined4 **)(*(int *)(pcVar1 + 4) + 4) != puVar4);" (do "do") (compound_statement "{\n      uVar3 = FUN_00139350(*puVar4,param_3);\n      if ((char)uVar3 != '\0') {\n        return uVar3;\n      }\n      puVar4 = puVar4 + 1;\n    }" ({ "{") (expression_statement "uVar3 = FUN_00139350(*puVar4,param_3);" (assignment_expression "uVar3 = FUN_00139350(*puVar4,param_3)" (identifier "uVar3") (= "=") (call_expression "FUN_00139350(*puVar4,param_3)" (identifier "FUN_00139350") (argument_list "(*puVar4,param_3)" (( "(") (pointer_expression "*puVar4" (* "*") (identifier "puVar4")) (, ",") (identifier "param_3") () ")")))) (; ";")) (if_statement "if ((char)uVar3 != '\0') {\n        return uVar3;\n      }" (if "if") (parenthesized_expression "((char)uVar3 != '\0')" (( "(") (binary_expression "(char)uVar3 != '\0'" (cast_expression "(char)uVar3" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (identifier "uVar3")) (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n        return uVar3;\n      }" ({ "{") (return_statement "return uVar3;" (return "return") (identifier "uVar3") (; ";")) (} "}"))) (expression_statement "puVar4 = puVar4 + 1;" (assignment_expression "puVar4 = puVar4 + 1" (identifier "puVar4") (= "=") (binary_expression "puVar4 + 1" (identifier "puVar4") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(*(undefined4 **)(*(int *)(pcVar1 + 4) + 4) != puVar4)" (( "(") (binary_expression "*(undefined4 **)(*(int *)(pcVar1 + 4) + 4) != puVar4" (pointer_expression "*(undefined4 **)(*(int *)(pcVar1 + 4) + 4)" (* "*") (cast_expression "(undefined4 **)(*(int *)(pcVar1 + 4) + 4)" (( "(") (type_descriptor "undefined4 **" (type_identifier "undefined4") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*(int *)(pcVar1 + 4) + 4)" (( "(") (binary_expression "*(int *)(pcVar1 + 4) + 4" (pointer_expression "*(int *)(pcVar1 + 4)" (* "*") (cast_expression "(int *)(pcVar1 + 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(pcVar1 + 4)" (( "(") (binary_expression "pcVar1 + 4" (identifier "pcVar1") (+ "+") (number_literal "4")) () ")")))) (+ "+") (number_literal "4")) () ")")))) (!= "!=") (identifier "puVar4")) () ")")) (; ";")) (} "}"))) (return_statement "return 0;" (return "return") (number_literal "0") (; ";")) (} "}")))

/* WARNING: Function: __x86.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */
/* WARNING: Enum "DT": Some values do not have unique names */
/* DWARF original prototype: bool rescannable_defines(Plugin_manager * this, size_t i, Symbol * sym)
    */

bool __thiscall gold::type_1::function_1(type_1 *this,size_t var_3,type_2 *sym)

{
  type_3 pRVar1;
  type_4 *this_00;
  bool bVar2;
  type_5 *var_5;
  
  pRVar1 = (this->rescannable_).
           super__Vector_base<gold::Plugin_manager::var_1,_std::allocator<gold::Plugin_manager::var_1>var_2>
           ._M_impl._M_start + var_3;
  this_00 = (pRVar1->u).archive;
  if (pRVar1->is_archive != false) {
    bVar2 = type_4::var_4(this_00,sym);
    return bVar2;
  }
  var_5 = (type_5 *)(this_00->super_Library_base)._vptr_Library_base;
  if (var_5 != (this_00->super_Library_base).task_) {
    do {
      bVar2 = type_4::var_4((type_4 *)var_5->_vptr_Task,sym);
      if (bVar2) {
        return bVar2;
      }
      var_5 = (type_5 *)&var_5->list_next_;
    } while ((((pRVar1->u).archive)->super_Library_base).task_ != var_5);
  }
  return false;
}


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

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

undefined4 MASKED(int param_1,int param_2,undefined4 param_3)

{
  char *pcVar1;
  int *piVar2;
  undefined4 uVar3;
  undefined4 *puVar4;
  
  pcVar1 = (char *)(*(int *)(param_1 + 0x48) + param_2 * 8);
  piVar2 = *(int **)(pcVar1 + 4);
  if (*pcVar1 != '\0') {
    uVar3 = FUN_00139350(piVar2,param_3);
    return uVar3;
  }
  puVar4 = (undefined4 *)*piVar2;
  if (puVar4 != (undefined4 *)piVar2[1]) {
    do {
      uVar3 = FUN_00139350(*puVar4,param_3);
      if ((char)uVar3 != '\0') {
        return uVar3;
      }
      puVar4 = puVar4 + 1;
    } while (*(undefined4 **)(*(int *)(pcVar1 + 4) + 4) != puVar4);
  }
  return 0;
}

