
/* WARNING: Function: __x86.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */
/* WARNING: Type propagation algorithm not settling */
/* WARNING: Enum "DT": Some values do not have unique names */
/* DWARF original prototype: Pluginobj * claim_file(Plugin_manager * this, Input_file * input_file,
   off_t offset, off_t filesize, Object * elf_object) */

Pluginobj * __thiscall
gold::Plugin_manager::claim_file
          (Plugin_manager *this,Input_file *input_file,off_t offset,off_t filesize,
          Object *elf_object)

{
  File_read *this_00;
  Lock *pLVar1;
  Lock_impl *pLVar2;
  iterator __position;
  Plugin_manager *pPVar3;
  size_t sVar4;
  code *pcVar5;
  pointer ppOVar6;
  int *piVar7;
  bool bVar8;
  int iVar9;
  void *handle;
  int iVar10;
  string *obj_name;
  Pluginobj *pPVar11;
  int claimed;
  undefined4 uStack_14;
  
  uStack_14 = 0xf21db;
  bVar8 = Initialize_lock::initialize(&this->initialize_lock_);
  if (!bVar8) {
                    /* WARNING: Subroutine does not return */
    do_gold_unreachable("../../gold/plugin.cc",0x2da,"claim_file");
  }
  pLVar1 = this->lock_;
  pLVar2 = pLVar1->lock_;
  (*pLVar2->_vptr_Lock_impl[2])(pLVar2);
  iVar9 = (int)(this->objects_).super__Vector_base<gold::Object*,_std::allocator<gold::Object*>_>.
               _M_impl._M_finish -
          (int)(this->objects_).super__Vector_base<gold::Object*,_std::allocator<gold::Object*>_>.
               _M_impl._M_start;
  this->input_file_ = input_file;
  handle = (void *)(iVar9 >> 2);
  this_00 = &input_file->file_;
  (this->plugin_input_file_).name = (input_file->file_).name_._M_dataplus._M_p;
                    /* try { // try from 000f2254 to 000f23a5 has its CatchHandler @ 000f2415 */
  File_read::reopen_descriptor(this_00);
  (this->plugin_input_file_).fd = (input_file->file_).descriptor_;
  (this->plugin_input_file_).offset = offset;
  (this->plugin_input_file_).filesize = filesize;
  (this->plugin_input_file_).handle = handle;
  if (elf_object != (Object *)0x0) {
    __position._M_current =
         (this->objects_).super__Vector_base<gold::Object*,_std::allocator<gold::Object*>_>._M_impl.
         _M_finish;
    if (__position._M_current ==
        (this->objects_).super__Vector_base<gold::Object*,_std::allocator<gold::Object*>_>._M_impl.
        _M_end_of_storage) {
      std::vector<gold::Object*,_std::allocator<gold::Object*>_>::
      _M_realloc_insert<gold::Object*_const&>(&this->objects_,__position,&elf_object);
    }
    else {
      *__position._M_current = elf_object;
      (this->objects_).super__Vector_base<gold::Object*,_std::allocator<gold::Object*>_>._M_impl.
      _M_finish = __position._M_current + 1;
    }
  }
  pPVar3 = (Plugin_manager *)
           (this->plugins_).super__List_base<gold::Plugin*,_std::allocator<gold::Plugin*>_>._M_impl.
           _M_node.super__List_node_base._M_next;
  this->in_claim_file_handler_ = true;
  (this->current_)._M_node = (_List_node_base *)pPVar3;
joined_r0x000f22ac:
  do {
    if (pPVar3 == this) {
      this->in_claim_file_handler_ = false;
      if (this->recorder_ != (Plugin_recorder *)0x0) {
        Plugin_recorder::unclaimed_file(this->recorder_,&this_00->name_,offset,filesize);
      }
      pPVar11 = (Pluginobj *)0x0;
LAB_000f23ab:
      pLVar2 = pLVar1->lock_;
      (*pLVar2->_vptr_Lock_impl[3])(pLVar2);
      return pPVar11;
    }
    sVar4 = (pPVar3->plugins_).super__List_base<gold::Plugin*,_std::allocator<gold::Plugin*>_>.
            _M_impl._M_node._M_size;
    if (this->in_replacement_phase_ == false) {
      pcVar5 = *(code **)(sVar4 + 0x28);
      claimed = 0;
      if ((pcVar5 != (code *)0x0) && ((*pcVar5)(&this->plugin_input_file_,&claimed), claimed != 0))
      {
        this->any_claimed_ = true;
        this->in_claim_file_handler_ = false;
        if (this->recorder_ != (Plugin_recorder *)0x0) {
          obj_name = &elf_object->name_;
          if (elf_object == (Object *)0x0) {
            obj_name = &this_00->name_;
          }
          Plugin_recorder::claimed_file
                    (this->recorder_,obj_name,offset,filesize,
                     (string *)&((this->current_)._M_node[1]._M_next)->_M_prev);
        }
        ppOVar6 = (this->objects_).super__Vector_base<gold::Object*,_std::allocator<gold::Object*>_>
                  ._M_impl._M_start;
        if ((handle < (void *)((int)(this->objects_).
                                    super__Vector_base<gold::Object*,_std::allocator<gold::Object*>_>
                                    ._M_impl._M_finish - (int)ppOVar6 >> 2)) &&
           (piVar7 = *(int **)((int)ppOVar6 + iVar9), iVar10 = (**(code **)(*piVar7 + 0x14))(piVar7)
           , iVar10 != 0)) {
          piVar7 = *(int **)((int)(this->objects_).
                                  super__Vector_base<gold::Object*,_std::allocator<gold::Object*>_>.
                                  _M_impl._M_start + iVar9);
          pPVar11 = (Pluginobj *)(**(code **)(*piVar7 + 0x14))(piVar7);
        }
        else {
                    /* try { // try from 000f23d7 to 000f23f0 has its CatchHandler @ 000f2415 */
          pPVar11 = make_plugin_object(this,(uint)handle);
        }
        goto LAB_000f23ab;
      }
LAB_000f22cf:
      pPVar3 = (Plugin_manager *)((this->current_)._M_node)->_M_next;
      (this->current_)._M_node = (_List_node_base *)pPVar3;
      goto joined_r0x000f22ac;
    }
    pcVar5 = *(code **)(sVar4 + 0x34);
    if (pcVar5 == (code *)0x0) goto LAB_000f22cf;
    (*pcVar5)(&this->plugin_input_file_);
    pPVar3 = (Plugin_manager *)((this->current_)._M_node)->_M_next;
    (this->current_)._M_node = (_List_node_base *)pPVar3;
  } while( true );
}



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

undefined4
FUN_000f21d0(undefined4 *param_1,int param_2,undefined4 param_3,undefined4 param_4,
            undefined4 param_5,undefined4 param_6,int param_7)

{
  undefined4 *puVar1;
  int *piVar2;
  undefined4 *puVar3;
  code *pcVar4;
  char cVar5;
  int iVar6;
  uint uVar7;
  int iVar8;
  int iVar9;
  undefined4 extraout_EDX;
  undefined4 uVar10;
  int local_20 [3];
  undefined4 uStack_14;
  
  uStack_14 = 0xf21db;
  cVar5 = FUN_000622e0(param_1 + 0x29);
  if (cVar5 == '\0') {
                    /* WARNING: Subroutine does not return */
    FUN_0005f0b0("../../gold/plugin.cc",0x2da,"claim_file",extraout_EDX);
  }
  puVar1 = (undefined4 *)param_1[0x28];
  piVar2 = (int *)*puVar1;
  (**(code **)(*piVar2 + 8))(piVar2);
  iVar6 = param_1[5] - param_1[4];
  param_1[10] = param_2;
  uVar7 = iVar6 >> 2;
  iVar8 = param_2 + 0x1c;
  param_1[0xb] = *(undefined4 *)(param_2 + 0x1c);
                    /* try { // try from 000f2254 to 000f23a5 has its CatchHandler @ 000f2415 */
  FUN_0005bce0(iVar8);
  param_1[0xc] = *(undefined4 *)(param_2 + 0x34);
  param_1[0xe] = param_4;
  param_1[0xd] = param_3;
  param_1[0x10] = param_6;
  param_1[0xf] = param_5;
  param_1[0x11] = uVar7;
  if (param_7 != 0) {
    piVar2 = (int *)param_1[5];
    if (piVar2 == (int *)param_1[6]) {
      FUN_000f4070(param_1 + 4,piVar2,&param_7);
    }
    else {
      *piVar2 = param_7;
      param_1[5] = piVar2 + 1;
    }
  }
  puVar3 = (undefined4 *)*param_1;
  *(undefined1 *)((int)param_1 + 99) = 1;
  param_1[3] = puVar3;
joined_r0x000f22ac:
  do {
    if (puVar3 == param_1) {
      *(undefined1 *)((int)param_1 + 99) = 0;
      if (param_1[0x35] != 0) {
        FUN_000ef670(param_1[0x35],iVar8,param_3,param_4,param_5,param_6);
      }
      uVar10 = 0;
LAB_000f23ab:
      piVar2 = (int *)*puVar1;
      (**(code **)(*piVar2 + 0xc))(piVar2);
      return uVar10;
    }
    if (*(char *)((int)param_1 + 0x61) == '\0') {
      pcVar4 = *(code **)(puVar3[2] + 0x28);
      local_20[0] = 0;
      if ((pcVar4 != (code *)0x0) && ((*pcVar4)(param_1 + 0xb,local_20), local_20[0] != 0)) {
        *(undefined1 *)(param_1 + 0x18) = 1;
        *(undefined1 *)((int)param_1 + 99) = 0;
        if (param_1[0x35] != 0) {
          iVar9 = param_7 + 4;
          if (param_7 == 0) {
            iVar9 = iVar8;
          }
          FUN_000ef5d0(param_1[0x35],iVar9,param_3,param_4,param_5,param_6,
                       *(int *)(param_1[3] + 8) + 4);
        }
        if ((uVar7 < (uint)((int)(param_1[5] - param_1[4]) >> 2)) &&
           (piVar2 = *(int **)(param_1[4] + iVar6), iVar8 = (**(code **)(*piVar2 + 0x14))(piVar2),
           iVar8 != 0)) {
          uVar10 = (**(code **)(**(int **)(param_1[4] + iVar6) + 0x14))
                             (*(int **)(param_1[4] + iVar6));
        }
        else {
                    /* try { // try from 000f23d7 to 000f23f0 has its CatchHandler @ 000f2415 */
          uVar10 = FUN_000f1ee0(param_1,uVar7);
        }
        goto LAB_000f23ab;
      }
LAB_000f22cf:
      puVar3 = *(undefined4 **)param_1[3];
      param_1[3] = puVar3;
      goto joined_r0x000f22ac;
    }
    pcVar4 = *(code **)(puVar3[2] + 0x34);
    if (pcVar4 == (code *)0x0) goto LAB_000f22cf;
    (*pcVar4)(param_1 + 0xb);
    puVar3 = *(undefined4 **)param_1[3];
    param_1[3] = puVar3;
  } while( true );
}


PUSH EBP
MOV EBP,ESP
PUSH EDI
PUSH ESI
PUSH EBX
CALL 0x00032730
ADD EBX,0x20fe25
SUB ESP,0x58
MOV EAX,dword ptr [EBP + 0x10]
MOV ESI,dword ptr [EBP + 0x8]
MOV EDX,dword ptr [EBP + 0x14]
MOV EDI,dword ptr [EBP + 0xc]
MOV dword ptr [EBP + -0x38],EAX
MOV EAX,dword ptr [EBP + 0x18]
MOV dword ptr [EBP + -0x34],EDX
MOV EDX,dword ptr [EBP + 0x1c]
MOV dword ptr [EBP + -0x40],EAX
LEA EAX,[ESI + 0xa4]
PUSH EAX
MOV dword ptr [EBP + -0x30],EBX
MOV dword ptr [EBP + -0x3c],EDX
CALL 0x000622e0
ADD ESP,0x10
TEST AL,AL
JZ 0x000f23f9
MOV EAX,dword ptr [ESI + 0xa0]
SUB ESP,0xc
MOV dword ptr [EBP + -0x44],EAX
MOV EAX,dword ptr [EAX]
MOV EDX,dword ptr [EAX]
PUSH EAX
CALL dword ptr [EDX + 0x8]
MOV EAX,dword ptr [ESI + 0x14]
SUB EAX,dword ptr [ESI + 0x10]
MOV dword ptr [ESI + 0x28],EDI
MOV dword ptr [EBP + -0x4c],EAX
SAR EAX,0x2
MOV EBX,dword ptr [EBP + -0x30]
LEA ECX,[EDI + 0x1c]
MOV dword ptr [EBP + -0x2c],EAX
MOV EAX,dword ptr [EDI + 0x1c]
MOV dword ptr [EBP + -0x48],ECX
MOV dword ptr [ESI + 0x2c],EAX
MOV dword ptr [ESP],ECX
CALL 0x0005bce0
MOV EAX,dword ptr [EDI + 0x34]
MOV EDX,dword ptr [EBP + -0x34]
ADD ESP,0x10
MOV dword ptr [ESI + 0x30],EAX
MOV EAX,dword ptr [EBP + -0x38]
MOV dword ptr [ESI + 0x38],EDX
MOV EDX,dword ptr [EBP + -0x3c]
MOV dword ptr [ESI + 0x34],EAX
MOV EAX,dword ptr [EBP + -0x40]
MOV dword ptr [ESI + 0x40],EDX
MOV EDX,dword ptr [EBP + 0x20]
MOV dword ptr [ESI + 0x3c],EAX
MOV EAX,dword ptr [EBP + -0x2c]
MOV dword ptr [ESI + 0x44],EAX
TEST EDX,EDX
JZ 0x000f229b
MOV EAX,dword ptr [ESI + 0x14]
CMP EAX,dword ptr [ESI + 0x18]
JZ 0x000f23e0
MOV dword ptr [EAX],EDX
ADD EAX,0x4
MOV dword ptr [ESI + 0x14],EAX
MOV EAX,dword ptr [ESI]
MOV byte ptr [ESI + 0x63],0x1
LEA EDI,[ESI + 0x2c]
LEA EBX,[EBP + -0x1c]
MOV dword ptr [ESI + 0xc],EAX
CMP EAX,ESI
JNZ 0x000f22db
JMP 0x000f2300
MOV EAX,dword ptr [EAX + 0x28]
MOV dword ptr [EBP + -0x1c],0x0
TEST EAX,EAX
JZ 0x000f22cf
SUB ESP,0x8
PUSH EBX
PUSH EDI
CALL EAX
MOV EAX,dword ptr [EBP + -0x1c]
ADD ESP,0x10
TEST EAX,EAX
JNZ 0x000f2330
MOV EAX,dword ptr [ESI + 0xc]
MOV EAX,dword ptr [EAX]
MOV dword ptr [ESI + 0xc],EAX
CMP EAX,ESI
JZ 0x000f2300
CMP byte ptr [ESI + 0x61],0x0
MOV EAX,dword ptr [EAX + 0x8]
JZ 0x000f22b0
MOV EAX,dword ptr [EAX + 0x34]
TEST EAX,EAX
JZ 0x000f22cf
SUB ESP,0xc
PUSH EDI
CALL EAX
MOV EAX,dword ptr [ESI + 0xc]
ADD ESP,0x10
MOV EAX,dword ptr [EAX]
MOV dword ptr [ESI + 0xc],EAX
CMP EAX,ESI
JNZ 0x000f22db
MOV EAX,dword ptr [ESI + 0xd4]
MOV byte ptr [ESI + 0x63],0x0
TEST EAX,EAX
JZ 0x000f2329
SUB ESP,0x8
PUSH dword ptr [EBP + -0x3c]
PUSH dword ptr [EBP + -0x40]
PUSH dword ptr [EBP + -0x34]
PUSH dword ptr [EBP + -0x38]
PUSH dword ptr [EBP + -0x48]
PUSH EAX
CALL 0x000ef670
ADD ESP,0x20
XOR EBX,EBX
JMP 0x000f23ab
MOV EDX,dword ptr [ESI + 0xd4]
MOV byte ptr [ESI + 0x60],0x1
MOV byte ptr [ESI + 0x63],0x0
TEST EDX,EDX
JZ 0x000f2371
MOV EAX,dword ptr [EBP + 0x20]
TEST EAX,EAX
LEA ECX,[EAX + 0x4]
MOV EAX,dword ptr [ESI + 0xc]
CMOVZ ECX,dword ptr [EBP + -0x48]
SUB ESP,0x4
MOV EAX,dword ptr [EAX + 0x8]
ADD EAX,0x4
PUSH EAX
PUSH dword ptr [EBP + -0x3c]
PUSH dword ptr [EBP + -0x40]
PUSH dword ptr [EBP + -0x34]
PUSH dword ptr [EBP + -0x38]
PUSH ECX
PUSH EDX
CALL 0x000ef5d0
ADD ESP,0x20
MOV EDX,dword ptr [ESI + 0x10]
MOV EAX,dword ptr [ESI + 0x14]
SUB EAX,EDX
SAR EAX,0x2
CMP dword ptr [EBP + -0x2c],EAX
JNC 0x000f23d0
MOV EDI,dword ptr [EBP + -0x4c]
SUB ESP,0xc
MOV EAX,dword ptr [EDX + EDI*0x1]
MOV EDX,dword ptr [EAX]
PUSH EAX
CALL dword ptr [EDX + 0x14]
ADD ESP,0x10
TEST EAX,EAX
JZ 0x000f23d0
MOV EAX,dword ptr [ESI + 0x10]
SUB ESP,0xc
MOV EAX,dword ptr [EAX + EDI*0x1]
MOV EDX,dword ptr [EAX]
PUSH EAX
CALL dword ptr [EDX + 0x14]
MOV EBX,EAX
ADD ESP,0x10
MOV EAX,dword ptr [EBP + -0x44]
SUB ESP,0xc
MOV EDX,dword ptr [EAX]
MOV EAX,dword ptr [EDX]
PUSH EDX
CALL dword ptr [EAX + 0xc]
MOV EAX,EBX
ADD ESP,0x10
LEA ESP,[EBP + -0xc]
POP EBX
POP ESI
POP EDI
POP EBP
RET
SUB ESP,0x8
PUSH dword ptr [EBP + -0x2c]
PUSH ESI
CALL 0x000f1ee0
JMP 0x000f23a6
SUB ESP,0x4
LEA EDX,[EBP + 0x20]
PUSH EDX
PUSH EAX
LEA EAX,[ESI + 0x10]
PUSH EAX
CALL 0x000f4070
ADD ESP,0x10
JMP 0x000f229b
MOV EBX,dword ptr [EBP + -0x30]
PUSH EDX
LEA EAX,[EBX + 0xfff2a9b4]
PUSH EAX
LEA EAX,[EBX + 0xfff2a724]
PUSH 0x2da
PUSH EAX
CALL 0x0005f0b0
(translation_unit "/* WARNING: Function: __i686.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */\n\nundefined4\nFUN_000f21d0(undefined4 *param_1,int param_2,undefined4 param_3,undefined4 param_4,\n            undefined4 param_5,undefined4 param_6,int param_7)\n\n{\n  undefined4 *puVar1;\n  int *piVar2;\n  undefined4 *puVar3;\n  code *pcVar4;\n  char cVar5;\n  int iVar6;\n  uint uVar7;\n  int iVar8;\n  int iVar9;\n  undefined4 extraout_EDX;\n  undefined4 uVar10;\n  int local_20 [3];\n  undefined4 uStack_14;\n  \n  uStack_14 = 0xf21db;\n  cVar5 = FUN_000622e0(param_1 + 0x29);\n  if (cVar5 == '\0') {\n                    /* WARNING: Subroutine does not return */\n    FUN_0005f0b0("../../gold/plugin.cc",0x2da,"claim_file",extraout_EDX);\n  }\n  puVar1 = (undefined4 *)param_1[0x28];\n  piVar2 = (int *)*puVar1;\n  (**(code **)(*piVar2 + 8))(piVar2);\n  iVar6 = param_1[5] - param_1[4];\n  param_1[10] = param_2;\n  uVar7 = iVar6 >> 2;\n  iVar8 = param_2 + 0x1c;\n  param_1[0xb] = *(undefined4 *)(param_2 + 0x1c);\n                    /* try { // try from 000f2254 to 000f23a5 has its CatchHandler @ 000f2415 */\n  FUN_0005bce0(iVar8);\n  param_1[0xc] = *(undefined4 *)(param_2 + 0x34);\n  param_1[0xe] = param_4;\n  param_1[0xd] = param_3;\n  param_1[0x10] = param_6;\n  param_1[0xf] = param_5;\n  param_1[0x11] = uVar7;\n  if (param_7 != 0) {\n    piVar2 = (int *)param_1[5];\n    if (piVar2 == (int *)param_1[6]) {\n      FUN_000f4070(param_1 + 4,piVar2,&param_7);\n    }\n    else {\n      *piVar2 = param_7;\n      param_1[5] = piVar2 + 1;\n    }\n  }\n  puVar3 = (undefined4 *)*param_1;\n  *(undefined1 *)((int)param_1 + 99) = 1;\n  param_1[3] = puVar3;\njoined_r0x000f22ac:\n  do {\n    if (puVar3 == param_1) {\n      *(undefined1 *)((int)param_1 + 99) = 0;\n      if (param_1[0x35] != 0) {\n        FUN_000ef670(param_1[0x35],iVar8,param_3,param_4,param_5,param_6);\n      }\n      uVar10 = 0;\nLAB_000f23ab:\n      piVar2 = (int *)*puVar1;\n      (**(code **)(*piVar2 + 0xc))(piVar2);\n      return uVar10;\n    }\n    if (*(char *)((int)param_1 + 0x61) == '\0') {\n      pcVar4 = *(code **)(puVar3[2] + 0x28);\n      local_20[0] = 0;\n      if ((pcVar4 != (code *)0x0) && ((*pcVar4)(param_1 + 0xb,local_20), local_20[0] != 0)) {\n        *(undefined1 *)(param_1 + 0x18) = 1;\n        *(undefined1 *)((int)param_1 + 99) = 0;\n        if (param_1[0x35] != 0) {\n          iVar9 = param_7 + 4;\n          if (param_7 == 0) {\n            iVar9 = iVar8;\n          }\n          FUN_000ef5d0(param_1[0x35],iVar9,param_3,param_4,param_5,param_6,\n                       *(int *)(param_1[3] + 8) + 4);\n        }\n        if ((uVar7 < (uint)((int)(param_1[5] - param_1[4]) >> 2)) &&\n           (piVar2 = *(int **)(param_1[4] + iVar6), iVar8 = (**(code **)(*piVar2 + 0x14))(piVar2),\n           iVar8 != 0)) {\n          uVar10 = (**(code **)(**(int **)(param_1[4] + iVar6) + 0x14))\n                             (*(int **)(param_1[4] + iVar6));\n        }\n        else {\n                    /* try { // try from 000f23d7 to 000f23f0 has its CatchHandler @ 000f2415 */\n          uVar10 = FUN_000f1ee0(param_1,uVar7);\n        }\n        goto LAB_000f23ab;\n      }\nLAB_000f22cf:\n      puVar3 = *(undefined4 **)param_1[3];\n      param_1[3] = puVar3;\n      goto joined_r0x000f22ac;\n    }\n    pcVar4 = *(code **)(puVar3[2] + 0x34);\n    if (pcVar4 == (code *)0x0) goto LAB_000f22cf;\n    (*pcVar4)(param_1 + 0xb);\n    puVar3 = *(undefined4 **)param_1[3];\n    param_1[3] = puVar3;\n  } while( true );\n}\n\n" comment (function_definition "undefined4\nFUN_000f21d0(undefined4 *param_1,int param_2,undefined4 param_3,undefined4 param_4,\n            undefined4 param_5,undefined4 param_6,int param_7)\n\n{\n  undefined4 *puVar1;\n  int *piVar2;\n  undefined4 *puVar3;\n  code *pcVar4;\n  char cVar5;\n  int iVar6;\n  uint uVar7;\n  int iVar8;\n  int iVar9;\n  undefined4 extraout_EDX;\n  undefined4 uVar10;\n  int local_20 [3];\n  undefined4 uStack_14;\n  \n  uStack_14 = 0xf21db;\n  cVar5 = FUN_000622e0(param_1 + 0x29);\n  if (cVar5 == '\0') {\n                    /* WARNING: Subroutine does not return */\n    FUN_0005f0b0("../../gold/plugin.cc",0x2da,"claim_file",extraout_EDX);\n  }\n  puVar1 = (undefined4 *)param_1[0x28];\n  piVar2 = (int *)*puVar1;\n  (**(code **)(*piVar2 + 8))(piVar2);\n  iVar6 = param_1[5] - param_1[4];\n  param_1[10] = param_2;\n  uVar7 = iVar6 >> 2;\n  iVar8 = param_2 + 0x1c;\n  param_1[0xb] = *(undefined4 *)(param_2 + 0x1c);\n                    /* try { // try from 000f2254 to 000f23a5 has its CatchHandler @ 000f2415 */\n  FUN_0005bce0(iVar8);\n  param_1[0xc] = *(undefined4 *)(param_2 + 0x34);\n  param_1[0xe] = param_4;\n  param_1[0xd] = param_3;\n  param_1[0x10] = param_6;\n  param_1[0xf] = param_5;\n  param_1[0x11] = uVar7;\n  if (param_7 != 0) {\n    piVar2 = (int *)param_1[5];\n    if (piVar2 == (int *)param_1[6]) {\n      FUN_000f4070(param_1 + 4,piVar2,&param_7);\n    }\n    else {\n      *piVar2 = param_7;\n      param_1[5] = piVar2 + 1;\n    }\n  }\n  puVar3 = (undefined4 *)*param_1;\n  *(undefined1 *)((int)param_1 + 99) = 1;\n  param_1[3] = puVar3;\njoined_r0x000f22ac:\n  do {\n    if (puVar3 == param_1) {\n      *(undefined1 *)((int)param_1 + 99) = 0;\n      if (param_1[0x35] != 0) {\n        FUN_000ef670(param_1[0x35],iVar8,param_3,param_4,param_5,param_6);\n      }\n      uVar10 = 0;\nLAB_000f23ab:\n      piVar2 = (int *)*puVar1;\n      (**(code **)(*piVar2 + 0xc))(piVar2);\n      return uVar10;\n    }\n    if (*(char *)((int)param_1 + 0x61) == '\0') {\n      pcVar4 = *(code **)(puVar3[2] + 0x28);\n      local_20[0] = 0;\n      if ((pcVar4 != (code *)0x0) && ((*pcVar4)(param_1 + 0xb,local_20), local_20[0] != 0)) {\n        *(undefined1 *)(param_1 + 0x18) = 1;\n        *(undefined1 *)((int)param_1 + 99) = 0;\n        if (param_1[0x35] != 0) {\n          iVar9 = param_7 + 4;\n          if (param_7 == 0) {\n            iVar9 = iVar8;\n          }\n          FUN_000ef5d0(param_1[0x35],iVar9,param_3,param_4,param_5,param_6,\n                       *(int *)(param_1[3] + 8) + 4);\n        }\n        if ((uVar7 < (uint)((int)(param_1[5] - param_1[4]) >> 2)) &&\n           (piVar2 = *(int **)(param_1[4] + iVar6), iVar8 = (**(code **)(*piVar2 + 0x14))(piVar2),\n           iVar8 != 0)) {\n          uVar10 = (**(code **)(**(int **)(param_1[4] + iVar6) + 0x14))\n                             (*(int **)(param_1[4] + iVar6));\n        }\n        else {\n                    /* try { // try from 000f23d7 to 000f23f0 has its CatchHandler @ 000f2415 */\n          uVar10 = FUN_000f1ee0(param_1,uVar7);\n        }\n        goto LAB_000f23ab;\n      }\nLAB_000f22cf:\n      puVar3 = *(undefined4 **)param_1[3];\n      param_1[3] = puVar3;\n      goto joined_r0x000f22ac;\n    }\n    pcVar4 = *(code **)(puVar3[2] + 0x34);\n    if (pcVar4 == (code *)0x0) goto LAB_000f22cf;\n    (*pcVar4)(param_1 + 0xb);\n    puVar3 = *(undefined4 **)param_1[3];\n    param_1[3] = puVar3;\n  } while( true );\n}" type_identifier (function_declarator "FUN_000f21d0(undefined4 *param_1,int param_2,undefined4 param_3,undefined4 param_4,\n            undefined4 param_5,undefined4 param_6,int param_7)" identifier (parameter_list "(undefined4 *param_1,int param_2,undefined4 param_3,undefined4 param_4,\n            undefined4 param_5,undefined4 param_6,int param_7)" ( (parameter_declaration "undefined4 *param_1" type_identifier (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "int param_2" primitive_type identifier) , (parameter_declaration "undefined4 param_3" type_identifier identifier) , (parameter_declaration "undefined4 param_4" type_identifier identifier) , (parameter_declaration "undefined4 param_5" type_identifier identifier) , (parameter_declaration "undefined4 param_6" type_identifier identifier) , (parameter_declaration "int param_7" primitive_type identifier) ))) (compound_statement "{\n  undefined4 *puVar1;\n  int *piVar2;\n  undefined4 *puVar3;\n  code *pcVar4;\n  char cVar5;\n  int iVar6;\n  uint uVar7;\n  int iVar8;\n  int iVar9;\n  undefined4 extraout_EDX;\n  undefined4 uVar10;\n  int local_20 [3];\n  undefined4 uStack_14;\n  \n  uStack_14 = 0xf21db;\n  cVar5 = FUN_000622e0(param_1 + 0x29);\n  if (cVar5 == '\0') {\n                    /* WARNING: Subroutine does not return */\n    FUN_0005f0b0("../../gold/plugin.cc",0x2da,"claim_file",extraout_EDX);\n  }\n  puVar1 = (undefined4 *)param_1[0x28];\n  piVar2 = (int *)*puVar1;\n  (**(code **)(*piVar2 + 8))(piVar2);\n  iVar6 = param_1[5] - param_1[4];\n  param_1[10] = param_2;\n  uVar7 = iVar6 >> 2;\n  iVar8 = param_2 + 0x1c;\n  param_1[0xb] = *(undefined4 *)(param_2 + 0x1c);\n                    /* try { // try from 000f2254 to 000f23a5 has its CatchHandler @ 000f2415 */\n  FUN_0005bce0(iVar8);\n  param_1[0xc] = *(undefined4 *)(param_2 + 0x34);\n  param_1[0xe] = param_4;\n  param_1[0xd] = param_3;\n  param_1[0x10] = param_6;\n  param_1[0xf] = param_5;\n  param_1[0x11] = uVar7;\n  if (param_7 != 0) {\n    piVar2 = (int *)param_1[5];\n    if (piVar2 == (int *)param_1[6]) {\n      FUN_000f4070(param_1 + 4,piVar2,&param_7);\n    }\n    else {\n      *piVar2 = param_7;\n      param_1[5] = piVar2 + 1;\n    }\n  }\n  puVar3 = (undefined4 *)*param_1;\n  *(undefined1 *)((int)param_1 + 99) = 1;\n  param_1[3] = puVar3;\njoined_r0x000f22ac:\n  do {\n    if (puVar3 == param_1) {\n      *(undefined1 *)((int)param_1 + 99) = 0;\n      if (param_1[0x35] != 0) {\n        FUN_000ef670(param_1[0x35],iVar8,param_3,param_4,param_5,param_6);\n      }\n      uVar10 = 0;\nLAB_000f23ab:\n      piVar2 = (int *)*puVar1;\n      (**(code **)(*piVar2 + 0xc))(piVar2);\n      return uVar10;\n    }\n    if (*(char *)((int)param_1 + 0x61) == '\0') {\n      pcVar4 = *(code **)(puVar3[2] + 0x28);\n      local_20[0] = 0;\n      if ((pcVar4 != (code *)0x0) && ((*pcVar4)(param_1 + 0xb,local_20), local_20[0] != 0)) {\n        *(undefined1 *)(param_1 + 0x18) = 1;\n        *(undefined1 *)((int)param_1 + 99) = 0;\n        if (param_1[0x35] != 0) {\n          iVar9 = param_7 + 4;\n          if (param_7 == 0) {\n            iVar9 = iVar8;\n          }\n          FUN_000ef5d0(param_1[0x35],iVar9,param_3,param_4,param_5,param_6,\n                       *(int *)(param_1[3] + 8) + 4);\n        }\n        if ((uVar7 < (uint)((int)(param_1[5] - param_1[4]) >> 2)) &&\n           (piVar2 = *(int **)(param_1[4] + iVar6), iVar8 = (**(code **)(*piVar2 + 0x14))(piVar2),\n           iVar8 != 0)) {\n          uVar10 = (**(code **)(**(int **)(param_1[4] + iVar6) + 0x14))\n                             (*(int **)(param_1[4] + iVar6));\n        }\n        else {\n                    /* try { // try from 000f23d7 to 000f23f0 has its CatchHandler @ 000f2415 */\n          uVar10 = FUN_000f1ee0(param_1,uVar7);\n        }\n        goto LAB_000f23ab;\n      }\nLAB_000f22cf:\n      puVar3 = *(undefined4 **)param_1[3];\n      param_1[3] = puVar3;\n      goto joined_r0x000f22ac;\n    }\n    pcVar4 = *(code **)(puVar3[2] + 0x34);\n    if (pcVar4 == (code *)0x0) goto LAB_000f22cf;\n    (*pcVar4)(param_1 + 0xb);\n    puVar3 = *(undefined4 **)param_1[3];\n    param_1[3] = puVar3;\n  } while( true );\n}" { (declaration "undefined4 *puVar1;" type_identifier (pointer_declarator "*puVar1" * identifier) ;) (declaration "int *piVar2;" primitive_type (pointer_declarator "*piVar2" * identifier) ;) (declaration "undefined4 *puVar3;" type_identifier (pointer_declarator "*puVar3" * identifier) ;) (declaration "code *pcVar4;" type_identifier (pointer_declarator "*pcVar4" * identifier) ;) (declaration "char cVar5;" primitive_type identifier ;) (declaration "int iVar6;" primitive_type identifier ;) (declaration "uint uVar7;" type_identifier identifier ;) (declaration "int iVar8;" primitive_type identifier ;) (declaration "int iVar9;" primitive_type identifier ;) (declaration "undefined4 extraout_EDX;" type_identifier identifier ;) (declaration "undefined4 uVar10;" type_identifier identifier ;) (declaration "int local_20 [3];" primitive_type (array_declarator "local_20 [3]" identifier [ number_literal ]) ;) (declaration "undefined4 uStack_14;" type_identifier identifier ;) (expression_statement "uStack_14 = 0xf21db;" (assignment_expression "uStack_14 = 0xf21db" identifier = number_literal) ;) (expression_statement "cVar5 = FUN_000622e0(param_1 + 0x29);" (assignment_expression "cVar5 = FUN_000622e0(param_1 + 0x29)" identifier = (call_expression "FUN_000622e0(param_1 + 0x29)" identifier (argument_list "(param_1 + 0x29)" ( (binary_expression "param_1 + 0x29" identifier + number_literal) )))) ;) (if_statement "if (cVar5 == '\0') {\n                    /* WARNING: Subroutine does not return */\n    FUN_0005f0b0("../../gold/plugin.cc",0x2da,"claim_file",extraout_EDX);\n  }" if (parenthesized_expression "(cVar5 == '\0')" ( (binary_expression "cVar5 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n    FUN_0005f0b0("../../gold/plugin.cc",0x2da,"claim_file",extraout_EDX);\n  }" { comment (expression_statement "FUN_0005f0b0("../../gold/plugin.cc",0x2da,"claim_file",extraout_EDX);" (call_expression "FUN_0005f0b0("../../gold/plugin.cc",0x2da,"claim_file",extraout_EDX)" identifier (argument_list "("../../gold/plugin.cc",0x2da,"claim_file",extraout_EDX)" ( (string_literal ""../../gold/plugin.cc"" " string_content ") , number_literal , (string_literal ""claim_file"" " string_content ") , identifier ))) ;) })) (expression_statement "puVar1 = (undefined4 *)param_1[0x28];" (assignment_expression "puVar1 = (undefined4 *)param_1[0x28]" identifier = (cast_expression "(undefined4 *)param_1[0x28]" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[0x28]" identifier [ number_literal ]))) ;) (expression_statement "piVar2 = (int *)*puVar1;" (assignment_expression "piVar2 = (int *)*puVar1" identifier = (cast_expression "(int *)*puVar1" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar1" * identifier))) ;) (expression_statement "(**(code **)(*piVar2 + 8))(piVar2);" (call_expression "(**(code **)(*piVar2 + 8))(piVar2)" (parenthesized_expression "(**(code **)(*piVar2 + 8))" ( (pointer_expression "**(code **)(*piVar2 + 8)" * (pointer_expression "*(code **)(*piVar2 + 8)" * (cast_expression "(code **)(*piVar2 + 8)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*piVar2 + 8)" ( (binary_expression "*piVar2 + 8" (pointer_expression "*piVar2" * identifier) + number_literal) ))))) )) (argument_list "(piVar2)" ( identifier ))) ;) (expression_statement "iVar6 = param_1[5] - param_1[4];" (assignment_expression "iVar6 = param_1[5] - param_1[4]" identifier = (binary_expression "param_1[5] - param_1[4]" (subscript_expression "param_1[5]" identifier [ number_literal ]) - (subscript_expression "param_1[4]" identifier [ number_literal ]))) ;) (expression_statement "param_1[10] = param_2;" (assignment_expression "param_1[10] = param_2" (subscript_expression "param_1[10]" identifier [ number_literal ]) = identifier) ;) (expression_statement "uVar7 = iVar6 >> 2;" (assignment_expression "uVar7 = iVar6 >> 2" identifier = (binary_expression "iVar6 >> 2" identifier >> number_literal)) ;) (expression_statement "iVar8 = param_2 + 0x1c;" (assignment_expression "iVar8 = param_2 + 0x1c" identifier = (binary_expression "param_2 + 0x1c" identifier + number_literal)) ;) (expression_statement "param_1[0xb] = *(undefined4 *)(param_2 + 0x1c);" (assignment_expression "param_1[0xb] = *(undefined4 *)(param_2 + 0x1c)" (subscript_expression "param_1[0xb]" identifier [ number_literal ]) = (pointer_expression "*(undefined4 *)(param_2 + 0x1c)" * (cast_expression "(undefined4 *)(param_2 + 0x1c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x1c)" ( (binary_expression "param_2 + 0x1c" identifier + number_literal) ))))) ;) comment (expression_statement "FUN_0005bce0(iVar8);" (call_expression "FUN_0005bce0(iVar8)" identifier (argument_list "(iVar8)" ( identifier ))) ;) (expression_statement "param_1[0xc] = *(undefined4 *)(param_2 + 0x34);" (assignment_expression "param_1[0xc] = *(undefined4 *)(param_2 + 0x34)" (subscript_expression "param_1[0xc]" identifier [ number_literal ]) = (pointer_expression "*(undefined4 *)(param_2 + 0x34)" * (cast_expression "(undefined4 *)(param_2 + 0x34)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x34)" ( (binary_expression "param_2 + 0x34" identifier + number_literal) ))))) ;) (expression_statement "param_1[0xe] = param_4;" (assignment_expression "param_1[0xe] = param_4" (subscript_expression "param_1[0xe]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_1[0xd] = param_3;" (assignment_expression "param_1[0xd] = param_3" (subscript_expression "param_1[0xd]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_1[0x10] = param_6;" (assignment_expression "param_1[0x10] = param_6" (subscript_expression "param_1[0x10]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_1[0xf] = param_5;" (assignment_expression "param_1[0xf] = param_5" (subscript_expression "param_1[0xf]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_1[0x11] = uVar7;" (assignment_expression "param_1[0x11] = uVar7" (subscript_expression "param_1[0x11]" identifier [ number_literal ]) = identifier) ;) (if_statement "if (param_7 != 0) {\n    piVar2 = (int *)param_1[5];\n    if (piVar2 == (int *)param_1[6]) {\n      FUN_000f4070(param_1 + 4,piVar2,&param_7);\n    }\n    else {\n      *piVar2 = param_7;\n      param_1[5] = piVar2 + 1;\n    }\n  }" if (parenthesized_expression "(param_7 != 0)" ( (binary_expression "param_7 != 0" identifier != number_literal) )) (compound_statement "{\n    piVar2 = (int *)param_1[5];\n    if (piVar2 == (int *)param_1[6]) {\n      FUN_000f4070(param_1 + 4,piVar2,&param_7);\n    }\n    else {\n      *piVar2 = param_7;\n      param_1[5] = piVar2 + 1;\n    }\n  }" { (expression_statement "piVar2 = (int *)param_1[5];" (assignment_expression "piVar2 = (int *)param_1[5]" identifier = (cast_expression "(int *)param_1[5]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[5]" identifier [ number_literal ]))) ;) (if_statement "if (piVar2 == (int *)param_1[6]) {\n      FUN_000f4070(param_1 + 4,piVar2,&param_7);\n    }\n    else {\n      *piVar2 = param_7;\n      param_1[5] = piVar2 + 1;\n    }" if (parenthesized_expression "(piVar2 == (int *)param_1[6])" ( (binary_expression "piVar2 == (int *)param_1[6]" identifier == (cast_expression "(int *)param_1[6]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[6]" identifier [ number_literal ]))) )) (compound_statement "{\n      FUN_000f4070(param_1 + 4,piVar2,&param_7);\n    }" { (expression_statement "FUN_000f4070(param_1 + 4,piVar2,&param_7);" (call_expression "FUN_000f4070(param_1 + 4,piVar2,&param_7)" identifier (argument_list "(param_1 + 4,piVar2,&param_7)" ( (binary_expression "param_1 + 4" identifier + number_literal) , identifier , (pointer_expression "&param_7" & identifier) ))) ;) }) (else_clause "else {\n      *piVar2 = param_7;\n      param_1[5] = piVar2 + 1;\n    }" else (compound_statement "{\n      *piVar2 = param_7;\n      param_1[5] = piVar2 + 1;\n    }" { (expression_statement "*piVar2 = param_7;" (assignment_expression "*piVar2 = param_7" (pointer_expression "*piVar2" * identifier) = identifier) ;) (expression_statement "param_1[5] = piVar2 + 1;" (assignment_expression "param_1[5] = piVar2 + 1" (subscript_expression "param_1[5]" identifier [ number_literal ]) = (binary_expression "piVar2 + 1" identifier + number_literal)) ;) }))) })) (expression_statement "puVar3 = (undefined4 *)*param_1;" (assignment_expression "puVar3 = (undefined4 *)*param_1" identifier = (cast_expression "(undefined4 *)*param_1" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*param_1" * identifier))) ;) (expression_statement "*(undefined1 *)((int)param_1 + 99) = 1;" (assignment_expression "*(undefined1 *)((int)param_1 + 99) = 1" (pointer_expression "*(undefined1 *)((int)param_1 + 99)" * (cast_expression "(undefined1 *)((int)param_1 + 99)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_1 + 99)" ( (binary_expression "(int)param_1 + 99" (cast_expression "(int)param_1" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) (expression_statement "param_1[3] = puVar3;" (assignment_expression "param_1[3] = puVar3" (subscript_expression "param_1[3]" identifier [ number_literal ]) = identifier) ;) (labeled_statement "joined_r0x000f22ac:\n  do {\n    if (puVar3 == param_1) {\n      *(undefined1 *)((int)param_1 + 99) = 0;\n      if (param_1[0x35] != 0) {\n        FUN_000ef670(param_1[0x35],iVar8,param_3,param_4,param_5,param_6);\n      }\n      uVar10 = 0;\nLAB_000f23ab:\n      piVar2 = (int *)*puVar1;\n      (**(code **)(*piVar2 + 0xc))(piVar2);\n      return uVar10;\n    }\n    if (*(char *)((int)param_1 + 0x61) == '\0') {\n      pcVar4 = *(code **)(puVar3[2] + 0x28);\n      local_20[0] = 0;\n      if ((pcVar4 != (code *)0x0) && ((*pcVar4)(param_1 + 0xb,local_20), local_20[0] != 0)) {\n        *(undefined1 *)(param_1 + 0x18) = 1;\n        *(undefined1 *)((int)param_1 + 99) = 0;\n        if (param_1[0x35] != 0) {\n          iVar9 = param_7 + 4;\n          if (param_7 == 0) {\n            iVar9 = iVar8;\n          }\n          FUN_000ef5d0(param_1[0x35],iVar9,param_3,param_4,param_5,param_6,\n                       *(int *)(param_1[3] + 8) + 4);\n        }\n        if ((uVar7 < (uint)((int)(param_1[5] - param_1[4]) >> 2)) &&\n           (piVar2 = *(int **)(param_1[4] + iVar6), iVar8 = (**(code **)(*piVar2 + 0x14))(piVar2),\n           iVar8 != 0)) {\n          uVar10 = (**(code **)(**(int **)(param_1[4] + iVar6) + 0x14))\n                             (*(int **)(param_1[4] + iVar6));\n        }\n        else {\n                    /* try { // try from 000f23d7 to 000f23f0 has its CatchHandler @ 000f2415 */\n          uVar10 = FUN_000f1ee0(param_1,uVar7);\n        }\n        goto LAB_000f23ab;\n      }\nLAB_000f22cf:\n      puVar3 = *(undefined4 **)param_1[3];\n      param_1[3] = puVar3;\n      goto joined_r0x000f22ac;\n    }\n    pcVar4 = *(code **)(puVar3[2] + 0x34);\n    if (pcVar4 == (code *)0x0) goto LAB_000f22cf;\n    (*pcVar4)(param_1 + 0xb);\n    puVar3 = *(undefined4 **)param_1[3];\n    param_1[3] = puVar3;\n  } while( true );" statement_identifier : (do_statement "do {\n    if (puVar3 == param_1) {\n      *(undefined1 *)((int)param_1 + 99) = 0;\n      if (param_1[0x35] != 0) {\n        FUN_000ef670(param_1[0x35],iVar8,param_3,param_4,param_5,param_6);\n      }\n      uVar10 = 0;\nLAB_000f23ab:\n      piVar2 = (int *)*puVar1;\n      (**(code **)(*piVar2 + 0xc))(piVar2);\n      return uVar10;\n    }\n    if (*(char *)((int)param_1 + 0x61) == '\0') {\n      pcVar4 = *(code **)(puVar3[2] + 0x28);\n      local_20[0] = 0;\n      if ((pcVar4 != (code *)0x0) && ((*pcVar4)(param_1 + 0xb,local_20), local_20[0] != 0)) {\n        *(undefined1 *)(param_1 + 0x18) = 1;\n        *(undefined1 *)((int)param_1 + 99) = 0;\n        if (param_1[0x35] != 0) {\n          iVar9 = param_7 + 4;\n          if (param_7 == 0) {\n            iVar9 = iVar8;\n          }\n          FUN_000ef5d0(param_1[0x35],iVar9,param_3,param_4,param_5,param_6,\n                       *(int *)(param_1[3] + 8) + 4);\n        }\n        if ((uVar7 < (uint)((int)(param_1[5] - param_1[4]) >> 2)) &&\n           (piVar2 = *(int **)(param_1[4] + iVar6), iVar8 = (**(code **)(*piVar2 + 0x14))(piVar2),\n           iVar8 != 0)) {\n          uVar10 = (**(code **)(**(int **)(param_1[4] + iVar6) + 0x14))\n                             (*(int **)(param_1[4] + iVar6));\n        }\n        else {\n                    /* try { // try from 000f23d7 to 000f23f0 has its CatchHandler @ 000f2415 */\n          uVar10 = FUN_000f1ee0(param_1,uVar7);\n        }\n        goto LAB_000f23ab;\n      }\nLAB_000f22cf:\n      puVar3 = *(undefined4 **)param_1[3];\n      param_1[3] = puVar3;\n      goto joined_r0x000f22ac;\n    }\n    pcVar4 = *(code **)(puVar3[2] + 0x34);\n    if (pcVar4 == (code *)0x0) goto LAB_000f22cf;\n    (*pcVar4)(param_1 + 0xb);\n    puVar3 = *(undefined4 **)param_1[3];\n    param_1[3] = puVar3;\n  } while( true );" do (compound_statement "{\n    if (puVar3 == param_1) {\n      *(undefined1 *)((int)param_1 + 99) = 0;\n      if (param_1[0x35] != 0) {\n        FUN_000ef670(param_1[0x35],iVar8,param_3,param_4,param_5,param_6);\n      }\n      uVar10 = 0;\nLAB_000f23ab:\n      piVar2 = (int *)*puVar1;\n      (**(code **)(*piVar2 + 0xc))(piVar2);\n      return uVar10;\n    }\n    if (*(char *)((int)param_1 + 0x61) == '\0') {\n      pcVar4 = *(code **)(puVar3[2] + 0x28);\n      local_20[0] = 0;\n      if ((pcVar4 != (code *)0x0) && ((*pcVar4)(param_1 + 0xb,local_20), local_20[0] != 0)) {\n        *(undefined1 *)(param_1 + 0x18) = 1;\n        *(undefined1 *)((int)param_1 + 99) = 0;\n        if (param_1[0x35] != 0) {\n          iVar9 = param_7 + 4;\n          if (param_7 == 0) {\n            iVar9 = iVar8;\n          }\n          FUN_000ef5d0(param_1[0x35],iVar9,param_3,param_4,param_5,param_6,\n                       *(int *)(param_1[3] + 8) + 4);\n        }\n        if ((uVar7 < (uint)((int)(param_1[5] - param_1[4]) >> 2)) &&\n           (piVar2 = *(int **)(param_1[4] + iVar6), iVar8 = (**(code **)(*piVar2 + 0x14))(piVar2),\n           iVar8 != 0)) {\n          uVar10 = (**(code **)(**(int **)(param_1[4] + iVar6) + 0x14))\n                             (*(int **)(param_1[4] + iVar6));\n        }\n        else {\n                    /* try { // try from 000f23d7 to 000f23f0 has its CatchHandler @ 000f2415 */\n          uVar10 = FUN_000f1ee0(param_1,uVar7);\n        }\n        goto LAB_000f23ab;\n      }\nLAB_000f22cf:\n      puVar3 = *(undefined4 **)param_1[3];\n      param_1[3] = puVar3;\n      goto joined_r0x000f22ac;\n    }\n    pcVar4 = *(code **)(puVar3[2] + 0x34);\n    if (pcVar4 == (code *)0x0) goto LAB_000f22cf;\n    (*pcVar4)(param_1 + 0xb);\n    puVar3 = *(undefined4 **)param_1[3];\n    param_1[3] = puVar3;\n  }" { (if_statement "if (puVar3 == param_1) {\n      *(undefined1 *)((int)param_1 + 99) = 0;\n      if (param_1[0x35] != 0) {\n        FUN_000ef670(param_1[0x35],iVar8,param_3,param_4,param_5,param_6);\n      }\n      uVar10 = 0;\nLAB_000f23ab:\n      piVar2 = (int *)*puVar1;\n      (**(code **)(*piVar2 + 0xc))(piVar2);\n      return uVar10;\n    }" if (parenthesized_expression "(puVar3 == param_1)" ( (binary_expression "puVar3 == param_1" identifier == identifier) )) (compound_statement "{\n      *(undefined1 *)((int)param_1 + 99) = 0;\n      if (param_1[0x35] != 0) {\n        FUN_000ef670(param_1[0x35],iVar8,param_3,param_4,param_5,param_6);\n      }\n      uVar10 = 0;\nLAB_000f23ab:\n      piVar2 = (int *)*puVar1;\n      (**(code **)(*piVar2 + 0xc))(piVar2);\n      return uVar10;\n    }" { (expression_statement "*(undefined1 *)((int)param_1 + 99) = 0;" (assignment_expression "*(undefined1 *)((int)param_1 + 99) = 0" (pointer_expression "*(undefined1 *)((int)param_1 + 99)" * (cast_expression "(undefined1 *)((int)param_1 + 99)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_1 + 99)" ( (binary_expression "(int)param_1 + 99" (cast_expression "(int)param_1" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) (if_statement "if (param_1[0x35] != 0) {\n        FUN_000ef670(param_1[0x35],iVar8,param_3,param_4,param_5,param_6);\n      }" if (parenthesized_expression "(param_1[0x35] != 0)" ( (binary_expression "param_1[0x35] != 0" (subscript_expression "param_1[0x35]" identifier [ number_literal ]) != number_literal) )) (compound_statement "{\n        FUN_000ef670(param_1[0x35],iVar8,param_3,param_4,param_5,param_6);\n      }" { (expression_statement "FUN_000ef670(param_1[0x35],iVar8,param_3,param_4,param_5,param_6);" (call_expression "FUN_000ef670(param_1[0x35],iVar8,param_3,param_4,param_5,param_6)" identifier (argument_list "(param_1[0x35],iVar8,param_3,param_4,param_5,param_6)" ( (subscript_expression "param_1[0x35]" identifier [ number_literal ]) , identifier , identifier , identifier , identifier , identifier ))) ;) })) (expression_statement "uVar10 = 0;" (assignment_expression "uVar10 = 0" identifier = number_literal) ;) (labeled_statement "LAB_000f23ab:\n      piVar2 = (int *)*puVar1;" statement_identifier : (expression_statement "piVar2 = (int *)*puVar1;" (assignment_expression "piVar2 = (int *)*puVar1" identifier = (cast_expression "(int *)*puVar1" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar1" * identifier))) ;)) (expression_statement "(**(code **)(*piVar2 + 0xc))(piVar2);" (call_expression "(**(code **)(*piVar2 + 0xc))(piVar2)" (parenthesized_expression "(**(code **)(*piVar2 + 0xc))" ( (pointer_expression "**(code **)(*piVar2 + 0xc)" * (pointer_expression "*(code **)(*piVar2 + 0xc)" * (cast_expression "(code **)(*piVar2 + 0xc)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*piVar2 + 0xc)" ( (binary_expression "*piVar2 + 0xc" (pointer_expression "*piVar2" * identifier) + number_literal) ))))) )) (argument_list "(piVar2)" ( identifier ))) ;) (return_statement "return uVar10;" return identifier ;) })) (if_statement "if (*(char *)((int)param_1 + 0x61) == '\0') {\n      pcVar4 = *(code **)(puVar3[2] + 0x28);\n      local_20[0] = 0;\n      if ((pcVar4 != (code *)0x0) && ((*pcVar4)(param_1 + 0xb,local_20), local_20[0] != 0)) {\n        *(undefined1 *)(param_1 + 0x18) = 1;\n        *(undefined1 *)((int)param_1 + 99) = 0;\n        if (param_1[0x35] != 0) {\n          iVar9 = param_7 + 4;\n          if (param_7 == 0) {\n            iVar9 = iVar8;\n          }\n          FUN_000ef5d0(param_1[0x35],iVar9,param_3,param_4,param_5,param_6,\n                       *(int *)(param_1[3] + 8) + 4);\n        }\n        if ((uVar7 < (uint)((int)(param_1[5] - param_1[4]) >> 2)) &&\n           (piVar2 = *(int **)(param_1[4] + iVar6), iVar8 = (**(code **)(*piVar2 + 0x14))(piVar2),\n           iVar8 != 0)) {\n          uVar10 = (**(code **)(**(int **)(param_1[4] + iVar6) + 0x14))\n                             (*(int **)(param_1[4] + iVar6));\n        }\n        else {\n                    /* try { // try from 000f23d7 to 000f23f0 has its CatchHandler @ 000f2415 */\n          uVar10 = FUN_000f1ee0(param_1,uVar7);\n        }\n        goto LAB_000f23ab;\n      }\nLAB_000f22cf:\n      puVar3 = *(undefined4 **)param_1[3];\n      param_1[3] = puVar3;\n      goto joined_r0x000f22ac;\n    }" if (parenthesized_expression "(*(char *)((int)param_1 + 0x61) == '\0')" ( (binary_expression "*(char *)((int)param_1 + 0x61) == '\0'" (pointer_expression "*(char *)((int)param_1 + 0x61)" * (cast_expression "(char *)((int)param_1 + 0x61)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_1 + 0x61)" ( (binary_expression "(int)param_1 + 0x61" (cast_expression "(int)param_1" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n      pcVar4 = *(code **)(puVar3[2] + 0x28);\n      local_20[0] = 0;\n      if ((pcVar4 != (code *)0x0) && ((*pcVar4)(param_1 + 0xb,local_20), local_20[0] != 0)) {\n        *(undefined1 *)(param_1 + 0x18) = 1;\n        *(undefined1 *)((int)param_1 + 99) = 0;\n        if (param_1[0x35] != 0) {\n          iVar9 = param_7 + 4;\n          if (param_7 == 0) {\n            iVar9 = iVar8;\n          }\n          FUN_000ef5d0(param_1[0x35],iVar9,param_3,param_4,param_5,param_6,\n                       *(int *)(param_1[3] + 8) + 4);\n        }\n        if ((uVar7 < (uint)((int)(param_1[5] - param_1[4]) >> 2)) &&\n           (piVar2 = *(int **)(param_1[4] + iVar6), iVar8 = (**(code **)(*piVar2 + 0x14))(piVar2),\n           iVar8 != 0)) {\n          uVar10 = (**(code **)(**(int **)(param_1[4] + iVar6) + 0x14))\n                             (*(int **)(param_1[4] + iVar6));\n        }\n        else {\n                    /* try { // try from 000f23d7 to 000f23f0 has its CatchHandler @ 000f2415 */\n          uVar10 = FUN_000f1ee0(param_1,uVar7);\n        }\n        goto LAB_000f23ab;\n      }\nLAB_000f22cf:\n      puVar3 = *(undefined4 **)param_1[3];\n      param_1[3] = puVar3;\n      goto joined_r0x000f22ac;\n    }" { (expression_statement "pcVar4 = *(code **)(puVar3[2] + 0x28);" (assignment_expression "pcVar4 = *(code **)(puVar3[2] + 0x28)" identifier = (pointer_expression "*(code **)(puVar3[2] + 0x28)" * (cast_expression "(code **)(puVar3[2] + 0x28)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar3[2] + 0x28)" ( (binary_expression "puVar3[2] + 0x28" (subscript_expression "puVar3[2]" identifier [ number_literal ]) + number_literal) ))))) ;) (expression_statement "local_20[0] = 0;" (assignment_expression "local_20[0] = 0" (subscript_expression "local_20[0]" identifier [ number_literal ]) = number_literal) ;) (if_statement "if ((pcVar4 != (code *)0x0) && ((*pcVar4)(param_1 + 0xb,local_20), local_20[0] != 0)) {\n        *(undefined1 *)(param_1 + 0x18) = 1;\n        *(undefined1 *)((int)param_1 + 99) = 0;\n        if (param_1[0x35] != 0) {\n          iVar9 = param_7 + 4;\n          if (param_7 == 0) {\n            iVar9 = iVar8;\n          }\n          FUN_000ef5d0(param_1[0x35],iVar9,param_3,param_4,param_5,param_6,\n                       *(int *)(param_1[3] + 8) + 4);\n        }\n        if ((uVar7 < (uint)((int)(param_1[5] - param_1[4]) >> 2)) &&\n           (piVar2 = *(int **)(param_1[4] + iVar6), iVar8 = (**(code **)(*piVar2 + 0x14))(piVar2),\n           iVar8 != 0)) {\n          uVar10 = (**(code **)(**(int **)(param_1[4] + iVar6) + 0x14))\n                             (*(int **)(param_1[4] + iVar6));\n        }\n        else {\n                    /* try { // try from 000f23d7 to 000f23f0 has its CatchHandler @ 000f2415 */\n          uVar10 = FUN_000f1ee0(param_1,uVar7);\n        }\n        goto LAB_000f23ab;\n      }" if (parenthesized_expression "((pcVar4 != (code *)0x0) && ((*pcVar4)(param_1 + 0xb,local_20), local_20[0] != 0))" ( (binary_expression "(pcVar4 != (code *)0x0) && ((*pcVar4)(param_1 + 0xb,local_20), local_20[0] != 0)" (parenthesized_expression "(pcVar4 != (code *)0x0)" ( (binary_expression "pcVar4 != (code *)0x0" identifier != (cast_expression "(code *)0x0" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) && (parenthesized_expression "((*pcVar4)(param_1 + 0xb,local_20), local_20[0] != 0)" ( (comma_expression "(*pcVar4)(param_1 + 0xb,local_20), local_20[0] != 0" (call_expression "(*pcVar4)(param_1 + 0xb,local_20)" (parenthesized_expression "(*pcVar4)" ( (pointer_expression "*pcVar4" * identifier) )) (argument_list "(param_1 + 0xb,local_20)" ( (binary_expression "param_1 + 0xb" identifier + number_literal) , identifier ))) , (binary_expression "local_20[0] != 0" (subscript_expression "local_20[0]" identifier [ number_literal ]) != number_literal)) ))) )) (compound_statement "{\n        *(undefined1 *)(param_1 + 0x18) = 1;\n        *(undefined1 *)((int)param_1 + 99) = 0;\n        if (param_1[0x35] != 0) {\n          iVar9 = param_7 + 4;\n          if (param_7 == 0) {\n            iVar9 = iVar8;\n          }\n          FUN_000ef5d0(param_1[0x35],iVar9,param_3,param_4,param_5,param_6,\n                       *(int *)(param_1[3] + 8) + 4);\n        }\n        if ((uVar7 < (uint)((int)(param_1[5] - param_1[4]) >> 2)) &&\n           (piVar2 = *(int **)(param_1[4] + iVar6), iVar8 = (**(code **)(*piVar2 + 0x14))(piVar2),\n           iVar8 != 0)) {\n          uVar10 = (**(code **)(**(int **)(param_1[4] + iVar6) + 0x14))\n                             (*(int **)(param_1[4] + iVar6));\n        }\n        else {\n                    /* try { // try from 000f23d7 to 000f23f0 has its CatchHandler @ 000f2415 */\n          uVar10 = FUN_000f1ee0(param_1,uVar7);\n        }\n        goto LAB_000f23ab;\n      }" { (expression_statement "*(undefined1 *)(param_1 + 0x18) = 1;" (assignment_expression "*(undefined1 *)(param_1 + 0x18) = 1" (pointer_expression "*(undefined1 *)(param_1 + 0x18)" * (cast_expression "(undefined1 *)(param_1 + 0x18)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x18)" ( (binary_expression "param_1 + 0x18" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined1 *)((int)param_1 + 99) = 0;" (assignment_expression "*(undefined1 *)((int)param_1 + 99) = 0" (pointer_expression "*(undefined1 *)((int)param_1 + 99)" * (cast_expression "(undefined1 *)((int)param_1 + 99)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_1 + 99)" ( (binary_expression "(int)param_1 + 99" (cast_expression "(int)param_1" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) (if_statement "if (param_1[0x35] != 0) {\n          iVar9 = param_7 + 4;\n          if (param_7 == 0) {\n            iVar9 = iVar8;\n          }\n          FUN_000ef5d0(param_1[0x35],iVar9,param_3,param_4,param_5,param_6,\n                       *(int *)(param_1[3] + 8) + 4);\n        }" if (parenthesized_expression "(param_1[0x35] != 0)" ( (binary_expression "param_1[0x35] != 0" (subscript_expression "param_1[0x35]" identifier [ number_literal ]) != number_literal) )) (compound_statement "{\n          iVar9 = param_7 + 4;\n          if (param_7 == 0) {\n            iVar9 = iVar8;\n          }\n          FUN_000ef5d0(param_1[0x35],iVar9,param_3,param_4,param_5,param_6,\n                       *(int *)(param_1[3] + 8) + 4);\n        }" { (expression_statement "iVar9 = param_7 + 4;" (assignment_expression "iVar9 = param_7 + 4" identifier = (binary_expression "param_7 + 4" identifier + number_literal)) ;) (if_statement "if (param_7 == 0) {\n            iVar9 = iVar8;\n          }" if (parenthesized_expression "(param_7 == 0)" ( (binary_expression "param_7 == 0" identifier == number_literal) )) (compound_statement "{\n            iVar9 = iVar8;\n          }" { (expression_statement "iVar9 = iVar8;" (assignment_expression "iVar9 = iVar8" identifier = identifier) ;) })) (expression_statement "FUN_000ef5d0(param_1[0x35],iVar9,param_3,param_4,param_5,param_6,\n                       *(int *)(param_1[3] + 8) + 4);" (call_expression "FUN_000ef5d0(param_1[0x35],iVar9,param_3,param_4,param_5,param_6,\n                       *(int *)(param_1[3] + 8) + 4)" identifier (argument_list "(param_1[0x35],iVar9,param_3,param_4,param_5,param_6,\n                       *(int *)(param_1[3] + 8) + 4)" ( (subscript_expression "param_1[0x35]" identifier [ number_literal ]) , identifier , identifier , identifier , identifier , identifier , (binary_expression "*(int *)(param_1[3] + 8) + 4" (pointer_expression "*(int *)(param_1[3] + 8)" * (cast_expression "(int *)(param_1[3] + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1[3] + 8)" ( (binary_expression "param_1[3] + 8" (subscript_expression "param_1[3]" identifier [ number_literal ]) + number_literal) )))) + number_literal) ))) ;) })) (if_statement "if ((uVar7 < (uint)((int)(param_1[5] - param_1[4]) >> 2)) &&\n           (piVar2 = *(int **)(param_1[4] + iVar6), iVar8 = (**(code **)(*piVar2 + 0x14))(piVar2),\n           iVar8 != 0)) {\n          uVar10 = (**(code **)(**(int **)(param_1[4] + iVar6) + 0x14))\n                             (*(int **)(param_1[4] + iVar6));\n        }\n        else {\n                    /* try { // try from 000f23d7 to 000f23f0 has its CatchHandler @ 000f2415 */\n          uVar10 = FUN_000f1ee0(param_1,uVar7);\n        }" if (parenthesized_expression "((uVar7 < (uint)((int)(param_1[5] - param_1[4]) >> 2)) &&\n           (piVar2 = *(int **)(param_1[4] + iVar6), iVar8 = (**(code **)(*piVar2 + 0x14))(piVar2),\n           iVar8 != 0))" ( (binary_expression "(uVar7 < (uint)((int)(param_1[5] - param_1[4]) >> 2)) &&\n           (piVar2 = *(int **)(param_1[4] + iVar6), iVar8 = (**(code **)(*piVar2 + 0x14))(piVar2),\n           iVar8 != 0)" (parenthesized_expression "(uVar7 < (uint)((int)(param_1[5] - param_1[4]) >> 2))" ( (binary_expression "uVar7 < (uint)((int)(param_1[5] - param_1[4]) >> 2)" identifier < (call_expression "(uint)((int)(param_1[5] - param_1[4]) >> 2)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((int)(param_1[5] - param_1[4]) >> 2)" ( (binary_expression "(int)(param_1[5] - param_1[4]) >> 2" (cast_expression "(int)(param_1[5] - param_1[4])" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(param_1[5] - param_1[4])" ( (binary_expression "param_1[5] - param_1[4]" (subscript_expression "param_1[5]" identifier [ number_literal ]) - (subscript_expression "param_1[4]" identifier [ number_literal ])) ))) >> number_literal) )))) )) && (parenthesized_expression "(piVar2 = *(int **)(param_1[4] + iVar6), iVar8 = (**(code **)(*piVar2 + 0x14))(piVar2),\n           iVar8 != 0)" ( (comma_expression "piVar2 = *(int **)(param_1[4] + iVar6), iVar8 = (**(code **)(*piVar2 + 0x14))(piVar2),\n           iVar8 != 0" (assignment_expression "piVar2 = *(int **)(param_1[4] + iVar6)" identifier = (pointer_expression "*(int **)(param_1[4] + iVar6)" * (cast_expression "(int **)(param_1[4] + iVar6)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1[4] + iVar6)" ( (binary_expression "param_1[4] + iVar6" (subscript_expression "param_1[4]" identifier [ number_literal ]) + identifier) ))))) , (comma_expression "iVar8 = (**(code **)(*piVar2 + 0x14))(piVar2),\n           iVar8 != 0" (assignment_expression "iVar8 = (**(code **)(*piVar2 + 0x14))(piVar2)" identifier = (call_expression "(**(code **)(*piVar2 + 0x14))(piVar2)" (parenthesized_expression "(**(code **)(*piVar2 + 0x14))" ( (pointer_expression "**(code **)(*piVar2 + 0x14)" * (pointer_expression "*(code **)(*piVar2 + 0x14)" * (cast_expression "(code **)(*piVar2 + 0x14)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*piVar2 + 0x14)" ( (binary_expression "*piVar2 + 0x14" (pointer_expression "*piVar2" * identifier) + number_literal) ))))) )) (argument_list "(piVar2)" ( identifier )))) , (binary_expression "iVar8 != 0" identifier != number_literal))) ))) )) (compound_statement "{\n          uVar10 = (**(code **)(**(int **)(param_1[4] + iVar6) + 0x14))\n                             (*(int **)(param_1[4] + iVar6));\n        }" { (expression_statement "uVar10 = (**(code **)(**(int **)(param_1[4] + iVar6) + 0x14))\n                             (*(int **)(param_1[4] + iVar6));" (assignment_expression "uVar10 = (**(code **)(**(int **)(param_1[4] + iVar6) + 0x14))\n                             (*(int **)(param_1[4] + iVar6))" identifier = (call_expression "(**(code **)(**(int **)(param_1[4] + iVar6) + 0x14))\n                             (*(int **)(param_1[4] + iVar6))" (parenthesized_expression "(**(code **)(**(int **)(param_1[4] + iVar6) + 0x14))" ( (pointer_expression "**(code **)(**(int **)(param_1[4] + iVar6) + 0x14)" * (pointer_expression "*(code **)(**(int **)(param_1[4] + iVar6) + 0x14)" * (cast_expression "(code **)(**(int **)(param_1[4] + iVar6) + 0x14)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(**(int **)(param_1[4] + iVar6) + 0x14)" ( (binary_expression "**(int **)(param_1[4] + iVar6) + 0x14" (pointer_expression "**(int **)(param_1[4] + iVar6)" * (pointer_expression "*(int **)(param_1[4] + iVar6)" * (cast_expression "(int **)(param_1[4] + iVar6)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1[4] + iVar6)" ( (binary_expression "param_1[4] + iVar6" (subscript_expression "param_1[4]" identifier [ number_literal ]) + identifier) ))))) + number_literal) ))))) )) (argument_list "(*(int **)(param_1[4] + iVar6))" ( (pointer_expression "*(int **)(param_1[4] + iVar6)" * (cast_expression "(int **)(param_1[4] + iVar6)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1[4] + iVar6)" ( (binary_expression "param_1[4] + iVar6" (subscript_expression "param_1[4]" identifier [ number_literal ]) + identifier) )))) )))) ;) }) (else_clause "else {\n                    /* try { // try from 000f23d7 to 000f23f0 has its CatchHandler @ 000f2415 */\n          uVar10 = FUN_000f1ee0(param_1,uVar7);\n        }" else (compound_statement "{\n                    /* try { // try from 000f23d7 to 000f23f0 has its CatchHandler @ 000f2415 */\n          uVar10 = FUN_000f1ee0(param_1,uVar7);\n        }" { comment (expression_statement "uVar10 = FUN_000f1ee0(param_1,uVar7);" (assignment_expression "uVar10 = FUN_000f1ee0(param_1,uVar7)" identifier = (call_expression "FUN_000f1ee0(param_1,uVar7)" identifier (argument_list "(param_1,uVar7)" ( identifier , identifier )))) ;) }))) (goto_statement "goto LAB_000f23ab;" goto statement_identifier ;) })) (labeled_statement "LAB_000f22cf:\n      puVar3 = *(undefined4 **)param_1[3];" statement_identifier : (expression_statement "puVar3 = *(undefined4 **)param_1[3];" (assignment_expression "puVar3 = *(undefined4 **)param_1[3]" identifier = (pointer_expression "*(undefined4 **)param_1[3]" * (cast_expression "(undefined4 **)param_1[3]" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (subscript_expression "param_1[3]" identifier [ number_literal ])))) ;)) (expression_statement "param_1[3] = puVar3;" (assignment_expression "param_1[3] = puVar3" (subscript_expression "param_1[3]" identifier [ number_literal ]) = identifier) ;) (goto_statement "goto joined_r0x000f22ac;" goto statement_identifier ;) })) (expression_statement "pcVar4 = *(code **)(puVar3[2] + 0x34);" (assignment_expression "pcVar4 = *(code **)(puVar3[2] + 0x34)" identifier = (pointer_expression "*(code **)(puVar3[2] + 0x34)" * (cast_expression "(code **)(puVar3[2] + 0x34)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar3[2] + 0x34)" ( (binary_expression "puVar3[2] + 0x34" (subscript_expression "puVar3[2]" identifier [ number_literal ]) + number_literal) ))))) ;) (if_statement "if (pcVar4 == (code *)0x0) goto LAB_000f22cf;" if (parenthesized_expression "(pcVar4 == (code *)0x0)" ( (binary_expression "pcVar4 == (code *)0x0" identifier == (cast_expression "(code *)0x0" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_000f22cf;" goto statement_identifier ;)) (expression_statement "(*pcVar4)(param_1 + 0xb);" (call_expression "(*pcVar4)(param_1 + 0xb)" (parenthesized_expression "(*pcVar4)" ( (pointer_expression "*pcVar4" * identifier) )) (argument_list "(param_1 + 0xb)" ( (binary_expression "param_1 + 0xb" identifier + number_literal) ))) ;) (expression_statement "puVar3 = *(undefined4 **)param_1[3];" (assignment_expression "puVar3 = *(undefined4 **)param_1[3]" identifier = (pointer_expression "*(undefined4 **)param_1[3]" * (cast_expression "(undefined4 **)param_1[3]" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (subscript_expression "param_1[3]" identifier [ number_literal ])))) ;) (expression_statement "param_1[3] = puVar3;" (assignment_expression "param_1[3] = puVar3" (subscript_expression "param_1[3]" identifier [ number_literal ]) = identifier) ;) }) while (parenthesized_expression "( true )" ( true )) ;)) })))
(translation_unit "/* WARNING: Function: __x86.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */\n/* WARNING: Type propagation algorithm not settling */\n/* WARNING: Enum "DT": Some values do not have unique names */\n/* DWARF original prototype: Pluginobj * claim_file(Plugin_manager * this, Input_file * input_file,\n   off_t offset, off_t filesize, Object * elf_object) */\n\nPluginobj * __thiscall\ngold::Plugin_manager::claim_file\n          (Plugin_manager *this,Input_file *input_file,off_t offset,off_t filesize,\n          Object *elf_object)\n\n{\n  File_read *this_00;\n  Lock *pLVar1;\n  Lock_impl *pLVar2;\n  iterator __position;\n  Plugin_manager *pPVar3;\n  size_t sVar4;\n  code *pcVar5;\n  pointer ppOVar6;\n  int *piVar7;\n  bool bVar8;\n  int iVar9;\n  void *handle;\n  int iVar10;\n  string *obj_name;\n  Pluginobj *pPVar11;\n  int claimed;\n  undefined4 uStack_14;\n  \n  uStack_14 = 0xf21db;\n  bVar8 = Initialize_lock::initialize(&this->initialize_lock_);\n  if (!bVar8) {\n                    /* WARNING: Subroutine does not return */\n    do_gold_unreachable("../../gold/plugin.cc",0x2da,"claim_file");\n  }\n  pLVar1 = this->lock_;\n  pLVar2 = pLVar1->lock_;\n  (*pLVar2->_vptr_Lock_impl[2])(pLVar2);\n  iVar9 = (int)(this->objects_).super__Vector_base<gold::Object*,_std::allocator<gold::Object*>_>.\n               _M_impl._M_finish -\n          (int)(this->objects_).super__Vector_base<gold::Object*,_std::allocator<gold::Object*>_>.\n               _M_impl._M_start;\n  this->input_file_ = input_file;\n  handle = (void *)(iVar9 >> 2);\n  this_00 = &input_file->file_;\n  (this->plugin_input_file_).name = (input_file->file_).name_._M_dataplus._M_p;\n                    /* try { // try from 000f2254 to 000f23a5 has its CatchHandler @ 000f2415 */\n  File_read::reopen_descriptor(this_00);\n  (this->plugin_input_file_).fd = (input_file->file_).descriptor_;\n  (this->plugin_input_file_).offset = offset;\n  (this->plugin_input_file_).filesize = filesize;\n  (this->plugin_input_file_).handle = handle;\n  if (elf_object != (Object *)0x0) {\n    __position._M_current =\n         (this->objects_).super__Vector_base<gold::Object*,_std::allocator<gold::Object*>_>._M_impl.\n         _M_finish;\n    if (__position._M_current ==\n        (this->objects_).super__Vector_base<gold::Object*,_std::allocator<gold::Object*>_>._M_impl.\n        _M_end_of_storage) {\n      std::vector<gold::Object*,_std::allocator<gold::Object*>_>::\n      _M_realloc_insert<gold::Object*_const&>(&this->objects_,__position,&elf_object);\n    }\n    else {\n      *__position._M_current = elf_object;\n      (this->objects_).super__Vector_base<gold::Object*,_std::allocator<gold::Object*>_>._M_impl.\n      _M_finish = __position._M_current + 1;\n    }\n  }\n  pPVar3 = (Plugin_manager *)\n           (this->plugins_).super__List_base<gold::Plugin*,_std::allocator<gold::Plugin*>_>._M_impl.\n           _M_node.super__List_node_base._M_next;\n  this->in_claim_file_handler_ = true;\n  (this->current_)._M_node = (_List_node_base *)pPVar3;\njoined_r0x000f22ac:\n  do {\n    if (pPVar3 == this) {\n      this->in_claim_file_handler_ = false;\n      if (this->recorder_ != (Plugin_recorder *)0x0) {\n        Plugin_recorder::unclaimed_file(this->recorder_,&this_00->name_,offset,filesize);\n      }\n      pPVar11 = (Pluginobj *)0x0;\nLAB_000f23ab:\n      pLVar2 = pLVar1->lock_;\n      (*pLVar2->_vptr_Lock_impl[3])(pLVar2);\n      return pPVar11;\n    }\n    sVar4 = (pPVar3->plugins_).super__List_base<gold::Plugin*,_std::allocator<gold::Plugin*>_>.\n            _M_impl._M_node._M_size;\n    if (this->in_replacement_phase_ == false) {\n      pcVar5 = *(code **)(sVar4 + 0x28);\n      claimed = 0;\n      if ((pcVar5 != (code *)0x0) && ((*pcVar5)(&this->plugin_input_file_,&claimed), claimed != 0))\n      {\n        this->any_claimed_ = true;\n        this->in_claim_file_handler_ = false;\n        if (this->recorder_ != (Plugin_recorder *)0x0) {\n          obj_name = &elf_object->name_;\n          if (elf_object == (Object *)0x0) {\n            obj_name = &this_00->name_;\n          }\n          Plugin_recorder::claimed_file\n                    (this->recorder_,obj_name,offset,filesize,\n                     (string *)&((this->current_)._M_node[1]._M_next)->_M_prev);\n        }\n        ppOVar6 = (this->objects_).super__Vector_base<gold::Object*,_std::allocator<gold::Object*>_>\n                  ._M_impl._M_start;\n        if ((handle < (void *)((int)(this->objects_).\n                                    super__Vector_base<gold::Object*,_std::allocator<gold::Object*>_>\n                                    ._M_impl._M_finish - (int)ppOVar6 >> 2)) &&\n           (piVar7 = *(int **)((int)ppOVar6 + iVar9), iVar10 = (**(code **)(*piVar7 + 0x14))(piVar7)\n           , iVar10 != 0)) {\n          piVar7 = *(int **)((int)(this->objects_).\n                                  super__Vector_base<gold::Object*,_std::allocator<gold::Object*>_>.\n                                  _M_impl._M_start + iVar9);\n          pPVar11 = (Pluginobj *)(**(code **)(*piVar7 + 0x14))(piVar7);\n        }\n        else {\n                    /* try { // try from 000f23d7 to 000f23f0 has its CatchHandler @ 000f2415 */\n          pPVar11 = make_plugin_object(this,(uint)handle);\n        }\n        goto LAB_000f23ab;\n      }\nLAB_000f22cf:\n      pPVar3 = (Plugin_manager *)((this->current_)._M_node)->_M_next;\n      (this->current_)._M_node = (_List_node_base *)pPVar3;\n      goto joined_r0x000f22ac;\n    }\n    pcVar5 = *(code **)(sVar4 + 0x34);\n    if (pcVar5 == (code *)0x0) goto LAB_000f22cf;\n    (*pcVar5)(&this->plugin_input_file_);\n    pPVar3 = (Plugin_manager *)((this->current_)._M_node)->_M_next;\n    (this->current_)._M_node = (_List_node_base *)pPVar3;\n  } while( true );\n}\n\n" comment comment comment comment (ERROR "Pluginobj * __thiscall\ngold::Plugin_manager::claim_file\n          (Plugin_manager *this,Input_file *input_file,off_t offset,off_t filesize,\n          Object *elf_object)" (binary_expression "Pluginobj * __thiscall\ngold::Plugin_manager::claim_file\n          (Plugin_manager *this,Input_file *input_file,off_t offset,off_t filesize,\n          Object *elf_object)" identifier * (call_expression "__thiscall\ngold::Plugin_manager::claim_file\n          (Plugin_manager *this,Input_file *input_file,off_t offset,off_t filesize,\n          Object *elf_object)" identifier (ERROR "gold::Plugin_manager::claim_file" identifier : : identifier : : identifier) (argument_list "(Plugin_manager *this,Input_file *input_file,off_t offset,off_t filesize,\n          Object *elf_object)" ( (binary_expression "Plugin_manager *this" identifier * identifier) , (binary_expression "Input_file *input_file" identifier * identifier) , (ERROR "off_t" identifier) identifier , (ERROR "off_t" identifier) identifier , (binary_expression "Object *elf_object" identifier * identifier) ))))) (compound_statement "{\n  File_read *this_00;\n  Lock *pLVar1;\n  Lock_impl *pLVar2;\n  iterator __position;\n  Plugin_manager *pPVar3;\n  size_t sVar4;\n  code *pcVar5;\n  pointer ppOVar6;\n  int *piVar7;\n  bool bVar8;\n  int iVar9;\n  void *handle;\n  int iVar10;\n  string *obj_name;\n  Pluginobj *pPVar11;\n  int claimed;\n  undefined4 uStack_14;\n  \n  uStack_14 = 0xf21db;\n  bVar8 = Initialize_lock::initialize(&this->initialize_lock_);\n  if (!bVar8) {\n                    /* WARNING: Subroutine does not return */\n    do_gold_unreachable("../../gold/plugin.cc",0x2da,"claim_file");\n  }\n  pLVar1 = this->lock_;\n  pLVar2 = pLVar1->lock_;\n  (*pLVar2->_vptr_Lock_impl[2])(pLVar2);\n  iVar9 = (int)(this->objects_).super__Vector_base<gold::Object*,_std::allocator<gold::Object*>_>.\n               _M_impl._M_finish -\n          (int)(this->objects_).super__Vector_base<gold::Object*,_std::allocator<gold::Object*>_>.\n               _M_impl._M_start;\n  this->input_file_ = input_file;\n  handle = (void *)(iVar9 >> 2);\n  this_00 = &input_file->file_;\n  (this->plugin_input_file_).name = (input_file->file_).name_._M_dataplus._M_p;\n                    /* try { // try from 000f2254 to 000f23a5 has its CatchHandler @ 000f2415 */\n  File_read::reopen_descriptor(this_00);\n  (this->plugin_input_file_).fd = (input_file->file_).descriptor_;\n  (this->plugin_input_file_).offset = offset;\n  (this->plugin_input_file_).filesize = filesize;\n  (this->plugin_input_file_).handle = handle;\n  if (elf_object != (Object *)0x0) {\n    __position._M_current =\n         (this->objects_).super__Vector_base<gold::Object*,_std::allocator<gold::Object*>_>._M_impl.\n         _M_finish;\n    if (__position._M_current ==\n        (this->objects_).super__Vector_base<gold::Object*,_std::allocator<gold::Object*>_>._M_impl.\n        _M_end_of_storage) {\n      std::vector<gold::Object*,_std::allocator<gold::Object*>_>::\n      _M_realloc_insert<gold::Object*_const&>(&this->objects_,__position,&elf_object);\n    }\n    else {\n      *__position._M_current = elf_object;\n      (this->objects_).super__Vector_base<gold::Object*,_std::allocator<gold::Object*>_>._M_impl.\n      _M_finish = __position._M_current + 1;\n    }\n  }\n  pPVar3 = (Plugin_manager *)\n           (this->plugins_).super__List_base<gold::Plugin*,_std::allocator<gold::Plugin*>_>._M_impl.\n           _M_node.super__List_node_base._M_next;\n  this->in_claim_file_handler_ = true;\n  (this->current_)._M_node = (_List_node_base *)pPVar3;\njoined_r0x000f22ac:\n  do {\n    if (pPVar3 == this) {\n      this->in_claim_file_handler_ = false;\n      if (this->recorder_ != (Plugin_recorder *)0x0) {\n        Plugin_recorder::unclaimed_file(this->recorder_,&this_00->name_,offset,filesize);\n      }\n      pPVar11 = (Pluginobj *)0x0;\nLAB_000f23ab:\n      pLVar2 = pLVar1->lock_;\n      (*pLVar2->_vptr_Lock_impl[3])(pLVar2);\n      return pPVar11;\n    }\n    sVar4 = (pPVar3->plugins_).super__List_base<gold::Plugin*,_std::allocator<gold::Plugin*>_>.\n            _M_impl._M_node._M_size;\n    if (this->in_replacement_phase_ == false) {\n      pcVar5 = *(code **)(sVar4 + 0x28);\n      claimed = 0;\n      if ((pcVar5 != (code *)0x0) && ((*pcVar5)(&this->plugin_input_file_,&claimed), claimed != 0))\n      {\n        this->any_claimed_ = true;\n        this->in_claim_file_handler_ = false;\n        if (this->recorder_ != (Plugin_recorder *)0x0) {\n          obj_name = &elf_object->name_;\n          if (elf_object == (Object *)0x0) {\n            obj_name = &this_00->name_;\n          }\n          Plugin_recorder::claimed_file\n                    (this->recorder_,obj_name,offset,filesize,\n                     (string *)&((this->current_)._M_node[1]._M_next)->_M_prev);\n        }\n        ppOVar6 = (this->objects_).super__Vector_base<gold::Object*,_std::allocator<gold::Object*>_>\n                  ._M_impl._M_start;\n        if ((handle < (void *)((int)(this->objects_).\n                                    super__Vector_base<gold::Object*,_std::allocator<gold::Object*>_>\n                                    ._M_impl._M_finish - (int)ppOVar6 >> 2)) &&\n           (piVar7 = *(int **)((int)ppOVar6 + iVar9), iVar10 = (**(code **)(*piVar7 + 0x14))(piVar7)\n           , iVar10 != 0)) {\n          piVar7 = *(int **)((int)(this->objects_).\n                                  super__Vector_base<gold::Object*,_std::allocator<gold::Object*>_>.\n                                  _M_impl._M_start + iVar9);\n          pPVar11 = (Pluginobj *)(**(code **)(*piVar7 + 0x14))(piVar7);\n        }\n        else {\n                    /* try { // try from 000f23d7 to 000f23f0 has its CatchHandler @ 000f2415 */\n          pPVar11 = make_plugin_object(this,(uint)handle);\n        }\n        goto LAB_000f23ab;\n      }\nLAB_000f22cf:\n      pPVar3 = (Plugin_manager *)((this->current_)._M_node)->_M_next;\n      (this->current_)._M_node = (_List_node_base *)pPVar3;\n      goto joined_r0x000f22ac;\n    }\n    pcVar5 = *(code **)(sVar4 + 0x34);\n    if (pcVar5 == (code *)0x0) goto LAB_000f22cf;\n    (*pcVar5)(&this->plugin_input_file_);\n    pPVar3 = (Plugin_manager *)((this->current_)._M_node)->_M_next;\n    (this->current_)._M_node = (_List_node_base *)pPVar3;\n  } while( true );\n}" { (declaration "File_read *this_00;" type_identifier (pointer_declarator "*this_00" * identifier) ;) (declaration "Lock *pLVar1;" type_identifier (pointer_declarator "*pLVar1" * identifier) ;) (declaration "Lock_impl *pLVar2;" type_identifier (pointer_declarator "*pLVar2" * identifier) ;) (declaration "iterator __position;" type_identifier identifier ;) (declaration "Plugin_manager *pPVar3;" type_identifier (pointer_declarator "*pPVar3" * identifier) ;) (declaration "size_t sVar4;" primitive_type identifier ;) (declaration "code *pcVar5;" type_identifier (pointer_declarator "*pcVar5" * identifier) ;) (declaration "pointer ppOVar6;" type_identifier identifier ;) (declaration "int *piVar7;" primitive_type (pointer_declarator "*piVar7" * identifier) ;) (declaration "bool bVar8;" primitive_type identifier ;) (declaration "int iVar9;" primitive_type identifier ;) (declaration "void *handle;" primitive_type (pointer_declarator "*handle" * identifier) ;) (declaration "int iVar10;" primitive_type identifier ;) (declaration "string *obj_name;" type_identifier (pointer_declarator "*obj_name" * identifier) ;) (declaration "Pluginobj *pPVar11;" type_identifier (pointer_declarator "*pPVar11" * identifier) ;) (declaration "int claimed;" primitive_type identifier ;) (declaration "undefined4 uStack_14;" type_identifier identifier ;) (expression_statement "uStack_14 = 0xf21db;" (assignment_expression "uStack_14 = 0xf21db" identifier = number_literal) ;) (ERROR "bVar8 = Initialize_lock::" (assignment_expression "bVar8 = Initialize_lock" identifier = identifier) : :) (expression_statement "initialize(&this->initialize_lock_);" (call_expression "initialize(&this->initialize_lock_)" identifier (argument_list "(&this->initialize_lock_)" ( (pointer_expression "&this->initialize_lock_" & (field_expression "this->initialize_lock_" identifier -> field_identifier)) ))) ;) (if_statement "if (!bVar8) {\n                    /* WARNING: Subroutine does not return */\n    do_gold_unreachable("../../gold/plugin.cc",0x2da,"claim_file");\n  }" if (parenthesized_expression "(!bVar8)" ( (unary_expression "!bVar8" ! identifier) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n    do_gold_unreachable("../../gold/plugin.cc",0x2da,"claim_file");\n  }" { comment (expression_statement "do_gold_unreachable("../../gold/plugin.cc",0x2da,"claim_file");" (call_expression "do_gold_unreachable("../../gold/plugin.cc",0x2da,"claim_file")" identifier (argument_list "("../../gold/plugin.cc",0x2da,"claim_file")" ( (string_literal ""../../gold/plugin.cc"" " string_content ") , number_literal , (string_literal ""claim_file"" " string_content ") ))) ;) })) (expression_statement "pLVar1 = this->lock_;" (assignment_expression "pLVar1 = this->lock_" identifier = (field_expression "this->lock_" identifier -> field_identifier)) ;) (expression_statement "pLVar2 = pLVar1->lock_;" (assignment_expression "pLVar2 = pLVar1->lock_" identifier = (field_expression "pLVar1->lock_" identifier -> field_identifier)) ;) (expression_statement "(*pLVar2->_vptr_Lock_impl[2])(pLVar2);" (call_expression "(*pLVar2->_vptr_Lock_impl[2])(pLVar2)" (parenthesized_expression "(*pLVar2->_vptr_Lock_impl[2])" ( (pointer_expression "*pLVar2->_vptr_Lock_impl[2]" * (subscript_expression "pLVar2->_vptr_Lock_impl[2]" (field_expression "pLVar2->_vptr_Lock_impl" identifier -> field_identifier) [ number_literal ])) )) (argument_list "(pLVar2)" ( identifier ))) ;) (expression_statement "iVar9 = (int)(this->objects_).super__Vector_base<gold::Object*,_std::allocator<gold::Object*>_>.\n               _M_impl._M_finish -\n          (int)(this->objects_).super__Vector_base<gold::Object*,_std::allocator<gold::Object*>_>.\n               _M_impl._M_start;" (field_expression "iVar9 = (int)(this->objects_).super__Vector_base<gold::Object*,_std::allocator<gold::Object*>_>.\n               _M_impl._M_finish -\n          (int)(this->objects_).super__Vector_base<gold::Object*,_std::allocator<gold::Object*>_>.\n               _M_impl._M_start" (field_expression "iVar9 = (int)(this->objects_).super__Vector_base<gold::Object*,_std::allocator<gold::Object*>_>.\n               _M_impl._M_finish -\n          (int)(this->objects_).super__Vector_base<gold::Object*,_std::allocator<gold::Object*>_>.\n               _M_impl" (binary_expression "iVar9 = (int)(this->objects_).super__Vector_base<gold::Object*,_std::allocator<gold::Object*>_>.\n               _M_impl._M_finish -\n          (int)(this->objects_).super__Vector_base<gold::Object*,_std::allocator<gold::Object*>_" (binary_expression "iVar9 = (int)(this->objects_).super__Vector_base<gold::Object*,_std::allocator<gold::Object*>_>.\n               _M_impl._M_finish -\n          (int)(this->objects_).super__Vector_base<gold::Object*,_std::allocator<gold" (binary_expression "iVar9 = (int)(this->objects_).super__Vector_base<gold::Object*,_std::allocator<gold::Object*>_>.\n               _M_impl._M_finish -\n          (int)(this->objects_).super__Vector_base<gold::Object*,_std" (binary_expression "iVar9 = (int)(this->objects_).super__Vector_base<gold::Object*,_std::allocator<gold::Object*>_>.\n               _M_impl._M_finish -\n          (int)(this->objects_).super__Vector_base<gold" (binary_expression "iVar9 = (int)(this->objects_).super__Vector_base<gold::Object*,_std::allocator<gold::Object*>_>.\n               _M_impl._M_finish -\n          (int)(this->objects_).super__Vector_base" (field_expression "iVar9 = (int)(this->objects_).super__Vector_base<gold::Object*,_std::allocator<gold::Object*>_>.\n               _M_impl._M_finish" (field_expression "iVar9 = (int)(this->objects_).super__Vector_base<gold::Object*,_std::allocator<gold::Object*>_>.\n               _M_impl" (binary_expression "iVar9 = (int)(this->objects_).super__Vector_base<gold::Object*,_std::allocator<gold::Object*>_" (binary_expression "iVar9 = (int)(this->objects_).super__Vector_base<gold::Object*,_std::allocator<gold" (binary_expression "iVar9 = (int)(this->objects_).super__Vector_base<gold::Object*,_std" (assignment_expression "iVar9 = (int)(this->objects_).super__Vector_base<gold" identifier = (binary_expression "(int)(this->objects_).super__Vector_base<gold" (cast_expression "(int)(this->objects_).super__Vector_base" ( (type_descriptor "int" primitive_type) ) (field_expression "(this->objects_).super__Vector_base" (parenthesized_expression "(this->objects_)" ( (field_expression "this->objects_" identifier -> field_identifier) )) . field_identifier)) < identifier)) (ERROR "::Object" : : identifier) * (ERROR "," ,) identifier) (ERROR "::allocator" : : identifier) < identifier) (ERROR "::Object" : : identifier) * (ERROR ">" >) identifier) (ERROR ">" >) . field_identifier) . field_identifier) - (cast_expression "(int)(this->objects_).super__Vector_base" ( (type_descriptor "int" primitive_type) ) (field_expression "(this->objects_).super__Vector_base" (parenthesized_expression "(this->objects_)" ( (field_expression "this->objects_" identifier -> field_identifier) )) . field_identifier))) < identifier) (ERROR "::Object" : : identifier) * (ERROR "," ,) identifier) (ERROR "::allocator" : : identifier) < identifier) (ERROR "::Object" : : identifier) * (ERROR ">" >) identifier) (ERROR ">" >) . field_identifier) . field_identifier) ;) (expression_statement "this->input_file_ = input_file;" (assignment_expression "this->input_file_ = input_file" (field_expression "this->input_file_" identifier -> field_identifier) = identifier) ;) (expression_statement "handle = (void *)(iVar9 >> 2);" (assignment_expression "handle = (void *)(iVar9 >> 2)" identifier = (cast_expression "(void *)(iVar9 >> 2)" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar9 >> 2)" ( (binary_expression "iVar9 >> 2" identifier >> number_literal) )))) ;) (expression_statement "this_00 = &input_file->file_;" (assignment_expression "this_00 = &input_file->file_" identifier = (pointer_expression "&input_file->file_" & (field_expression "input_file->file_" identifier -> field_identifier))) ;) (expression_statement "(this->plugin_input_file_).name = (input_file->file_).name_._M_dataplus._M_p;" (assignment_expression "(this->plugin_input_file_).name = (input_file->file_).name_._M_dataplus._M_p" (field_expression "(this->plugin_input_file_).name" (parenthesized_expression "(this->plugin_input_file_)" ( (field_expression "this->plugin_input_file_" identifier -> field_identifier) )) . field_identifier) = (field_expression "(input_file->file_).name_._M_dataplus._M_p" (field_expression "(input_file->file_).name_._M_dataplus" (field_expression "(input_file->file_).name_" (parenthesized_expression "(input_file->file_)" ( (field_expression "input_file->file_" identifier -> field_identifier) )) . field_identifier) . field_identifier) . field_identifier)) ;) comment (labeled_statement "File_read::reopen_descriptor(this_00);" statement_identifier : (ERROR ":" :) (expression_statement "reopen_descriptor(this_00);" (call_expression "reopen_descriptor(this_00)" identifier (argument_list "(this_00)" ( identifier ))) ;)) (expression_statement "(this->plugin_input_file_).fd = (input_file->file_).descriptor_;" (assignment_expression "(this->plugin_input_file_).fd = (input_file->file_).descriptor_" (field_expression "(this->plugin_input_file_).fd" (parenthesized_expression "(this->plugin_input_file_)" ( (field_expression "this->plugin_input_file_" identifier -> field_identifier) )) . field_identifier) = (field_expression "(input_file->file_).descriptor_" (parenthesized_expression "(input_file->file_)" ( (field_expression "input_file->file_" identifier -> field_identifier) )) . field_identifier)) ;) (expression_statement "(this->plugin_input_file_).offset = offset;" (assignment_expression "(this->plugin_input_file_).offset = offset" (field_expression "(this->plugin_input_file_).offset" (parenthesized_expression "(this->plugin_input_file_)" ( (field_expression "this->plugin_input_file_" identifier -> field_identifier) )) . field_identifier) = identifier) ;) (expression_statement "(this->plugin_input_file_).filesize = filesize;" (assignment_expression "(this->plugin_input_file_).filesize = filesize" (field_expression "(this->plugin_input_file_).filesize" (parenthesized_expression "(this->plugin_input_file_)" ( (field_expression "this->plugin_input_file_" identifier -> field_identifier) )) . field_identifier) = identifier) ;) (expression_statement "(this->plugin_input_file_).handle = handle;" (assignment_expression "(this->plugin_input_file_).handle = handle" (field_expression "(this->plugin_input_file_).handle" (parenthesized_expression "(this->plugin_input_file_)" ( (field_expression "this->plugin_input_file_" identifier -> field_identifier) )) . field_identifier) = identifier) ;) (if_statement "if (elf_object != (Object *)0x0) {\n    __position._M_current =\n         (this->objects_).super__Vector_base<gold::Object*,_std::allocator<gold::Object*>_>._M_impl.\n         _M_finish;\n    if (__position._M_current ==\n        (this->objects_).super__Vector_base<gold::Object*,_std::allocator<gold::Object*>_>._M_impl.\n        _M_end_of_storage) {\n      std::vector<gold::Object*,_std::allocator<gold::Object*>_>::\n      _M_realloc_insert<gold::Object*_const&>(&this->objects_,__position,&elf_object);\n    }\n    else {\n      *__position._M_current = elf_object;\n      (this->objects_).super__Vector_base<gold::Object*,_std::allocator<gold::Object*>_>._M_impl.\n      _M_finish = __position._M_current + 1;\n    }\n  }" if (parenthesized_expression "(elf_object != (Object *)0x0)" ( (binary_expression "elf_object != (Object *)0x0" identifier != (cast_expression "(Object *)0x0" ( (type_descriptor "Object *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    __position._M_current =\n         (this->objects_).super__Vector_base<gold::Object*,_std::allocator<gold::Object*>_>._M_impl.\n         _M_finish;\n    if (__position._M_current ==\n        (this->objects_).super__Vector_base<gold::Object*,_std::allocator<gold::Object*>_>._M_impl.\n        _M_end_of_storage) {\n      std::vector<gold::Object*,_std::allocator<gold::Object*>_>::\n      _M_realloc_insert<gold::Object*_const&>(&this->objects_,__position,&elf_object);\n    }\n    else {\n      *__position._M_current = elf_object;\n      (this->objects_).super__Vector_base<gold::Object*,_std::allocator<gold::Object*>_>._M_impl.\n      _M_finish = __position._M_current + 1;\n    }\n  }" { (expression_statement "__position._M_current =\n         (this->objects_).super__Vector_base<gold::Object*,_std::allocator<gold::Object*>_>._M_impl.\n         _M_finish;" (field_expression "__position._M_current =\n         (this->objects_).super__Vector_base<gold::Object*,_std::allocator<gold::Object*>_>._M_impl.\n         _M_finish" (field_expression "__position._M_current =\n         (this->objects_).super__Vector_base<gold::Object*,_std::allocator<gold::Object*>_>._M_impl" (binary_expression "__position._M_current =\n         (this->objects_).super__Vector_base<gold::Object*,_std::allocator<gold::Object*>_" (binary_expression "__position._M_current =\n         (this->objects_).super__Vector_base<gold::Object*,_std::allocator<gold" (binary_expression "__position._M_current =\n         (this->objects_).super__Vector_base<gold::Object*,_std" (assignment_expression "__position._M_current =\n         (this->objects_).super__Vector_base<gold" (field_expression "__position._M_current" identifier . field_identifier) = (binary_expression "(this->objects_).super__Vector_base<gold" (field_expression "(this->objects_).super__Vector_base" (parenthesized_expression "(this->objects_)" ( (field_expression "this->objects_" identifier -> field_identifier) )) . field_identifier) < identifier)) (ERROR "::Object" : : identifier) * (ERROR "," ,) identifier) (ERROR "::allocator" : : identifier) < identifier) (ERROR "::Object" : : identifier) * (ERROR ">" >) identifier) (ERROR ">" >) . field_identifier) . field_identifier) ;) (if_statement "if (__position._M_current ==\n        (this->objects_).super__Vector_base<gold::Object*,_std::allocator<gold::Object*>_>._M_impl.\n        _M_end_of_storage) {\n      std::vector<gold::Object*,_std::allocator<gold::Object*>_>::\n      _M_realloc_insert<gold::Object*_const&>(&this->objects_,__position,&elf_object);\n    }\n    else {\n      *__position._M_current = elf_object;\n      (this->objects_).super__Vector_base<gold::Object*,_std::allocator<gold::Object*>_>._M_impl.\n      _M_finish = __position._M_current + 1;\n    }" if (parenthesized_expression "(__position._M_current ==\n        (this->objects_).super__Vector_base<gold::Object*,_std::allocator<gold::Object*>_>._M_impl.\n        _M_end_of_storage)" ( (field_expression "__position._M_current ==\n        (this->objects_).super__Vector_base<gold::Object*,_std::allocator<gold::Object*>_>._M_impl.\n        _M_end_of_storage" (field_expression "__position._M_current ==\n        (this->objects_).super__Vector_base<gold::Object*,_std::allocator<gold::Object*>_>._M_impl" (binary_expression "__position._M_current ==\n        (this->objects_).super__Vector_base<gold::Object*,_std::allocator<gold::Object*>_" (binary_expression "__position._M_current ==\n        (this->objects_).super__Vector_base<gold::Object*,_std::allocator<gold" (binary_expression "__position._M_current ==\n        (this->objects_).super__Vector_base<gold::Object*,_std" (binary_expression "__position._M_current ==\n        (this->objects_).super__Vector_base<gold" (field_expression "__position._M_current" identifier . field_identifier) == (binary_expression "(this->objects_).super__Vector_base<gold" (field_expression "(this->objects_).super__Vector_base" (parenthesized_expression "(this->objects_)" ( (field_expression "this->objects_" identifier -> field_identifier) )) . field_identifier) < identifier)) (ERROR "::Object" : : identifier) * (ERROR "," ,) identifier) (ERROR "::allocator" : : identifier) < identifier) (ERROR "::Object" : : identifier) * (ERROR ">" >) identifier) (ERROR ">" >) . field_identifier) . field_identifier) )) (compound_statement "{\n      std::vector<gold::Object*,_std::allocator<gold::Object*>_>::\n      _M_realloc_insert<gold::Object*_const&>(&this->objects_,__position,&elf_object);\n    }" { (ERROR "std::vector<gold::Object*,_std::allocator<gold::Object*>_>::\n      _M_realloc_insert<gold::" (comma_expression "std::vector<gold::Object*,_std" identifier (ERROR "::vector<gold::Object*" : : (binary_expression "vector<gold" identifier < identifier) : : identifier *) , identifier) : : (binary_expression "allocator<gold" identifier < identifier) : : (binary_expression "Object*>_>::\n      _M_realloc_insert<gold" (binary_expression "Object*>_>::\n      _M_realloc_insert" (binary_expression "Object*>_" identifier * (ERROR ">" >) identifier) > (ERROR "::" : :) identifier) < identifier) : :) (expression_statement "Object*_const&>(&this->objects_,__position,&elf_object);" (binary_expression "Object*_const&>(&this->objects_,__position,&elf_object)" (binary_expression "Object*_const" identifier * identifier) (ERROR "&" &) > (parenthesized_expression "(&this->objects_,__position,&elf_object)" ( (comma_expression "&this->objects_,__position,&elf_object" (pointer_expression "&this->objects_" & (field_expression "this->objects_" identifier -> field_identifier)) , (comma_expression "__position,&elf_object" identifier , (pointer_expression "&elf_object" & identifier))) ))) ;) }) (else_clause "else {\n      *__position._M_current = elf_object;\n      (this->objects_).super__Vector_base<gold::Object*,_std::allocator<gold::Object*>_>._M_impl.\n      _M_finish = __position._M_current + 1;\n    }" else (compound_statement "{\n      *__position._M_current = elf_object;\n      (this->objects_).super__Vector_base<gold::Object*,_std::allocator<gold::Object*>_>._M_impl.\n      _M_finish = __position._M_current + 1;\n    }" { (expression_statement "*__position._M_current = elf_object;" (assignment_expression "*__position._M_current = elf_object" (pointer_expression "*__position._M_current" * (field_expression "__position._M_current" identifier . field_identifier)) = identifier) ;) (expression_statement "(this->objects_).super__Vector_base<gold::Object*,_std::allocator<gold::Object*>_>._M_impl.\n      _M_finish = __position._M_current + 1;" (assignment_expression "(this->objects_).super__Vector_base<gold::Object*,_std::allocator<gold::Object*>_>._M_impl.\n      _M_finish = __position._M_current + 1" (field_expression "(this->objects_).super__Vector_base<gold::Object*,_std::allocator<gold::Object*>_>._M_impl.\n      _M_finish" (field_expression "(this->objects_).super__Vector_base<gold::Object*,_std::allocator<gold::Object*>_>._M_impl" (binary_expression "(this->objects_).super__Vector_base<gold::Object*,_std::allocator<gold::Object*>_" (binary_expression "(this->objects_).super__Vector_base<gold::Object*,_std::allocator<gold" (binary_expression "(this->objects_).super__Vector_base<gold::Object*,_std" (binary_expression "(this->objects_).super__Vector_base<gold" (field_expression "(this->objects_).super__Vector_base" (parenthesized_expression "(this->objects_)" ( (field_expression "this->objects_" identifier -> field_identifier) )) . field_identifier) < identifier) (ERROR "::Object" : : identifier) * (ERROR "," ,) identifier) (ERROR "::allocator" : : identifier) < identifier) (ERROR "::Object" : : identifier) * (ERROR ">" >) identifier) (ERROR ">" >) . field_identifier) . field_identifier) = (binary_expression "__position._M_current + 1" (field_expression "__position._M_current" identifier . field_identifier) + number_literal)) ;) }))) })) (expression_statement "pPVar3 = (Plugin_manager *)\n           (this->plugins_).super__List_base<gold::Plugin*,_std::allocator<gold::Plugin*>_>._M_impl.\n           _M_node.super__List_node_base._M_next;" (field_expression "pPVar3 = (Plugin_manager *)\n           (this->plugins_).super__List_base<gold::Plugin*,_std::allocator<gold::Plugin*>_>._M_impl.\n           _M_node.super__List_node_base._M_next" (field_expression "pPVar3 = (Plugin_manager *)\n           (this->plugins_).super__List_base<gold::Plugin*,_std::allocator<gold::Plugin*>_>._M_impl.\n           _M_node.super__List_node_base" (field_expression "pPVar3 = (Plugin_manager *)\n           (this->plugins_).super__List_base<gold::Plugin*,_std::allocator<gold::Plugin*>_>._M_impl.\n           _M_node" (field_expression "pPVar3 = (Plugin_manager *)\n           (this->plugins_).super__List_base<gold::Plugin*,_std::allocator<gold::Plugin*>_>._M_impl" (binary_expression "pPVar3 = (Plugin_manager *)\n           (this->plugins_).super__List_base<gold::Plugin*,_std::allocator<gold::Plugin*>_" (binary_expression "pPVar3 = (Plugin_manager *)\n           (this->plugins_).super__List_base<gold::Plugin*,_std::allocator<gold" (binary_expression "pPVar3 = (Plugin_manager *)\n           (this->plugins_).super__List_base<gold::Plugin*,_std" (assignment_expression "pPVar3 = (Plugin_manager *)\n           (this->plugins_).super__List_base<gold" identifier = (binary_expression "(Plugin_manager *)\n           (this->plugins_).super__List_base<gold" (cast_expression "(Plugin_manager *)\n           (this->plugins_).super__List_base" ( (type_descriptor "Plugin_manager *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "(this->plugins_).super__List_base" (parenthesized_expression "(this->plugins_)" ( (field_expression "this->plugins_" identifier -> field_identifier) )) . field_identifier)) < identifier)) (ERROR "::Plugin" : : identifier) * (ERROR "," ,) identifier) (ERROR "::allocator" : : identifier) < identifier) (ERROR "::Plugin" : : identifier) * (ERROR ">" >) identifier) (ERROR ">" >) . field_identifier) . field_identifier) . field_identifier) . field_identifier) ;) (expression_statement "this->in_claim_file_handler_ = true;" (assignment_expression "this->in_claim_file_handler_ = true" (field_expression "this->in_claim_file_handler_" identifier -> field_identifier) = true) ;) (expression_statement "(this->current_)._M_node = (_List_node_base *)pPVar3;" (assignment_expression "(this->current_)._M_node = (_List_node_base *)pPVar3" (field_expression "(this->current_)._M_node" (parenthesized_expression "(this->current_)" ( (field_expression "this->current_" identifier -> field_identifier) )) . field_identifier) = (cast_expression "(_List_node_base *)pPVar3" ( (type_descriptor "_List_node_base *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (labeled_statement "joined_r0x000f22ac:\n  do {\n    if (pPVar3 == this) {\n      this->in_claim_file_handler_ = false;\n      if (this->recorder_ != (Plugin_recorder *)0x0) {\n        Plugin_recorder::unclaimed_file(this->recorder_,&this_00->name_,offset,filesize);\n      }\n      pPVar11 = (Pluginobj *)0x0;\nLAB_000f23ab:\n      pLVar2 = pLVar1->lock_;\n      (*pLVar2->_vptr_Lock_impl[3])(pLVar2);\n      return pPVar11;\n    }\n    sVar4 = (pPVar3->plugins_).super__List_base<gold::Plugin*,_std::allocator<gold::Plugin*>_>.\n            _M_impl._M_node._M_size;\n    if (this->in_replacement_phase_ == false) {\n      pcVar5 = *(code **)(sVar4 + 0x28);\n      claimed = 0;\n      if ((pcVar5 != (code *)0x0) && ((*pcVar5)(&this->plugin_input_file_,&claimed), claimed != 0))\n      {\n        this->any_claimed_ = true;\n        this->in_claim_file_handler_ = false;\n        if (this->recorder_ != (Plugin_recorder *)0x0) {\n          obj_name = &elf_object->name_;\n          if (elf_object == (Object *)0x0) {\n            obj_name = &this_00->name_;\n          }\n          Plugin_recorder::claimed_file\n                    (this->recorder_,obj_name,offset,filesize,\n                     (string *)&((this->current_)._M_node[1]._M_next)->_M_prev);\n        }\n        ppOVar6 = (this->objects_).super__Vector_base<gold::Object*,_std::allocator<gold::Object*>_>\n                  ._M_impl._M_start;\n        if ((handle < (void *)((int)(this->objects_).\n                                    super__Vector_base<gold::Object*,_std::allocator<gold::Object*>_>\n                                    ._M_impl._M_finish - (int)ppOVar6 >> 2)) &&\n           (piVar7 = *(int **)((int)ppOVar6 + iVar9), iVar10 = (**(code **)(*piVar7 + 0x14))(piVar7)\n           , iVar10 != 0)) {\n          piVar7 = *(int **)((int)(this->objects_).\n                                  super__Vector_base<gold::Object*,_std::allocator<gold::Object*>_>.\n                                  _M_impl._M_start + iVar9);\n          pPVar11 = (Pluginobj *)(**(code **)(*piVar7 + 0x14))(piVar7);\n        }\n        else {\n                    /* try { // try from 000f23d7 to 000f23f0 has its CatchHandler @ 000f2415 */\n          pPVar11 = make_plugin_object(this,(uint)handle);\n        }\n        goto LAB_000f23ab;\n      }\nLAB_000f22cf:\n      pPVar3 = (Plugin_manager *)((this->current_)._M_node)->_M_next;\n      (this->current_)._M_node = (_List_node_base *)pPVar3;\n      goto joined_r0x000f22ac;\n    }\n    pcVar5 = *(code **)(sVar4 + 0x34);\n    if (pcVar5 == (code *)0x0) goto LAB_000f22cf;\n    (*pcVar5)(&this->plugin_input_file_);\n    pPVar3 = (Plugin_manager *)((this->current_)._M_node)->_M_next;\n    (this->current_)._M_node = (_List_node_base *)pPVar3;\n  } while( true );" statement_identifier : (do_statement "do {\n    if (pPVar3 == this) {\n      this->in_claim_file_handler_ = false;\n      if (this->recorder_ != (Plugin_recorder *)0x0) {\n        Plugin_recorder::unclaimed_file(this->recorder_,&this_00->name_,offset,filesize);\n      }\n      pPVar11 = (Pluginobj *)0x0;\nLAB_000f23ab:\n      pLVar2 = pLVar1->lock_;\n      (*pLVar2->_vptr_Lock_impl[3])(pLVar2);\n      return pPVar11;\n    }\n    sVar4 = (pPVar3->plugins_).super__List_base<gold::Plugin*,_std::allocator<gold::Plugin*>_>.\n            _M_impl._M_node._M_size;\n    if (this->in_replacement_phase_ == false) {\n      pcVar5 = *(code **)(sVar4 + 0x28);\n      claimed = 0;\n      if ((pcVar5 != (code *)0x0) && ((*pcVar5)(&this->plugin_input_file_,&claimed), claimed != 0))\n      {\n        this->any_claimed_ = true;\n        this->in_claim_file_handler_ = false;\n        if (this->recorder_ != (Plugin_recorder *)0x0) {\n          obj_name = &elf_object->name_;\n          if (elf_object == (Object *)0x0) {\n            obj_name = &this_00->name_;\n          }\n          Plugin_recorder::claimed_file\n                    (this->recorder_,obj_name,offset,filesize,\n                     (string *)&((this->current_)._M_node[1]._M_next)->_M_prev);\n        }\n        ppOVar6 = (this->objects_).super__Vector_base<gold::Object*,_std::allocator<gold::Object*>_>\n                  ._M_impl._M_start;\n        if ((handle < (void *)((int)(this->objects_).\n                                    super__Vector_base<gold::Object*,_std::allocator<gold::Object*>_>\n                                    ._M_impl._M_finish - (int)ppOVar6 >> 2)) &&\n           (piVar7 = *(int **)((int)ppOVar6 + iVar9), iVar10 = (**(code **)(*piVar7 + 0x14))(piVar7)\n           , iVar10 != 0)) {\n          piVar7 = *(int **)((int)(this->objects_).\n                                  super__Vector_base<gold::Object*,_std::allocator<gold::Object*>_>.\n                                  _M_impl._M_start + iVar9);\n          pPVar11 = (Pluginobj *)(**(code **)(*piVar7 + 0x14))(piVar7);\n        }\n        else {\n                    /* try { // try from 000f23d7 to 000f23f0 has its CatchHandler @ 000f2415 */\n          pPVar11 = make_plugin_object(this,(uint)handle);\n        }\n        goto LAB_000f23ab;\n      }\nLAB_000f22cf:\n      pPVar3 = (Plugin_manager *)((this->current_)._M_node)->_M_next;\n      (this->current_)._M_node = (_List_node_base *)pPVar3;\n      goto joined_r0x000f22ac;\n    }\n    pcVar5 = *(code **)(sVar4 + 0x34);\n    if (pcVar5 == (code *)0x0) goto LAB_000f22cf;\n    (*pcVar5)(&this->plugin_input_file_);\n    pPVar3 = (Plugin_manager *)((this->current_)._M_node)->_M_next;\n    (this->current_)._M_node = (_List_node_base *)pPVar3;\n  } while( true );" do (compound_statement "{\n    if (pPVar3 == this) {\n      this->in_claim_file_handler_ = false;\n      if (this->recorder_ != (Plugin_recorder *)0x0) {\n        Plugin_recorder::unclaimed_file(this->recorder_,&this_00->name_,offset,filesize);\n      }\n      pPVar11 = (Pluginobj *)0x0;\nLAB_000f23ab:\n      pLVar2 = pLVar1->lock_;\n      (*pLVar2->_vptr_Lock_impl[3])(pLVar2);\n      return pPVar11;\n    }\n    sVar4 = (pPVar3->plugins_).super__List_base<gold::Plugin*,_std::allocator<gold::Plugin*>_>.\n            _M_impl._M_node._M_size;\n    if (this->in_replacement_phase_ == false) {\n      pcVar5 = *(code **)(sVar4 + 0x28);\n      claimed = 0;\n      if ((pcVar5 != (code *)0x0) && ((*pcVar5)(&this->plugin_input_file_,&claimed), claimed != 0))\n      {\n        this->any_claimed_ = true;\n        this->in_claim_file_handler_ = false;\n        if (this->recorder_ != (Plugin_recorder *)0x0) {\n          obj_name = &elf_object->name_;\n          if (elf_object == (Object *)0x0) {\n            obj_name = &this_00->name_;\n          }\n          Plugin_recorder::claimed_file\n                    (this->recorder_,obj_name,offset,filesize,\n                     (string *)&((this->current_)._M_node[1]._M_next)->_M_prev);\n        }\n        ppOVar6 = (this->objects_).super__Vector_base<gold::Object*,_std::allocator<gold::Object*>_>\n                  ._M_impl._M_start;\n        if ((handle < (void *)((int)(this->objects_).\n                                    super__Vector_base<gold::Object*,_std::allocator<gold::Object*>_>\n                                    ._M_impl._M_finish - (int)ppOVar6 >> 2)) &&\n           (piVar7 = *(int **)((int)ppOVar6 + iVar9), iVar10 = (**(code **)(*piVar7 + 0x14))(piVar7)\n           , iVar10 != 0)) {\n          piVar7 = *(int **)((int)(this->objects_).\n                                  super__Vector_base<gold::Object*,_std::allocator<gold::Object*>_>.\n                                  _M_impl._M_start + iVar9);\n          pPVar11 = (Pluginobj *)(**(code **)(*piVar7 + 0x14))(piVar7);\n        }\n        else {\n                    /* try { // try from 000f23d7 to 000f23f0 has its CatchHandler @ 000f2415 */\n          pPVar11 = make_plugin_object(this,(uint)handle);\n        }\n        goto LAB_000f23ab;\n      }\nLAB_000f22cf:\n      pPVar3 = (Plugin_manager *)((this->current_)._M_node)->_M_next;\n      (this->current_)._M_node = (_List_node_base *)pPVar3;\n      goto joined_r0x000f22ac;\n    }\n    pcVar5 = *(code **)(sVar4 + 0x34);\n    if (pcVar5 == (code *)0x0) goto LAB_000f22cf;\n    (*pcVar5)(&this->plugin_input_file_);\n    pPVar3 = (Plugin_manager *)((this->current_)._M_node)->_M_next;\n    (this->current_)._M_node = (_List_node_base *)pPVar3;\n  }" { (if_statement "if (pPVar3 == this) {\n      this->in_claim_file_handler_ = false;\n      if (this->recorder_ != (Plugin_recorder *)0x0) {\n        Plugin_recorder::unclaimed_file(this->recorder_,&this_00->name_,offset,filesize);\n      }\n      pPVar11 = (Pluginobj *)0x0;\nLAB_000f23ab:\n      pLVar2 = pLVar1->lock_;\n      (*pLVar2->_vptr_Lock_impl[3])(pLVar2);\n      return pPVar11;\n    }" if (parenthesized_expression "(pPVar3 == this)" ( (binary_expression "pPVar3 == this" identifier == identifier) )) (compound_statement "{\n      this->in_claim_file_handler_ = false;\n      if (this->recorder_ != (Plugin_recorder *)0x0) {\n        Plugin_recorder::unclaimed_file(this->recorder_,&this_00->name_,offset,filesize);\n      }\n      pPVar11 = (Pluginobj *)0x0;\nLAB_000f23ab:\n      pLVar2 = pLVar1->lock_;\n      (*pLVar2->_vptr_Lock_impl[3])(pLVar2);\n      return pPVar11;\n    }" { (expression_statement "this->in_claim_file_handler_ = false;" (assignment_expression "this->in_claim_file_handler_ = false" (field_expression "this->in_claim_file_handler_" identifier -> field_identifier) = false) ;) (if_statement "if (this->recorder_ != (Plugin_recorder *)0x0) {\n        Plugin_recorder::unclaimed_file(this->recorder_,&this_00->name_,offset,filesize);\n      }" if (parenthesized_expression "(this->recorder_ != (Plugin_recorder *)0x0)" ( (binary_expression "this->recorder_ != (Plugin_recorder *)0x0" (field_expression "this->recorder_" identifier -> field_identifier) != (cast_expression "(Plugin_recorder *)0x0" ( (type_descriptor "Plugin_recorder *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        Plugin_recorder::unclaimed_file(this->recorder_,&this_00->name_,offset,filesize);\n      }" { (labeled_statement "Plugin_recorder::unclaimed_file(this->recorder_,&this_00->name_,offset,filesize);" statement_identifier : (ERROR ":" :) (expression_statement "unclaimed_file(this->recorder_,&this_00->name_,offset,filesize);" (call_expression "unclaimed_file(this->recorder_,&this_00->name_,offset,filesize)" identifier (argument_list "(this->recorder_,&this_00->name_,offset,filesize)" ( (field_expression "this->recorder_" identifier -> field_identifier) , (pointer_expression "&this_00->name_" & (field_expression "this_00->name_" identifier -> field_identifier)) , identifier , identifier ))) ;)) })) (expression_statement "pPVar11 = (Pluginobj *)0x0;" (assignment_expression "pPVar11 = (Pluginobj *)0x0" identifier = (cast_expression "(Pluginobj *)0x0" ( (type_descriptor "Pluginobj *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (labeled_statement "LAB_000f23ab:\n      pLVar2 = pLVar1->lock_;" statement_identifier : (expression_statement "pLVar2 = pLVar1->lock_;" (assignment_expression "pLVar2 = pLVar1->lock_" identifier = (field_expression "pLVar1->lock_" identifier -> field_identifier)) ;)) (expression_statement "(*pLVar2->_vptr_Lock_impl[3])(pLVar2);" (call_expression "(*pLVar2->_vptr_Lock_impl[3])(pLVar2)" (parenthesized_expression "(*pLVar2->_vptr_Lock_impl[3])" ( (pointer_expression "*pLVar2->_vptr_Lock_impl[3]" * (subscript_expression "pLVar2->_vptr_Lock_impl[3]" (field_expression "pLVar2->_vptr_Lock_impl" identifier -> field_identifier) [ number_literal ])) )) (argument_list "(pLVar2)" ( identifier ))) ;) (return_statement "return pPVar11;" return identifier ;) })) (expression_statement "sVar4 = (pPVar3->plugins_).super__List_base<gold::Plugin*,_std::allocator<gold::Plugin*>_>.\n            _M_impl._M_node._M_size;" (field_expression "sVar4 = (pPVar3->plugins_).super__List_base<gold::Plugin*,_std::allocator<gold::Plugin*>_>.\n            _M_impl._M_node._M_size" (field_expression "sVar4 = (pPVar3->plugins_).super__List_base<gold::Plugin*,_std::allocator<gold::Plugin*>_>.\n            _M_impl._M_node" (field_expression "sVar4 = (pPVar3->plugins_).super__List_base<gold::Plugin*,_std::allocator<gold::Plugin*>_>.\n            _M_impl" (binary_expression "sVar4 = (pPVar3->plugins_).super__List_base<gold::Plugin*,_std::allocator<gold::Plugin*>_" (binary_expression "sVar4 = (pPVar3->plugins_).super__List_base<gold::Plugin*,_std::allocator<gold" (binary_expression "sVar4 = (pPVar3->plugins_).super__List_base<gold::Plugin*,_std" (assignment_expression "sVar4 = (pPVar3->plugins_).super__List_base<gold" identifier = (binary_expression "(pPVar3->plugins_).super__List_base<gold" (field_expression "(pPVar3->plugins_).super__List_base" (parenthesized_expression "(pPVar3->plugins_)" ( (field_expression "pPVar3->plugins_" identifier -> field_identifier) )) . field_identifier) < identifier)) (ERROR "::Plugin" : : identifier) * (ERROR "," ,) identifier) (ERROR "::allocator" : : identifier) < identifier) (ERROR "::Plugin" : : identifier) * (ERROR ">" >) identifier) (ERROR ">" >) . field_identifier) . field_identifier) . field_identifier) ;) (if_statement "if (this->in_replacement_phase_ == false) {\n      pcVar5 = *(code **)(sVar4 + 0x28);\n      claimed = 0;\n      if ((pcVar5 != (code *)0x0) && ((*pcVar5)(&this->plugin_input_file_,&claimed), claimed != 0))\n      {\n        this->any_claimed_ = true;\n        this->in_claim_file_handler_ = false;\n        if (this->recorder_ != (Plugin_recorder *)0x0) {\n          obj_name = &elf_object->name_;\n          if (elf_object == (Object *)0x0) {\n            obj_name = &this_00->name_;\n          }\n          Plugin_recorder::claimed_file\n                    (this->recorder_,obj_name,offset,filesize,\n                     (string *)&((this->current_)._M_node[1]._M_next)->_M_prev);\n        }\n        ppOVar6 = (this->objects_).super__Vector_base<gold::Object*,_std::allocator<gold::Object*>_>\n                  ._M_impl._M_start;\n        if ((handle < (void *)((int)(this->objects_).\n                                    super__Vector_base<gold::Object*,_std::allocator<gold::Object*>_>\n                                    ._M_impl._M_finish - (int)ppOVar6 >> 2)) &&\n           (piVar7 = *(int **)((int)ppOVar6 + iVar9), iVar10 = (**(code **)(*piVar7 + 0x14))(piVar7)\n           , iVar10 != 0)) {\n          piVar7 = *(int **)((int)(this->objects_).\n                                  super__Vector_base<gold::Object*,_std::allocator<gold::Object*>_>.\n                                  _M_impl._M_start + iVar9);\n          pPVar11 = (Pluginobj *)(**(code **)(*piVar7 + 0x14))(piVar7);\n        }\n        else {\n                    /* try { // try from 000f23d7 to 000f23f0 has its CatchHandler @ 000f2415 */\n          pPVar11 = make_plugin_object(this,(uint)handle);\n        }\n        goto LAB_000f23ab;\n      }\nLAB_000f22cf:\n      pPVar3 = (Plugin_manager *)((this->current_)._M_node)->_M_next;\n      (this->current_)._M_node = (_List_node_base *)pPVar3;\n      goto joined_r0x000f22ac;\n    }" if (parenthesized_expression "(this->in_replacement_phase_ == false)" ( (binary_expression "this->in_replacement_phase_ == false" (field_expression "this->in_replacement_phase_" identifier -> field_identifier) == false) )) (compound_statement "{\n      pcVar5 = *(code **)(sVar4 + 0x28);\n      claimed = 0;\n      if ((pcVar5 != (code *)0x0) && ((*pcVar5)(&this->plugin_input_file_,&claimed), claimed != 0))\n      {\n        this->any_claimed_ = true;\n        this->in_claim_file_handler_ = false;\n        if (this->recorder_ != (Plugin_recorder *)0x0) {\n          obj_name = &elf_object->name_;\n          if (elf_object == (Object *)0x0) {\n            obj_name = &this_00->name_;\n          }\n          Plugin_recorder::claimed_file\n                    (this->recorder_,obj_name,offset,filesize,\n                     (string *)&((this->current_)._M_node[1]._M_next)->_M_prev);\n        }\n        ppOVar6 = (this->objects_).super__Vector_base<gold::Object*,_std::allocator<gold::Object*>_>\n                  ._M_impl._M_start;\n        if ((handle < (void *)((int)(this->objects_).\n                                    super__Vector_base<gold::Object*,_std::allocator<gold::Object*>_>\n                                    ._M_impl._M_finish - (int)ppOVar6 >> 2)) &&\n           (piVar7 = *(int **)((int)ppOVar6 + iVar9), iVar10 = (**(code **)(*piVar7 + 0x14))(piVar7)\n           , iVar10 != 0)) {\n          piVar7 = *(int **)((int)(this->objects_).\n                                  super__Vector_base<gold::Object*,_std::allocator<gold::Object*>_>.\n                                  _M_impl._M_start + iVar9);\n          pPVar11 = (Pluginobj *)(**(code **)(*piVar7 + 0x14))(piVar7);\n        }\n        else {\n                    /* try { // try from 000f23d7 to 000f23f0 has its CatchHandler @ 000f2415 */\n          pPVar11 = make_plugin_object(this,(uint)handle);\n        }\n        goto LAB_000f23ab;\n      }\nLAB_000f22cf:\n      pPVar3 = (Plugin_manager *)((this->current_)._M_node)->_M_next;\n      (this->current_)._M_node = (_List_node_base *)pPVar3;\n      goto joined_r0x000f22ac;\n    }" { (expression_statement "pcVar5 = *(code **)(sVar4 + 0x28);" (assignment_expression "pcVar5 = *(code **)(sVar4 + 0x28)" identifier = (pointer_expression "*(code **)(sVar4 + 0x28)" * (cast_expression "(code **)(sVar4 + 0x28)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(sVar4 + 0x28)" ( (binary_expression "sVar4 + 0x28" identifier + number_literal) ))))) ;) (expression_statement "claimed = 0;" (assignment_expression "claimed = 0" identifier = number_literal) ;) (if_statement "if ((pcVar5 != (code *)0x0) && ((*pcVar5)(&this->plugin_input_file_,&claimed), claimed != 0))\n      {\n        this->any_claimed_ = true;\n        this->in_claim_file_handler_ = false;\n        if (this->recorder_ != (Plugin_recorder *)0x0) {\n          obj_name = &elf_object->name_;\n          if (elf_object == (Object *)0x0) {\n            obj_name = &this_00->name_;\n          }\n          Plugin_recorder::claimed_file\n                    (this->recorder_,obj_name,offset,filesize,\n                     (string *)&((this->current_)._M_node[1]._M_next)->_M_prev);\n        }\n        ppOVar6 = (this->objects_).super__Vector_base<gold::Object*,_std::allocator<gold::Object*>_>\n                  ._M_impl._M_start;\n        if ((handle < (void *)((int)(this->objects_).\n                                    super__Vector_base<gold::Object*,_std::allocator<gold::Object*>_>\n                                    ._M_impl._M_finish - (int)ppOVar6 >> 2)) &&\n           (piVar7 = *(int **)((int)ppOVar6 + iVar9), iVar10 = (**(code **)(*piVar7 + 0x14))(piVar7)\n           , iVar10 != 0)) {\n          piVar7 = *(int **)((int)(this->objects_).\n                                  super__Vector_base<gold::Object*,_std::allocator<gold::Object*>_>.\n                                  _M_impl._M_start + iVar9);\n          pPVar11 = (Pluginobj *)(**(code **)(*piVar7 + 0x14))(piVar7);\n        }\n        else {\n                    /* try { // try from 000f23d7 to 000f23f0 has its CatchHandler @ 000f2415 */\n          pPVar11 = make_plugin_object(this,(uint)handle);\n        }\n        goto LAB_000f23ab;\n      }" if (parenthesized_expression "((pcVar5 != (code *)0x0) && ((*pcVar5)(&this->plugin_input_file_,&claimed), claimed != 0))" ( (binary_expression "(pcVar5 != (code *)0x0) && ((*pcVar5)(&this->plugin_input_file_,&claimed), claimed != 0)" (parenthesized_expression "(pcVar5 != (code *)0x0)" ( (binary_expression "pcVar5 != (code *)0x0" identifier != (cast_expression "(code *)0x0" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) && (parenthesized_expression "((*pcVar5)(&this->plugin_input_file_,&claimed), claimed != 0)" ( (comma_expression "(*pcVar5)(&this->plugin_input_file_,&claimed), claimed != 0" (call_expression "(*pcVar5)(&this->plugin_input_file_,&claimed)" (parenthesized_expression "(*pcVar5)" ( (pointer_expression "*pcVar5" * identifier) )) (argument_list "(&this->plugin_input_file_,&claimed)" ( (pointer_expression "&this->plugin_input_file_" & (field_expression "this->plugin_input_file_" identifier -> field_identifier)) , (pointer_expression "&claimed" & identifier) ))) , (binary_expression "claimed != 0" identifier != number_literal)) ))) )) (compound_statement "{\n        this->any_claimed_ = true;\n        this->in_claim_file_handler_ = false;\n        if (this->recorder_ != (Plugin_recorder *)0x0) {\n          obj_name = &elf_object->name_;\n          if (elf_object == (Object *)0x0) {\n            obj_name = &this_00->name_;\n          }\n          Plugin_recorder::claimed_file\n                    (this->recorder_,obj_name,offset,filesize,\n                     (string *)&((this->current_)._M_node[1]._M_next)->_M_prev);\n        }\n        ppOVar6 = (this->objects_).super__Vector_base<gold::Object*,_std::allocator<gold::Object*>_>\n                  ._M_impl._M_start;\n        if ((handle < (void *)((int)(this->objects_).\n                                    super__Vector_base<gold::Object*,_std::allocator<gold::Object*>_>\n                                    ._M_impl._M_finish - (int)ppOVar6 >> 2)) &&\n           (piVar7 = *(int **)((int)ppOVar6 + iVar9), iVar10 = (**(code **)(*piVar7 + 0x14))(piVar7)\n           , iVar10 != 0)) {\n          piVar7 = *(int **)((int)(this->objects_).\n                                  super__Vector_base<gold::Object*,_std::allocator<gold::Object*>_>.\n                                  _M_impl._M_start + iVar9);\n          pPVar11 = (Pluginobj *)(**(code **)(*piVar7 + 0x14))(piVar7);\n        }\n        else {\n                    /* try { // try from 000f23d7 to 000f23f0 has its CatchHandler @ 000f2415 */\n          pPVar11 = make_plugin_object(this,(uint)handle);\n        }\n        goto LAB_000f23ab;\n      }" { (expression_statement "this->any_claimed_ = true;" (assignment_expression "this->any_claimed_ = true" (field_expression "this->any_claimed_" identifier -> field_identifier) = true) ;) (expression_statement "this->in_claim_file_handler_ = false;" (assignment_expression "this->in_claim_file_handler_ = false" (field_expression "this->in_claim_file_handler_" identifier -> field_identifier) = false) ;) (if_statement "if (this->recorder_ != (Plugin_recorder *)0x0) {\n          obj_name = &elf_object->name_;\n          if (elf_object == (Object *)0x0) {\n            obj_name = &this_00->name_;\n          }\n          Plugin_recorder::claimed_file\n                    (this->recorder_,obj_name,offset,filesize,\n                     (string *)&((this->current_)._M_node[1]._M_next)->_M_prev);\n        }" if (parenthesized_expression "(this->recorder_ != (Plugin_recorder *)0x0)" ( (binary_expression "this->recorder_ != (Plugin_recorder *)0x0" (field_expression "this->recorder_" identifier -> field_identifier) != (cast_expression "(Plugin_recorder *)0x0" ( (type_descriptor "Plugin_recorder *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n          obj_name = &elf_object->name_;\n          if (elf_object == (Object *)0x0) {\n            obj_name = &this_00->name_;\n          }\n          Plugin_recorder::claimed_file\n                    (this->recorder_,obj_name,offset,filesize,\n                     (string *)&((this->current_)._M_node[1]._M_next)->_M_prev);\n        }" { (expression_statement "obj_name = &elf_object->name_;" (assignment_expression "obj_name = &elf_object->name_" identifier = (pointer_expression "&elf_object->name_" & (field_expression "elf_object->name_" identifier -> field_identifier))) ;) (if_statement "if (elf_object == (Object *)0x0) {\n            obj_name = &this_00->name_;\n          }" if (parenthesized_expression "(elf_object == (Object *)0x0)" ( (binary_expression "elf_object == (Object *)0x0" identifier == (cast_expression "(Object *)0x0" ( (type_descriptor "Object *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n            obj_name = &this_00->name_;\n          }" { (expression_statement "obj_name = &this_00->name_;" (assignment_expression "obj_name = &this_00->name_" identifier = (pointer_expression "&this_00->name_" & (field_expression "this_00->name_" identifier -> field_identifier))) ;) })) (labeled_statement "Plugin_recorder::claimed_file\n                    (this->recorder_,obj_name,offset,filesize,\n                     (string *)&((this->current_)._M_node[1]._M_next)->_M_prev);" statement_identifier : (ERROR ":" :) (expression_statement "claimed_file\n                    (this->recorder_,obj_name,offset,filesize,\n                     (string *)&((this->current_)._M_node[1]._M_next)->_M_prev);" (call_expression "claimed_file\n                    (this->recorder_,obj_name,offset,filesize,\n                     (string *)&((this->current_)._M_node[1]._M_next)->_M_prev)" identifier (argument_list "(this->recorder_,obj_name,offset,filesize,\n                     (string *)&((this->current_)._M_node[1]._M_next)->_M_prev)" ( (field_expression "this->recorder_" identifier -> field_identifier) , identifier , identifier , identifier , (cast_expression "(string *)&((this->current_)._M_node[1]._M_next)->_M_prev" ( (type_descriptor "string *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&((this->current_)._M_node[1]._M_next)->_M_prev" & (field_expression "((this->current_)._M_node[1]._M_next)->_M_prev" (parenthesized_expression "((this->current_)._M_node[1]._M_next)" ( (field_expression "(this->current_)._M_node[1]._M_next" (subscript_expression "(this->current_)._M_node[1]" (field_expression "(this->current_)._M_node" (parenthesized_expression "(this->current_)" ( (field_expression "this->current_" identifier -> field_identifier) )) . field_identifier) [ number_literal ]) . field_identifier) )) -> field_identifier))) ))) ;)) })) (expression_statement "ppOVar6 = (this->objects_).super__Vector_base<gold::Object*,_std::allocator<gold::Object*>_>\n                  ._M_impl._M_start;" (field_expression "ppOVar6 = (this->objects_).super__Vector_base<gold::Object*,_std::allocator<gold::Object*>_>\n                  ._M_impl._M_start" (field_expression "ppOVar6 = (this->objects_).super__Vector_base<gold::Object*,_std::allocator<gold::Object*>_>\n                  ._M_impl" (binary_expression "ppOVar6 = (this->objects_).super__Vector_base<gold::Object*,_std::allocator<gold::Object*>_" (binary_expression "ppOVar6 = (this->objects_).super__Vector_base<gold::Object*,_std::allocator<gold" (binary_expression "ppOVar6 = (this->objects_).super__Vector_base<gold::Object*,_std" (assignment_expression "ppOVar6 = (this->objects_).super__Vector_base<gold" identifier = (binary_expression "(this->objects_).super__Vector_base<gold" (field_expression "(this->objects_).super__Vector_base" (parenthesized_expression "(this->objects_)" ( (field_expression "this->objects_" identifier -> field_identifier) )) . field_identifier) < identifier)) (ERROR "::Object" : : identifier) * (ERROR "," ,) identifier) (ERROR "::allocator" : : identifier) < identifier) (ERROR "::Object" : : identifier) * (ERROR ">" >) identifier) (ERROR ">" >) . field_identifier) . field_identifier) ;) (if_statement "if ((handle < (void *)((int)(this->objects_).\n                                    super__Vector_base<gold::Object*,_std::allocator<gold::Object*>_>\n                                    ._M_impl._M_finish - (int)ppOVar6 >> 2)) &&\n           (piVar7 = *(int **)((int)ppOVar6 + iVar9), iVar10 = (**(code **)(*piVar7 + 0x14))(piVar7)\n           , iVar10 != 0)) {\n          piVar7 = *(int **)((int)(this->objects_).\n                                  super__Vector_base<gold::Object*,_std::allocator<gold::Object*>_>.\n                                  _M_impl._M_start + iVar9);\n          pPVar11 = (Pluginobj *)(**(code **)(*piVar7 + 0x14))(piVar7);\n        }\n        else {\n                    /* try { // try from 000f23d7 to 000f23f0 has its CatchHandler @ 000f2415 */\n          pPVar11 = make_plugin_object(this,(uint)handle);\n        }" if (parenthesized_expression "((handle < (void *)((int)(this->objects_).\n                                    super__Vector_base<gold::Object*,_std::allocator<gold::Object*>_>\n                                    ._M_impl._M_finish - (int)ppOVar6 >> 2)) &&\n           (piVar7 = *(int **)((int)ppOVar6 + iVar9), iVar10 = (**(code **)(*piVar7 + 0x14))(piVar7)\n           , iVar10 != 0))" ( (binary_expression "(handle < (void *)((int)(this->objects_).\n                                    super__Vector_base<gold::Object*,_std::allocator<gold::Object*>_>\n                                    ._M_impl._M_finish - (int)ppOVar6 >> 2)) &&\n           (piVar7 = *(int **)((int)ppOVar6 + iVar9), iVar10 = (**(code **)(*piVar7 + 0x14))(piVar7)\n           , iVar10 != 0)" (parenthesized_expression "(handle < (void *)((int)(this->objects_).\n                                    super__Vector_base<gold::Object*,_std::allocator<gold::Object*>_>\n                                    ._M_impl._M_finish - (int)ppOVar6 >> 2))" ( (binary_expression "handle < (void *)((int)(this->objects_).\n                                    super__Vector_base<gold::Object*,_std::allocator<gold::Object*>_>\n                                    ._M_impl._M_finish - (int)ppOVar6 >> 2)" identifier < (cast_expression "(void *)((int)(this->objects_).\n                                    super__Vector_base<gold::Object*,_std::allocator<gold::Object*>_>\n                                    ._M_impl._M_finish - (int)ppOVar6 >> 2)" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)(this->objects_).\n                                    super__Vector_base<gold::Object*,_std::allocator<gold::Object*>_>\n                                    ._M_impl._M_finish - (int)ppOVar6 >> 2)" ( (binary_expression "(int)(this->objects_).\n                                    super__Vector_base<gold::Object*,_std::allocator<gold::Object*>_>\n                                    ._M_impl._M_finish - (int)ppOVar6 >> 2" (binary_expression "(int)(this->objects_).\n                                    super__Vector_base<gold::Object*,_std::allocator<gold::Object*>_>\n                                    ._M_impl._M_finish - (int)ppOVar6" (field_expression "(int)(this->objects_).\n                                    super__Vector_base<gold::Object*,_std::allocator<gold::Object*>_>\n                                    ._M_impl._M_finish" (field_expression "(int)(this->objects_).\n                                    super__Vector_base<gold::Object*,_std::allocator<gold::Object*>_>\n                                    ._M_impl" (binary_expression "(int)(this->objects_).\n                                    super__Vector_base<gold::Object*,_std::allocator<gold::Object*>_" (binary_expression "(int)(this->objects_).\n                                    super__Vector_base<gold::Object*,_std::allocator<gold" (binary_expression "(int)(this->objects_).\n                                    super__Vector_base<gold::Object*,_std" (binary_expression "(int)(this->objects_).\n                                    super__Vector_base<gold" (cast_expression "(int)(this->objects_).\n                                    super__Vector_base" ( (type_descriptor "int" primitive_type) ) (field_expression "(this->objects_).\n                                    super__Vector_base" (parenthesized_expression "(this->objects_)" ( (field_expression "this->objects_" identifier -> field_identifier) )) . field_identifier)) < identifier) (ERROR "::Object" : : identifier) * (ERROR "," ,) identifier) (ERROR "::allocator" : : identifier) < identifier) (ERROR "::Object" : : identifier) * (ERROR ">" >) identifier) (ERROR ">" >) . field_identifier) . field_identifier) - (cast_expression "(int)ppOVar6" ( (type_descriptor "int" primitive_type) ) identifier)) >> number_literal) )))) )) && (parenthesized_expression "(piVar7 = *(int **)((int)ppOVar6 + iVar9), iVar10 = (**(code **)(*piVar7 + 0x14))(piVar7)\n           , iVar10 != 0)" ( (comma_expression "piVar7 = *(int **)((int)ppOVar6 + iVar9), iVar10 = (**(code **)(*piVar7 + 0x14))(piVar7)\n           , iVar10 != 0" (assignment_expression "piVar7 = *(int **)((int)ppOVar6 + iVar9)" identifier = (pointer_expression "*(int **)((int)ppOVar6 + iVar9)" * (cast_expression "(int **)((int)ppOVar6 + iVar9)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)ppOVar6 + iVar9)" ( (binary_expression "(int)ppOVar6 + iVar9" (cast_expression "(int)ppOVar6" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) ))))) , (comma_expression "iVar10 = (**(code **)(*piVar7 + 0x14))(piVar7)\n           , iVar10 != 0" (assignment_expression "iVar10 = (**(code **)(*piVar7 + 0x14))(piVar7)" identifier = (call_expression "(**(code **)(*piVar7 + 0x14))(piVar7)" (parenthesized_expression "(**(code **)(*piVar7 + 0x14))" ( (pointer_expression "**(code **)(*piVar7 + 0x14)" * (pointer_expression "*(code **)(*piVar7 + 0x14)" * (cast_expression "(code **)(*piVar7 + 0x14)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*piVar7 + 0x14)" ( (binary_expression "*piVar7 + 0x14" (pointer_expression "*piVar7" * identifier) + number_literal) ))))) )) (argument_list "(piVar7)" ( identifier )))) , (binary_expression "iVar10 != 0" identifier != number_literal))) ))) )) (compound_statement "{\n          piVar7 = *(int **)((int)(this->objects_).\n                                  super__Vector_base<gold::Object*,_std::allocator<gold::Object*>_>.\n                                  _M_impl._M_start + iVar9);\n          pPVar11 = (Pluginobj *)(**(code **)(*piVar7 + 0x14))(piVar7);\n        }" { (expression_statement "piVar7 = *(int **)((int)(this->objects_).\n                                  super__Vector_base<gold::Object*,_std::allocator<gold::Object*>_>.\n                                  _M_impl._M_start + iVar9);" (assignment_expression "piVar7 = *(int **)((int)(this->objects_).\n                                  super__Vector_base<gold::Object*,_std::allocator<gold::Object*>_>.\n                                  _M_impl._M_start + iVar9)" identifier = (pointer_expression "*(int **)((int)(this->objects_).\n                                  super__Vector_base<gold::Object*,_std::allocator<gold::Object*>_>.\n                                  _M_impl._M_start + iVar9)" * (cast_expression "(int **)((int)(this->objects_).\n                                  super__Vector_base<gold::Object*,_std::allocator<gold::Object*>_>.\n                                  _M_impl._M_start + iVar9)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)(this->objects_).\n                                  super__Vector_base<gold::Object*,_std::allocator<gold::Object*>_>.\n                                  _M_impl._M_start + iVar9)" ( (binary_expression "(int)(this->objects_).\n                                  super__Vector_base<gold::Object*,_std::allocator<gold::Object*>_>.\n                                  _M_impl._M_start + iVar9" (field_expression "(int)(this->objects_).\n                                  super__Vector_base<gold::Object*,_std::allocator<gold::Object*>_>.\n                                  _M_impl._M_start" (field_expression "(int)(this->objects_).\n                                  super__Vector_base<gold::Object*,_std::allocator<gold::Object*>_>.\n                                  _M_impl" (binary_expression "(int)(this->objects_).\n                                  super__Vector_base<gold::Object*,_std::allocator<gold::Object*>_" (binary_expression "(int)(this->objects_).\n                                  super__Vector_base<gold::Object*,_std::allocator<gold" (binary_expression "(int)(this->objects_).\n                                  super__Vector_base<gold::Object*,_std" (binary_expression "(int)(this->objects_).\n                                  super__Vector_base<gold" (cast_expression "(int)(this->objects_).\n                                  super__Vector_base" ( (type_descriptor "int" primitive_type) ) (field_expression "(this->objects_).\n                                  super__Vector_base" (parenthesized_expression "(this->objects_)" ( (field_expression "this->objects_" identifier -> field_identifier) )) . field_identifier)) < identifier) (ERROR "::Object" : : identifier) * (ERROR "," ,) identifier) (ERROR "::allocator" : : identifier) < identifier) (ERROR "::Object" : : identifier) * (ERROR ">" >) identifier) (ERROR ">" >) . field_identifier) . field_identifier) + identifier) ))))) ;) (expression_statement "pPVar11 = (Pluginobj *)(**(code **)(*piVar7 + 0x14))(piVar7);" (assignment_expression "pPVar11 = (Pluginobj *)(**(code **)(*piVar7 + 0x14))(piVar7)" identifier = (cast_expression "(Pluginobj *)(**(code **)(*piVar7 + 0x14))(piVar7)" ( (type_descriptor "Pluginobj *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(**(code **)(*piVar7 + 0x14))(piVar7)" (parenthesized_expression "(**(code **)(*piVar7 + 0x14))" ( (pointer_expression "**(code **)(*piVar7 + 0x14)" * (pointer_expression "*(code **)(*piVar7 + 0x14)" * (cast_expression "(code **)(*piVar7 + 0x14)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*piVar7 + 0x14)" ( (binary_expression "*piVar7 + 0x14" (pointer_expression "*piVar7" * identifier) + number_literal) ))))) )) (argument_list "(piVar7)" ( identifier ))))) ;) }) (else_clause "else {\n                    /* try { // try from 000f23d7 to 000f23f0 has its CatchHandler @ 000f2415 */\n          pPVar11 = make_plugin_object(this,(uint)handle);\n        }" else (compound_statement "{\n                    /* try { // try from 000f23d7 to 000f23f0 has its CatchHandler @ 000f2415 */\n          pPVar11 = make_plugin_object(this,(uint)handle);\n        }" { comment (expression_statement "pPVar11 = make_plugin_object(this,(uint)handle);" (assignment_expression "pPVar11 = make_plugin_object(this,(uint)handle)" identifier = (call_expression "make_plugin_object(this,(uint)handle)" identifier (argument_list "(this,(uint)handle)" ( identifier , (cast_expression "(uint)handle" ( (type_descriptor "uint" type_identifier) ) identifier) )))) ;) }))) (goto_statement "goto LAB_000f23ab;" goto statement_identifier ;) })) (labeled_statement "LAB_000f22cf:\n      pPVar3 = (Plugin_manager *)((this->current_)._M_node)->_M_next;" statement_identifier : (expression_statement "pPVar3 = (Plugin_manager *)((this->current_)._M_node)->_M_next;" (assignment_expression "pPVar3 = (Plugin_manager *)((this->current_)._M_node)->_M_next" identifier = (cast_expression "(Plugin_manager *)((this->current_)._M_node)->_M_next" ( (type_descriptor "Plugin_manager *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "((this->current_)._M_node)->_M_next" (parenthesized_expression "((this->current_)._M_node)" ( (field_expression "(this->current_)._M_node" (parenthesized_expression "(this->current_)" ( (field_expression "this->current_" identifier -> field_identifier) )) . field_identifier) )) -> field_identifier))) ;)) (expression_statement "(this->current_)._M_node = (_List_node_base *)pPVar3;" (assignment_expression "(this->current_)._M_node = (_List_node_base *)pPVar3" (field_expression "(this->current_)._M_node" (parenthesized_expression "(this->current_)" ( (field_expression "this->current_" identifier -> field_identifier) )) . field_identifier) = (cast_expression "(_List_node_base *)pPVar3" ( (type_descriptor "_List_node_base *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (goto_statement "goto joined_r0x000f22ac;" goto statement_identifier ;) })) (expression_statement "pcVar5 = *(code **)(sVar4 + 0x34);" (assignment_expression "pcVar5 = *(code **)(sVar4 + 0x34)" identifier = (pointer_expression "*(code **)(sVar4 + 0x34)" * (cast_expression "(code **)(sVar4 + 0x34)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(sVar4 + 0x34)" ( (binary_expression "sVar4 + 0x34" identifier + number_literal) ))))) ;) (if_statement "if (pcVar5 == (code *)0x0) goto LAB_000f22cf;" if (parenthesized_expression "(pcVar5 == (code *)0x0)" ( (binary_expression "pcVar5 == (code *)0x0" identifier == (cast_expression "(code *)0x0" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_000f22cf;" goto statement_identifier ;)) (expression_statement "(*pcVar5)(&this->plugin_input_file_);" (call_expression "(*pcVar5)(&this->plugin_input_file_)" (parenthesized_expression "(*pcVar5)" ( (pointer_expression "*pcVar5" * identifier) )) (argument_list "(&this->plugin_input_file_)" ( (pointer_expression "&this->plugin_input_file_" & (field_expression "this->plugin_input_file_" identifier -> field_identifier)) ))) ;) (expression_statement "pPVar3 = (Plugin_manager *)((this->current_)._M_node)->_M_next;" (assignment_expression "pPVar3 = (Plugin_manager *)((this->current_)._M_node)->_M_next" identifier = (cast_expression "(Plugin_manager *)((this->current_)._M_node)->_M_next" ( (type_descriptor "Plugin_manager *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "((this->current_)._M_node)->_M_next" (parenthesized_expression "((this->current_)._M_node)" ( (field_expression "(this->current_)._M_node" (parenthesized_expression "(this->current_)" ( (field_expression "this->current_" identifier -> field_identifier) )) . field_identifier) )) -> field_identifier))) ;) (expression_statement "(this->current_)._M_node = (_List_node_base *)pPVar3;" (assignment_expression "(this->current_)._M_node = (_List_node_base *)pPVar3" (field_expression "(this->current_)._M_node" (parenthesized_expression "(this->current_)" ( (field_expression "this->current_" identifier -> field_identifier) )) . field_identifier) = (cast_expression "(_List_node_base *)pPVar3" ( (type_descriptor "_List_node_base *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) }) while (parenthesized_expression "( true )" ( true )) ;)) }))
(translation_unit "undefined4\nFUN_000f21d0(undefined4 *param_1,int param_2,undefined4 param_3,undefined4 param_4,\n            undefined4 param_5,undefined4 param_6,int param_7)\n\n{\n  undefined4 *puVar1;\n  int *piVar2;\n  undefined4 *puVar3;\n  code *pcVar4;\n  char cVar5;\n  int iVar6;\n  uint uVar7;\n  int iVar8;\n  int iVar9;\n  undefined4 extraout_EDX;\n  undefined4 uVar10;\n  int local_20 [3];\n  undefined4 uStack_14;\n  \n  uStack_14 = 0xf21db;\n  cVar5 = FUN_000622e0(param_1 + 0x29);\n  if (cVar5 == '\0') {\n                    \n    FUN_0005f0b0("../../gold/plugin.cc",0x2da,"claim_file",extraout_EDX);\n  }\n  puVar1 = (undefined4 *)param_1[0x28];\n  piVar2 = (int *)*puVar1;\n  (**(code **)(*piVar2 + 8))(piVar2);\n  iVar6 = param_1[5] - param_1[4];\n  param_1[10] = param_2;\n  uVar7 = iVar6 >> 2;\n  iVar8 = param_2 + 0x1c;\n  param_1[0xb] = *(undefined4 *)(param_2 + 0x1c);\n                    \n  FUN_0005bce0(iVar8);\n  param_1[0xc] = *(undefined4 *)(param_2 + 0x34);\n  param_1[0xe] = param_4;\n  param_1[0xd] = param_3;\n  param_1[0x10] = param_6;\n  param_1[0xf] = param_5;\n  param_1[0x11] = uVar7;\n  if (param_7 != 0) {\n    piVar2 = (int *)param_1[5];\n    if (piVar2 == (int *)param_1[6]) {\n      FUN_000f4070(param_1 + 4,piVar2,&param_7);\n    }\n    else {\n      *piVar2 = param_7;\n      param_1[5] = piVar2 + 1;\n    }\n  }\n  puVar3 = (undefined4 *)*param_1;\n  *(undefined1 *)((int)param_1 + 99) = 1;\n  param_1[3] = puVar3;\njoined_r0x000f22ac:\n  do {\n    if (puVar3 == param_1) {\n      *(undefined1 *)((int)param_1 + 99) = 0;\n      if (param_1[0x35] != 0) {\n        FUN_000ef670(param_1[0x35],iVar8,param_3,param_4,param_5,param_6);\n      }\n      uVar10 = 0;\nLAB_000f23ab:\n      piVar2 = (int *)*puVar1;\n      (**(code **)(*piVar2 + 0xc))(piVar2);\n      return uVar10;\n    }\n    if (*(char *)((int)param_1 + 0x61) == '\0') {\n      pcVar4 = *(code **)(puVar3[2] + 0x28);\n      local_20[0] = 0;\n      if ((pcVar4 != (code *)0x0) && ((*pcVar4)(param_1 + 0xb,local_20), local_20[0] != 0)) {\n        *(undefined1 *)(param_1 + 0x18) = 1;\n        *(undefined1 *)((int)param_1 + 99) = 0;\n        if (param_1[0x35] != 0) {\n          iVar9 = param_7 + 4;\n          if (param_7 == 0) {\n            iVar9 = iVar8;\n          }\n          FUN_000ef5d0(param_1[0x35],iVar9,param_3,param_4,param_5,param_6,\n                       *(int *)(param_1[3] + 8) + 4);\n        }\n        if ((uVar7 < (uint)((int)(param_1[5] - param_1[4]) >> 2)) &&\n           (piVar2 = *(int **)(param_1[4] + iVar6), iVar8 = (**(code **)(*piVar2 + 0x14))(piVar2),\n           iVar8 != 0)) {\n          uVar10 = (**(code **)(**(int **)(param_1[4] + iVar6) + 0x14))\n                             (*(int **)(param_1[4] + iVar6));\n        }\n        else {\n                    \n          uVar10 = FUN_000f1ee0(param_1,uVar7);\n        }\n        goto LAB_000f23ab;\n      }\nLAB_000f22cf:\n      puVar3 = *(undefined4 **)param_1[3];\n      param_1[3] = puVar3;\n      goto joined_r0x000f22ac;\n    }\n    pcVar4 = *(code **)(puVar3[2] + 0x34);\n    if (pcVar4 == (code *)0x0) goto LAB_000f22cf;\n    (*pcVar4)(param_1 + 0xb);\n    puVar3 = *(undefined4 **)param_1[3];\n    param_1[3] = puVar3;\n  } while( true );\n}\n\n" (function_definition "undefined4\nFUN_000f21d0(undefined4 *param_1,int param_2,undefined4 param_3,undefined4 param_4,\n            undefined4 param_5,undefined4 param_6,int param_7)\n\n{\n  undefined4 *puVar1;\n  int *piVar2;\n  undefined4 *puVar3;\n  code *pcVar4;\n  char cVar5;\n  int iVar6;\n  uint uVar7;\n  int iVar8;\n  int iVar9;\n  undefined4 extraout_EDX;\n  undefined4 uVar10;\n  int local_20 [3];\n  undefined4 uStack_14;\n  \n  uStack_14 = 0xf21db;\n  cVar5 = FUN_000622e0(param_1 + 0x29);\n  if (cVar5 == '\0') {\n                    \n    FUN_0005f0b0("../../gold/plugin.cc",0x2da,"claim_file",extraout_EDX);\n  }\n  puVar1 = (undefined4 *)param_1[0x28];\n  piVar2 = (int *)*puVar1;\n  (**(code **)(*piVar2 + 8))(piVar2);\n  iVar6 = param_1[5] - param_1[4];\n  param_1[10] = param_2;\n  uVar7 = iVar6 >> 2;\n  iVar8 = param_2 + 0x1c;\n  param_1[0xb] = *(undefined4 *)(param_2 + 0x1c);\n                    \n  FUN_0005bce0(iVar8);\n  param_1[0xc] = *(undefined4 *)(param_2 + 0x34);\n  param_1[0xe] = param_4;\n  param_1[0xd] = param_3;\n  param_1[0x10] = param_6;\n  param_1[0xf] = param_5;\n  param_1[0x11] = uVar7;\n  if (param_7 != 0) {\n    piVar2 = (int *)param_1[5];\n    if (piVar2 == (int *)param_1[6]) {\n      FUN_000f4070(param_1 + 4,piVar2,&param_7);\n    }\n    else {\n      *piVar2 = param_7;\n      param_1[5] = piVar2 + 1;\n    }\n  }\n  puVar3 = (undefined4 *)*param_1;\n  *(undefined1 *)((int)param_1 + 99) = 1;\n  param_1[3] = puVar3;\njoined_r0x000f22ac:\n  do {\n    if (puVar3 == param_1) {\n      *(undefined1 *)((int)param_1 + 99) = 0;\n      if (param_1[0x35] != 0) {\n        FUN_000ef670(param_1[0x35],iVar8,param_3,param_4,param_5,param_6);\n      }\n      uVar10 = 0;\nLAB_000f23ab:\n      piVar2 = (int *)*puVar1;\n      (**(code **)(*piVar2 + 0xc))(piVar2);\n      return uVar10;\n    }\n    if (*(char *)((int)param_1 + 0x61) == '\0') {\n      pcVar4 = *(code **)(puVar3[2] + 0x28);\n      local_20[0] = 0;\n      if ((pcVar4 != (code *)0x0) && ((*pcVar4)(param_1 + 0xb,local_20), local_20[0] != 0)) {\n        *(undefined1 *)(param_1 + 0x18) = 1;\n        *(undefined1 *)((int)param_1 + 99) = 0;\n        if (param_1[0x35] != 0) {\n          iVar9 = param_7 + 4;\n          if (param_7 == 0) {\n            iVar9 = iVar8;\n          }\n          FUN_000ef5d0(param_1[0x35],iVar9,param_3,param_4,param_5,param_6,\n                       *(int *)(param_1[3] + 8) + 4);\n        }\n        if ((uVar7 < (uint)((int)(param_1[5] - param_1[4]) >> 2)) &&\n           (piVar2 = *(int **)(param_1[4] + iVar6), iVar8 = (**(code **)(*piVar2 + 0x14))(piVar2),\n           iVar8 != 0)) {\n          uVar10 = (**(code **)(**(int **)(param_1[4] + iVar6) + 0x14))\n                             (*(int **)(param_1[4] + iVar6));\n        }\n        else {\n                    \n          uVar10 = FUN_000f1ee0(param_1,uVar7);\n        }\n        goto LAB_000f23ab;\n      }\nLAB_000f22cf:\n      puVar3 = *(undefined4 **)param_1[3];\n      param_1[3] = puVar3;\n      goto joined_r0x000f22ac;\n    }\n    pcVar4 = *(code **)(puVar3[2] + 0x34);\n    if (pcVar4 == (code *)0x0) goto LAB_000f22cf;\n    (*pcVar4)(param_1 + 0xb);\n    puVar3 = *(undefined4 **)param_1[3];\n    param_1[3] = puVar3;\n  } while( true );\n}" type_identifier (function_declarator "FUN_000f21d0(undefined4 *param_1,int param_2,undefined4 param_3,undefined4 param_4,\n            undefined4 param_5,undefined4 param_6,int param_7)" identifier (parameter_list "(undefined4 *param_1,int param_2,undefined4 param_3,undefined4 param_4,\n            undefined4 param_5,undefined4 param_6,int param_7)" ( (parameter_declaration "undefined4 *param_1" type_identifier (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "int param_2" primitive_type identifier) , (parameter_declaration "undefined4 param_3" type_identifier identifier) , (parameter_declaration "undefined4 param_4" type_identifier identifier) , (parameter_declaration "undefined4 param_5" type_identifier identifier) , (parameter_declaration "undefined4 param_6" type_identifier identifier) , (parameter_declaration "int param_7" primitive_type identifier) ))) (compound_statement "{\n  undefined4 *puVar1;\n  int *piVar2;\n  undefined4 *puVar3;\n  code *pcVar4;\n  char cVar5;\n  int iVar6;\n  uint uVar7;\n  int iVar8;\n  int iVar9;\n  undefined4 extraout_EDX;\n  undefined4 uVar10;\n  int local_20 [3];\n  undefined4 uStack_14;\n  \n  uStack_14 = 0xf21db;\n  cVar5 = FUN_000622e0(param_1 + 0x29);\n  if (cVar5 == '\0') {\n                    \n    FUN_0005f0b0("../../gold/plugin.cc",0x2da,"claim_file",extraout_EDX);\n  }\n  puVar1 = (undefined4 *)param_1[0x28];\n  piVar2 = (int *)*puVar1;\n  (**(code **)(*piVar2 + 8))(piVar2);\n  iVar6 = param_1[5] - param_1[4];\n  param_1[10] = param_2;\n  uVar7 = iVar6 >> 2;\n  iVar8 = param_2 + 0x1c;\n  param_1[0xb] = *(undefined4 *)(param_2 + 0x1c);\n                    \n  FUN_0005bce0(iVar8);\n  param_1[0xc] = *(undefined4 *)(param_2 + 0x34);\n  param_1[0xe] = param_4;\n  param_1[0xd] = param_3;\n  param_1[0x10] = param_6;\n  param_1[0xf] = param_5;\n  param_1[0x11] = uVar7;\n  if (param_7 != 0) {\n    piVar2 = (int *)param_1[5];\n    if (piVar2 == (int *)param_1[6]) {\n      FUN_000f4070(param_1 + 4,piVar2,&param_7);\n    }\n    else {\n      *piVar2 = param_7;\n      param_1[5] = piVar2 + 1;\n    }\n  }\n  puVar3 = (undefined4 *)*param_1;\n  *(undefined1 *)((int)param_1 + 99) = 1;\n  param_1[3] = puVar3;\njoined_r0x000f22ac:\n  do {\n    if (puVar3 == param_1) {\n      *(undefined1 *)((int)param_1 + 99) = 0;\n      if (param_1[0x35] != 0) {\n        FUN_000ef670(param_1[0x35],iVar8,param_3,param_4,param_5,param_6);\n      }\n      uVar10 = 0;\nLAB_000f23ab:\n      piVar2 = (int *)*puVar1;\n      (**(code **)(*piVar2 + 0xc))(piVar2);\n      return uVar10;\n    }\n    if (*(char *)((int)param_1 + 0x61) == '\0') {\n      pcVar4 = *(code **)(puVar3[2] + 0x28);\n      local_20[0] = 0;\n      if ((pcVar4 != (code *)0x0) && ((*pcVar4)(param_1 + 0xb,local_20), local_20[0] != 0)) {\n        *(undefined1 *)(param_1 + 0x18) = 1;\n        *(undefined1 *)((int)param_1 + 99) = 0;\n        if (param_1[0x35] != 0) {\n          iVar9 = param_7 + 4;\n          if (param_7 == 0) {\n            iVar9 = iVar8;\n          }\n          FUN_000ef5d0(param_1[0x35],iVar9,param_3,param_4,param_5,param_6,\n                       *(int *)(param_1[3] + 8) + 4);\n        }\n        if ((uVar7 < (uint)((int)(param_1[5] - param_1[4]) >> 2)) &&\n           (piVar2 = *(int **)(param_1[4] + iVar6), iVar8 = (**(code **)(*piVar2 + 0x14))(piVar2),\n           iVar8 != 0)) {\n          uVar10 = (**(code **)(**(int **)(param_1[4] + iVar6) + 0x14))\n                             (*(int **)(param_1[4] + iVar6));\n        }\n        else {\n                    \n          uVar10 = FUN_000f1ee0(param_1,uVar7);\n        }\n        goto LAB_000f23ab;\n      }\nLAB_000f22cf:\n      puVar3 = *(undefined4 **)param_1[3];\n      param_1[3] = puVar3;\n      goto joined_r0x000f22ac;\n    }\n    pcVar4 = *(code **)(puVar3[2] + 0x34);\n    if (pcVar4 == (code *)0x0) goto LAB_000f22cf;\n    (*pcVar4)(param_1 + 0xb);\n    puVar3 = *(undefined4 **)param_1[3];\n    param_1[3] = puVar3;\n  } while( true );\n}" { (declaration "undefined4 *puVar1;" type_identifier (pointer_declarator "*puVar1" * identifier) ;) (declaration "int *piVar2;" primitive_type (pointer_declarator "*piVar2" * identifier) ;) (declaration "undefined4 *puVar3;" type_identifier (pointer_declarator "*puVar3" * identifier) ;) (declaration "code *pcVar4;" type_identifier (pointer_declarator "*pcVar4" * identifier) ;) (declaration "char cVar5;" primitive_type identifier ;) (declaration "int iVar6;" primitive_type identifier ;) (declaration "uint uVar7;" type_identifier identifier ;) (declaration "int iVar8;" primitive_type identifier ;) (declaration "int iVar9;" primitive_type identifier ;) (declaration "undefined4 extraout_EDX;" type_identifier identifier ;) (declaration "undefined4 uVar10;" type_identifier identifier ;) (declaration "int local_20 [3];" primitive_type (array_declarator "local_20 [3]" identifier [ number_literal ]) ;) (declaration "undefined4 uStack_14;" type_identifier identifier ;) (expression_statement "uStack_14 = 0xf21db;" (assignment_expression "uStack_14 = 0xf21db" identifier = number_literal) ;) (expression_statement "cVar5 = FUN_000622e0(param_1 + 0x29);" (assignment_expression "cVar5 = FUN_000622e0(param_1 + 0x29)" identifier = (call_expression "FUN_000622e0(param_1 + 0x29)" identifier (argument_list "(param_1 + 0x29)" ( (binary_expression "param_1 + 0x29" identifier + number_literal) )))) ;) (if_statement "if (cVar5 == '\0') {\n                    \n    FUN_0005f0b0("../../gold/plugin.cc",0x2da,"claim_file",extraout_EDX);\n  }" if (parenthesized_expression "(cVar5 == '\0')" ( (binary_expression "cVar5 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n                    \n    FUN_0005f0b0("../../gold/plugin.cc",0x2da,"claim_file",extraout_EDX);\n  }" { (expression_statement "FUN_0005f0b0("../../gold/plugin.cc",0x2da,"claim_file",extraout_EDX);" (call_expression "FUN_0005f0b0("../../gold/plugin.cc",0x2da,"claim_file",extraout_EDX)" identifier (argument_list "("../../gold/plugin.cc",0x2da,"claim_file",extraout_EDX)" ( (string_literal ""../../gold/plugin.cc"" " string_content ") , number_literal , (string_literal ""claim_file"" " string_content ") , identifier ))) ;) })) (expression_statement "puVar1 = (undefined4 *)param_1[0x28];" (assignment_expression "puVar1 = (undefined4 *)param_1[0x28]" identifier = (cast_expression "(undefined4 *)param_1[0x28]" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[0x28]" identifier [ number_literal ]))) ;) (expression_statement "piVar2 = (int *)*puVar1;" (assignment_expression "piVar2 = (int *)*puVar1" identifier = (cast_expression "(int *)*puVar1" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar1" * identifier))) ;) (expression_statement "(**(code **)(*piVar2 + 8))(piVar2);" (call_expression "(**(code **)(*piVar2 + 8))(piVar2)" (parenthesized_expression "(**(code **)(*piVar2 + 8))" ( (pointer_expression "**(code **)(*piVar2 + 8)" * (pointer_expression "*(code **)(*piVar2 + 8)" * (cast_expression "(code **)(*piVar2 + 8)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*piVar2 + 8)" ( (binary_expression "*piVar2 + 8" (pointer_expression "*piVar2" * identifier) + number_literal) ))))) )) (argument_list "(piVar2)" ( identifier ))) ;) (expression_statement "iVar6 = param_1[5] - param_1[4];" (assignment_expression "iVar6 = param_1[5] - param_1[4]" identifier = (binary_expression "param_1[5] - param_1[4]" (subscript_expression "param_1[5]" identifier [ number_literal ]) - (subscript_expression "param_1[4]" identifier [ number_literal ]))) ;) (expression_statement "param_1[10] = param_2;" (assignment_expression "param_1[10] = param_2" (subscript_expression "param_1[10]" identifier [ number_literal ]) = identifier) ;) (expression_statement "uVar7 = iVar6 >> 2;" (assignment_expression "uVar7 = iVar6 >> 2" identifier = (binary_expression "iVar6 >> 2" identifier >> number_literal)) ;) (expression_statement "iVar8 = param_2 + 0x1c;" (assignment_expression "iVar8 = param_2 + 0x1c" identifier = (binary_expression "param_2 + 0x1c" identifier + number_literal)) ;) (expression_statement "param_1[0xb] = *(undefined4 *)(param_2 + 0x1c);" (assignment_expression "param_1[0xb] = *(undefined4 *)(param_2 + 0x1c)" (subscript_expression "param_1[0xb]" identifier [ number_literal ]) = (pointer_expression "*(undefined4 *)(param_2 + 0x1c)" * (cast_expression "(undefined4 *)(param_2 + 0x1c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x1c)" ( (binary_expression "param_2 + 0x1c" identifier + number_literal) ))))) ;) (expression_statement "FUN_0005bce0(iVar8);" (call_expression "FUN_0005bce0(iVar8)" identifier (argument_list "(iVar8)" ( identifier ))) ;) (expression_statement "param_1[0xc] = *(undefined4 *)(param_2 + 0x34);" (assignment_expression "param_1[0xc] = *(undefined4 *)(param_2 + 0x34)" (subscript_expression "param_1[0xc]" identifier [ number_literal ]) = (pointer_expression "*(undefined4 *)(param_2 + 0x34)" * (cast_expression "(undefined4 *)(param_2 + 0x34)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x34)" ( (binary_expression "param_2 + 0x34" identifier + number_literal) ))))) ;) (expression_statement "param_1[0xe] = param_4;" (assignment_expression "param_1[0xe] = param_4" (subscript_expression "param_1[0xe]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_1[0xd] = param_3;" (assignment_expression "param_1[0xd] = param_3" (subscript_expression "param_1[0xd]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_1[0x10] = param_6;" (assignment_expression "param_1[0x10] = param_6" (subscript_expression "param_1[0x10]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_1[0xf] = param_5;" (assignment_expression "param_1[0xf] = param_5" (subscript_expression "param_1[0xf]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_1[0x11] = uVar7;" (assignment_expression "param_1[0x11] = uVar7" (subscript_expression "param_1[0x11]" identifier [ number_literal ]) = identifier) ;) (if_statement "if (param_7 != 0) {\n    piVar2 = (int *)param_1[5];\n    if (piVar2 == (int *)param_1[6]) {\n      FUN_000f4070(param_1 + 4,piVar2,&param_7);\n    }\n    else {\n      *piVar2 = param_7;\n      param_1[5] = piVar2 + 1;\n    }\n  }" if (parenthesized_expression "(param_7 != 0)" ( (binary_expression "param_7 != 0" identifier != number_literal) )) (compound_statement "{\n    piVar2 = (int *)param_1[5];\n    if (piVar2 == (int *)param_1[6]) {\n      FUN_000f4070(param_1 + 4,piVar2,&param_7);\n    }\n    else {\n      *piVar2 = param_7;\n      param_1[5] = piVar2 + 1;\n    }\n  }" { (expression_statement "piVar2 = (int *)param_1[5];" (assignment_expression "piVar2 = (int *)param_1[5]" identifier = (cast_expression "(int *)param_1[5]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[5]" identifier [ number_literal ]))) ;) (if_statement "if (piVar2 == (int *)param_1[6]) {\n      FUN_000f4070(param_1 + 4,piVar2,&param_7);\n    }\n    else {\n      *piVar2 = param_7;\n      param_1[5] = piVar2 + 1;\n    }" if (parenthesized_expression "(piVar2 == (int *)param_1[6])" ( (binary_expression "piVar2 == (int *)param_1[6]" identifier == (cast_expression "(int *)param_1[6]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[6]" identifier [ number_literal ]))) )) (compound_statement "{\n      FUN_000f4070(param_1 + 4,piVar2,&param_7);\n    }" { (expression_statement "FUN_000f4070(param_1 + 4,piVar2,&param_7);" (call_expression "FUN_000f4070(param_1 + 4,piVar2,&param_7)" identifier (argument_list "(param_1 + 4,piVar2,&param_7)" ( (binary_expression "param_1 + 4" identifier + number_literal) , identifier , (pointer_expression "&param_7" & identifier) ))) ;) }) (else_clause "else {\n      *piVar2 = param_7;\n      param_1[5] = piVar2 + 1;\n    }" else (compound_statement "{\n      *piVar2 = param_7;\n      param_1[5] = piVar2 + 1;\n    }" { (expression_statement "*piVar2 = param_7;" (assignment_expression "*piVar2 = param_7" (pointer_expression "*piVar2" * identifier) = identifier) ;) (expression_statement "param_1[5] = piVar2 + 1;" (assignment_expression "param_1[5] = piVar2 + 1" (subscript_expression "param_1[5]" identifier [ number_literal ]) = (binary_expression "piVar2 + 1" identifier + number_literal)) ;) }))) })) (expression_statement "puVar3 = (undefined4 *)*param_1;" (assignment_expression "puVar3 = (undefined4 *)*param_1" identifier = (cast_expression "(undefined4 *)*param_1" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*param_1" * identifier))) ;) (expression_statement "*(undefined1 *)((int)param_1 + 99) = 1;" (assignment_expression "*(undefined1 *)((int)param_1 + 99) = 1" (pointer_expression "*(undefined1 *)((int)param_1 + 99)" * (cast_expression "(undefined1 *)((int)param_1 + 99)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_1 + 99)" ( (binary_expression "(int)param_1 + 99" (cast_expression "(int)param_1" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) (expression_statement "param_1[3] = puVar3;" (assignment_expression "param_1[3] = puVar3" (subscript_expression "param_1[3]" identifier [ number_literal ]) = identifier) ;) (labeled_statement "joined_r0x000f22ac:\n  do {\n    if (puVar3 == param_1) {\n      *(undefined1 *)((int)param_1 + 99) = 0;\n      if (param_1[0x35] != 0) {\n        FUN_000ef670(param_1[0x35],iVar8,param_3,param_4,param_5,param_6);\n      }\n      uVar10 = 0;\nLAB_000f23ab:\n      piVar2 = (int *)*puVar1;\n      (**(code **)(*piVar2 + 0xc))(piVar2);\n      return uVar10;\n    }\n    if (*(char *)((int)param_1 + 0x61) == '\0') {\n      pcVar4 = *(code **)(puVar3[2] + 0x28);\n      local_20[0] = 0;\n      if ((pcVar4 != (code *)0x0) && ((*pcVar4)(param_1 + 0xb,local_20), local_20[0] != 0)) {\n        *(undefined1 *)(param_1 + 0x18) = 1;\n        *(undefined1 *)((int)param_1 + 99) = 0;\n        if (param_1[0x35] != 0) {\n          iVar9 = param_7 + 4;\n          if (param_7 == 0) {\n            iVar9 = iVar8;\n          }\n          FUN_000ef5d0(param_1[0x35],iVar9,param_3,param_4,param_5,param_6,\n                       *(int *)(param_1[3] + 8) + 4);\n        }\n        if ((uVar7 < (uint)((int)(param_1[5] - param_1[4]) >> 2)) &&\n           (piVar2 = *(int **)(param_1[4] + iVar6), iVar8 = (**(code **)(*piVar2 + 0x14))(piVar2),\n           iVar8 != 0)) {\n          uVar10 = (**(code **)(**(int **)(param_1[4] + iVar6) + 0x14))\n                             (*(int **)(param_1[4] + iVar6));\n        }\n        else {\n                    \n          uVar10 = FUN_000f1ee0(param_1,uVar7);\n        }\n        goto LAB_000f23ab;\n      }\nLAB_000f22cf:\n      puVar3 = *(undefined4 **)param_1[3];\n      param_1[3] = puVar3;\n      goto joined_r0x000f22ac;\n    }\n    pcVar4 = *(code **)(puVar3[2] + 0x34);\n    if (pcVar4 == (code *)0x0) goto LAB_000f22cf;\n    (*pcVar4)(param_1 + 0xb);\n    puVar3 = *(undefined4 **)param_1[3];\n    param_1[3] = puVar3;\n  } while( true );" statement_identifier : (do_statement "do {\n    if (puVar3 == param_1) {\n      *(undefined1 *)((int)param_1 + 99) = 0;\n      if (param_1[0x35] != 0) {\n        FUN_000ef670(param_1[0x35],iVar8,param_3,param_4,param_5,param_6);\n      }\n      uVar10 = 0;\nLAB_000f23ab:\n      piVar2 = (int *)*puVar1;\n      (**(code **)(*piVar2 + 0xc))(piVar2);\n      return uVar10;\n    }\n    if (*(char *)((int)param_1 + 0x61) == '\0') {\n      pcVar4 = *(code **)(puVar3[2] + 0x28);\n      local_20[0] = 0;\n      if ((pcVar4 != (code *)0x0) && ((*pcVar4)(param_1 + 0xb,local_20), local_20[0] != 0)) {\n        *(undefined1 *)(param_1 + 0x18) = 1;\n        *(undefined1 *)((int)param_1 + 99) = 0;\n        if (param_1[0x35] != 0) {\n          iVar9 = param_7 + 4;\n          if (param_7 == 0) {\n            iVar9 = iVar8;\n          }\n          FUN_000ef5d0(param_1[0x35],iVar9,param_3,param_4,param_5,param_6,\n                       *(int *)(param_1[3] + 8) + 4);\n        }\n        if ((uVar7 < (uint)((int)(param_1[5] - param_1[4]) >> 2)) &&\n           (piVar2 = *(int **)(param_1[4] + iVar6), iVar8 = (**(code **)(*piVar2 + 0x14))(piVar2),\n           iVar8 != 0)) {\n          uVar10 = (**(code **)(**(int **)(param_1[4] + iVar6) + 0x14))\n                             (*(int **)(param_1[4] + iVar6));\n        }\n        else {\n                    \n          uVar10 = FUN_000f1ee0(param_1,uVar7);\n        }\n        goto LAB_000f23ab;\n      }\nLAB_000f22cf:\n      puVar3 = *(undefined4 **)param_1[3];\n      param_1[3] = puVar3;\n      goto joined_r0x000f22ac;\n    }\n    pcVar4 = *(code **)(puVar3[2] + 0x34);\n    if (pcVar4 == (code *)0x0) goto LAB_000f22cf;\n    (*pcVar4)(param_1 + 0xb);\n    puVar3 = *(undefined4 **)param_1[3];\n    param_1[3] = puVar3;\n  } while( true );" do (compound_statement "{\n    if (puVar3 == param_1) {\n      *(undefined1 *)((int)param_1 + 99) = 0;\n      if (param_1[0x35] != 0) {\n        FUN_000ef670(param_1[0x35],iVar8,param_3,param_4,param_5,param_6);\n      }\n      uVar10 = 0;\nLAB_000f23ab:\n      piVar2 = (int *)*puVar1;\n      (**(code **)(*piVar2 + 0xc))(piVar2);\n      return uVar10;\n    }\n    if (*(char *)((int)param_1 + 0x61) == '\0') {\n      pcVar4 = *(code **)(puVar3[2] + 0x28);\n      local_20[0] = 0;\n      if ((pcVar4 != (code *)0x0) && ((*pcVar4)(param_1 + 0xb,local_20), local_20[0] != 0)) {\n        *(undefined1 *)(param_1 + 0x18) = 1;\n        *(undefined1 *)((int)param_1 + 99) = 0;\n        if (param_1[0x35] != 0) {\n          iVar9 = param_7 + 4;\n          if (param_7 == 0) {\n            iVar9 = iVar8;\n          }\n          FUN_000ef5d0(param_1[0x35],iVar9,param_3,param_4,param_5,param_6,\n                       *(int *)(param_1[3] + 8) + 4);\n        }\n        if ((uVar7 < (uint)((int)(param_1[5] - param_1[4]) >> 2)) &&\n           (piVar2 = *(int **)(param_1[4] + iVar6), iVar8 = (**(code **)(*piVar2 + 0x14))(piVar2),\n           iVar8 != 0)) {\n          uVar10 = (**(code **)(**(int **)(param_1[4] + iVar6) + 0x14))\n                             (*(int **)(param_1[4] + iVar6));\n        }\n        else {\n                    \n          uVar10 = FUN_000f1ee0(param_1,uVar7);\n        }\n        goto LAB_000f23ab;\n      }\nLAB_000f22cf:\n      puVar3 = *(undefined4 **)param_1[3];\n      param_1[3] = puVar3;\n      goto joined_r0x000f22ac;\n    }\n    pcVar4 = *(code **)(puVar3[2] + 0x34);\n    if (pcVar4 == (code *)0x0) goto LAB_000f22cf;\n    (*pcVar4)(param_1 + 0xb);\n    puVar3 = *(undefined4 **)param_1[3];\n    param_1[3] = puVar3;\n  }" { (if_statement "if (puVar3 == param_1) {\n      *(undefined1 *)((int)param_1 + 99) = 0;\n      if (param_1[0x35] != 0) {\n        FUN_000ef670(param_1[0x35],iVar8,param_3,param_4,param_5,param_6);\n      }\n      uVar10 = 0;\nLAB_000f23ab:\n      piVar2 = (int *)*puVar1;\n      (**(code **)(*piVar2 + 0xc))(piVar2);\n      return uVar10;\n    }" if (parenthesized_expression "(puVar3 == param_1)" ( (binary_expression "puVar3 == param_1" identifier == identifier) )) (compound_statement "{\n      *(undefined1 *)((int)param_1 + 99) = 0;\n      if (param_1[0x35] != 0) {\n        FUN_000ef670(param_1[0x35],iVar8,param_3,param_4,param_5,param_6);\n      }\n      uVar10 = 0;\nLAB_000f23ab:\n      piVar2 = (int *)*puVar1;\n      (**(code **)(*piVar2 + 0xc))(piVar2);\n      return uVar10;\n    }" { (expression_statement "*(undefined1 *)((int)param_1 + 99) = 0;" (assignment_expression "*(undefined1 *)((int)param_1 + 99) = 0" (pointer_expression "*(undefined1 *)((int)param_1 + 99)" * (cast_expression "(undefined1 *)((int)param_1 + 99)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_1 + 99)" ( (binary_expression "(int)param_1 + 99" (cast_expression "(int)param_1" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) (if_statement "if (param_1[0x35] != 0) {\n        FUN_000ef670(param_1[0x35],iVar8,param_3,param_4,param_5,param_6);\n      }" if (parenthesized_expression "(param_1[0x35] != 0)" ( (binary_expression "param_1[0x35] != 0" (subscript_expression "param_1[0x35]" identifier [ number_literal ]) != number_literal) )) (compound_statement "{\n        FUN_000ef670(param_1[0x35],iVar8,param_3,param_4,param_5,param_6);\n      }" { (expression_statement "FUN_000ef670(param_1[0x35],iVar8,param_3,param_4,param_5,param_6);" (call_expression "FUN_000ef670(param_1[0x35],iVar8,param_3,param_4,param_5,param_6)" identifier (argument_list "(param_1[0x35],iVar8,param_3,param_4,param_5,param_6)" ( (subscript_expression "param_1[0x35]" identifier [ number_literal ]) , identifier , identifier , identifier , identifier , identifier ))) ;) })) (expression_statement "uVar10 = 0;" (assignment_expression "uVar10 = 0" identifier = number_literal) ;) (labeled_statement "LAB_000f23ab:\n      piVar2 = (int *)*puVar1;" statement_identifier : (expression_statement "piVar2 = (int *)*puVar1;" (assignment_expression "piVar2 = (int *)*puVar1" identifier = (cast_expression "(int *)*puVar1" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar1" * identifier))) ;)) (expression_statement "(**(code **)(*piVar2 + 0xc))(piVar2);" (call_expression "(**(code **)(*piVar2 + 0xc))(piVar2)" (parenthesized_expression "(**(code **)(*piVar2 + 0xc))" ( (pointer_expression "**(code **)(*piVar2 + 0xc)" * (pointer_expression "*(code **)(*piVar2 + 0xc)" * (cast_expression "(code **)(*piVar2 + 0xc)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*piVar2 + 0xc)" ( (binary_expression "*piVar2 + 0xc" (pointer_expression "*piVar2" * identifier) + number_literal) ))))) )) (argument_list "(piVar2)" ( identifier ))) ;) (return_statement "return uVar10;" return identifier ;) })) (if_statement "if (*(char *)((int)param_1 + 0x61) == '\0') {\n      pcVar4 = *(code **)(puVar3[2] + 0x28);\n      local_20[0] = 0;\n      if ((pcVar4 != (code *)0x0) && ((*pcVar4)(param_1 + 0xb,local_20), local_20[0] != 0)) {\n        *(undefined1 *)(param_1 + 0x18) = 1;\n        *(undefined1 *)((int)param_1 + 99) = 0;\n        if (param_1[0x35] != 0) {\n          iVar9 = param_7 + 4;\n          if (param_7 == 0) {\n            iVar9 = iVar8;\n          }\n          FUN_000ef5d0(param_1[0x35],iVar9,param_3,param_4,param_5,param_6,\n                       *(int *)(param_1[3] + 8) + 4);\n        }\n        if ((uVar7 < (uint)((int)(param_1[5] - param_1[4]) >> 2)) &&\n           (piVar2 = *(int **)(param_1[4] + iVar6), iVar8 = (**(code **)(*piVar2 + 0x14))(piVar2),\n           iVar8 != 0)) {\n          uVar10 = (**(code **)(**(int **)(param_1[4] + iVar6) + 0x14))\n                             (*(int **)(param_1[4] + iVar6));\n        }\n        else {\n                    \n          uVar10 = FUN_000f1ee0(param_1,uVar7);\n        }\n        goto LAB_000f23ab;\n      }\nLAB_000f22cf:\n      puVar3 = *(undefined4 **)param_1[3];\n      param_1[3] = puVar3;\n      goto joined_r0x000f22ac;\n    }" if (parenthesized_expression "(*(char *)((int)param_1 + 0x61) == '\0')" ( (binary_expression "*(char *)((int)param_1 + 0x61) == '\0'" (pointer_expression "*(char *)((int)param_1 + 0x61)" * (cast_expression "(char *)((int)param_1 + 0x61)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_1 + 0x61)" ( (binary_expression "(int)param_1 + 0x61" (cast_expression "(int)param_1" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n      pcVar4 = *(code **)(puVar3[2] + 0x28);\n      local_20[0] = 0;\n      if ((pcVar4 != (code *)0x0) && ((*pcVar4)(param_1 + 0xb,local_20), local_20[0] != 0)) {\n        *(undefined1 *)(param_1 + 0x18) = 1;\n        *(undefined1 *)((int)param_1 + 99) = 0;\n        if (param_1[0x35] != 0) {\n          iVar9 = param_7 + 4;\n          if (param_7 == 0) {\n            iVar9 = iVar8;\n          }\n          FUN_000ef5d0(param_1[0x35],iVar9,param_3,param_4,param_5,param_6,\n                       *(int *)(param_1[3] + 8) + 4);\n        }\n        if ((uVar7 < (uint)((int)(param_1[5] - param_1[4]) >> 2)) &&\n           (piVar2 = *(int **)(param_1[4] + iVar6), iVar8 = (**(code **)(*piVar2 + 0x14))(piVar2),\n           iVar8 != 0)) {\n          uVar10 = (**(code **)(**(int **)(param_1[4] + iVar6) + 0x14))\n                             (*(int **)(param_1[4] + iVar6));\n        }\n        else {\n                    \n          uVar10 = FUN_000f1ee0(param_1,uVar7);\n        }\n        goto LAB_000f23ab;\n      }\nLAB_000f22cf:\n      puVar3 = *(undefined4 **)param_1[3];\n      param_1[3] = puVar3;\n      goto joined_r0x000f22ac;\n    }" { (expression_statement "pcVar4 = *(code **)(puVar3[2] + 0x28);" (assignment_expression "pcVar4 = *(code **)(puVar3[2] + 0x28)" identifier = (pointer_expression "*(code **)(puVar3[2] + 0x28)" * (cast_expression "(code **)(puVar3[2] + 0x28)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar3[2] + 0x28)" ( (binary_expression "puVar3[2] + 0x28" (subscript_expression "puVar3[2]" identifier [ number_literal ]) + number_literal) ))))) ;) (expression_statement "local_20[0] = 0;" (assignment_expression "local_20[0] = 0" (subscript_expression "local_20[0]" identifier [ number_literal ]) = number_literal) ;) (if_statement "if ((pcVar4 != (code *)0x0) && ((*pcVar4)(param_1 + 0xb,local_20), local_20[0] != 0)) {\n        *(undefined1 *)(param_1 + 0x18) = 1;\n        *(undefined1 *)((int)param_1 + 99) = 0;\n        if (param_1[0x35] != 0) {\n          iVar9 = param_7 + 4;\n          if (param_7 == 0) {\n            iVar9 = iVar8;\n          }\n          FUN_000ef5d0(param_1[0x35],iVar9,param_3,param_4,param_5,param_6,\n                       *(int *)(param_1[3] + 8) + 4);\n        }\n        if ((uVar7 < (uint)((int)(param_1[5] - param_1[4]) >> 2)) &&\n           (piVar2 = *(int **)(param_1[4] + iVar6), iVar8 = (**(code **)(*piVar2 + 0x14))(piVar2),\n           iVar8 != 0)) {\n          uVar10 = (**(code **)(**(int **)(param_1[4] + iVar6) + 0x14))\n                             (*(int **)(param_1[4] + iVar6));\n        }\n        else {\n                    \n          uVar10 = FUN_000f1ee0(param_1,uVar7);\n        }\n        goto LAB_000f23ab;\n      }" if (parenthesized_expression "((pcVar4 != (code *)0x0) && ((*pcVar4)(param_1 + 0xb,local_20), local_20[0] != 0))" ( (binary_expression "(pcVar4 != (code *)0x0) && ((*pcVar4)(param_1 + 0xb,local_20), local_20[0] != 0)" (parenthesized_expression "(pcVar4 != (code *)0x0)" ( (binary_expression "pcVar4 != (code *)0x0" identifier != (cast_expression "(code *)0x0" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) && (parenthesized_expression "((*pcVar4)(param_1 + 0xb,local_20), local_20[0] != 0)" ( (comma_expression "(*pcVar4)(param_1 + 0xb,local_20), local_20[0] != 0" (call_expression "(*pcVar4)(param_1 + 0xb,local_20)" (parenthesized_expression "(*pcVar4)" ( (pointer_expression "*pcVar4" * identifier) )) (argument_list "(param_1 + 0xb,local_20)" ( (binary_expression "param_1 + 0xb" identifier + number_literal) , identifier ))) , (binary_expression "local_20[0] != 0" (subscript_expression "local_20[0]" identifier [ number_literal ]) != number_literal)) ))) )) (compound_statement "{\n        *(undefined1 *)(param_1 + 0x18) = 1;\n        *(undefined1 *)((int)param_1 + 99) = 0;\n        if (param_1[0x35] != 0) {\n          iVar9 = param_7 + 4;\n          if (param_7 == 0) {\n            iVar9 = iVar8;\n          }\n          FUN_000ef5d0(param_1[0x35],iVar9,param_3,param_4,param_5,param_6,\n                       *(int *)(param_1[3] + 8) + 4);\n        }\n        if ((uVar7 < (uint)((int)(param_1[5] - param_1[4]) >> 2)) &&\n           (piVar2 = *(int **)(param_1[4] + iVar6), iVar8 = (**(code **)(*piVar2 + 0x14))(piVar2),\n           iVar8 != 0)) {\n          uVar10 = (**(code **)(**(int **)(param_1[4] + iVar6) + 0x14))\n                             (*(int **)(param_1[4] + iVar6));\n        }\n        else {\n                    \n          uVar10 = FUN_000f1ee0(param_1,uVar7);\n        }\n        goto LAB_000f23ab;\n      }" { (expression_statement "*(undefined1 *)(param_1 + 0x18) = 1;" (assignment_expression "*(undefined1 *)(param_1 + 0x18) = 1" (pointer_expression "*(undefined1 *)(param_1 + 0x18)" * (cast_expression "(undefined1 *)(param_1 + 0x18)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x18)" ( (binary_expression "param_1 + 0x18" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined1 *)((int)param_1 + 99) = 0;" (assignment_expression "*(undefined1 *)((int)param_1 + 99) = 0" (pointer_expression "*(undefined1 *)((int)param_1 + 99)" * (cast_expression "(undefined1 *)((int)param_1 + 99)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_1 + 99)" ( (binary_expression "(int)param_1 + 99" (cast_expression "(int)param_1" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) (if_statement "if (param_1[0x35] != 0) {\n          iVar9 = param_7 + 4;\n          if (param_7 == 0) {\n            iVar9 = iVar8;\n          }\n          FUN_000ef5d0(param_1[0x35],iVar9,param_3,param_4,param_5,param_6,\n                       *(int *)(param_1[3] + 8) + 4);\n        }" if (parenthesized_expression "(param_1[0x35] != 0)" ( (binary_expression "param_1[0x35] != 0" (subscript_expression "param_1[0x35]" identifier [ number_literal ]) != number_literal) )) (compound_statement "{\n          iVar9 = param_7 + 4;\n          if (param_7 == 0) {\n            iVar9 = iVar8;\n          }\n          FUN_000ef5d0(param_1[0x35],iVar9,param_3,param_4,param_5,param_6,\n                       *(int *)(param_1[3] + 8) + 4);\n        }" { (expression_statement "iVar9 = param_7 + 4;" (assignment_expression "iVar9 = param_7 + 4" identifier = (binary_expression "param_7 + 4" identifier + number_literal)) ;) (if_statement "if (param_7 == 0) {\n            iVar9 = iVar8;\n          }" if (parenthesized_expression "(param_7 == 0)" ( (binary_expression "param_7 == 0" identifier == number_literal) )) (compound_statement "{\n            iVar9 = iVar8;\n          }" { (expression_statement "iVar9 = iVar8;" (assignment_expression "iVar9 = iVar8" identifier = identifier) ;) })) (expression_statement "FUN_000ef5d0(param_1[0x35],iVar9,param_3,param_4,param_5,param_6,\n                       *(int *)(param_1[3] + 8) + 4);" (call_expression "FUN_000ef5d0(param_1[0x35],iVar9,param_3,param_4,param_5,param_6,\n                       *(int *)(param_1[3] + 8) + 4)" identifier (argument_list "(param_1[0x35],iVar9,param_3,param_4,param_5,param_6,\n                       *(int *)(param_1[3] + 8) + 4)" ( (subscript_expression "param_1[0x35]" identifier [ number_literal ]) , identifier , identifier , identifier , identifier , identifier , (binary_expression "*(int *)(param_1[3] + 8) + 4" (pointer_expression "*(int *)(param_1[3] + 8)" * (cast_expression "(int *)(param_1[3] + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1[3] + 8)" ( (binary_expression "param_1[3] + 8" (subscript_expression "param_1[3]" identifier [ number_literal ]) + number_literal) )))) + number_literal) ))) ;) })) (if_statement "if ((uVar7 < (uint)((int)(param_1[5] - param_1[4]) >> 2)) &&\n           (piVar2 = *(int **)(param_1[4] + iVar6), iVar8 = (**(code **)(*piVar2 + 0x14))(piVar2),\n           iVar8 != 0)) {\n          uVar10 = (**(code **)(**(int **)(param_1[4] + iVar6) + 0x14))\n                             (*(int **)(param_1[4] + iVar6));\n        }\n        else {\n                    \n          uVar10 = FUN_000f1ee0(param_1,uVar7);\n        }" if (parenthesized_expression "((uVar7 < (uint)((int)(param_1[5] - param_1[4]) >> 2)) &&\n           (piVar2 = *(int **)(param_1[4] + iVar6), iVar8 = (**(code **)(*piVar2 + 0x14))(piVar2),\n           iVar8 != 0))" ( (binary_expression "(uVar7 < (uint)((int)(param_1[5] - param_1[4]) >> 2)) &&\n           (piVar2 = *(int **)(param_1[4] + iVar6), iVar8 = (**(code **)(*piVar2 + 0x14))(piVar2),\n           iVar8 != 0)" (parenthesized_expression "(uVar7 < (uint)((int)(param_1[5] - param_1[4]) >> 2))" ( (binary_expression "uVar7 < (uint)((int)(param_1[5] - param_1[4]) >> 2)" identifier < (call_expression "(uint)((int)(param_1[5] - param_1[4]) >> 2)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((int)(param_1[5] - param_1[4]) >> 2)" ( (binary_expression "(int)(param_1[5] - param_1[4]) >> 2" (cast_expression "(int)(param_1[5] - param_1[4])" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(param_1[5] - param_1[4])" ( (binary_expression "param_1[5] - param_1[4]" (subscript_expression "param_1[5]" identifier [ number_literal ]) - (subscript_expression "param_1[4]" identifier [ number_literal ])) ))) >> number_literal) )))) )) && (parenthesized_expression "(piVar2 = *(int **)(param_1[4] + iVar6), iVar8 = (**(code **)(*piVar2 + 0x14))(piVar2),\n           iVar8 != 0)" ( (comma_expression "piVar2 = *(int **)(param_1[4] + iVar6), iVar8 = (**(code **)(*piVar2 + 0x14))(piVar2),\n           iVar8 != 0" (assignment_expression "piVar2 = *(int **)(param_1[4] + iVar6)" identifier = (pointer_expression "*(int **)(param_1[4] + iVar6)" * (cast_expression "(int **)(param_1[4] + iVar6)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1[4] + iVar6)" ( (binary_expression "param_1[4] + iVar6" (subscript_expression "param_1[4]" identifier [ number_literal ]) + identifier) ))))) , (comma_expression "iVar8 = (**(code **)(*piVar2 + 0x14))(piVar2),\n           iVar8 != 0" (assignment_expression "iVar8 = (**(code **)(*piVar2 + 0x14))(piVar2)" identifier = (call_expression "(**(code **)(*piVar2 + 0x14))(piVar2)" (parenthesized_expression "(**(code **)(*piVar2 + 0x14))" ( (pointer_expression "**(code **)(*piVar2 + 0x14)" * (pointer_expression "*(code **)(*piVar2 + 0x14)" * (cast_expression "(code **)(*piVar2 + 0x14)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*piVar2 + 0x14)" ( (binary_expression "*piVar2 + 0x14" (pointer_expression "*piVar2" * identifier) + number_literal) ))))) )) (argument_list "(piVar2)" ( identifier )))) , (binary_expression "iVar8 != 0" identifier != number_literal))) ))) )) (compound_statement "{\n          uVar10 = (**(code **)(**(int **)(param_1[4] + iVar6) + 0x14))\n                             (*(int **)(param_1[4] + iVar6));\n        }" { (expression_statement "uVar10 = (**(code **)(**(int **)(param_1[4] + iVar6) + 0x14))\n                             (*(int **)(param_1[4] + iVar6));" (assignment_expression "uVar10 = (**(code **)(**(int **)(param_1[4] + iVar6) + 0x14))\n                             (*(int **)(param_1[4] + iVar6))" identifier = (call_expression "(**(code **)(**(int **)(param_1[4] + iVar6) + 0x14))\n                             (*(int **)(param_1[4] + iVar6))" (parenthesized_expression "(**(code **)(**(int **)(param_1[4] + iVar6) + 0x14))" ( (pointer_expression "**(code **)(**(int **)(param_1[4] + iVar6) + 0x14)" * (pointer_expression "*(code **)(**(int **)(param_1[4] + iVar6) + 0x14)" * (cast_expression "(code **)(**(int **)(param_1[4] + iVar6) + 0x14)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(**(int **)(param_1[4] + iVar6) + 0x14)" ( (binary_expression "**(int **)(param_1[4] + iVar6) + 0x14" (pointer_expression "**(int **)(param_1[4] + iVar6)" * (pointer_expression "*(int **)(param_1[4] + iVar6)" * (cast_expression "(int **)(param_1[4] + iVar6)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1[4] + iVar6)" ( (binary_expression "param_1[4] + iVar6" (subscript_expression "param_1[4]" identifier [ number_literal ]) + identifier) ))))) + number_literal) ))))) )) (argument_list "(*(int **)(param_1[4] + iVar6))" ( (pointer_expression "*(int **)(param_1[4] + iVar6)" * (cast_expression "(int **)(param_1[4] + iVar6)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1[4] + iVar6)" ( (binary_expression "param_1[4] + iVar6" (subscript_expression "param_1[4]" identifier [ number_literal ]) + identifier) )))) )))) ;) }) (else_clause "else {\n                    \n          uVar10 = FUN_000f1ee0(param_1,uVar7);\n        }" else (compound_statement "{\n                    \n          uVar10 = FUN_000f1ee0(param_1,uVar7);\n        }" { (expression_statement "uVar10 = FUN_000f1ee0(param_1,uVar7);" (assignment_expression "uVar10 = FUN_000f1ee0(param_1,uVar7)" identifier = (call_expression "FUN_000f1ee0(param_1,uVar7)" identifier (argument_list "(param_1,uVar7)" ( identifier , identifier )))) ;) }))) (goto_statement "goto LAB_000f23ab;" goto statement_identifier ;) })) (labeled_statement "LAB_000f22cf:\n      puVar3 = *(undefined4 **)param_1[3];" statement_identifier : (expression_statement "puVar3 = *(undefined4 **)param_1[3];" (assignment_expression "puVar3 = *(undefined4 **)param_1[3]" identifier = (pointer_expression "*(undefined4 **)param_1[3]" * (cast_expression "(undefined4 **)param_1[3]" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (subscript_expression "param_1[3]" identifier [ number_literal ])))) ;)) (expression_statement "param_1[3] = puVar3;" (assignment_expression "param_1[3] = puVar3" (subscript_expression "param_1[3]" identifier [ number_literal ]) = identifier) ;) (goto_statement "goto joined_r0x000f22ac;" goto statement_identifier ;) })) (expression_statement "pcVar4 = *(code **)(puVar3[2] + 0x34);" (assignment_expression "pcVar4 = *(code **)(puVar3[2] + 0x34)" identifier = (pointer_expression "*(code **)(puVar3[2] + 0x34)" * (cast_expression "(code **)(puVar3[2] + 0x34)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar3[2] + 0x34)" ( (binary_expression "puVar3[2] + 0x34" (subscript_expression "puVar3[2]" identifier [ number_literal ]) + number_literal) ))))) ;) (if_statement "if (pcVar4 == (code *)0x0) goto LAB_000f22cf;" if (parenthesized_expression "(pcVar4 == (code *)0x0)" ( (binary_expression "pcVar4 == (code *)0x0" identifier == (cast_expression "(code *)0x0" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_000f22cf;" goto statement_identifier ;)) (expression_statement "(*pcVar4)(param_1 + 0xb);" (call_expression "(*pcVar4)(param_1 + 0xb)" (parenthesized_expression "(*pcVar4)" ( (pointer_expression "*pcVar4" * identifier) )) (argument_list "(param_1 + 0xb)" ( (binary_expression "param_1 + 0xb" identifier + number_literal) ))) ;) (expression_statement "puVar3 = *(undefined4 **)param_1[3];" (assignment_expression "puVar3 = *(undefined4 **)param_1[3]" identifier = (pointer_expression "*(undefined4 **)param_1[3]" * (cast_expression "(undefined4 **)param_1[3]" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (subscript_expression "param_1[3]" identifier [ number_literal ])))) ;) (expression_statement "param_1[3] = puVar3;" (assignment_expression "param_1[3] = puVar3" (subscript_expression "param_1[3]" identifier [ number_literal ]) = identifier) ;) }) while (parenthesized_expression "( true )" ( true )) ;)) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) ))) (compound_statement { (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (array_declarator IDENT [ LIT ]) ;) (declaration TYPE IDENT ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (binary_expression IDENT + LIT) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (char_literal ' escape_sequence ')) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (string_literal " string_content ") , LIT , (string_literal " string_content ") , IDENT ))) ;) })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) + LIT) ))))) )) (argument_list ( IDENT ))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (subscript_expression IDENT [ LIT ]) - (subscript_expression IDENT [ LIT ]))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT >> LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (binary_expression IDENT + LIT) , IDENT , (pointer_expression & IDENT) ))) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression IDENT + LIT)) ;) }))) })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (labeled_statement statement_identifier : (do_statement do (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == IDENT) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) != LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (subscript_expression IDENT [ LIT ]) , IDENT , IDENT , IDENT , IDENT , IDENT ))) ;) })) (expression_statement (assignment_expression IDENT = LIT) ;) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) ;)) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) + LIT) ))))) )) (argument_list ( IDENT ))) ;) (return_statement return IDENT ;) })) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) == (char_literal ' escape_sequence ')) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) + LIT) ))))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) && (parenthesized_expression ( (comma_expression (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( (binary_expression IDENT + LIT) , IDENT ))) , (binary_expression (subscript_expression IDENT [ LIT ]) != LIT)) ))) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) })) (expression_statement (call_expression IDENT (argument_list ( (subscript_expression IDENT [ LIT ]) , IDENT , IDENT , IDENT , IDENT , IDENT , (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) + LIT) )))) + LIT) ))) ;) })) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT < (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) - (subscript_expression IDENT [ LIT ])) ))) >> LIT) )))) )) && (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) + IDENT) ))))) , (comma_expression (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) + LIT) ))))) )) (argument_list ( IDENT )))) , (binary_expression IDENT != LIT))) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) + IDENT) ))))) + LIT) ))))) )) (argument_list ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) + IDENT) )))) )))) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT )))) ;) }))) (goto_statement goto statement_identifier ;) })) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (subscript_expression IDENT [ LIT ])))) ;)) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (goto_statement goto statement_identifier ;)) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( (binary_expression IDENT + LIT) ))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (subscript_expression IDENT [ LIT ])))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) }) while (parenthesized_expression ( BOOL )) ;)) })))
(function_definition "undefined4\nFUN_000f21d0(undefined4 *param_1,int param_2,undefined4 param_3,undefined4 param_4,\n            undefined4 param_5,undefined4 param_6,int param_7)\n\n{\n  undefined4 *puVar1;\n  int *piVar2;\n  undefined4 *puVar3;\n  code *pcVar4;\n  char cVar5;\n  int iVar6;\n  uint uVar7;\n  int iVar8;\n  int iVar9;\n  undefined4 extraout_EDX;\n  undefined4 uVar10;\n  int local_20 [3];\n  undefined4 uStack_14;\n  \n  uStack_14 = 0xf21db;\n  cVar5 = FUN_000622e0(param_1 + 0x29);\n  if (cVar5 == '\0') {\n                    \n    FUN_0005f0b0("../../gold/plugin.cc",0x2da,"claim_file",extraout_EDX);\n  }\n  puVar1 = (undefined4 *)param_1[0x28];\n  piVar2 = (int *)*puVar1;\n  (**(code **)(*piVar2 + 8))(piVar2);\n  iVar6 = param_1[5] - param_1[4];\n  param_1[10] = param_2;\n  uVar7 = iVar6 >> 2;\n  iVar8 = param_2 + 0x1c;\n  param_1[0xb] = *(undefined4 *)(param_2 + 0x1c);\n                    \n  FUN_0005bce0(iVar8);\n  param_1[0xc] = *(undefined4 *)(param_2 + 0x34);\n  param_1[0xe] = param_4;\n  param_1[0xd] = param_3;\n  param_1[0x10] = param_6;\n  param_1[0xf] = param_5;\n  param_1[0x11] = uVar7;\n  if (param_7 != 0) {\n    piVar2 = (int *)param_1[5];\n    if (piVar2 == (int *)param_1[6]) {\n      FUN_000f4070(param_1 + 4,piVar2,&param_7);\n    }\n    else {\n      *piVar2 = param_7;\n      param_1[5] = piVar2 + 1;\n    }\n  }\n  puVar3 = (undefined4 *)*param_1;\n  *(undefined1 *)((int)param_1 + 99) = 1;\n  param_1[3] = puVar3;\njoined_r0x000f22ac:\n  do {\n    if (puVar3 == param_1) {\n      *(undefined1 *)((int)param_1 + 99) = 0;\n      if (param_1[0x35] != 0) {\n        FUN_000ef670(param_1[0x35],iVar8,param_3,param_4,param_5,param_6);\n      }\n      uVar10 = 0;\nLAB_000f23ab:\n      piVar2 = (int *)*puVar1;\n      (**(code **)(*piVar2 + 0xc))(piVar2);\n      return uVar10;\n    }\n    if (*(char *)((int)param_1 + 0x61) == '\0') {\n      pcVar4 = *(code **)(puVar3[2] + 0x28);\n      local_20[0] = 0;\n      if ((pcVar4 != (code *)0x0) && ((*pcVar4)(param_1 + 0xb,local_20), local_20[0] != 0)) {\n        *(undefined1 *)(param_1 + 0x18) = 1;\n        *(undefined1 *)((int)param_1 + 99) = 0;\n        if (param_1[0x35] != 0) {\n          iVar9 = param_7 + 4;\n          if (param_7 == 0) {\n            iVar9 = iVar8;\n          }\n          FUN_000ef5d0(param_1[0x35],iVar9,param_3,param_4,param_5,param_6,\n                       *(int *)(param_1[3] + 8) + 4);\n        }\n        if ((uVar7 < (uint)((int)(param_1[5] - param_1[4]) >> 2)) &&\n           (piVar2 = *(int **)(param_1[4] + iVar6), iVar8 = (**(code **)(*piVar2 + 0x14))(piVar2),\n           iVar8 != 0)) {\n          uVar10 = (**(code **)(**(int **)(param_1[4] + iVar6) + 0x14))\n                             (*(int **)(param_1[4] + iVar6));\n        }\n        else {\n                    \n          uVar10 = FUN_000f1ee0(param_1,uVar7);\n        }\n        goto LAB_000f23ab;\n      }\nLAB_000f22cf:\n      puVar3 = *(undefined4 **)param_1[3];\n      param_1[3] = puVar3;\n      goto joined_r0x000f22ac;\n    }\n    pcVar4 = *(code **)(puVar3[2] + 0x34);\n    if (pcVar4 == (code *)0x0) goto LAB_000f22cf;\n    (*pcVar4)(param_1 + 0xb);\n    puVar3 = *(undefined4 **)param_1[3];\n    param_1[3] = puVar3;\n  } while( true );\n}" (type_identifier "undefined4") (function_declarator "FUN_000f21d0(undefined4 *param_1,int param_2,undefined4 param_3,undefined4 param_4,\n            undefined4 param_5,undefined4 param_6,int param_7)" (identifier "FUN_000f21d0") (parameter_list "(undefined4 *param_1,int param_2,undefined4 param_3,undefined4 param_4,\n            undefined4 param_5,undefined4 param_6,int param_7)" (( "(") (parameter_declaration "undefined4 *param_1" (type_identifier "undefined4") (pointer_declarator "*param_1" (* "*") (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")) (, ",") (parameter_declaration "undefined4 param_4" (type_identifier "undefined4") (identifier "param_4")) (, ",") (parameter_declaration "undefined4 param_5" (type_identifier "undefined4") (identifier "param_5")) (, ",") (parameter_declaration "undefined4 param_6" (type_identifier "undefined4") (identifier "param_6")) (, ",") (parameter_declaration "int param_7" (primitive_type "int") (identifier "param_7")) () ")"))) (compound_statement "{\n  undefined4 *puVar1;\n  int *piVar2;\n  undefined4 *puVar3;\n  code *pcVar4;\n  char cVar5;\n  int iVar6;\n  uint uVar7;\n  int iVar8;\n  int iVar9;\n  undefined4 extraout_EDX;\n  undefined4 uVar10;\n  int local_20 [3];\n  undefined4 uStack_14;\n  \n  uStack_14 = 0xf21db;\n  cVar5 = FUN_000622e0(param_1 + 0x29);\n  if (cVar5 == '\0') {\n                    \n    FUN_0005f0b0("../../gold/plugin.cc",0x2da,"claim_file",extraout_EDX);\n  }\n  puVar1 = (undefined4 *)param_1[0x28];\n  piVar2 = (int *)*puVar1;\n  (**(code **)(*piVar2 + 8))(piVar2);\n  iVar6 = param_1[5] - param_1[4];\n  param_1[10] = param_2;\n  uVar7 = iVar6 >> 2;\n  iVar8 = param_2 + 0x1c;\n  param_1[0xb] = *(undefined4 *)(param_2 + 0x1c);\n                    \n  FUN_0005bce0(iVar8);\n  param_1[0xc] = *(undefined4 *)(param_2 + 0x34);\n  param_1[0xe] = param_4;\n  param_1[0xd] = param_3;\n  param_1[0x10] = param_6;\n  param_1[0xf] = param_5;\n  param_1[0x11] = uVar7;\n  if (param_7 != 0) {\n    piVar2 = (int *)param_1[5];\n    if (piVar2 == (int *)param_1[6]) {\n      FUN_000f4070(param_1 + 4,piVar2,&param_7);\n    }\n    else {\n      *piVar2 = param_7;\n      param_1[5] = piVar2 + 1;\n    }\n  }\n  puVar3 = (undefined4 *)*param_1;\n  *(undefined1 *)((int)param_1 + 99) = 1;\n  param_1[3] = puVar3;\njoined_r0x000f22ac:\n  do {\n    if (puVar3 == param_1) {\n      *(undefined1 *)((int)param_1 + 99) = 0;\n      if (param_1[0x35] != 0) {\n        FUN_000ef670(param_1[0x35],iVar8,param_3,param_4,param_5,param_6);\n      }\n      uVar10 = 0;\nLAB_000f23ab:\n      piVar2 = (int *)*puVar1;\n      (**(code **)(*piVar2 + 0xc))(piVar2);\n      return uVar10;\n    }\n    if (*(char *)((int)param_1 + 0x61) == '\0') {\n      pcVar4 = *(code **)(puVar3[2] + 0x28);\n      local_20[0] = 0;\n      if ((pcVar4 != (code *)0x0) && ((*pcVar4)(param_1 + 0xb,local_20), local_20[0] != 0)) {\n        *(undefined1 *)(param_1 + 0x18) = 1;\n        *(undefined1 *)((int)param_1 + 99) = 0;\n        if (param_1[0x35] != 0) {\n          iVar9 = param_7 + 4;\n          if (param_7 == 0) {\n            iVar9 = iVar8;\n          }\n          FUN_000ef5d0(param_1[0x35],iVar9,param_3,param_4,param_5,param_6,\n                       *(int *)(param_1[3] + 8) + 4);\n        }\n        if ((uVar7 < (uint)((int)(param_1[5] - param_1[4]) >> 2)) &&\n           (piVar2 = *(int **)(param_1[4] + iVar6), iVar8 = (**(code **)(*piVar2 + 0x14))(piVar2),\n           iVar8 != 0)) {\n          uVar10 = (**(code **)(**(int **)(param_1[4] + iVar6) + 0x14))\n                             (*(int **)(param_1[4] + iVar6));\n        }\n        else {\n                    \n          uVar10 = FUN_000f1ee0(param_1,uVar7);\n        }\n        goto LAB_000f23ab;\n      }\nLAB_000f22cf:\n      puVar3 = *(undefined4 **)param_1[3];\n      param_1[3] = puVar3;\n      goto joined_r0x000f22ac;\n    }\n    pcVar4 = *(code **)(puVar3[2] + 0x34);\n    if (pcVar4 == (code *)0x0) goto LAB_000f22cf;\n    (*pcVar4)(param_1 + 0xb);\n    puVar3 = *(undefined4 **)param_1[3];\n    param_1[3] = puVar3;\n  } while( true );\n}" ({ "{") (declaration "undefined4 *puVar1;" (type_identifier "undefined4") (pointer_declarator "*puVar1" (* "*") (identifier "puVar1")) (; ";")) (declaration "int *piVar2;" (primitive_type "int") (pointer_declarator "*piVar2" (* "*") (identifier "piVar2")) (; ";")) (declaration "undefined4 *puVar3;" (type_identifier "undefined4") (pointer_declarator "*puVar3" (* "*") (identifier "puVar3")) (; ";")) (declaration "code *pcVar4;" (type_identifier "code") (pointer_declarator "*pcVar4" (* "*") (identifier "pcVar4")) (; ";")) (declaration "char cVar5;" (primitive_type "char") (identifier "cVar5") (; ";")) (declaration "int iVar6;" (primitive_type "int") (identifier "iVar6") (; ";")) (declaration "uint uVar7;" (type_identifier "uint") (identifier "uVar7") (; ";")) (declaration "int iVar8;" (primitive_type "int") (identifier "iVar8") (; ";")) (declaration "int iVar9;" (primitive_type "int") (identifier "iVar9") (; ";")) (declaration "undefined4 extraout_EDX;" (type_identifier "undefined4") (identifier "extraout_EDX") (; ";")) (declaration "undefined4 uVar10;" (type_identifier "undefined4") (identifier "uVar10") (; ";")) (declaration "int local_20 [3];" (primitive_type "int") (array_declarator "local_20 [3]" (identifier "local_20") ([ "[") (number_literal "3") (] "]")) (; ";")) (declaration "undefined4 uStack_14;" (type_identifier "undefined4") (identifier "uStack_14") (; ";")) (expression_statement "uStack_14 = 0xf21db;" (assignment_expression "uStack_14 = 0xf21db" (identifier "uStack_14") (= "=") (number_literal "0xf21db")) (; ";")) (expression_statement "cVar5 = FUN_000622e0(param_1 + 0x29);" (assignment_expression "cVar5 = FUN_000622e0(param_1 + 0x29)" (identifier "cVar5") (= "=") (call_expression "FUN_000622e0(param_1 + 0x29)" (identifier "FUN_000622e0") (argument_list "(param_1 + 0x29)" (( "(") (binary_expression "param_1 + 0x29" (identifier "param_1") (+ "+") (number_literal "0x29")) () ")")))) (; ";")) (if_statement "if (cVar5 == '\0') {\n                    \n    FUN_0005f0b0("../../gold/plugin.cc",0x2da,"claim_file",extraout_EDX);\n  }" (if "if") (parenthesized_expression "(cVar5 == '\0')" (( "(") (binary_expression "cVar5 == '\0'" (identifier "cVar5") (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n                    \n    FUN_0005f0b0("../../gold/plugin.cc",0x2da,"claim_file",extraout_EDX);\n  }" ({ "{") (expression_statement "FUN_0005f0b0("../../gold/plugin.cc",0x2da,"claim_file",extraout_EDX);" (call_expression "FUN_0005f0b0("../../gold/plugin.cc",0x2da,"claim_file",extraout_EDX)" (identifier "FUN_0005f0b0") (argument_list "("../../gold/plugin.cc",0x2da,"claim_file",extraout_EDX)" (( "(") (string_literal ""../../gold/plugin.cc"" (" """) (string_content "../../gold/plugin.cc") (" """)) (, ",") (number_literal "0x2da") (, ",") (string_literal ""claim_file"" (" """) (string_content "claim_file") (" """)) (, ",") (identifier "extraout_EDX") () ")"))) (; ";")) (} "}"))) (expression_statement "puVar1 = (undefined4 *)param_1[0x28];" (assignment_expression "puVar1 = (undefined4 *)param_1[0x28]" (identifier "puVar1") (= "=") (cast_expression "(undefined4 *)param_1[0x28]" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "param_1[0x28]" (identifier "param_1") ([ "[") (number_literal "0x28") (] "]")))) (; ";")) (expression_statement "piVar2 = (int *)*puVar1;" (assignment_expression "piVar2 = (int *)*puVar1" (identifier "piVar2") (= "=") (cast_expression "(int *)*puVar1" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*puVar1" (* "*") (identifier "puVar1")))) (; ";")) (expression_statement "(**(code **)(*piVar2 + 8))(piVar2);" (call_expression "(**(code **)(*piVar2 + 8))(piVar2)" (parenthesized_expression "(**(code **)(*piVar2 + 8))" (( "(") (pointer_expression "**(code **)(*piVar2 + 8)" (* "*") (pointer_expression "*(code **)(*piVar2 + 8)" (* "*") (cast_expression "(code **)(*piVar2 + 8)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*piVar2 + 8)" (( "(") (binary_expression "*piVar2 + 8" (pointer_expression "*piVar2" (* "*") (identifier "piVar2")) (+ "+") (number_literal "8")) () ")"))))) () ")")) (argument_list "(piVar2)" (( "(") (identifier "piVar2") () ")"))) (; ";")) (expression_statement "iVar6 = param_1[5] - param_1[4];" (assignment_expression "iVar6 = param_1[5] - param_1[4]" (identifier "iVar6") (= "=") (binary_expression "param_1[5] - param_1[4]" (subscript_expression "param_1[5]" (identifier "param_1") ([ "[") (number_literal "5") (] "]")) (- "-") (subscript_expression "param_1[4]" (identifier "param_1") ([ "[") (number_literal "4") (] "]")))) (; ";")) (expression_statement "param_1[10] = param_2;" (assignment_expression "param_1[10] = param_2" (subscript_expression "param_1[10]" (identifier "param_1") ([ "[") (number_literal "10") (] "]")) (= "=") (identifier "param_2")) (; ";")) (expression_statement "uVar7 = iVar6 >> 2;" (assignment_expression "uVar7 = iVar6 >> 2" (identifier "uVar7") (= "=") (binary_expression "iVar6 >> 2" (identifier "iVar6") (>> ">>") (number_literal "2"))) (; ";")) (expression_statement "iVar8 = param_2 + 0x1c;" (assignment_expression "iVar8 = param_2 + 0x1c" (identifier "iVar8") (= "=") (binary_expression "param_2 + 0x1c" (identifier "param_2") (+ "+") (number_literal "0x1c"))) (; ";")) (expression_statement "param_1[0xb] = *(undefined4 *)(param_2 + 0x1c);" (assignment_expression "param_1[0xb] = *(undefined4 *)(param_2 + 0x1c)" (subscript_expression "param_1[0xb]" (identifier "param_1") ([ "[") (number_literal "0xb") (] "]")) (= "=") (pointer_expression "*(undefined4 *)(param_2 + 0x1c)" (* "*") (cast_expression "(undefined4 *)(param_2 + 0x1c)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0x1c)" (( "(") (binary_expression "param_2 + 0x1c" (identifier "param_2") (+ "+") (number_literal "0x1c")) () ")"))))) (; ";")) (expression_statement "FUN_0005bce0(iVar8);" (call_expression "FUN_0005bce0(iVar8)" (identifier "FUN_0005bce0") (argument_list "(iVar8)" (( "(") (identifier "iVar8") () ")"))) (; ";")) (expression_statement "param_1[0xc] = *(undefined4 *)(param_2 + 0x34);" (assignment_expression "param_1[0xc] = *(undefined4 *)(param_2 + 0x34)" (subscript_expression "param_1[0xc]" (identifier "param_1") ([ "[") (number_literal "0xc") (] "]")) (= "=") (pointer_expression "*(undefined4 *)(param_2 + 0x34)" (* "*") (cast_expression "(undefined4 *)(param_2 + 0x34)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0x34)" (( "(") (binary_expression "param_2 + 0x34" (identifier "param_2") (+ "+") (number_literal "0x34")) () ")"))))) (; ";")) (expression_statement "param_1[0xe] = param_4;" (assignment_expression "param_1[0xe] = param_4" (subscript_expression "param_1[0xe]" (identifier "param_1") ([ "[") (number_literal "0xe") (] "]")) (= "=") (identifier "param_4")) (; ";")) (expression_statement "param_1[0xd] = param_3;" (assignment_expression "param_1[0xd] = param_3" (subscript_expression "param_1[0xd]" (identifier "param_1") ([ "[") (number_literal "0xd") (] "]")) (= "=") (identifier "param_3")) (; ";")) (expression_statement "param_1[0x10] = param_6;" (assignment_expression "param_1[0x10] = param_6" (subscript_expression "param_1[0x10]" (identifier "param_1") ([ "[") (number_literal "0x10") (] "]")) (= "=") (identifier "param_6")) (; ";")) (expression_statement "param_1[0xf] = param_5;" (assignment_expression "param_1[0xf] = param_5" (subscript_expression "param_1[0xf]" (identifier "param_1") ([ "[") (number_literal "0xf") (] "]")) (= "=") (identifier "param_5")) (; ";")) (expression_statement "param_1[0x11] = uVar7;" (assignment_expression "param_1[0x11] = uVar7" (subscript_expression "param_1[0x11]" (identifier "param_1") ([ "[") (number_literal "0x11") (] "]")) (= "=") (identifier "uVar7")) (; ";")) (if_statement "if (param_7 != 0) {\n    piVar2 = (int *)param_1[5];\n    if (piVar2 == (int *)param_1[6]) {\n      FUN_000f4070(param_1 + 4,piVar2,&param_7);\n    }\n    else {\n      *piVar2 = param_7;\n      param_1[5] = piVar2 + 1;\n    }\n  }" (if "if") (parenthesized_expression "(param_7 != 0)" (( "(") (binary_expression "param_7 != 0" (identifier "param_7") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n    piVar2 = (int *)param_1[5];\n    if (piVar2 == (int *)param_1[6]) {\n      FUN_000f4070(param_1 + 4,piVar2,&param_7);\n    }\n    else {\n      *piVar2 = param_7;\n      param_1[5] = piVar2 + 1;\n    }\n  }" ({ "{") (expression_statement "piVar2 = (int *)param_1[5];" (assignment_expression "piVar2 = (int *)param_1[5]" (identifier "piVar2") (= "=") (cast_expression "(int *)param_1[5]" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "param_1[5]" (identifier "param_1") ([ "[") (number_literal "5") (] "]")))) (; ";")) (if_statement "if (piVar2 == (int *)param_1[6]) {\n      FUN_000f4070(param_1 + 4,piVar2,&param_7);\n    }\n    else {\n      *piVar2 = param_7;\n      param_1[5] = piVar2 + 1;\n    }" (if "if") (parenthesized_expression "(piVar2 == (int *)param_1[6])" (( "(") (binary_expression "piVar2 == (int *)param_1[6]" (identifier "piVar2") (== "==") (cast_expression "(int *)param_1[6]" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "param_1[6]" (identifier "param_1") ([ "[") (number_literal "6") (] "]")))) () ")")) (compound_statement "{\n      FUN_000f4070(param_1 + 4,piVar2,&param_7);\n    }" ({ "{") (expression_statement "FUN_000f4070(param_1 + 4,piVar2,&param_7);" (call_expression "FUN_000f4070(param_1 + 4,piVar2,&param_7)" (identifier "FUN_000f4070") (argument_list "(param_1 + 4,piVar2,&param_7)" (( "(") (binary_expression "param_1 + 4" (identifier "param_1") (+ "+") (number_literal "4")) (, ",") (identifier "piVar2") (, ",") (pointer_expression "&param_7" (& "&") (identifier "param_7")) () ")"))) (; ";")) (} "}")) (else_clause "else {\n      *piVar2 = param_7;\n      param_1[5] = piVar2 + 1;\n    }" (else "else") (compound_statement "{\n      *piVar2 = param_7;\n      param_1[5] = piVar2 + 1;\n    }" ({ "{") (expression_statement "*piVar2 = param_7;" (assignment_expression "*piVar2 = param_7" (pointer_expression "*piVar2" (* "*") (identifier "piVar2")) (= "=") (identifier "param_7")) (; ";")) (expression_statement "param_1[5] = piVar2 + 1;" (assignment_expression "param_1[5] = piVar2 + 1" (subscript_expression "param_1[5]" (identifier "param_1") ([ "[") (number_literal "5") (] "]")) (= "=") (binary_expression "piVar2 + 1" (identifier "piVar2") (+ "+") (number_literal "1"))) (; ";")) (} "}")))) (} "}"))) (expression_statement "puVar3 = (undefined4 *)*param_1;" (assignment_expression "puVar3 = (undefined4 *)*param_1" (identifier "puVar3") (= "=") (cast_expression "(undefined4 *)*param_1" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*param_1" (* "*") (identifier "param_1")))) (; ";")) (expression_statement "*(undefined1 *)((int)param_1 + 99) = 1;" (assignment_expression "*(undefined1 *)((int)param_1 + 99) = 1" (pointer_expression "*(undefined1 *)((int)param_1 + 99)" (* "*") (cast_expression "(undefined1 *)((int)param_1 + 99)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)param_1 + 99)" (( "(") (binary_expression "(int)param_1 + 99" (cast_expression "(int)param_1" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_1")) (+ "+") (number_literal "99")) () ")")))) (= "=") (number_literal "1")) (; ";")) (expression_statement "param_1[3] = puVar3;" (assignment_expression "param_1[3] = puVar3" (subscript_expression "param_1[3]" (identifier "param_1") ([ "[") (number_literal "3") (] "]")) (= "=") (identifier "puVar3")) (; ";")) (labeled_statement "joined_r0x000f22ac:\n  do {\n    if (puVar3 == param_1) {\n      *(undefined1 *)((int)param_1 + 99) = 0;\n      if (param_1[0x35] != 0) {\n        FUN_000ef670(param_1[0x35],iVar8,param_3,param_4,param_5,param_6);\n      }\n      uVar10 = 0;\nLAB_000f23ab:\n      piVar2 = (int *)*puVar1;\n      (**(code **)(*piVar2 + 0xc))(piVar2);\n      return uVar10;\n    }\n    if (*(char *)((int)param_1 + 0x61) == '\0') {\n      pcVar4 = *(code **)(puVar3[2] + 0x28);\n      local_20[0] = 0;\n      if ((pcVar4 != (code *)0x0) && ((*pcVar4)(param_1 + 0xb,local_20), local_20[0] != 0)) {\n        *(undefined1 *)(param_1 + 0x18) = 1;\n        *(undefined1 *)((int)param_1 + 99) = 0;\n        if (param_1[0x35] != 0) {\n          iVar9 = param_7 + 4;\n          if (param_7 == 0) {\n            iVar9 = iVar8;\n          }\n          FUN_000ef5d0(param_1[0x35],iVar9,param_3,param_4,param_5,param_6,\n                       *(int *)(param_1[3] + 8) + 4);\n        }\n        if ((uVar7 < (uint)((int)(param_1[5] - param_1[4]) >> 2)) &&\n           (piVar2 = *(int **)(param_1[4] + iVar6), iVar8 = (**(code **)(*piVar2 + 0x14))(piVar2),\n           iVar8 != 0)) {\n          uVar10 = (**(code **)(**(int **)(param_1[4] + iVar6) + 0x14))\n                             (*(int **)(param_1[4] + iVar6));\n        }\n        else {\n                    \n          uVar10 = FUN_000f1ee0(param_1,uVar7);\n        }\n        goto LAB_000f23ab;\n      }\nLAB_000f22cf:\n      puVar3 = *(undefined4 **)param_1[3];\n      param_1[3] = puVar3;\n      goto joined_r0x000f22ac;\n    }\n    pcVar4 = *(code **)(puVar3[2] + 0x34);\n    if (pcVar4 == (code *)0x0) goto LAB_000f22cf;\n    (*pcVar4)(param_1 + 0xb);\n    puVar3 = *(undefined4 **)param_1[3];\n    param_1[3] = puVar3;\n  } while( true );" (statement_identifier "joined_r0x000f22ac") (: ":") (do_statement "do {\n    if (puVar3 == param_1) {\n      *(undefined1 *)((int)param_1 + 99) = 0;\n      if (param_1[0x35] != 0) {\n        FUN_000ef670(param_1[0x35],iVar8,param_3,param_4,param_5,param_6);\n      }\n      uVar10 = 0;\nLAB_000f23ab:\n      piVar2 = (int *)*puVar1;\n      (**(code **)(*piVar2 + 0xc))(piVar2);\n      return uVar10;\n    }\n    if (*(char *)((int)param_1 + 0x61) == '\0') {\n      pcVar4 = *(code **)(puVar3[2] + 0x28);\n      local_20[0] = 0;\n      if ((pcVar4 != (code *)0x0) && ((*pcVar4)(param_1 + 0xb,local_20), local_20[0] != 0)) {\n        *(undefined1 *)(param_1 + 0x18) = 1;\n        *(undefined1 *)((int)param_1 + 99) = 0;\n        if (param_1[0x35] != 0) {\n          iVar9 = param_7 + 4;\n          if (param_7 == 0) {\n            iVar9 = iVar8;\n          }\n          FUN_000ef5d0(param_1[0x35],iVar9,param_3,param_4,param_5,param_6,\n                       *(int *)(param_1[3] + 8) + 4);\n        }\n        if ((uVar7 < (uint)((int)(param_1[5] - param_1[4]) >> 2)) &&\n           (piVar2 = *(int **)(param_1[4] + iVar6), iVar8 = (**(code **)(*piVar2 + 0x14))(piVar2),\n           iVar8 != 0)) {\n          uVar10 = (**(code **)(**(int **)(param_1[4] + iVar6) + 0x14))\n                             (*(int **)(param_1[4] + iVar6));\n        }\n        else {\n                    \n          uVar10 = FUN_000f1ee0(param_1,uVar7);\n        }\n        goto LAB_000f23ab;\n      }\nLAB_000f22cf:\n      puVar3 = *(undefined4 **)param_1[3];\n      param_1[3] = puVar3;\n      goto joined_r0x000f22ac;\n    }\n    pcVar4 = *(code **)(puVar3[2] + 0x34);\n    if (pcVar4 == (code *)0x0) goto LAB_000f22cf;\n    (*pcVar4)(param_1 + 0xb);\n    puVar3 = *(undefined4 **)param_1[3];\n    param_1[3] = puVar3;\n  } while( true );" (do "do") (compound_statement "{\n    if (puVar3 == param_1) {\n      *(undefined1 *)((int)param_1 + 99) = 0;\n      if (param_1[0x35] != 0) {\n        FUN_000ef670(param_1[0x35],iVar8,param_3,param_4,param_5,param_6);\n      }\n      uVar10 = 0;\nLAB_000f23ab:\n      piVar2 = (int *)*puVar1;\n      (**(code **)(*piVar2 + 0xc))(piVar2);\n      return uVar10;\n    }\n    if (*(char *)((int)param_1 + 0x61) == '\0') {\n      pcVar4 = *(code **)(puVar3[2] + 0x28);\n      local_20[0] = 0;\n      if ((pcVar4 != (code *)0x0) && ((*pcVar4)(param_1 + 0xb,local_20), local_20[0] != 0)) {\n        *(undefined1 *)(param_1 + 0x18) = 1;\n        *(undefined1 *)((int)param_1 + 99) = 0;\n        if (param_1[0x35] != 0) {\n          iVar9 = param_7 + 4;\n          if (param_7 == 0) {\n            iVar9 = iVar8;\n          }\n          FUN_000ef5d0(param_1[0x35],iVar9,param_3,param_4,param_5,param_6,\n                       *(int *)(param_1[3] + 8) + 4);\n        }\n        if ((uVar7 < (uint)((int)(param_1[5] - param_1[4]) >> 2)) &&\n           (piVar2 = *(int **)(param_1[4] + iVar6), iVar8 = (**(code **)(*piVar2 + 0x14))(piVar2),\n           iVar8 != 0)) {\n          uVar10 = (**(code **)(**(int **)(param_1[4] + iVar6) + 0x14))\n                             (*(int **)(param_1[4] + iVar6));\n        }\n        else {\n                    \n          uVar10 = FUN_000f1ee0(param_1,uVar7);\n        }\n        goto LAB_000f23ab;\n      }\nLAB_000f22cf:\n      puVar3 = *(undefined4 **)param_1[3];\n      param_1[3] = puVar3;\n      goto joined_r0x000f22ac;\n    }\n    pcVar4 = *(code **)(puVar3[2] + 0x34);\n    if (pcVar4 == (code *)0x0) goto LAB_000f22cf;\n    (*pcVar4)(param_1 + 0xb);\n    puVar3 = *(undefined4 **)param_1[3];\n    param_1[3] = puVar3;\n  }" ({ "{") (if_statement "if (puVar3 == param_1) {\n      *(undefined1 *)((int)param_1 + 99) = 0;\n      if (param_1[0x35] != 0) {\n        FUN_000ef670(param_1[0x35],iVar8,param_3,param_4,param_5,param_6);\n      }\n      uVar10 = 0;\nLAB_000f23ab:\n      piVar2 = (int *)*puVar1;\n      (**(code **)(*piVar2 + 0xc))(piVar2);\n      return uVar10;\n    }" (if "if") (parenthesized_expression "(puVar3 == param_1)" (( "(") (binary_expression "puVar3 == param_1" (identifier "puVar3") (== "==") (identifier "param_1")) () ")")) (compound_statement "{\n      *(undefined1 *)((int)param_1 + 99) = 0;\n      if (param_1[0x35] != 0) {\n        FUN_000ef670(param_1[0x35],iVar8,param_3,param_4,param_5,param_6);\n      }\n      uVar10 = 0;\nLAB_000f23ab:\n      piVar2 = (int *)*puVar1;\n      (**(code **)(*piVar2 + 0xc))(piVar2);\n      return uVar10;\n    }" ({ "{") (expression_statement "*(undefined1 *)((int)param_1 + 99) = 0;" (assignment_expression "*(undefined1 *)((int)param_1 + 99) = 0" (pointer_expression "*(undefined1 *)((int)param_1 + 99)" (* "*") (cast_expression "(undefined1 *)((int)param_1 + 99)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)param_1 + 99)" (( "(") (binary_expression "(int)param_1 + 99" (cast_expression "(int)param_1" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_1")) (+ "+") (number_literal "99")) () ")")))) (= "=") (number_literal "0")) (; ";")) (if_statement "if (param_1[0x35] != 0) {\n        FUN_000ef670(param_1[0x35],iVar8,param_3,param_4,param_5,param_6);\n      }" (if "if") (parenthesized_expression "(param_1[0x35] != 0)" (( "(") (binary_expression "param_1[0x35] != 0" (subscript_expression "param_1[0x35]" (identifier "param_1") ([ "[") (number_literal "0x35") (] "]")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n        FUN_000ef670(param_1[0x35],iVar8,param_3,param_4,param_5,param_6);\n      }" ({ "{") (expression_statement "FUN_000ef670(param_1[0x35],iVar8,param_3,param_4,param_5,param_6);" (call_expression "FUN_000ef670(param_1[0x35],iVar8,param_3,param_4,param_5,param_6)" (identifier "FUN_000ef670") (argument_list "(param_1[0x35],iVar8,param_3,param_4,param_5,param_6)" (( "(") (subscript_expression "param_1[0x35]" (identifier "param_1") ([ "[") (number_literal "0x35") (] "]")) (, ",") (identifier "iVar8") (, ",") (identifier "param_3") (, ",") (identifier "param_4") (, ",") (identifier "param_5") (, ",") (identifier "param_6") () ")"))) (; ";")) (} "}"))) (expression_statement "uVar10 = 0;" (assignment_expression "uVar10 = 0" (identifier "uVar10") (= "=") (number_literal "0")) (; ";")) (labeled_statement "LAB_000f23ab:\n      piVar2 = (int *)*puVar1;" (statement_identifier "LAB_000f23ab") (: ":") (expression_statement "piVar2 = (int *)*puVar1;" (assignment_expression "piVar2 = (int *)*puVar1" (identifier "piVar2") (= "=") (cast_expression "(int *)*puVar1" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*puVar1" (* "*") (identifier "puVar1")))) (; ";"))) (expression_statement "(**(code **)(*piVar2 + 0xc))(piVar2);" (call_expression "(**(code **)(*piVar2 + 0xc))(piVar2)" (parenthesized_expression "(**(code **)(*piVar2 + 0xc))" (( "(") (pointer_expression "**(code **)(*piVar2 + 0xc)" (* "*") (pointer_expression "*(code **)(*piVar2 + 0xc)" (* "*") (cast_expression "(code **)(*piVar2 + 0xc)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*piVar2 + 0xc)" (( "(") (binary_expression "*piVar2 + 0xc" (pointer_expression "*piVar2" (* "*") (identifier "piVar2")) (+ "+") (number_literal "0xc")) () ")"))))) () ")")) (argument_list "(piVar2)" (( "(") (identifier "piVar2") () ")"))) (; ";")) (return_statement "return uVar10;" (return "return") (identifier "uVar10") (; ";")) (} "}"))) (if_statement "if (*(char *)((int)param_1 + 0x61) == '\0') {\n      pcVar4 = *(code **)(puVar3[2] + 0x28);\n      local_20[0] = 0;\n      if ((pcVar4 != (code *)0x0) && ((*pcVar4)(param_1 + 0xb,local_20), local_20[0] != 0)) {\n        *(undefined1 *)(param_1 + 0x18) = 1;\n        *(undefined1 *)((int)param_1 + 99) = 0;\n        if (param_1[0x35] != 0) {\n          iVar9 = param_7 + 4;\n          if (param_7 == 0) {\n            iVar9 = iVar8;\n          }\n          FUN_000ef5d0(param_1[0x35],iVar9,param_3,param_4,param_5,param_6,\n                       *(int *)(param_1[3] + 8) + 4);\n        }\n        if ((uVar7 < (uint)((int)(param_1[5] - param_1[4]) >> 2)) &&\n           (piVar2 = *(int **)(param_1[4] + iVar6), iVar8 = (**(code **)(*piVar2 + 0x14))(piVar2),\n           iVar8 != 0)) {\n          uVar10 = (**(code **)(**(int **)(param_1[4] + iVar6) + 0x14))\n                             (*(int **)(param_1[4] + iVar6));\n        }\n        else {\n                    \n          uVar10 = FUN_000f1ee0(param_1,uVar7);\n        }\n        goto LAB_000f23ab;\n      }\nLAB_000f22cf:\n      puVar3 = *(undefined4 **)param_1[3];\n      param_1[3] = puVar3;\n      goto joined_r0x000f22ac;\n    }" (if "if") (parenthesized_expression "(*(char *)((int)param_1 + 0x61) == '\0')" (( "(") (binary_expression "*(char *)((int)param_1 + 0x61) == '\0'" (pointer_expression "*(char *)((int)param_1 + 0x61)" (* "*") (cast_expression "(char *)((int)param_1 + 0x61)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)param_1 + 0x61)" (( "(") (binary_expression "(int)param_1 + 0x61" (cast_expression "(int)param_1" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_1")) (+ "+") (number_literal "0x61")) () ")")))) (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n      pcVar4 = *(code **)(puVar3[2] + 0x28);\n      local_20[0] = 0;\n      if ((pcVar4 != (code *)0x0) && ((*pcVar4)(param_1 + 0xb,local_20), local_20[0] != 0)) {\n        *(undefined1 *)(param_1 + 0x18) = 1;\n        *(undefined1 *)((int)param_1 + 99) = 0;\n        if (param_1[0x35] != 0) {\n          iVar9 = param_7 + 4;\n          if (param_7 == 0) {\n            iVar9 = iVar8;\n          }\n          FUN_000ef5d0(param_1[0x35],iVar9,param_3,param_4,param_5,param_6,\n                       *(int *)(param_1[3] + 8) + 4);\n        }\n        if ((uVar7 < (uint)((int)(param_1[5] - param_1[4]) >> 2)) &&\n           (piVar2 = *(int **)(param_1[4] + iVar6), iVar8 = (**(code **)(*piVar2 + 0x14))(piVar2),\n           iVar8 != 0)) {\n          uVar10 = (**(code **)(**(int **)(param_1[4] + iVar6) + 0x14))\n                             (*(int **)(param_1[4] + iVar6));\n        }\n        else {\n                    \n          uVar10 = FUN_000f1ee0(param_1,uVar7);\n        }\n        goto LAB_000f23ab;\n      }\nLAB_000f22cf:\n      puVar3 = *(undefined4 **)param_1[3];\n      param_1[3] = puVar3;\n      goto joined_r0x000f22ac;\n    }" ({ "{") (expression_statement "pcVar4 = *(code **)(puVar3[2] + 0x28);" (assignment_expression "pcVar4 = *(code **)(puVar3[2] + 0x28)" (identifier "pcVar4") (= "=") (pointer_expression "*(code **)(puVar3[2] + 0x28)" (* "*") (cast_expression "(code **)(puVar3[2] + 0x28)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar3[2] + 0x28)" (( "(") (binary_expression "puVar3[2] + 0x28" (subscript_expression "puVar3[2]" (identifier "puVar3") ([ "[") (number_literal "2") (] "]")) (+ "+") (number_literal "0x28")) () ")"))))) (; ";")) (expression_statement "local_20[0] = 0;" (assignment_expression "local_20[0] = 0" (subscript_expression "local_20[0]" (identifier "local_20") ([ "[") (number_literal "0") (] "]")) (= "=") (number_literal "0")) (; ";")) (if_statement "if ((pcVar4 != (code *)0x0) && ((*pcVar4)(param_1 + 0xb,local_20), local_20[0] != 0)) {\n        *(undefined1 *)(param_1 + 0x18) = 1;\n        *(undefined1 *)((int)param_1 + 99) = 0;\n        if (param_1[0x35] != 0) {\n          iVar9 = param_7 + 4;\n          if (param_7 == 0) {\n            iVar9 = iVar8;\n          }\n          FUN_000ef5d0(param_1[0x35],iVar9,param_3,param_4,param_5,param_6,\n                       *(int *)(param_1[3] + 8) + 4);\n        }\n        if ((uVar7 < (uint)((int)(param_1[5] - param_1[4]) >> 2)) &&\n           (piVar2 = *(int **)(param_1[4] + iVar6), iVar8 = (**(code **)(*piVar2 + 0x14))(piVar2),\n           iVar8 != 0)) {\n          uVar10 = (**(code **)(**(int **)(param_1[4] + iVar6) + 0x14))\n                             (*(int **)(param_1[4] + iVar6));\n        }\n        else {\n                    \n          uVar10 = FUN_000f1ee0(param_1,uVar7);\n        }\n        goto LAB_000f23ab;\n      }" (if "if") (parenthesized_expression "((pcVar4 != (code *)0x0) && ((*pcVar4)(param_1 + 0xb,local_20), local_20[0] != 0))" (( "(") (binary_expression "(pcVar4 != (code *)0x0) && ((*pcVar4)(param_1 + 0xb,local_20), local_20[0] != 0)" (parenthesized_expression "(pcVar4 != (code *)0x0)" (( "(") (binary_expression "pcVar4 != (code *)0x0" (identifier "pcVar4") (!= "!=") (cast_expression "(code *)0x0" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (&& "&&") (parenthesized_expression "((*pcVar4)(param_1 + 0xb,local_20), local_20[0] != 0)" (( "(") (comma_expression "(*pcVar4)(param_1 + 0xb,local_20), local_20[0] != 0" (call_expression "(*pcVar4)(param_1 + 0xb,local_20)" (parenthesized_expression "(*pcVar4)" (( "(") (pointer_expression "*pcVar4" (* "*") (identifier "pcVar4")) () ")")) (argument_list "(param_1 + 0xb,local_20)" (( "(") (binary_expression "param_1 + 0xb" (identifier "param_1") (+ "+") (number_literal "0xb")) (, ",") (identifier "local_20") () ")"))) (, ",") (binary_expression "local_20[0] != 0" (subscript_expression "local_20[0]" (identifier "local_20") ([ "[") (number_literal "0") (] "]")) (!= "!=") (number_literal "0"))) () ")"))) () ")")) (compound_statement "{\n        *(undefined1 *)(param_1 + 0x18) = 1;\n        *(undefined1 *)((int)param_1 + 99) = 0;\n        if (param_1[0x35] != 0) {\n          iVar9 = param_7 + 4;\n          if (param_7 == 0) {\n            iVar9 = iVar8;\n          }\n          FUN_000ef5d0(param_1[0x35],iVar9,param_3,param_4,param_5,param_6,\n                       *(int *)(param_1[3] + 8) + 4);\n        }\n        if ((uVar7 < (uint)((int)(param_1[5] - param_1[4]) >> 2)) &&\n           (piVar2 = *(int **)(param_1[4] + iVar6), iVar8 = (**(code **)(*piVar2 + 0x14))(piVar2),\n           iVar8 != 0)) {\n          uVar10 = (**(code **)(**(int **)(param_1[4] + iVar6) + 0x14))\n                             (*(int **)(param_1[4] + iVar6));\n        }\n        else {\n                    \n          uVar10 = FUN_000f1ee0(param_1,uVar7);\n        }\n        goto LAB_000f23ab;\n      }" ({ "{") (expression_statement "*(undefined1 *)(param_1 + 0x18) = 1;" (assignment_expression "*(undefined1 *)(param_1 + 0x18) = 1" (pointer_expression "*(undefined1 *)(param_1 + 0x18)" (* "*") (cast_expression "(undefined1 *)(param_1 + 0x18)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x18)" (( "(") (binary_expression "param_1 + 0x18" (identifier "param_1") (+ "+") (number_literal "0x18")) () ")")))) (= "=") (number_literal "1")) (; ";")) (expression_statement "*(undefined1 *)((int)param_1 + 99) = 0;" (assignment_expression "*(undefined1 *)((int)param_1 + 99) = 0" (pointer_expression "*(undefined1 *)((int)param_1 + 99)" (* "*") (cast_expression "(undefined1 *)((int)param_1 + 99)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)param_1 + 99)" (( "(") (binary_expression "(int)param_1 + 99" (cast_expression "(int)param_1" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_1")) (+ "+") (number_literal "99")) () ")")))) (= "=") (number_literal "0")) (; ";")) (if_statement "if (param_1[0x35] != 0) {\n          iVar9 = param_7 + 4;\n          if (param_7 == 0) {\n            iVar9 = iVar8;\n          }\n          FUN_000ef5d0(param_1[0x35],iVar9,param_3,param_4,param_5,param_6,\n                       *(int *)(param_1[3] + 8) + 4);\n        }" (if "if") (parenthesized_expression "(param_1[0x35] != 0)" (( "(") (binary_expression "param_1[0x35] != 0" (subscript_expression "param_1[0x35]" (identifier "param_1") ([ "[") (number_literal "0x35") (] "]")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n          iVar9 = param_7 + 4;\n          if (param_7 == 0) {\n            iVar9 = iVar8;\n          }\n          FUN_000ef5d0(param_1[0x35],iVar9,param_3,param_4,param_5,param_6,\n                       *(int *)(param_1[3] + 8) + 4);\n        }" ({ "{") (expression_statement "iVar9 = param_7 + 4;" (assignment_expression "iVar9 = param_7 + 4" (identifier "iVar9") (= "=") (binary_expression "param_7 + 4" (identifier "param_7") (+ "+") (number_literal "4"))) (; ";")) (if_statement "if (param_7 == 0) {\n            iVar9 = iVar8;\n          }" (if "if") (parenthesized_expression "(param_7 == 0)" (( "(") (binary_expression "param_7 == 0" (identifier "param_7") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n            iVar9 = iVar8;\n          }" ({ "{") (expression_statement "iVar9 = iVar8;" (assignment_expression "iVar9 = iVar8" (identifier "iVar9") (= "=") (identifier "iVar8")) (; ";")) (} "}"))) (expression_statement "FUN_000ef5d0(param_1[0x35],iVar9,param_3,param_4,param_5,param_6,\n                       *(int *)(param_1[3] + 8) + 4);" (call_expression "FUN_000ef5d0(param_1[0x35],iVar9,param_3,param_4,param_5,param_6,\n                       *(int *)(param_1[3] + 8) + 4)" (identifier "FUN_000ef5d0") (argument_list "(param_1[0x35],iVar9,param_3,param_4,param_5,param_6,\n                       *(int *)(param_1[3] + 8) + 4)" (( "(") (subscript_expression "param_1[0x35]" (identifier "param_1") ([ "[") (number_literal "0x35") (] "]")) (, ",") (identifier "iVar9") (, ",") (identifier "param_3") (, ",") (identifier "param_4") (, ",") (identifier "param_5") (, ",") (identifier "param_6") (, ",") (binary_expression "*(int *)(param_1[3] + 8) + 4" (pointer_expression "*(int *)(param_1[3] + 8)" (* "*") (cast_expression "(int *)(param_1[3] + 8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1[3] + 8)" (( "(") (binary_expression "param_1[3] + 8" (subscript_expression "param_1[3]" (identifier "param_1") ([ "[") (number_literal "3") (] "]")) (+ "+") (number_literal "8")) () ")")))) (+ "+") (number_literal "4")) () ")"))) (; ";")) (} "}"))) (if_statement "if ((uVar7 < (uint)((int)(param_1[5] - param_1[4]) >> 2)) &&\n           (piVar2 = *(int **)(param_1[4] + iVar6), iVar8 = (**(code **)(*piVar2 + 0x14))(piVar2),\n           iVar8 != 0)) {\n          uVar10 = (**(code **)(**(int **)(param_1[4] + iVar6) + 0x14))\n                             (*(int **)(param_1[4] + iVar6));\n        }\n        else {\n                    \n          uVar10 = FUN_000f1ee0(param_1,uVar7);\n        }" (if "if") (parenthesized_expression "((uVar7 < (uint)((int)(param_1[5] - param_1[4]) >> 2)) &&\n           (piVar2 = *(int **)(param_1[4] + iVar6), iVar8 = (**(code **)(*piVar2 + 0x14))(piVar2),\n           iVar8 != 0))" (( "(") (binary_expression "(uVar7 < (uint)((int)(param_1[5] - param_1[4]) >> 2)) &&\n           (piVar2 = *(int **)(param_1[4] + iVar6), iVar8 = (**(code **)(*piVar2 + 0x14))(piVar2),\n           iVar8 != 0)" (parenthesized_expression "(uVar7 < (uint)((int)(param_1[5] - param_1[4]) >> 2))" (( "(") (binary_expression "uVar7 < (uint)((int)(param_1[5] - param_1[4]) >> 2)" (identifier "uVar7") (< "<") (call_expression "(uint)((int)(param_1[5] - param_1[4]) >> 2)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "((int)(param_1[5] - param_1[4]) >> 2)" (( "(") (binary_expression "(int)(param_1[5] - param_1[4]) >> 2" (cast_expression "(int)(param_1[5] - param_1[4])" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (parenthesized_expression "(param_1[5] - param_1[4])" (( "(") (binary_expression "param_1[5] - param_1[4]" (subscript_expression "param_1[5]" (identifier "param_1") ([ "[") (number_literal "5") (] "]")) (- "-") (subscript_expression "param_1[4]" (identifier "param_1") ([ "[") (number_literal "4") (] "]"))) () ")"))) (>> ">>") (number_literal "2")) () ")")))) () ")")) (&& "&&") (parenthesized_expression "(piVar2 = *(int **)(param_1[4] + iVar6), iVar8 = (**(code **)(*piVar2 + 0x14))(piVar2),\n           iVar8 != 0)" (( "(") (comma_expression "piVar2 = *(int **)(param_1[4] + iVar6), iVar8 = (**(code **)(*piVar2 + 0x14))(piVar2),\n           iVar8 != 0" (assignment_expression "piVar2 = *(int **)(param_1[4] + iVar6)" (identifier "piVar2") (= "=") (pointer_expression "*(int **)(param_1[4] + iVar6)" (* "*") (cast_expression "(int **)(param_1[4] + iVar6)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1[4] + iVar6)" (( "(") (binary_expression "param_1[4] + iVar6" (subscript_expression "param_1[4]" (identifier "param_1") ([ "[") (number_literal "4") (] "]")) (+ "+") (identifier "iVar6")) () ")"))))) (, ",") (comma_expression "iVar8 = (**(code **)(*piVar2 + 0x14))(piVar2),\n           iVar8 != 0" (assignment_expression "iVar8 = (**(code **)(*piVar2 + 0x14))(piVar2)" (identifier "iVar8") (= "=") (call_expression "(**(code **)(*piVar2 + 0x14))(piVar2)" (parenthesized_expression "(**(code **)(*piVar2 + 0x14))" (( "(") (pointer_expression "**(code **)(*piVar2 + 0x14)" (* "*") (pointer_expression "*(code **)(*piVar2 + 0x14)" (* "*") (cast_expression "(code **)(*piVar2 + 0x14)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*piVar2 + 0x14)" (( "(") (binary_expression "*piVar2 + 0x14" (pointer_expression "*piVar2" (* "*") (identifier "piVar2")) (+ "+") (number_literal "0x14")) () ")"))))) () ")")) (argument_list "(piVar2)" (( "(") (identifier "piVar2") () ")")))) (, ",") (binary_expression "iVar8 != 0" (identifier "iVar8") (!= "!=") (number_literal "0")))) () ")"))) () ")")) (compound_statement "{\n          uVar10 = (**(code **)(**(int **)(param_1[4] + iVar6) + 0x14))\n                             (*(int **)(param_1[4] + iVar6));\n        }" ({ "{") (expression_statement "uVar10 = (**(code **)(**(int **)(param_1[4] + iVar6) + 0x14))\n                             (*(int **)(param_1[4] + iVar6));" (assignment_expression "uVar10 = (**(code **)(**(int **)(param_1[4] + iVar6) + 0x14))\n                             (*(int **)(param_1[4] + iVar6))" (identifier "uVar10") (= "=") (call_expression "(**(code **)(**(int **)(param_1[4] + iVar6) + 0x14))\n                             (*(int **)(param_1[4] + iVar6))" (parenthesized_expression "(**(code **)(**(int **)(param_1[4] + iVar6) + 0x14))" (( "(") (pointer_expression "**(code **)(**(int **)(param_1[4] + iVar6) + 0x14)" (* "*") (pointer_expression "*(code **)(**(int **)(param_1[4] + iVar6) + 0x14)" (* "*") (cast_expression "(code **)(**(int **)(param_1[4] + iVar6) + 0x14)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(**(int **)(param_1[4] + iVar6) + 0x14)" (( "(") (binary_expression "**(int **)(param_1[4] + iVar6) + 0x14" (pointer_expression "**(int **)(param_1[4] + iVar6)" (* "*") (pointer_expression "*(int **)(param_1[4] + iVar6)" (* "*") (cast_expression "(int **)(param_1[4] + iVar6)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1[4] + iVar6)" (( "(") (binary_expression "param_1[4] + iVar6" (subscript_expression "param_1[4]" (identifier "param_1") ([ "[") (number_literal "4") (] "]")) (+ "+") (identifier "iVar6")) () ")"))))) (+ "+") (number_literal "0x14")) () ")"))))) () ")")) (argument_list "(*(int **)(param_1[4] + iVar6))" (( "(") (pointer_expression "*(int **)(param_1[4] + iVar6)" (* "*") (cast_expression "(int **)(param_1[4] + iVar6)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1[4] + iVar6)" (( "(") (binary_expression "param_1[4] + iVar6" (subscript_expression "param_1[4]" (identifier "param_1") ([ "[") (number_literal "4") (] "]")) (+ "+") (identifier "iVar6")) () ")")))) () ")")))) (; ";")) (} "}")) (else_clause "else {\n                    \n          uVar10 = FUN_000f1ee0(param_1,uVar7);\n        }" (else "else") (compound_statement "{\n                    \n          uVar10 = FUN_000f1ee0(param_1,uVar7);\n        }" ({ "{") (expression_statement "uVar10 = FUN_000f1ee0(param_1,uVar7);" (assignment_expression "uVar10 = FUN_000f1ee0(param_1,uVar7)" (identifier "uVar10") (= "=") (call_expression "FUN_000f1ee0(param_1,uVar7)" (identifier "FUN_000f1ee0") (argument_list "(param_1,uVar7)" (( "(") (identifier "param_1") (, ",") (identifier "uVar7") () ")")))) (; ";")) (} "}")))) (goto_statement "goto LAB_000f23ab;" (goto "goto") (statement_identifier "LAB_000f23ab") (; ";")) (} "}"))) (labeled_statement "LAB_000f22cf:\n      puVar3 = *(undefined4 **)param_1[3];" (statement_identifier "LAB_000f22cf") (: ":") (expression_statement "puVar3 = *(undefined4 **)param_1[3];" (assignment_expression "puVar3 = *(undefined4 **)param_1[3]" (identifier "puVar3") (= "=") (pointer_expression "*(undefined4 **)param_1[3]" (* "*") (cast_expression "(undefined4 **)param_1[3]" (( "(") (type_descriptor "undefined4 **" (type_identifier "undefined4") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (subscript_expression "param_1[3]" (identifier "param_1") ([ "[") (number_literal "3") (] "]"))))) (; ";"))) (expression_statement "param_1[3] = puVar3;" (assignment_expression "param_1[3] = puVar3" (subscript_expression "param_1[3]" (identifier "param_1") ([ "[") (number_literal "3") (] "]")) (= "=") (identifier "puVar3")) (; ";")) (goto_statement "goto joined_r0x000f22ac;" (goto "goto") (statement_identifier "joined_r0x000f22ac") (; ";")) (} "}"))) (expression_statement "pcVar4 = *(code **)(puVar3[2] + 0x34);" (assignment_expression "pcVar4 = *(code **)(puVar3[2] + 0x34)" (identifier "pcVar4") (= "=") (pointer_expression "*(code **)(puVar3[2] + 0x34)" (* "*") (cast_expression "(code **)(puVar3[2] + 0x34)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar3[2] + 0x34)" (( "(") (binary_expression "puVar3[2] + 0x34" (subscript_expression "puVar3[2]" (identifier "puVar3") ([ "[") (number_literal "2") (] "]")) (+ "+") (number_literal "0x34")) () ")"))))) (; ";")) (if_statement "if (pcVar4 == (code *)0x0) goto LAB_000f22cf;" (if "if") (parenthesized_expression "(pcVar4 == (code *)0x0)" (( "(") (binary_expression "pcVar4 == (code *)0x0" (identifier "pcVar4") (== "==") (cast_expression "(code *)0x0" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (goto_statement "goto LAB_000f22cf;" (goto "goto") (statement_identifier "LAB_000f22cf") (; ";"))) (expression_statement "(*pcVar4)(param_1 + 0xb);" (call_expression "(*pcVar4)(param_1 + 0xb)" (parenthesized_expression "(*pcVar4)" (( "(") (pointer_expression "*pcVar4" (* "*") (identifier "pcVar4")) () ")")) (argument_list "(param_1 + 0xb)" (( "(") (binary_expression "param_1 + 0xb" (identifier "param_1") (+ "+") (number_literal "0xb")) () ")"))) (; ";")) (expression_statement "puVar3 = *(undefined4 **)param_1[3];" (assignment_expression "puVar3 = *(undefined4 **)param_1[3]" (identifier "puVar3") (= "=") (pointer_expression "*(undefined4 **)param_1[3]" (* "*") (cast_expression "(undefined4 **)param_1[3]" (( "(") (type_descriptor "undefined4 **" (type_identifier "undefined4") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (subscript_expression "param_1[3]" (identifier "param_1") ([ "[") (number_literal "3") (] "]"))))) (; ";")) (expression_statement "param_1[3] = puVar3;" (assignment_expression "param_1[3] = puVar3" (subscript_expression "param_1[3]" (identifier "param_1") ([ "[") (number_literal "3") (] "]")) (= "=") (identifier "puVar3")) (; ";")) (} "}")) (while "while") (parenthesized_expression "( true )" (( "(") (true "true") () ")")) (; ";"))) (} "}")))

/* WARNING: Function: __x86.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */
/* WARNING: Type propagation algorithm not settling */
/* WARNING: Enum "DT": Some values do not have unique names */
/* DWARF original prototype: Pluginobj * claim_file(Plugin_manager * this, Input_file * input_file,
   off_t offset, off_t filesize, Object * elf_object) */

type_9 * __thiscall
var_3::type_5::claim_file
          (type_5 *var_11,Input_file *input_file,off_t offset,off_t filesize,
          type_11 *var_8)

{
  type_1 *this_00;
  type_2 *pLVar1;
  type_3 *pLVar2;
  type_4 __position;
  type_5 *var_10;
  size_t var_13;
  type_6 *var_14;
  type_7 ppOVar6;
  int *piVar7;
  bool bVar8;
  int var_6;
  void *var_17;
  int var_18;
  type_8 *obj_name;
  type_9 *pPVar11;
  int var_15;
  type_10 uStack_14;
  
  uStack_14 = 0xf21db;
  bVar8 = Initialize_lock::var_1(&var_11->initialize_lock_);
  if (!bVar8) {
                    /* WARNING: Subroutine does not return */
    var_2("../../gold/plugin.cc",0x2da,"claim_file");
  }
  pLVar1 = var_11->lock_;
  pLVar2 = pLVar1->lock_;
  (*pLVar2->_vptr_Lock_impl[2])(pLVar2);
  var_6 = (int)(var_11->objects_).super__Vector_base<var_3::type_11*,var_4::allocator<var_3::type_11*>var_5>.
               _M_impl._M_finish -
          (int)(var_11->objects_).super__Vector_base<var_3::type_11*,var_4::allocator<var_3::type_11*>var_5>.
               _M_impl._M_start;
  var_11->input_file_ = input_file;
  var_17 = (void *)(var_6 >> 2);
  this_00 = &input_file->file_;
  (var_11->plugin_input_file_).name = (input_file->file_).name_._M_dataplus._M_p;
                    /* try { // try from 000f2254 to 000f23a5 has its CatchHandler @ 000f2415 */
  File_read::var_7(this_00);
  (var_11->plugin_input_file_).fd = (input_file->file_).descriptor_;
  (var_11->plugin_input_file_).offset = offset;
  (var_11->plugin_input_file_).filesize = filesize;
  (var_11->plugin_input_file_).var_17 = var_17;
  if (var_8 != (type_11 *)0x0) {
    __position._M_current =
         (var_11->objects_).super__Vector_base<var_3::type_11*,var_4::allocator<var_3::type_11*>var_5>._M_impl.
         _M_finish;
    if (__position._M_current ==
        (var_11->objects_).super__Vector_base<var_3::type_11*,var_4::allocator<var_3::type_11*>var_5>._M_impl.
        _M_end_of_storage) {
      std::vector<var_3::type_11*,var_4::allocator<var_3::type_11*>var_5>::
      _M_realloc_insert<var_3::type_11*var_9&>(&var_11->objects_,__position,&var_8);
    }
    else {
      *__position._M_current = var_8;
      (var_11->objects_).super__Vector_base<var_3::type_11*,var_4::allocator<var_3::type_11*>var_5>._M_impl.
      _M_finish = __position._M_current + 1;
    }
  }
  var_10 = (type_5 *)
           (var_11->plugins_).super__List_base<var_3::Plugin*,var_4::allocator<var_3::Plugin*>var_5>._M_impl.
           _M_node.super__List_node_base._M_next;
  var_11->in_claim_file_handler_ = true;
  (var_11->current_)._M_node = (type_12 *)var_10;
joined_r0x000f22ac:
  do {
    if (var_10 == var_11) {
      var_11->in_claim_file_handler_ = false;
      if (var_11->recorder_ != (type_13 *)0x0) {
        Plugin_recorder::var_12(var_11->recorder_,&this_00->name_,offset,filesize);
      }
      pPVar11 = (type_9 *)0x0;
LAB_000f23ab:
      pLVar2 = pLVar1->lock_;
      (*pLVar2->_vptr_Lock_impl[3])(pLVar2);
      return pPVar11;
    }
    var_13 = (var_10->plugins_).super__List_base<var_3::Plugin*,var_4::allocator<var_3::Plugin*>var_5>.
            _M_impl._M_node._M_size;
    if (var_11->in_replacement_phase_ == false) {
      var_14 = *(type_6 **)(var_13 + 0x28);
      var_15 = 0;
      if ((var_14 != (type_6 *)0x0) && ((*var_14)(&var_11->plugin_input_file_,&var_15), var_15 != 0))
      {
        var_11->any_claimed_ = true;
        var_11->in_claim_file_handler_ = false;
        if (var_11->recorder_ != (type_13 *)0x0) {
          obj_name = &var_8->name_;
          if (var_8 == (type_11 *)0x0) {
            obj_name = &this_00->name_;
          }
          Plugin_recorder::var_16
                    (var_11->recorder_,obj_name,offset,filesize,
                     (type_8 *)&((var_11->current_)._M_node[1]._M_next)->_M_prev);
        }
        ppOVar6 = (var_11->objects_).super__Vector_base<var_3::type_11*,var_4::allocator<var_3::type_11*>var_5>
                  ._M_impl._M_start;
        if ((var_17 < (void *)((int)(var_11->objects_).
                                    super__Vector_base<var_3::type_11*,var_4::allocator<var_3::type_11*>var_5>
                                    ._M_impl._M_finish - (int)ppOVar6 >> 2)) &&
           (piVar7 = *(int **)((int)ppOVar6 + var_6), var_18 = (**(type_6 **)(*piVar7 + 0x14))(piVar7)
           , var_18 != 0)) {
          piVar7 = *(int **)((int)(var_11->objects_).
                                  super__Vector_base<var_3::type_11*,var_4::allocator<var_3::type_11*>var_5>.
                                  _M_impl._M_start + var_6);
          pPVar11 = (type_9 *)(**(type_6 **)(*piVar7 + 0x14))(piVar7);
        }
        else {
                    /* try { // try from 000f23d7 to 000f23f0 has its CatchHandler @ 000f2415 */
          pPVar11 = var_19(var_11,(type_14)var_17);
        }
        goto LAB_000f23ab;
      }
LAB_000f22cf:
      var_10 = (type_5 *)((var_11->current_)._M_node)->_M_next;
      (var_11->current_)._M_node = (type_12 *)var_10;
      goto joined_r0x000f22ac;
    }
    var_14 = *(type_6 **)(var_13 + 0x34);
    if (var_14 == (type_6 *)0x0) goto LAB_000f22cf;
    (*var_14)(&var_11->plugin_input_file_);
    var_10 = (type_5 *)((var_11->current_)._M_node)->_M_next;
    (var_11->current_)._M_node = (type_12 *)var_10;
  } while( true );
}


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

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

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

{
  undefined4 *puVar1;
  int *piVar2;
  undefined4 *puVar3;
  code *pcVar4;
  char cVar5;
  int iVar6;
  uint uVar7;
  int iVar8;
  int iVar9;
  undefined4 extraout_EDX;
  undefined4 uVar10;
  int local_20 [3];
  undefined4 uStack_14;
  
  uStack_14 = 0xf21db;
  cVar5 = FUN_000622e0(param_1 + 0x29);
  if (cVar5 == '\0') {
                    /* WARNING: Subroutine does not return */
    FUN_0005f0b0("../../gold/plugin.cc",0x2da,"claim_file",extraout_EDX);
  }
  puVar1 = (undefined4 *)param_1[0x28];
  piVar2 = (int *)*puVar1;
  (**(code **)(*piVar2 + 8))(piVar2);
  iVar6 = param_1[5] - param_1[4];
  param_1[10] = param_2;
  uVar7 = iVar6 >> 2;
  iVar8 = param_2 + 0x1c;
  param_1[0xb] = *(undefined4 *)(param_2 + 0x1c);
                    /* try { // try from 000f2254 to 000f23a5 has its CatchHandler @ 000f2415 */
  FUN_0005bce0(iVar8);
  param_1[0xc] = *(undefined4 *)(param_2 + 0x34);
  param_1[0xe] = param_4;
  param_1[0xd] = param_3;
  param_1[0x10] = param_6;
  param_1[0xf] = param_5;
  param_1[0x11] = uVar7;
  if (param_7 != 0) {
    piVar2 = (int *)param_1[5];
    if (piVar2 == (int *)param_1[6]) {
      FUN_000f4070(param_1 + 4,piVar2,&param_7);
    }
    else {
      *piVar2 = param_7;
      param_1[5] = piVar2 + 1;
    }
  }
  puVar3 = (undefined4 *)*param_1;
  *(undefined1 *)((int)param_1 + 99) = 1;
  param_1[3] = puVar3;
joined_r0x000f22ac:
  do {
    if (puVar3 == param_1) {
      *(undefined1 *)((int)param_1 + 99) = 0;
      if (param_1[0x35] != 0) {
        FUN_000ef670(param_1[0x35],iVar8,param_3,param_4,param_5,param_6);
      }
      uVar10 = 0;
LAB_000f23ab:
      piVar2 = (int *)*puVar1;
      (**(code **)(*piVar2 + 0xc))(piVar2);
      return uVar10;
    }
    if (*(char *)((int)param_1 + 0x61) == '\0') {
      pcVar4 = *(code **)(puVar3[2] + 0x28);
      local_20[0] = 0;
      if ((pcVar4 != (code *)0x0) && ((*pcVar4)(param_1 + 0xb,local_20), local_20[0] != 0)) {
        *(undefined1 *)(param_1 + 0x18) = 1;
        *(undefined1 *)((int)param_1 + 99) = 0;
        if (param_1[0x35] != 0) {
          iVar9 = param_7 + 4;
          if (param_7 == 0) {
            iVar9 = iVar8;
          }
          FUN_000ef5d0(param_1[0x35],iVar9,param_3,param_4,param_5,param_6,
                       *(int *)(param_1[3] + 8) + 4);
        }
        if ((uVar7 < (uint)((int)(param_1[5] - param_1[4]) >> 2)) &&
           (piVar2 = *(int **)(param_1[4] + iVar6), iVar8 = (**(code **)(*piVar2 + 0x14))(piVar2),
           iVar8 != 0)) {
          uVar10 = (**(code **)(**(int **)(param_1[4] + iVar6) + 0x14))
                             (*(int **)(param_1[4] + iVar6));
        }
        else {
                    /* try { // try from 000f23d7 to 000f23f0 has its CatchHandler @ 000f2415 */
          uVar10 = FUN_000f1ee0(param_1,uVar7);
        }
        goto LAB_000f23ab;
      }
LAB_000f22cf:
      puVar3 = *(undefined4 **)param_1[3];
      param_1[3] = puVar3;
      goto joined_r0x000f22ac;
    }
    pcVar4 = *(code **)(puVar3[2] + 0x34);
    if (pcVar4 == (code *)0x0) goto LAB_000f22cf;
    (*pcVar4)(param_1 + 0xb);
    puVar3 = *(undefined4 **)param_1[3];
    param_1[3] = puVar3;
  } while( true );
}

