
/* WARNING: Function: __x86.get_pc_thunk.si replaced with injection: get_pc_thunk_si */
/* WARNING: Enum "DT": Some values do not have unique names */
/* DWARF original prototype: Object * get_elf_object_for_member(Archive * this, off_t off, bool *
   punconfigured) */

Object * __thiscall
gold::Archive::get_elf_object_for_member(Archive *this,off_t off,bool *punconfigured)

{
  Plugin_manager *this_00;
  pointer pcVar1;
  Input_file *name;
  Input_file *input_file_00;
  undefined4 uVar2;
  bool bVar3;
  Pluginobj *pPVar4;
  int *piVar5;
  char *format;
  Pluginobj *elf_object;
  bool *punconfigured_00;
  Input_file *input_file;
  uchar *ehdr;
  int read_size;
  off_t memoff;
  off_t memsize;
  string member_name;
  basic_string<char,_std::char_traits<char>,_std::allocator<char>_> local_7c;
  int *local_64;
  int local_60;
  int local_5c;
  int local_58;
  int local_54;
  int local_50;
  int *local_4c;
  int local_48;
  int local_44;
  int local_40;
  int local_3c;
  int local_38;
  int *local_34;
  int local_30;
  int local_2c;
  int local_28;
  int local_24;
  int local_20;
  
  if (punconfigured != (bool *)0x0) {
    *punconfigured = false;
  }
  member_name._M_string_length = 0;
  member_name.field_2._M_local_buf[0] = '\0';
  member_name._M_dataplus._M_p = (pointer)&member_name.field_2;
                    /* try { // try from 00196297 to 00196404 has its CatchHandler @ 001966ac */
  bVar3 = get_file_and_offset(this,off,&input_file,&memoff,&memsize,&member_name);
  if (bVar3) {
    bVar3 = is_elf_object(input_file,CONCAT44(memoff._4_4_,(Input_file *)memoff),&ehdr,&read_size);
    uVar2 = memoff._4_4_;
    input_file_00 = (Input_file *)memoff;
    name = input_file;
    elf_object = (Pluginobj *)0x0;
    if (bVar3) {
      pcVar1 = (this->input_file_->file_).name_._M_dataplus._M_p;
      punconfigured_00 = (bool *)0x0;
      local_7c._M_dataplus._M_p = (pointer)&local_7c.field_2;
      std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>::
      _M_construct<char*>(&local_7c,pcVar1,
                          pcVar1 + (this->input_file_->file_).name_._M_string_length);
      if (local_7c._M_string_length == 0x7fffffff) {
                    /* WARNING: Subroutine does not return */
                    /* try { // try from 00196681 to 00196685 has its CatchHandler @ 001966b3 */
        std::__throw_length_error("basic_string::append");
      }
                    /* try { // try from 00196424 to 00196428 has its CatchHandler @ 001966b3 */
      piVar5 = (int *)std::string::_M_append((string *)&local_7c,"(",1);
      if ((int *)*piVar5 == piVar5 + 2) {
        local_5c = piVar5[2];
        local_58 = piVar5[3];
        local_54 = piVar5[4];
        local_50 = piVar5[5];
        local_64 = &local_5c;
      }
      else {
        local_5c = piVar5[2];
        local_64 = (int *)*piVar5;
      }
      local_60 = piVar5[1];
      *(undefined1 *)(piVar5 + 2) = 0;
      *piVar5 = (int)(piVar5 + 2);
      piVar5[1] = 0;
                    /* try { // try from 00196476 to 0019647a has its CatchHandler @ 001966a5 */
      piVar5 = (int *)std::string::_M_append
                                ((string *)&local_64,member_name._M_dataplus._M_p,
                                 member_name._M_string_length);
      if ((int *)*piVar5 == piVar5 + 2) {
        local_44 = piVar5[2];
        local_40 = piVar5[3];
        local_3c = piVar5[4];
        local_38 = piVar5[5];
        local_4c = &local_44;
      }
      else {
        local_44 = piVar5[2];
        local_4c = (int *)*piVar5;
      }
      local_48 = piVar5[1];
      *(undefined1 *)(piVar5 + 2) = 0;
      *piVar5 = (int)(piVar5 + 2);
      piVar5[1] = 0;
      if (local_48 == 0x7fffffff) {
                    /* WARNING: Subroutine does not return */
                    /* try { // try from 00196692 to 00196696 has its CatchHandler @ 00196697 */
        std::__throw_length_error("basic_string::append");
      }
                    /* try { // try from 001964d2 to 001964d6 has its CatchHandler @ 00196697 */
      piVar5 = (int *)std::string::_M_append((string *)&local_4c,")",1);
      if ((int *)*piVar5 == piVar5 + 2) {
        local_2c = piVar5[2];
        local_28 = piVar5[3];
        local_24 = piVar5[4];
        local_20 = piVar5[5];
        local_34 = &local_2c;
      }
      else {
        local_2c = piVar5[2];
        local_34 = (int *)*piVar5;
      }
      local_30 = piVar5[1];
      *(undefined1 *)(piVar5 + 2) = 0;
      *piVar5 = (int)(piVar5 + 2);
      piVar5[1] = 0;
                    /* try { // try from 00196534 to 00196538 has its CatchHandler @ 0019669e */
      elf_object = (Pluginobj *)
                   make_elf_object((gold *)&local_34,(string *)name,input_file_00,
                                   CONCAT44(ehdr,uVar2),(uchar *)read_size,
                                   (section_offset_type)punconfigured,punconfigured_00);
      if (local_34 != &local_2c) {
        operator_delete(local_34);
      }
      if (local_4c != &local_44) {
        operator_delete(local_4c);
      }
      if (local_64 != &local_5c) {
        operator_delete(local_64);
      }
      if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9
           *)local_7c._M_dataplus._M_p != &local_7c.field_2) {
        operator_delete(local_7c._M_dataplus._M_p);
      }
    }
    if (parameters->options_ == (General_options *)0x0) {
                    /* WARNING: Subroutine does not return */
      do_gold_unreachable("../../gold/parameters.h",0x5c,"options");
    }
    this_00 = parameters->options_->plugins_;
    if ((this_00 != (Plugin_manager *)0x0) &&
       (pPVar4 = Plugin_manager::claim_file
                           (this_00,input_file,CONCAT44(memoff._4_4_,(Input_file *)memoff),
                            CONCAT44(memsize._4_4_,(undefined4)memsize),&elf_object->super_Object),
       pPVar4 != (Pluginobj *)0x0)) {
      if (elf_object != (Pluginobj *)0x0) {
        (*(elf_object->super_Object)._vptr_Object[1])(elf_object);
      }
      goto LAB_0019637f;
    }
    if (bVar3) {
      pPVar4 = elf_object;
      if (elf_object != (Pluginobj *)0x0) {
        (elf_object->super_Object).field_0x2c =
             (elf_object->super_Object).field_0x2c & 0xef | (byte)((this->no_export_ & 1) << 4);
      }
      goto LAB_0019637f;
    }
    pcVar1 = (this->name_)._M_dataplus._M_p;
    format = (char *)gettext("%s: member at %zu is not an ELF object");
                    /* try { // try from 001965d2 to 00196674 has its CatchHandler @ 001966ac */
    gold_error(format,pcVar1,(undefined4)off);
  }
  pPVar4 = (Pluginobj *)0x0;
LAB_0019637f:
  if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9
       *)member_name._M_dataplus._M_p != &member_name.field_2) {
    operator_delete(member_name._M_dataplus._M_p);
  }
  return &pPVar4->super_Object;
}



/* WARNING: Function: __i686.get_pc_thunk.si replaced with injection: get_pc_thunk_si */

int * FUN_00196210(int param_1,undefined4 param_2,undefined4 param_3,undefined1 *param_4)

{
  int iVar1;
  char cVar2;
  int *piVar3;
  undefined4 uVar4;
  int *piVar5;
  undefined4 uVar6;
  undefined4 uVar7;
  undefined4 local_b0;
  undefined4 local_ac;
  undefined4 local_a8;
  undefined4 local_a4;
  undefined4 local_a0;
  undefined4 local_9c;
  undefined4 local_98;
  undefined1 *local_94;
  undefined4 local_90;
  undefined1 local_8c [16];
  undefined1 *local_7c;
  int local_78;
  undefined1 local_74 [16];
  int *local_64;
  int local_60;
  int local_5c;
  int local_58;
  int local_54;
  int local_50;
  int *local_4c;
  int local_48;
  int local_44;
  int local_40;
  int local_3c;
  int local_38;
  int *local_34;
  int local_30;
  int local_2c;
  int local_28;
  int local_24;
  int local_20;
  
  if (param_4 != (undefined1 *)0x0) {
    *param_4 = 0;
  }
  local_90 = 0;
  local_8c[0] = 0;
  local_94 = local_8c;
                    /* try { // try from 00196297 to 00196404 has its CatchHandler @ 001966ac */
  cVar2 = FUN_00195b60(param_1,param_2,param_3,&local_b0,&local_a4,&local_9c,&local_94);
  if (cVar2 != '\0') {
    cVar2 = FUN_000b23e0(local_b0,local_a4,local_a0,&local_ac,&local_a8);
    piVar5 = (int *)0x0;
    if (cVar2 != '\0') {
      iVar1 = *(int *)(*(int *)(param_1 + 0x24) + 0x1c);
      uVar6 = local_a4;
      uVar4 = local_a0;
      uVar7 = local_b0;
      local_7c = local_74;
      FUN_000513a0(&local_7c,iVar1,*(int *)(*(int *)(param_1 + 0x24) + 0x20) + iVar1,0,local_a4,
                   local_a0,local_b0,local_ac);
      if (local_78 == 0x7fffffff) {
                    /* WARNING: Subroutine does not return */
                    /* try { // try from 00196681 to 00196685 has its CatchHandler @ 001966b3 */
        FUN_0022c7a0("basic_string::append");
      }
                    /* try { // try from 00196424 to 00196428 has its CatchHandler @ 001966b3 */
      piVar5 = (int *)FUN_001f05c0(&local_7c,"(",1);
      if ((int *)*piVar5 == piVar5 + 2) {
        local_5c = piVar5[2];
        local_58 = piVar5[3];
        local_54 = piVar5[4];
        local_50 = piVar5[5];
        local_64 = &local_5c;
      }
      else {
        local_5c = piVar5[2];
        local_64 = (int *)*piVar5;
      }
      local_60 = piVar5[1];
      *(undefined1 *)(piVar5 + 2) = 0;
      *piVar5 = (int)(piVar5 + 2);
      piVar5[1] = 0;
                    /* try { // try from 00196476 to 0019647a has its CatchHandler @ 001966a5 */
      piVar5 = (int *)FUN_001f05c0(&local_64,local_94,local_90);
      if ((int *)*piVar5 == piVar5 + 2) {
        local_44 = piVar5[2];
        local_40 = piVar5[3];
        local_3c = piVar5[4];
        local_38 = piVar5[5];
        local_4c = &local_44;
      }
      else {
        local_44 = piVar5[2];
        local_4c = (int *)*piVar5;
      }
      local_48 = piVar5[1];
      *(undefined1 *)(piVar5 + 2) = 0;
      *piVar5 = (int)(piVar5 + 2);
      piVar5[1] = 0;
      if (local_48 == 0x7fffffff) {
                    /* WARNING: Subroutine does not return */
                    /* try { // try from 00196692 to 00196696 has its CatchHandler @ 00196697 */
        FUN_0022c7a0("basic_string::append");
      }
                    /* try { // try from 001964d2 to 001964d6 has its CatchHandler @ 00196697 */
      piVar5 = (int *)FUN_001f05c0(&local_4c,&DAT_002a0f9f,1);
      if ((int *)*piVar5 == piVar5 + 2) {
        local_2c = piVar5[2];
        local_28 = piVar5[3];
        local_24 = piVar5[4];
        local_20 = piVar5[5];
        local_34 = &local_2c;
      }
      else {
        local_2c = piVar5[2];
        local_34 = (int *)*piVar5;
      }
      local_30 = piVar5[1];
      *(undefined1 *)(piVar5 + 2) = 0;
      *piVar5 = (int)(piVar5 + 2);
      piVar5[1] = 0;
                    /* try { // try from 00196534 to 00196538 has its CatchHandler @ 0019669e */
      piVar5 = (int *)FUN_000b25f0(&local_34,uVar7,uVar6,uVar4,local_ac,local_a8,param_4);
      if (local_34 != &local_2c) {
        FUN_001e6db0(local_34);
      }
      if (local_4c != &local_44) {
        FUN_001e6db0(local_4c);
      }
      if (local_64 != &local_5c) {
        FUN_001e6db0(local_64);
      }
      if (local_7c != local_74) {
        FUN_001e6db0(local_7c);
      }
    }
    if (*(int *)(DAT_0038f378 + 8) == 0) {
                    /* WARNING: Subroutine does not return */
      FUN_00069d00("../../gold/parameters.h",0x5c,"options",0);
    }
    iVar1 = *(int *)(*(int *)(DAT_0038f378 + 8) + 0x593c);
    if ((iVar1 != 0) &&
       (piVar3 = (int *)FUN_0013d200(iVar1,local_b0,local_a4,local_a0,local_9c,local_98,piVar5),
       piVar3 != (int *)0x0)) {
      if (piVar5 != (int *)0x0) {
        (**(code **)(*piVar5 + 4))(piVar5);
      }
      goto LAB_0019637f;
    }
    if (cVar2 != '\0') {
      piVar3 = piVar5;
      if (piVar5 != (int *)0x0) {
        *(byte *)(piVar5 + 0xb) =
             *(byte *)(piVar5 + 0xb) & 0xef | (byte)((*(byte *)(param_1 + 0xd4) & 1) << 4);
      }
      goto LAB_0019637f;
    }
    uVar6 = *(undefined4 *)(param_1 + 0xc);
    uVar4 = gettext("%s: member at %zu is not an ELF object");
                    /* try { // try from 001965d2 to 00196674 has its CatchHandler @ 001966ac */
    FUN_000654b0(uVar4,uVar6,param_2);
  }
  piVar3 = (int *)0x0;
LAB_0019637f:
  if (local_94 != local_8c) {
    FUN_001e6db0(local_94);
  }
  return piVar3;
}


PUSH EBP
MOV EBP,ESP
PUSH EDI
PUSH ESI
CALL 0x000559ea
ADD ESI,0x1f8de6
PUSH EBX
SUB ESP,0xdc
MOV EDX,dword ptr [EBP + 0x10]
MOV EAX,dword ptr [EBP + 0xc]
MOV dword ptr [EBP + 0xffffff44],EDX
MOV EDX,dword ptr [EBP + 0x14]
MOV dword ptr [EBP + 0xffffff40],EAX
TEST EDX,EDX
JZ 0x00196246
MOV EAX,dword ptr [EBP + 0x14]
MOV byte ptr [EAX],0x0
SUB ESP,0x4
LEA EAX,[EBP + 0xffffff70]
LEA EBX,[EBP + 0xffffff78]
MOV dword ptr [EBP + 0xffffff74],0x0
PUSH EAX
LEA EAX,[EBP + 0xffffff68]
PUSH EAX
LEA EAX,[EBP + 0xffffff60]
PUSH EAX
LEA EAX,[EBP + 0xffffff54]
PUSH EAX
PUSH dword ptr [EBP + 0xffffff44]
PUSH dword ptr [EBP + 0xffffff40]
PUSH dword ptr [EBP + 0x8]
MOV dword ptr [EBP + 0xffffff3c],EBX
MOV dword ptr [EBP + 0xffffff70],EBX
MOV byte ptr [EBP + 0xffffff78],0x0
CALL 0x00195b60
ADD ESP,0x20
TEST AL,AL
JZ 0x001965e0
SUB ESP,0xc
LEA EAX,[EBP + 0xffffff5c]
MOV EBX,ESI
PUSH EAX
LEA EAX,[EBP + 0xffffff58]
PUSH EAX
PUSH dword ptr [EBP + 0xffffff64]
PUSH dword ptr [EBP + 0xffffff60]
PUSH dword ptr [EBP + 0xffffff54]
CALL 0x000b23e0
MOV byte ptr [EBP + 0xffffff3b],AL
ADD ESP,0x20
XOR EDI,EDI
TEST AL,AL
JNZ 0x001963a8
LEA EAX,[ESI + 0x378]
MOV EAX,dword ptr [EAX]
MOV EAX,dword ptr [EAX + 0x8]
TEST EAX,EAX
JZ 0x0019665d
MOV EAX,dword ptr [EAX + 0x593c]
TEST EAX,EAX
JZ 0x00196350
SUB ESP,0x4
MOV EBX,ESI
PUSH EDI
PUSH dword ptr [EBP + 0xffffff6c]
PUSH dword ptr [EBP + 0xffffff68]
PUSH dword ptr [EBP + 0xffffff64]
PUSH dword ptr [EBP + 0xffffff60]
PUSH dword ptr [EBP + 0xffffff54]
PUSH EAX
CALL 0x0013d200
MOV EBX,EAX
ADD ESP,0x20
TEST EAX,EAX
JZ 0x00196350
TEST EDI,EDI
JZ 0x001965f0
SUB ESP,0xc
MOV EAX,dword ptr [EDI]
PUSH EDI
MOV EDI,EBX
CALL dword ptr [EAX + 0x4]
ADD ESP,0x10
JMP 0x0019637f
CMP byte ptr [EBP + 0xffffff3b],0x0
JZ 0x001965b0
TEST EDI,EDI
JZ 0x0019637f
MOV EAX,dword ptr [EBP + 0x8]
MOVZX EAX,byte ptr [EAX + 0xd4]
AND EAX,0x1
SHL EAX,0x4
MOV EDX,EAX
MOVZX EAX,byte ptr [EDI + 0x2c]
AND EAX,0xffffffef
OR EAX,EDX
MOV byte ptr [EDI + 0x2c],AL
MOV EAX,dword ptr [EBP + 0xffffff70]
CMP EAX,dword ptr [EBP + 0xffffff3c]
JZ 0x0019639b
SUB ESP,0xc
MOV EBX,ESI
PUSH EAX
CALL 0x001e6db0
ADD ESP,0x10
LEA ESP,[EBP + -0xc]
MOV EAX,EDI
POP EBX
POP ESI
POP EDI
POP EBP
RET
MOV EAX,dword ptr [EBP + 0xffffff58]
MOV EDX,dword ptr [EBP + 0xffffff64]
LEA EBX,[EBP + -0x78]
MOV EDI,dword ptr [EBP + 0xffffff5c]
MOV dword ptr [EBP + 0xffffff24],EAX
MOV EAX,dword ptr [EBP + 0xffffff60]
MOV dword ptr [EBP + 0xffffff1c],EDX
MOV dword ptr [EBP + 0xffffff18],EAX
MOV EAX,dword ptr [EBP + 0xffffff54]
MOV dword ptr [EBP + 0xffffff20],EAX
MOV EAX,dword ptr [EBP + 0x8]
MOV EDX,dword ptr [EAX + 0x24]
LEA EAX,[EBP + -0x70]
MOV dword ptr [EBP + 0xffffff34],EAX
MOV dword ptr [EBP + -0x78],EAX
MOV EAX,dword ptr [EDX + 0x1c]
PUSH 0x0
MOV ECX,dword ptr [EDX + 0x20]
ADD ECX,EAX
PUSH ECX
PUSH EAX
PUSH EBX
CALL 0x000513a0
ADD ESP,0x10
CMP dword ptr [EBP + -0x74],0x7fffffff
JZ 0x00196675
SUB ESP,0x4
LEA EAX,[ESI + 0xfff06e6c]
PUSH 0x1
PUSH EAX
PUSH EBX
MOV EBX,ESI
CALL 0x001f05c0
LEA EDX,[EBP + -0x58]
ADD ESP,0x10
MOV dword ptr [EBP + -0x60],EDX
MOV ECX,dword ptr [EAX]
MOV dword ptr [EBP + 0xffffff30],EDX
LEA EDX,[EAX + 0x8]
CMP ECX,EDX
JZ 0x00196600
MOV dword ptr [EBP + -0x60],ECX
MOV ECX,dword ptr [EAX + 0x8]
MOV dword ptr [EBP + -0x58],ECX
MOV ECX,dword ptr [EAX + 0x4]
MOV byte ptr [EAX + 0x8],0x0
SUB ESP,0x4
MOV EBX,ESI
MOV dword ptr [EBP + -0x5c],ECX
MOV dword ptr [EAX],EDX
MOV dword ptr [EAX + 0x4],0x0
LEA EAX,[EBP + -0x60]
PUSH dword ptr [EBP + 0xffffff74]
PUSH dword ptr [EBP + 0xffffff70]
PUSH EAX
CALL 0x001f05c0
LEA ECX,[EBP + -0x40]
LEA EDX,[EAX + 0x8]
ADD ESP,0x10
MOV dword ptr [EBP + 0xffffff2c],ECX
MOV dword ptr [EBP + -0x48],ECX
MOV ECX,dword ptr [EAX]
CMP ECX,EDX
JZ 0x00196640
MOV dword ptr [EBP + -0x48],ECX
MOV ECX,dword ptr [EAX + 0x8]
MOV dword ptr [EBP + -0x40],ECX
MOV ECX,dword ptr [EAX + 0x4]
MOV byte ptr [EAX + 0x8],0x0
MOV dword ptr [EBP + -0x44],ECX
MOV dword ptr [EAX],EDX
MOV dword ptr [EAX + 0x4],0x0
CMP dword ptr [EBP + -0x44],0x7fffffff
JZ 0x00196686
SUB ESP,0x4
LEA EAX,[ESI + 0xfff11f9f]
MOV EBX,ESI
PUSH 0x1
PUSH EAX
LEA EAX,[EBP + -0x48]
PUSH EAX
CALL 0x001f05c0
LEA EDX,[EBP + -0x28]
ADD ESP,0x10
MOV dword ptr [EBP + -0x30],EDX
MOV ECX,dword ptr [EAX]
MOV dword ptr [EBP + 0xffffff28],EDX
LEA EDX,[EAX + 0x8]
CMP ECX,EDX
JZ 0x00196620
MOV dword ptr [EBP + -0x30],ECX
MOV ECX,dword ptr [EAX + 0x8]
MOV dword ptr [EBP + -0x28],ECX
MOV ECX,dword ptr [EAX + 0x4]
MOV byte ptr [EAX + 0x8],0x0
SUB ESP,0x4
MOV EBX,ESI
MOV dword ptr [EBP + -0x2c],ECX
MOV dword ptr [EAX],EDX
MOV dword ptr [EAX + 0x4],0x0
LEA EAX,[EBP + -0x30]
PUSH dword ptr [EBP + 0x14]
PUSH EDI
PUSH dword ptr [EBP + 0xffffff24]
PUSH dword ptr [EBP + 0xffffff1c]
PUSH dword ptr [EBP + 0xffffff18]
PUSH dword ptr [EBP + 0xffffff20]
PUSH EAX
CALL 0x000b25f0
MOV EDI,EAX
ADD ESP,0x20
MOV EAX,dword ptr [EBP + -0x30]
CMP EAX,dword ptr [EBP + 0xffffff28]
JZ 0x00196555
SUB ESP,0xc
PUSH EAX
CALL 0x001e6db0
ADD ESP,0x10
MOV EAX,dword ptr [EBP + -0x48]
CMP EAX,dword ptr [EBP + 0xffffff2c]
JZ 0x0019656e
SUB ESP,0xc
MOV EBX,ESI
PUSH EAX
CALL 0x001e6db0
ADD ESP,0x10
MOV EAX,dword ptr [EBP + -0x60]
CMP EAX,dword ptr [EBP + 0xffffff30]
JZ 0x00196587
SUB ESP,0xc
MOV EBX,ESI
PUSH EAX
CALL 0x001e6db0
ADD ESP,0x10
MOV EAX,dword ptr [EBP + -0x78]
CMP EAX,dword ptr [EBP + 0xffffff34]
JZ 0x001962e4
SUB ESP,0xc
MOV EBX,ESI
PUSH EAX
CALL 0x001e6db0
ADD ESP,0x10
JMP 0x001962e4
MOV EAX,dword ptr [EBP + 0x8]
SUB ESP,0xc
MOV EBX,ESI
MOV EDI,dword ptr [EAX + 0xc]
LEA EAX,[ESI + 0xfff0e750]
PUSH EAX
CALL 0x000293b0
ADD ESP,0xc
PUSH dword ptr [EBP + 0xffffff40]
PUSH EDI
PUSH EAX
CALL 0x000654b0
ADD ESP,0x10
LEA ESI,[ESI]
XOR EDI,EDI
JMP 0x0019637f
MOV EDI,EAX
JMP 0x0019637f
MOV ECX,dword ptr [EAX + 0x8]
MOV dword ptr [EBP + -0x58],ECX
MOV ECX,dword ptr [EAX + 0xc]
MOV dword ptr [EBP + -0x54],ECX
MOV ECX,dword ptr [EAX + 0x10]
MOV dword ptr [EBP + -0x50],ECX
MOV ECX,dword ptr [EAX + 0x14]
MOV dword ptr [EBP + -0x4c],ECX
JMP 0x0019644e
MOV ECX,dword ptr [EAX + 0x8]
MOV dword ptr [EBP + -0x28],ECX
MOV ECX,dword ptr [EAX + 0xc]
MOV dword ptr [EBP + -0x24],ECX
MOV ECX,dword ptr [EAX + 0x10]
MOV dword ptr [EBP + -0x20],ECX
MOV ECX,dword ptr [EAX + 0x14]
MOV dword ptr [EBP + -0x1c],ECX
JMP 0x001964fc
MOV ECX,dword ptr [EAX + 0x8]
MOV dword ptr [EBP + -0x40],ECX
MOV ECX,dword ptr [EAX + 0xc]
MOV dword ptr [EBP + -0x3c],ECX
MOV ECX,dword ptr [EAX + 0x10]
MOV dword ptr [EBP + -0x38],ECX
MOV ECX,dword ptr [EAX + 0x14]
MOV dword ptr [EBP + -0x34],ECX
JMP 0x001964a0
PUSH EAX
LEA EAX,[ESI + 0xfff0e890]
MOV EBX,ESI
PUSH EAX
LEA EAX,[ESI + 0xffef8210]
PUSH 0x5c
PUSH EAX
CALL 0x00069d00
SUB ESP,0xc
LEA EAX,[ESI + 0xffef7be2]
MOV EBX,ESI
PUSH EAX
CALL 0x0022c7a0
SUB ESP,0xc
LEA EAX,[ESI + 0xffef7be2]
MOV EBX,ESI
PUSH EAX
CALL 0x0022c7a0
(translation_unit "/* WARNING: Function: __i686.get_pc_thunk.si replaced with injection: get_pc_thunk_si */\n\nint * FUN_00196210(int param_1,undefined4 param_2,undefined4 param_3,undefined1 *param_4)\n\n{\n  int iVar1;\n  char cVar2;\n  int *piVar3;\n  undefined4 uVar4;\n  int *piVar5;\n  undefined4 uVar6;\n  undefined4 uVar7;\n  undefined4 local_b0;\n  undefined4 local_ac;\n  undefined4 local_a8;\n  undefined4 local_a4;\n  undefined4 local_a0;\n  undefined4 local_9c;\n  undefined4 local_98;\n  undefined1 *local_94;\n  undefined4 local_90;\n  undefined1 local_8c [16];\n  undefined1 *local_7c;\n  int local_78;\n  undefined1 local_74 [16];\n  int *local_64;\n  int local_60;\n  int local_5c;\n  int local_58;\n  int local_54;\n  int local_50;\n  int *local_4c;\n  int local_48;\n  int local_44;\n  int local_40;\n  int local_3c;\n  int local_38;\n  int *local_34;\n  int local_30;\n  int local_2c;\n  int local_28;\n  int local_24;\n  int local_20;\n  \n  if (param_4 != (undefined1 *)0x0) {\n    *param_4 = 0;\n  }\n  local_90 = 0;\n  local_8c[0] = 0;\n  local_94 = local_8c;\n                    /* try { // try from 00196297 to 00196404 has its CatchHandler @ 001966ac */\n  cVar2 = FUN_00195b60(param_1,param_2,param_3,&local_b0,&local_a4,&local_9c,&local_94);\n  if (cVar2 != '\0') {\n    cVar2 = FUN_000b23e0(local_b0,local_a4,local_a0,&local_ac,&local_a8);\n    piVar5 = (int *)0x0;\n    if (cVar2 != '\0') {\n      iVar1 = *(int *)(*(int *)(param_1 + 0x24) + 0x1c);\n      uVar6 = local_a4;\n      uVar4 = local_a0;\n      uVar7 = local_b0;\n      local_7c = local_74;\n      FUN_000513a0(&local_7c,iVar1,*(int *)(*(int *)(param_1 + 0x24) + 0x20) + iVar1,0,local_a4,\n                   local_a0,local_b0,local_ac);\n      if (local_78 == 0x7fffffff) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 00196681 to 00196685 has its CatchHandler @ 001966b3 */\n        FUN_0022c7a0("basic_string::append");\n      }\n                    /* try { // try from 00196424 to 00196428 has its CatchHandler @ 001966b3 */\n      piVar5 = (int *)FUN_001f05c0(&local_7c,"(",1);\n      if ((int *)*piVar5 == piVar5 + 2) {\n        local_5c = piVar5[2];\n        local_58 = piVar5[3];\n        local_54 = piVar5[4];\n        local_50 = piVar5[5];\n        local_64 = &local_5c;\n      }\n      else {\n        local_5c = piVar5[2];\n        local_64 = (int *)*piVar5;\n      }\n      local_60 = piVar5[1];\n      *(undefined1 *)(piVar5 + 2) = 0;\n      *piVar5 = (int)(piVar5 + 2);\n      piVar5[1] = 0;\n                    /* try { // try from 00196476 to 0019647a has its CatchHandler @ 001966a5 */\n      piVar5 = (int *)FUN_001f05c0(&local_64,local_94,local_90);\n      if ((int *)*piVar5 == piVar5 + 2) {\n        local_44 = piVar5[2];\n        local_40 = piVar5[3];\n        local_3c = piVar5[4];\n        local_38 = piVar5[5];\n        local_4c = &local_44;\n      }\n      else {\n        local_44 = piVar5[2];\n        local_4c = (int *)*piVar5;\n      }\n      local_48 = piVar5[1];\n      *(undefined1 *)(piVar5 + 2) = 0;\n      *piVar5 = (int)(piVar5 + 2);\n      piVar5[1] = 0;\n      if (local_48 == 0x7fffffff) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 00196692 to 00196696 has its CatchHandler @ 00196697 */\n        FUN_0022c7a0("basic_string::append");\n      }\n                    /* try { // try from 001964d2 to 001964d6 has its CatchHandler @ 00196697 */\n      piVar5 = (int *)FUN_001f05c0(&local_4c,&DAT_002a0f9f,1);\n      if ((int *)*piVar5 == piVar5 + 2) {\n        local_2c = piVar5[2];\n        local_28 = piVar5[3];\n        local_24 = piVar5[4];\n        local_20 = piVar5[5];\n        local_34 = &local_2c;\n      }\n      else {\n        local_2c = piVar5[2];\n        local_34 = (int *)*piVar5;\n      }\n      local_30 = piVar5[1];\n      *(undefined1 *)(piVar5 + 2) = 0;\n      *piVar5 = (int)(piVar5 + 2);\n      piVar5[1] = 0;\n                    /* try { // try from 00196534 to 00196538 has its CatchHandler @ 0019669e */\n      piVar5 = (int *)FUN_000b25f0(&local_34,uVar7,uVar6,uVar4,local_ac,local_a8,param_4);\n      if (local_34 != &local_2c) {\n        FUN_001e6db0(local_34);\n      }\n      if (local_4c != &local_44) {\n        FUN_001e6db0(local_4c);\n      }\n      if (local_64 != &local_5c) {\n        FUN_001e6db0(local_64);\n      }\n      if (local_7c != local_74) {\n        FUN_001e6db0(local_7c);\n      }\n    }\n    if (*(int *)(DAT_0038f378 + 8) == 0) {\n                    /* WARNING: Subroutine does not return */\n      FUN_00069d00("../../gold/parameters.h",0x5c,"options",0);\n    }\n    iVar1 = *(int *)(*(int *)(DAT_0038f378 + 8) + 0x593c);\n    if ((iVar1 != 0) &&\n       (piVar3 = (int *)FUN_0013d200(iVar1,local_b0,local_a4,local_a0,local_9c,local_98,piVar5),\n       piVar3 != (int *)0x0)) {\n      if (piVar5 != (int *)0x0) {\n        (**(code **)(*piVar5 + 4))(piVar5);\n      }\n      goto LAB_0019637f;\n    }\n    if (cVar2 != '\0') {\n      piVar3 = piVar5;\n      if (piVar5 != (int *)0x0) {\n        *(byte *)(piVar5 + 0xb) =\n             *(byte *)(piVar5 + 0xb) & 0xef | (byte)((*(byte *)(param_1 + 0xd4) & 1) << 4);\n      }\n      goto LAB_0019637f;\n    }\n    uVar6 = *(undefined4 *)(param_1 + 0xc);\n    uVar4 = gettext("%s: member at %zu is not an ELF object");\n                    /* try { // try from 001965d2 to 00196674 has its CatchHandler @ 001966ac */\n    FUN_000654b0(uVar4,uVar6,param_2);\n  }\n  piVar3 = (int *)0x0;\nLAB_0019637f:\n  if (local_94 != local_8c) {\n    FUN_001e6db0(local_94);\n  }\n  return piVar3;\n}\n\n" comment (function_definition "int * FUN_00196210(int param_1,undefined4 param_2,undefined4 param_3,undefined1 *param_4)\n\n{\n  int iVar1;\n  char cVar2;\n  int *piVar3;\n  undefined4 uVar4;\n  int *piVar5;\n  undefined4 uVar6;\n  undefined4 uVar7;\n  undefined4 local_b0;\n  undefined4 local_ac;\n  undefined4 local_a8;\n  undefined4 local_a4;\n  undefined4 local_a0;\n  undefined4 local_9c;\n  undefined4 local_98;\n  undefined1 *local_94;\n  undefined4 local_90;\n  undefined1 local_8c [16];\n  undefined1 *local_7c;\n  int local_78;\n  undefined1 local_74 [16];\n  int *local_64;\n  int local_60;\n  int local_5c;\n  int local_58;\n  int local_54;\n  int local_50;\n  int *local_4c;\n  int local_48;\n  int local_44;\n  int local_40;\n  int local_3c;\n  int local_38;\n  int *local_34;\n  int local_30;\n  int local_2c;\n  int local_28;\n  int local_24;\n  int local_20;\n  \n  if (param_4 != (undefined1 *)0x0) {\n    *param_4 = 0;\n  }\n  local_90 = 0;\n  local_8c[0] = 0;\n  local_94 = local_8c;\n                    /* try { // try from 00196297 to 00196404 has its CatchHandler @ 001966ac */\n  cVar2 = FUN_00195b60(param_1,param_2,param_3,&local_b0,&local_a4,&local_9c,&local_94);\n  if (cVar2 != '\0') {\n    cVar2 = FUN_000b23e0(local_b0,local_a4,local_a0,&local_ac,&local_a8);\n    piVar5 = (int *)0x0;\n    if (cVar2 != '\0') {\n      iVar1 = *(int *)(*(int *)(param_1 + 0x24) + 0x1c);\n      uVar6 = local_a4;\n      uVar4 = local_a0;\n      uVar7 = local_b0;\n      local_7c = local_74;\n      FUN_000513a0(&local_7c,iVar1,*(int *)(*(int *)(param_1 + 0x24) + 0x20) + iVar1,0,local_a4,\n                   local_a0,local_b0,local_ac);\n      if (local_78 == 0x7fffffff) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 00196681 to 00196685 has its CatchHandler @ 001966b3 */\n        FUN_0022c7a0("basic_string::append");\n      }\n                    /* try { // try from 00196424 to 00196428 has its CatchHandler @ 001966b3 */\n      piVar5 = (int *)FUN_001f05c0(&local_7c,"(",1);\n      if ((int *)*piVar5 == piVar5 + 2) {\n        local_5c = piVar5[2];\n        local_58 = piVar5[3];\n        local_54 = piVar5[4];\n        local_50 = piVar5[5];\n        local_64 = &local_5c;\n      }\n      else {\n        local_5c = piVar5[2];\n        local_64 = (int *)*piVar5;\n      }\n      local_60 = piVar5[1];\n      *(undefined1 *)(piVar5 + 2) = 0;\n      *piVar5 = (int)(piVar5 + 2);\n      piVar5[1] = 0;\n                    /* try { // try from 00196476 to 0019647a has its CatchHandler @ 001966a5 */\n      piVar5 = (int *)FUN_001f05c0(&local_64,local_94,local_90);\n      if ((int *)*piVar5 == piVar5 + 2) {\n        local_44 = piVar5[2];\n        local_40 = piVar5[3];\n        local_3c = piVar5[4];\n        local_38 = piVar5[5];\n        local_4c = &local_44;\n      }\n      else {\n        local_44 = piVar5[2];\n        local_4c = (int *)*piVar5;\n      }\n      local_48 = piVar5[1];\n      *(undefined1 *)(piVar5 + 2) = 0;\n      *piVar5 = (int)(piVar5 + 2);\n      piVar5[1] = 0;\n      if (local_48 == 0x7fffffff) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 00196692 to 00196696 has its CatchHandler @ 00196697 */\n        FUN_0022c7a0("basic_string::append");\n      }\n                    /* try { // try from 001964d2 to 001964d6 has its CatchHandler @ 00196697 */\n      piVar5 = (int *)FUN_001f05c0(&local_4c,&DAT_002a0f9f,1);\n      if ((int *)*piVar5 == piVar5 + 2) {\n        local_2c = piVar5[2];\n        local_28 = piVar5[3];\n        local_24 = piVar5[4];\n        local_20 = piVar5[5];\n        local_34 = &local_2c;\n      }\n      else {\n        local_2c = piVar5[2];\n        local_34 = (int *)*piVar5;\n      }\n      local_30 = piVar5[1];\n      *(undefined1 *)(piVar5 + 2) = 0;\n      *piVar5 = (int)(piVar5 + 2);\n      piVar5[1] = 0;\n                    /* try { // try from 00196534 to 00196538 has its CatchHandler @ 0019669e */\n      piVar5 = (int *)FUN_000b25f0(&local_34,uVar7,uVar6,uVar4,local_ac,local_a8,param_4);\n      if (local_34 != &local_2c) {\n        FUN_001e6db0(local_34);\n      }\n      if (local_4c != &local_44) {\n        FUN_001e6db0(local_4c);\n      }\n      if (local_64 != &local_5c) {\n        FUN_001e6db0(local_64);\n      }\n      if (local_7c != local_74) {\n        FUN_001e6db0(local_7c);\n      }\n    }\n    if (*(int *)(DAT_0038f378 + 8) == 0) {\n                    /* WARNING: Subroutine does not return */\n      FUN_00069d00("../../gold/parameters.h",0x5c,"options",0);\n    }\n    iVar1 = *(int *)(*(int *)(DAT_0038f378 + 8) + 0x593c);\n    if ((iVar1 != 0) &&\n       (piVar3 = (int *)FUN_0013d200(iVar1,local_b0,local_a4,local_a0,local_9c,local_98,piVar5),\n       piVar3 != (int *)0x0)) {\n      if (piVar5 != (int *)0x0) {\n        (**(code **)(*piVar5 + 4))(piVar5);\n      }\n      goto LAB_0019637f;\n    }\n    if (cVar2 != '\0') {\n      piVar3 = piVar5;\n      if (piVar5 != (int *)0x0) {\n        *(byte *)(piVar5 + 0xb) =\n             *(byte *)(piVar5 + 0xb) & 0xef | (byte)((*(byte *)(param_1 + 0xd4) & 1) << 4);\n      }\n      goto LAB_0019637f;\n    }\n    uVar6 = *(undefined4 *)(param_1 + 0xc);\n    uVar4 = gettext("%s: member at %zu is not an ELF object");\n                    /* try { // try from 001965d2 to 00196674 has its CatchHandler @ 001966ac */\n    FUN_000654b0(uVar4,uVar6,param_2);\n  }\n  piVar3 = (int *)0x0;\nLAB_0019637f:\n  if (local_94 != local_8c) {\n    FUN_001e6db0(local_94);\n  }\n  return piVar3;\n}" primitive_type (pointer_declarator "* FUN_00196210(int param_1,undefined4 param_2,undefined4 param_3,undefined1 *param_4)" * (function_declarator "FUN_00196210(int param_1,undefined4 param_2,undefined4 param_3,undefined1 *param_4)" identifier (parameter_list "(int param_1,undefined4 param_2,undefined4 param_3,undefined1 *param_4)" ( (parameter_declaration "int param_1" primitive_type identifier) , (parameter_declaration "undefined4 param_2" type_identifier identifier) , (parameter_declaration "undefined4 param_3" type_identifier identifier) , (parameter_declaration "undefined1 *param_4" type_identifier (pointer_declarator "*param_4" * identifier)) )))) (compound_statement "{\n  int iVar1;\n  char cVar2;\n  int *piVar3;\n  undefined4 uVar4;\n  int *piVar5;\n  undefined4 uVar6;\n  undefined4 uVar7;\n  undefined4 local_b0;\n  undefined4 local_ac;\n  undefined4 local_a8;\n  undefined4 local_a4;\n  undefined4 local_a0;\n  undefined4 local_9c;\n  undefined4 local_98;\n  undefined1 *local_94;\n  undefined4 local_90;\n  undefined1 local_8c [16];\n  undefined1 *local_7c;\n  int local_78;\n  undefined1 local_74 [16];\n  int *local_64;\n  int local_60;\n  int local_5c;\n  int local_58;\n  int local_54;\n  int local_50;\n  int *local_4c;\n  int local_48;\n  int local_44;\n  int local_40;\n  int local_3c;\n  int local_38;\n  int *local_34;\n  int local_30;\n  int local_2c;\n  int local_28;\n  int local_24;\n  int local_20;\n  \n  if (param_4 != (undefined1 *)0x0) {\n    *param_4 = 0;\n  }\n  local_90 = 0;\n  local_8c[0] = 0;\n  local_94 = local_8c;\n                    /* try { // try from 00196297 to 00196404 has its CatchHandler @ 001966ac */\n  cVar2 = FUN_00195b60(param_1,param_2,param_3,&local_b0,&local_a4,&local_9c,&local_94);\n  if (cVar2 != '\0') {\n    cVar2 = FUN_000b23e0(local_b0,local_a4,local_a0,&local_ac,&local_a8);\n    piVar5 = (int *)0x0;\n    if (cVar2 != '\0') {\n      iVar1 = *(int *)(*(int *)(param_1 + 0x24) + 0x1c);\n      uVar6 = local_a4;\n      uVar4 = local_a0;\n      uVar7 = local_b0;\n      local_7c = local_74;\n      FUN_000513a0(&local_7c,iVar1,*(int *)(*(int *)(param_1 + 0x24) + 0x20) + iVar1,0,local_a4,\n                   local_a0,local_b0,local_ac);\n      if (local_78 == 0x7fffffff) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 00196681 to 00196685 has its CatchHandler @ 001966b3 */\n        FUN_0022c7a0("basic_string::append");\n      }\n                    /* try { // try from 00196424 to 00196428 has its CatchHandler @ 001966b3 */\n      piVar5 = (int *)FUN_001f05c0(&local_7c,"(",1);\n      if ((int *)*piVar5 == piVar5 + 2) {\n        local_5c = piVar5[2];\n        local_58 = piVar5[3];\n        local_54 = piVar5[4];\n        local_50 = piVar5[5];\n        local_64 = &local_5c;\n      }\n      else {\n        local_5c = piVar5[2];\n        local_64 = (int *)*piVar5;\n      }\n      local_60 = piVar5[1];\n      *(undefined1 *)(piVar5 + 2) = 0;\n      *piVar5 = (int)(piVar5 + 2);\n      piVar5[1] = 0;\n                    /* try { // try from 00196476 to 0019647a has its CatchHandler @ 001966a5 */\n      piVar5 = (int *)FUN_001f05c0(&local_64,local_94,local_90);\n      if ((int *)*piVar5 == piVar5 + 2) {\n        local_44 = piVar5[2];\n        local_40 = piVar5[3];\n        local_3c = piVar5[4];\n        local_38 = piVar5[5];\n        local_4c = &local_44;\n      }\n      else {\n        local_44 = piVar5[2];\n        local_4c = (int *)*piVar5;\n      }\n      local_48 = piVar5[1];\n      *(undefined1 *)(piVar5 + 2) = 0;\n      *piVar5 = (int)(piVar5 + 2);\n      piVar5[1] = 0;\n      if (local_48 == 0x7fffffff) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 00196692 to 00196696 has its CatchHandler @ 00196697 */\n        FUN_0022c7a0("basic_string::append");\n      }\n                    /* try { // try from 001964d2 to 001964d6 has its CatchHandler @ 00196697 */\n      piVar5 = (int *)FUN_001f05c0(&local_4c,&DAT_002a0f9f,1);\n      if ((int *)*piVar5 == piVar5 + 2) {\n        local_2c = piVar5[2];\n        local_28 = piVar5[3];\n        local_24 = piVar5[4];\n        local_20 = piVar5[5];\n        local_34 = &local_2c;\n      }\n      else {\n        local_2c = piVar5[2];\n        local_34 = (int *)*piVar5;\n      }\n      local_30 = piVar5[1];\n      *(undefined1 *)(piVar5 + 2) = 0;\n      *piVar5 = (int)(piVar5 + 2);\n      piVar5[1] = 0;\n                    /* try { // try from 00196534 to 00196538 has its CatchHandler @ 0019669e */\n      piVar5 = (int *)FUN_000b25f0(&local_34,uVar7,uVar6,uVar4,local_ac,local_a8,param_4);\n      if (local_34 != &local_2c) {\n        FUN_001e6db0(local_34);\n      }\n      if (local_4c != &local_44) {\n        FUN_001e6db0(local_4c);\n      }\n      if (local_64 != &local_5c) {\n        FUN_001e6db0(local_64);\n      }\n      if (local_7c != local_74) {\n        FUN_001e6db0(local_7c);\n      }\n    }\n    if (*(int *)(DAT_0038f378 + 8) == 0) {\n                    /* WARNING: Subroutine does not return */\n      FUN_00069d00("../../gold/parameters.h",0x5c,"options",0);\n    }\n    iVar1 = *(int *)(*(int *)(DAT_0038f378 + 8) + 0x593c);\n    if ((iVar1 != 0) &&\n       (piVar3 = (int *)FUN_0013d200(iVar1,local_b0,local_a4,local_a0,local_9c,local_98,piVar5),\n       piVar3 != (int *)0x0)) {\n      if (piVar5 != (int *)0x0) {\n        (**(code **)(*piVar5 + 4))(piVar5);\n      }\n      goto LAB_0019637f;\n    }\n    if (cVar2 != '\0') {\n      piVar3 = piVar5;\n      if (piVar5 != (int *)0x0) {\n        *(byte *)(piVar5 + 0xb) =\n             *(byte *)(piVar5 + 0xb) & 0xef | (byte)((*(byte *)(param_1 + 0xd4) & 1) << 4);\n      }\n      goto LAB_0019637f;\n    }\n    uVar6 = *(undefined4 *)(param_1 + 0xc);\n    uVar4 = gettext("%s: member at %zu is not an ELF object");\n                    /* try { // try from 001965d2 to 00196674 has its CatchHandler @ 001966ac */\n    FUN_000654b0(uVar4,uVar6,param_2);\n  }\n  piVar3 = (int *)0x0;\nLAB_0019637f:\n  if (local_94 != local_8c) {\n    FUN_001e6db0(local_94);\n  }\n  return piVar3;\n}" { (declaration "int iVar1;" primitive_type identifier ;) (declaration "char cVar2;" primitive_type identifier ;) (declaration "int *piVar3;" primitive_type (pointer_declarator "*piVar3" * identifier) ;) (declaration "undefined4 uVar4;" type_identifier identifier ;) (declaration "int *piVar5;" primitive_type (pointer_declarator "*piVar5" * identifier) ;) (declaration "undefined4 uVar6;" type_identifier identifier ;) (declaration "undefined4 uVar7;" type_identifier identifier ;) (declaration "undefined4 local_b0;" type_identifier identifier ;) (declaration "undefined4 local_ac;" type_identifier identifier ;) (declaration "undefined4 local_a8;" type_identifier identifier ;) (declaration "undefined4 local_a4;" type_identifier identifier ;) (declaration "undefined4 local_a0;" type_identifier identifier ;) (declaration "undefined4 local_9c;" type_identifier identifier ;) (declaration "undefined4 local_98;" type_identifier identifier ;) (declaration "undefined1 *local_94;" type_identifier (pointer_declarator "*local_94" * identifier) ;) (declaration "undefined4 local_90;" type_identifier identifier ;) (declaration "undefined1 local_8c [16];" type_identifier (array_declarator "local_8c [16]" identifier [ number_literal ]) ;) (declaration "undefined1 *local_7c;" type_identifier (pointer_declarator "*local_7c" * identifier) ;) (declaration "int local_78;" primitive_type identifier ;) (declaration "undefined1 local_74 [16];" type_identifier (array_declarator "local_74 [16]" identifier [ number_literal ]) ;) (declaration "int *local_64;" primitive_type (pointer_declarator "*local_64" * identifier) ;) (declaration "int local_60;" primitive_type identifier ;) (declaration "int local_5c;" primitive_type identifier ;) (declaration "int local_58;" primitive_type identifier ;) (declaration "int local_54;" primitive_type identifier ;) (declaration "int local_50;" primitive_type identifier ;) (declaration "int *local_4c;" primitive_type (pointer_declarator "*local_4c" * identifier) ;) (declaration "int local_48;" primitive_type identifier ;) (declaration "int local_44;" primitive_type identifier ;) (declaration "int local_40;" primitive_type identifier ;) (declaration "int local_3c;" primitive_type identifier ;) (declaration "int local_38;" primitive_type identifier ;) (declaration "int *local_34;" primitive_type (pointer_declarator "*local_34" * identifier) ;) (declaration "int local_30;" primitive_type identifier ;) (declaration "int local_2c;" primitive_type identifier ;) (declaration "int local_28;" primitive_type identifier ;) (declaration "int local_24;" primitive_type identifier ;) (declaration "int local_20;" primitive_type identifier ;) (if_statement "if (param_4 != (undefined1 *)0x0) {\n    *param_4 = 0;\n  }" if (parenthesized_expression "(param_4 != (undefined1 *)0x0)" ( (binary_expression "param_4 != (undefined1 *)0x0" identifier != (cast_expression "(undefined1 *)0x0" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    *param_4 = 0;\n  }" { (expression_statement "*param_4 = 0;" (assignment_expression "*param_4 = 0" (pointer_expression "*param_4" * identifier) = number_literal) ;) })) (expression_statement "local_90 = 0;" (assignment_expression "local_90 = 0" identifier = number_literal) ;) (expression_statement "local_8c[0] = 0;" (assignment_expression "local_8c[0] = 0" (subscript_expression "local_8c[0]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "local_94 = local_8c;" (assignment_expression "local_94 = local_8c" identifier = identifier) ;) comment (expression_statement "cVar2 = FUN_00195b60(param_1,param_2,param_3,&local_b0,&local_a4,&local_9c,&local_94);" (assignment_expression "cVar2 = FUN_00195b60(param_1,param_2,param_3,&local_b0,&local_a4,&local_9c,&local_94)" identifier = (call_expression "FUN_00195b60(param_1,param_2,param_3,&local_b0,&local_a4,&local_9c,&local_94)" identifier (argument_list "(param_1,param_2,param_3,&local_b0,&local_a4,&local_9c,&local_94)" ( identifier , identifier , identifier , (pointer_expression "&local_b0" & identifier) , (pointer_expression "&local_a4" & identifier) , (pointer_expression "&local_9c" & identifier) , (pointer_expression "&local_94" & identifier) )))) ;) (if_statement "if (cVar2 != '\0') {\n    cVar2 = FUN_000b23e0(local_b0,local_a4,local_a0,&local_ac,&local_a8);\n    piVar5 = (int *)0x0;\n    if (cVar2 != '\0') {\n      iVar1 = *(int *)(*(int *)(param_1 + 0x24) + 0x1c);\n      uVar6 = local_a4;\n      uVar4 = local_a0;\n      uVar7 = local_b0;\n      local_7c = local_74;\n      FUN_000513a0(&local_7c,iVar1,*(int *)(*(int *)(param_1 + 0x24) + 0x20) + iVar1,0,local_a4,\n                   local_a0,local_b0,local_ac);\n      if (local_78 == 0x7fffffff) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 00196681 to 00196685 has its CatchHandler @ 001966b3 */\n        FUN_0022c7a0("basic_string::append");\n      }\n                    /* try { // try from 00196424 to 00196428 has its CatchHandler @ 001966b3 */\n      piVar5 = (int *)FUN_001f05c0(&local_7c,"(",1);\n      if ((int *)*piVar5 == piVar5 + 2) {\n        local_5c = piVar5[2];\n        local_58 = piVar5[3];\n        local_54 = piVar5[4];\n        local_50 = piVar5[5];\n        local_64 = &local_5c;\n      }\n      else {\n        local_5c = piVar5[2];\n        local_64 = (int *)*piVar5;\n      }\n      local_60 = piVar5[1];\n      *(undefined1 *)(piVar5 + 2) = 0;\n      *piVar5 = (int)(piVar5 + 2);\n      piVar5[1] = 0;\n                    /* try { // try from 00196476 to 0019647a has its CatchHandler @ 001966a5 */\n      piVar5 = (int *)FUN_001f05c0(&local_64,local_94,local_90);\n      if ((int *)*piVar5 == piVar5 + 2) {\n        local_44 = piVar5[2];\n        local_40 = piVar5[3];\n        local_3c = piVar5[4];\n        local_38 = piVar5[5];\n        local_4c = &local_44;\n      }\n      else {\n        local_44 = piVar5[2];\n        local_4c = (int *)*piVar5;\n      }\n      local_48 = piVar5[1];\n      *(undefined1 *)(piVar5 + 2) = 0;\n      *piVar5 = (int)(piVar5 + 2);\n      piVar5[1] = 0;\n      if (local_48 == 0x7fffffff) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 00196692 to 00196696 has its CatchHandler @ 00196697 */\n        FUN_0022c7a0("basic_string::append");\n      }\n                    /* try { // try from 001964d2 to 001964d6 has its CatchHandler @ 00196697 */\n      piVar5 = (int *)FUN_001f05c0(&local_4c,&DAT_002a0f9f,1);\n      if ((int *)*piVar5 == piVar5 + 2) {\n        local_2c = piVar5[2];\n        local_28 = piVar5[3];\n        local_24 = piVar5[4];\n        local_20 = piVar5[5];\n        local_34 = &local_2c;\n      }\n      else {\n        local_2c = piVar5[2];\n        local_34 = (int *)*piVar5;\n      }\n      local_30 = piVar5[1];\n      *(undefined1 *)(piVar5 + 2) = 0;\n      *piVar5 = (int)(piVar5 + 2);\n      piVar5[1] = 0;\n                    /* try { // try from 00196534 to 00196538 has its CatchHandler @ 0019669e */\n      piVar5 = (int *)FUN_000b25f0(&local_34,uVar7,uVar6,uVar4,local_ac,local_a8,param_4);\n      if (local_34 != &local_2c) {\n        FUN_001e6db0(local_34);\n      }\n      if (local_4c != &local_44) {\n        FUN_001e6db0(local_4c);\n      }\n      if (local_64 != &local_5c) {\n        FUN_001e6db0(local_64);\n      }\n      if (local_7c != local_74) {\n        FUN_001e6db0(local_7c);\n      }\n    }\n    if (*(int *)(DAT_0038f378 + 8) == 0) {\n                    /* WARNING: Subroutine does not return */\n      FUN_00069d00("../../gold/parameters.h",0x5c,"options",0);\n    }\n    iVar1 = *(int *)(*(int *)(DAT_0038f378 + 8) + 0x593c);\n    if ((iVar1 != 0) &&\n       (piVar3 = (int *)FUN_0013d200(iVar1,local_b0,local_a4,local_a0,local_9c,local_98,piVar5),\n       piVar3 != (int *)0x0)) {\n      if (piVar5 != (int *)0x0) {\n        (**(code **)(*piVar5 + 4))(piVar5);\n      }\n      goto LAB_0019637f;\n    }\n    if (cVar2 != '\0') {\n      piVar3 = piVar5;\n      if (piVar5 != (int *)0x0) {\n        *(byte *)(piVar5 + 0xb) =\n             *(byte *)(piVar5 + 0xb) & 0xef | (byte)((*(byte *)(param_1 + 0xd4) & 1) << 4);\n      }\n      goto LAB_0019637f;\n    }\n    uVar6 = *(undefined4 *)(param_1 + 0xc);\n    uVar4 = gettext("%s: member at %zu is not an ELF object");\n                    /* try { // try from 001965d2 to 00196674 has its CatchHandler @ 001966ac */\n    FUN_000654b0(uVar4,uVar6,param_2);\n  }" if (parenthesized_expression "(cVar2 != '\0')" ( (binary_expression "cVar2 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n    cVar2 = FUN_000b23e0(local_b0,local_a4,local_a0,&local_ac,&local_a8);\n    piVar5 = (int *)0x0;\n    if (cVar2 != '\0') {\n      iVar1 = *(int *)(*(int *)(param_1 + 0x24) + 0x1c);\n      uVar6 = local_a4;\n      uVar4 = local_a0;\n      uVar7 = local_b0;\n      local_7c = local_74;\n      FUN_000513a0(&local_7c,iVar1,*(int *)(*(int *)(param_1 + 0x24) + 0x20) + iVar1,0,local_a4,\n                   local_a0,local_b0,local_ac);\n      if (local_78 == 0x7fffffff) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 00196681 to 00196685 has its CatchHandler @ 001966b3 */\n        FUN_0022c7a0("basic_string::append");\n      }\n                    /* try { // try from 00196424 to 00196428 has its CatchHandler @ 001966b3 */\n      piVar5 = (int *)FUN_001f05c0(&local_7c,"(",1);\n      if ((int *)*piVar5 == piVar5 + 2) {\n        local_5c = piVar5[2];\n        local_58 = piVar5[3];\n        local_54 = piVar5[4];\n        local_50 = piVar5[5];\n        local_64 = &local_5c;\n      }\n      else {\n        local_5c = piVar5[2];\n        local_64 = (int *)*piVar5;\n      }\n      local_60 = piVar5[1];\n      *(undefined1 *)(piVar5 + 2) = 0;\n      *piVar5 = (int)(piVar5 + 2);\n      piVar5[1] = 0;\n                    /* try { // try from 00196476 to 0019647a has its CatchHandler @ 001966a5 */\n      piVar5 = (int *)FUN_001f05c0(&local_64,local_94,local_90);\n      if ((int *)*piVar5 == piVar5 + 2) {\n        local_44 = piVar5[2];\n        local_40 = piVar5[3];\n        local_3c = piVar5[4];\n        local_38 = piVar5[5];\n        local_4c = &local_44;\n      }\n      else {\n        local_44 = piVar5[2];\n        local_4c = (int *)*piVar5;\n      }\n      local_48 = piVar5[1];\n      *(undefined1 *)(piVar5 + 2) = 0;\n      *piVar5 = (int)(piVar5 + 2);\n      piVar5[1] = 0;\n      if (local_48 == 0x7fffffff) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 00196692 to 00196696 has its CatchHandler @ 00196697 */\n        FUN_0022c7a0("basic_string::append");\n      }\n                    /* try { // try from 001964d2 to 001964d6 has its CatchHandler @ 00196697 */\n      piVar5 = (int *)FUN_001f05c0(&local_4c,&DAT_002a0f9f,1);\n      if ((int *)*piVar5 == piVar5 + 2) {\n        local_2c = piVar5[2];\n        local_28 = piVar5[3];\n        local_24 = piVar5[4];\n        local_20 = piVar5[5];\n        local_34 = &local_2c;\n      }\n      else {\n        local_2c = piVar5[2];\n        local_34 = (int *)*piVar5;\n      }\n      local_30 = piVar5[1];\n      *(undefined1 *)(piVar5 + 2) = 0;\n      *piVar5 = (int)(piVar5 + 2);\n      piVar5[1] = 0;\n                    /* try { // try from 00196534 to 00196538 has its CatchHandler @ 0019669e */\n      piVar5 = (int *)FUN_000b25f0(&local_34,uVar7,uVar6,uVar4,local_ac,local_a8,param_4);\n      if (local_34 != &local_2c) {\n        FUN_001e6db0(local_34);\n      }\n      if (local_4c != &local_44) {\n        FUN_001e6db0(local_4c);\n      }\n      if (local_64 != &local_5c) {\n        FUN_001e6db0(local_64);\n      }\n      if (local_7c != local_74) {\n        FUN_001e6db0(local_7c);\n      }\n    }\n    if (*(int *)(DAT_0038f378 + 8) == 0) {\n                    /* WARNING: Subroutine does not return */\n      FUN_00069d00("../../gold/parameters.h",0x5c,"options",0);\n    }\n    iVar1 = *(int *)(*(int *)(DAT_0038f378 + 8) + 0x593c);\n    if ((iVar1 != 0) &&\n       (piVar3 = (int *)FUN_0013d200(iVar1,local_b0,local_a4,local_a0,local_9c,local_98,piVar5),\n       piVar3 != (int *)0x0)) {\n      if (piVar5 != (int *)0x0) {\n        (**(code **)(*piVar5 + 4))(piVar5);\n      }\n      goto LAB_0019637f;\n    }\n    if (cVar2 != '\0') {\n      piVar3 = piVar5;\n      if (piVar5 != (int *)0x0) {\n        *(byte *)(piVar5 + 0xb) =\n             *(byte *)(piVar5 + 0xb) & 0xef | (byte)((*(byte *)(param_1 + 0xd4) & 1) << 4);\n      }\n      goto LAB_0019637f;\n    }\n    uVar6 = *(undefined4 *)(param_1 + 0xc);\n    uVar4 = gettext("%s: member at %zu is not an ELF object");\n                    /* try { // try from 001965d2 to 00196674 has its CatchHandler @ 001966ac */\n    FUN_000654b0(uVar4,uVar6,param_2);\n  }" { (expression_statement "cVar2 = FUN_000b23e0(local_b0,local_a4,local_a0,&local_ac,&local_a8);" (assignment_expression "cVar2 = FUN_000b23e0(local_b0,local_a4,local_a0,&local_ac,&local_a8)" identifier = (call_expression "FUN_000b23e0(local_b0,local_a4,local_a0,&local_ac,&local_a8)" identifier (argument_list "(local_b0,local_a4,local_a0,&local_ac,&local_a8)" ( identifier , identifier , identifier , (pointer_expression "&local_ac" & identifier) , (pointer_expression "&local_a8" & identifier) )))) ;) (expression_statement "piVar5 = (int *)0x0;" (assignment_expression "piVar5 = (int *)0x0" identifier = (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (if_statement "if (cVar2 != '\0') {\n      iVar1 = *(int *)(*(int *)(param_1 + 0x24) + 0x1c);\n      uVar6 = local_a4;\n      uVar4 = local_a0;\n      uVar7 = local_b0;\n      local_7c = local_74;\n      FUN_000513a0(&local_7c,iVar1,*(int *)(*(int *)(param_1 + 0x24) + 0x20) + iVar1,0,local_a4,\n                   local_a0,local_b0,local_ac);\n      if (local_78 == 0x7fffffff) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 00196681 to 00196685 has its CatchHandler @ 001966b3 */\n        FUN_0022c7a0("basic_string::append");\n      }\n                    /* try { // try from 00196424 to 00196428 has its CatchHandler @ 001966b3 */\n      piVar5 = (int *)FUN_001f05c0(&local_7c,"(",1);\n      if ((int *)*piVar5 == piVar5 + 2) {\n        local_5c = piVar5[2];\n        local_58 = piVar5[3];\n        local_54 = piVar5[4];\n        local_50 = piVar5[5];\n        local_64 = &local_5c;\n      }\n      else {\n        local_5c = piVar5[2];\n        local_64 = (int *)*piVar5;\n      }\n      local_60 = piVar5[1];\n      *(undefined1 *)(piVar5 + 2) = 0;\n      *piVar5 = (int)(piVar5 + 2);\n      piVar5[1] = 0;\n                    /* try { // try from 00196476 to 0019647a has its CatchHandler @ 001966a5 */\n      piVar5 = (int *)FUN_001f05c0(&local_64,local_94,local_90);\n      if ((int *)*piVar5 == piVar5 + 2) {\n        local_44 = piVar5[2];\n        local_40 = piVar5[3];\n        local_3c = piVar5[4];\n        local_38 = piVar5[5];\n        local_4c = &local_44;\n      }\n      else {\n        local_44 = piVar5[2];\n        local_4c = (int *)*piVar5;\n      }\n      local_48 = piVar5[1];\n      *(undefined1 *)(piVar5 + 2) = 0;\n      *piVar5 = (int)(piVar5 + 2);\n      piVar5[1] = 0;\n      if (local_48 == 0x7fffffff) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 00196692 to 00196696 has its CatchHandler @ 00196697 */\n        FUN_0022c7a0("basic_string::append");\n      }\n                    /* try { // try from 001964d2 to 001964d6 has its CatchHandler @ 00196697 */\n      piVar5 = (int *)FUN_001f05c0(&local_4c,&DAT_002a0f9f,1);\n      if ((int *)*piVar5 == piVar5 + 2) {\n        local_2c = piVar5[2];\n        local_28 = piVar5[3];\n        local_24 = piVar5[4];\n        local_20 = piVar5[5];\n        local_34 = &local_2c;\n      }\n      else {\n        local_2c = piVar5[2];\n        local_34 = (int *)*piVar5;\n      }\n      local_30 = piVar5[1];\n      *(undefined1 *)(piVar5 + 2) = 0;\n      *piVar5 = (int)(piVar5 + 2);\n      piVar5[1] = 0;\n                    /* try { // try from 00196534 to 00196538 has its CatchHandler @ 0019669e */\n      piVar5 = (int *)FUN_000b25f0(&local_34,uVar7,uVar6,uVar4,local_ac,local_a8,param_4);\n      if (local_34 != &local_2c) {\n        FUN_001e6db0(local_34);\n      }\n      if (local_4c != &local_44) {\n        FUN_001e6db0(local_4c);\n      }\n      if (local_64 != &local_5c) {\n        FUN_001e6db0(local_64);\n      }\n      if (local_7c != local_74) {\n        FUN_001e6db0(local_7c);\n      }\n    }" if (parenthesized_expression "(cVar2 != '\0')" ( (binary_expression "cVar2 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n      iVar1 = *(int *)(*(int *)(param_1 + 0x24) + 0x1c);\n      uVar6 = local_a4;\n      uVar4 = local_a0;\n      uVar7 = local_b0;\n      local_7c = local_74;\n      FUN_000513a0(&local_7c,iVar1,*(int *)(*(int *)(param_1 + 0x24) + 0x20) + iVar1,0,local_a4,\n                   local_a0,local_b0,local_ac);\n      if (local_78 == 0x7fffffff) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 00196681 to 00196685 has its CatchHandler @ 001966b3 */\n        FUN_0022c7a0("basic_string::append");\n      }\n                    /* try { // try from 00196424 to 00196428 has its CatchHandler @ 001966b3 */\n      piVar5 = (int *)FUN_001f05c0(&local_7c,"(",1);\n      if ((int *)*piVar5 == piVar5 + 2) {\n        local_5c = piVar5[2];\n        local_58 = piVar5[3];\n        local_54 = piVar5[4];\n        local_50 = piVar5[5];\n        local_64 = &local_5c;\n      }\n      else {\n        local_5c = piVar5[2];\n        local_64 = (int *)*piVar5;\n      }\n      local_60 = piVar5[1];\n      *(undefined1 *)(piVar5 + 2) = 0;\n      *piVar5 = (int)(piVar5 + 2);\n      piVar5[1] = 0;\n                    /* try { // try from 00196476 to 0019647a has its CatchHandler @ 001966a5 */\n      piVar5 = (int *)FUN_001f05c0(&local_64,local_94,local_90);\n      if ((int *)*piVar5 == piVar5 + 2) {\n        local_44 = piVar5[2];\n        local_40 = piVar5[3];\n        local_3c = piVar5[4];\n        local_38 = piVar5[5];\n        local_4c = &local_44;\n      }\n      else {\n        local_44 = piVar5[2];\n        local_4c = (int *)*piVar5;\n      }\n      local_48 = piVar5[1];\n      *(undefined1 *)(piVar5 + 2) = 0;\n      *piVar5 = (int)(piVar5 + 2);\n      piVar5[1] = 0;\n      if (local_48 == 0x7fffffff) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 00196692 to 00196696 has its CatchHandler @ 00196697 */\n        FUN_0022c7a0("basic_string::append");\n      }\n                    /* try { // try from 001964d2 to 001964d6 has its CatchHandler @ 00196697 */\n      piVar5 = (int *)FUN_001f05c0(&local_4c,&DAT_002a0f9f,1);\n      if ((int *)*piVar5 == piVar5 + 2) {\n        local_2c = piVar5[2];\n        local_28 = piVar5[3];\n        local_24 = piVar5[4];\n        local_20 = piVar5[5];\n        local_34 = &local_2c;\n      }\n      else {\n        local_2c = piVar5[2];\n        local_34 = (int *)*piVar5;\n      }\n      local_30 = piVar5[1];\n      *(undefined1 *)(piVar5 + 2) = 0;\n      *piVar5 = (int)(piVar5 + 2);\n      piVar5[1] = 0;\n                    /* try { // try from 00196534 to 00196538 has its CatchHandler @ 0019669e */\n      piVar5 = (int *)FUN_000b25f0(&local_34,uVar7,uVar6,uVar4,local_ac,local_a8,param_4);\n      if (local_34 != &local_2c) {\n        FUN_001e6db0(local_34);\n      }\n      if (local_4c != &local_44) {\n        FUN_001e6db0(local_4c);\n      }\n      if (local_64 != &local_5c) {\n        FUN_001e6db0(local_64);\n      }\n      if (local_7c != local_74) {\n        FUN_001e6db0(local_7c);\n      }\n    }" { (expression_statement "iVar1 = *(int *)(*(int *)(param_1 + 0x24) + 0x1c);" (assignment_expression "iVar1 = *(int *)(*(int *)(param_1 + 0x24) + 0x1c)" identifier = (pointer_expression "*(int *)(*(int *)(param_1 + 0x24) + 0x1c)" * (cast_expression "(int *)(*(int *)(param_1 + 0x24) + 0x1c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(param_1 + 0x24) + 0x1c)" ( (binary_expression "*(int *)(param_1 + 0x24) + 0x1c" (pointer_expression "*(int *)(param_1 + 0x24)" * (cast_expression "(int *)(param_1 + 0x24)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x24)" ( (binary_expression "param_1 + 0x24" identifier + number_literal) )))) + number_literal) ))))) ;) (expression_statement "uVar6 = local_a4;" (assignment_expression "uVar6 = local_a4" identifier = identifier) ;) (expression_statement "uVar4 = local_a0;" (assignment_expression "uVar4 = local_a0" identifier = identifier) ;) (expression_statement "uVar7 = local_b0;" (assignment_expression "uVar7 = local_b0" identifier = identifier) ;) (expression_statement "local_7c = local_74;" (assignment_expression "local_7c = local_74" identifier = identifier) ;) (expression_statement "FUN_000513a0(&local_7c,iVar1,*(int *)(*(int *)(param_1 + 0x24) + 0x20) + iVar1,0,local_a4,\n                   local_a0,local_b0,local_ac);" (call_expression "FUN_000513a0(&local_7c,iVar1,*(int *)(*(int *)(param_1 + 0x24) + 0x20) + iVar1,0,local_a4,\n                   local_a0,local_b0,local_ac)" identifier (argument_list "(&local_7c,iVar1,*(int *)(*(int *)(param_1 + 0x24) + 0x20) + iVar1,0,local_a4,\n                   local_a0,local_b0,local_ac)" ( (pointer_expression "&local_7c" & identifier) , identifier , (binary_expression "*(int *)(*(int *)(param_1 + 0x24) + 0x20) + iVar1" (pointer_expression "*(int *)(*(int *)(param_1 + 0x24) + 0x20)" * (cast_expression "(int *)(*(int *)(param_1 + 0x24) + 0x20)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(param_1 + 0x24) + 0x20)" ( (binary_expression "*(int *)(param_1 + 0x24) + 0x20" (pointer_expression "*(int *)(param_1 + 0x24)" * (cast_expression "(int *)(param_1 + 0x24)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x24)" ( (binary_expression "param_1 + 0x24" identifier + number_literal) )))) + number_literal) )))) + identifier) , number_literal , identifier , identifier , identifier , identifier ))) ;) (if_statement "if (local_78 == 0x7fffffff) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 00196681 to 00196685 has its CatchHandler @ 001966b3 */\n        FUN_0022c7a0("basic_string::append");\n      }" if (parenthesized_expression "(local_78 == 0x7fffffff)" ( (binary_expression "local_78 == 0x7fffffff" identifier == number_literal) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 00196681 to 00196685 has its CatchHandler @ 001966b3 */\n        FUN_0022c7a0("basic_string::append");\n      }" { comment comment (expression_statement "FUN_0022c7a0("basic_string::append");" (call_expression "FUN_0022c7a0("basic_string::append")" identifier (argument_list "("basic_string::append")" ( (string_literal ""basic_string::append"" " string_content ") ))) ;) })) comment (expression_statement "piVar5 = (int *)FUN_001f05c0(&local_7c,"(",1);" (assignment_expression "piVar5 = (int *)FUN_001f05c0(&local_7c,"(",1)" identifier = (cast_expression "(int *)FUN_001f05c0(&local_7c,"(",1)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_001f05c0(&local_7c,"(",1)" identifier (argument_list "(&local_7c,"(",1)" ( (pointer_expression "&local_7c" & identifier) , (string_literal ""("" " string_content ") , number_literal ))))) ;) (if_statement "if ((int *)*piVar5 == piVar5 + 2) {\n        local_5c = piVar5[2];\n        local_58 = piVar5[3];\n        local_54 = piVar5[4];\n        local_50 = piVar5[5];\n        local_64 = &local_5c;\n      }\n      else {\n        local_5c = piVar5[2];\n        local_64 = (int *)*piVar5;\n      }" if (parenthesized_expression "((int *)*piVar5 == piVar5 + 2)" ( (binary_expression "(int *)*piVar5 == piVar5 + 2" (cast_expression "(int *)*piVar5" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*piVar5" * identifier)) == (binary_expression "piVar5 + 2" identifier + number_literal)) )) (compound_statement "{\n        local_5c = piVar5[2];\n        local_58 = piVar5[3];\n        local_54 = piVar5[4];\n        local_50 = piVar5[5];\n        local_64 = &local_5c;\n      }" { (expression_statement "local_5c = piVar5[2];" (assignment_expression "local_5c = piVar5[2]" identifier = (subscript_expression "piVar5[2]" identifier [ number_literal ])) ;) (expression_statement "local_58 = piVar5[3];" (assignment_expression "local_58 = piVar5[3]" identifier = (subscript_expression "piVar5[3]" identifier [ number_literal ])) ;) (expression_statement "local_54 = piVar5[4];" (assignment_expression "local_54 = piVar5[4]" identifier = (subscript_expression "piVar5[4]" identifier [ number_literal ])) ;) (expression_statement "local_50 = piVar5[5];" (assignment_expression "local_50 = piVar5[5]" identifier = (subscript_expression "piVar5[5]" identifier [ number_literal ])) ;) (expression_statement "local_64 = &local_5c;" (assignment_expression "local_64 = &local_5c" identifier = (pointer_expression "&local_5c" & identifier)) ;) }) (else_clause "else {\n        local_5c = piVar5[2];\n        local_64 = (int *)*piVar5;\n      }" else (compound_statement "{\n        local_5c = piVar5[2];\n        local_64 = (int *)*piVar5;\n      }" { (expression_statement "local_5c = piVar5[2];" (assignment_expression "local_5c = piVar5[2]" identifier = (subscript_expression "piVar5[2]" identifier [ number_literal ])) ;) (expression_statement "local_64 = (int *)*piVar5;" (assignment_expression "local_64 = (int *)*piVar5" identifier = (cast_expression "(int *)*piVar5" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*piVar5" * identifier))) ;) }))) (expression_statement "local_60 = piVar5[1];" (assignment_expression "local_60 = piVar5[1]" identifier = (subscript_expression "piVar5[1]" identifier [ number_literal ])) ;) (expression_statement "*(undefined1 *)(piVar5 + 2) = 0;" (assignment_expression "*(undefined1 *)(piVar5 + 2) = 0" (pointer_expression "*(undefined1 *)(piVar5 + 2)" * (cast_expression "(undefined1 *)(piVar5 + 2)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar5 + 2)" ( (binary_expression "piVar5 + 2" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*piVar5 = (int)(piVar5 + 2);" (assignment_expression "*piVar5 = (int)(piVar5 + 2)" (pointer_expression "*piVar5" * identifier) = (cast_expression "(int)(piVar5 + 2)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(piVar5 + 2)" ( (binary_expression "piVar5 + 2" identifier + number_literal) )))) ;) (expression_statement "piVar5[1] = 0;" (assignment_expression "piVar5[1] = 0" (subscript_expression "piVar5[1]" identifier [ number_literal ]) = number_literal) ;) comment (expression_statement "piVar5 = (int *)FUN_001f05c0(&local_64,local_94,local_90);" (assignment_expression "piVar5 = (int *)FUN_001f05c0(&local_64,local_94,local_90)" identifier = (cast_expression "(int *)FUN_001f05c0(&local_64,local_94,local_90)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_001f05c0(&local_64,local_94,local_90)" identifier (argument_list "(&local_64,local_94,local_90)" ( (pointer_expression "&local_64" & identifier) , identifier , identifier ))))) ;) (if_statement "if ((int *)*piVar5 == piVar5 + 2) {\n        local_44 = piVar5[2];\n        local_40 = piVar5[3];\n        local_3c = piVar5[4];\n        local_38 = piVar5[5];\n        local_4c = &local_44;\n      }\n      else {\n        local_44 = piVar5[2];\n        local_4c = (int *)*piVar5;\n      }" if (parenthesized_expression "((int *)*piVar5 == piVar5 + 2)" ( (binary_expression "(int *)*piVar5 == piVar5 + 2" (cast_expression "(int *)*piVar5" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*piVar5" * identifier)) == (binary_expression "piVar5 + 2" identifier + number_literal)) )) (compound_statement "{\n        local_44 = piVar5[2];\n        local_40 = piVar5[3];\n        local_3c = piVar5[4];\n        local_38 = piVar5[5];\n        local_4c = &local_44;\n      }" { (expression_statement "local_44 = piVar5[2];" (assignment_expression "local_44 = piVar5[2]" identifier = (subscript_expression "piVar5[2]" identifier [ number_literal ])) ;) (expression_statement "local_40 = piVar5[3];" (assignment_expression "local_40 = piVar5[3]" identifier = (subscript_expression "piVar5[3]" identifier [ number_literal ])) ;) (expression_statement "local_3c = piVar5[4];" (assignment_expression "local_3c = piVar5[4]" identifier = (subscript_expression "piVar5[4]" identifier [ number_literal ])) ;) (expression_statement "local_38 = piVar5[5];" (assignment_expression "local_38 = piVar5[5]" identifier = (subscript_expression "piVar5[5]" identifier [ number_literal ])) ;) (expression_statement "local_4c = &local_44;" (assignment_expression "local_4c = &local_44" identifier = (pointer_expression "&local_44" & identifier)) ;) }) (else_clause "else {\n        local_44 = piVar5[2];\n        local_4c = (int *)*piVar5;\n      }" else (compound_statement "{\n        local_44 = piVar5[2];\n        local_4c = (int *)*piVar5;\n      }" { (expression_statement "local_44 = piVar5[2];" (assignment_expression "local_44 = piVar5[2]" identifier = (subscript_expression "piVar5[2]" identifier [ number_literal ])) ;) (expression_statement "local_4c = (int *)*piVar5;" (assignment_expression "local_4c = (int *)*piVar5" identifier = (cast_expression "(int *)*piVar5" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*piVar5" * identifier))) ;) }))) (expression_statement "local_48 = piVar5[1];" (assignment_expression "local_48 = piVar5[1]" identifier = (subscript_expression "piVar5[1]" identifier [ number_literal ])) ;) (expression_statement "*(undefined1 *)(piVar5 + 2) = 0;" (assignment_expression "*(undefined1 *)(piVar5 + 2) = 0" (pointer_expression "*(undefined1 *)(piVar5 + 2)" * (cast_expression "(undefined1 *)(piVar5 + 2)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar5 + 2)" ( (binary_expression "piVar5 + 2" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*piVar5 = (int)(piVar5 + 2);" (assignment_expression "*piVar5 = (int)(piVar5 + 2)" (pointer_expression "*piVar5" * identifier) = (cast_expression "(int)(piVar5 + 2)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(piVar5 + 2)" ( (binary_expression "piVar5 + 2" identifier + number_literal) )))) ;) (expression_statement "piVar5[1] = 0;" (assignment_expression "piVar5[1] = 0" (subscript_expression "piVar5[1]" identifier [ number_literal ]) = number_literal) ;) (if_statement "if (local_48 == 0x7fffffff) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 00196692 to 00196696 has its CatchHandler @ 00196697 */\n        FUN_0022c7a0("basic_string::append");\n      }" if (parenthesized_expression "(local_48 == 0x7fffffff)" ( (binary_expression "local_48 == 0x7fffffff" identifier == number_literal) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 00196692 to 00196696 has its CatchHandler @ 00196697 */\n        FUN_0022c7a0("basic_string::append");\n      }" { comment comment (expression_statement "FUN_0022c7a0("basic_string::append");" (call_expression "FUN_0022c7a0("basic_string::append")" identifier (argument_list "("basic_string::append")" ( (string_literal ""basic_string::append"" " string_content ") ))) ;) })) comment (expression_statement "piVar5 = (int *)FUN_001f05c0(&local_4c,&DAT_002a0f9f,1);" (assignment_expression "piVar5 = (int *)FUN_001f05c0(&local_4c,&DAT_002a0f9f,1)" identifier = (cast_expression "(int *)FUN_001f05c0(&local_4c,&DAT_002a0f9f,1)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_001f05c0(&local_4c,&DAT_002a0f9f,1)" identifier (argument_list "(&local_4c,&DAT_002a0f9f,1)" ( (pointer_expression "&local_4c" & identifier) , (pointer_expression "&DAT_002a0f9f" & identifier) , number_literal ))))) ;) (if_statement "if ((int *)*piVar5 == piVar5 + 2) {\n        local_2c = piVar5[2];\n        local_28 = piVar5[3];\n        local_24 = piVar5[4];\n        local_20 = piVar5[5];\n        local_34 = &local_2c;\n      }\n      else {\n        local_2c = piVar5[2];\n        local_34 = (int *)*piVar5;\n      }" if (parenthesized_expression "((int *)*piVar5 == piVar5 + 2)" ( (binary_expression "(int *)*piVar5 == piVar5 + 2" (cast_expression "(int *)*piVar5" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*piVar5" * identifier)) == (binary_expression "piVar5 + 2" identifier + number_literal)) )) (compound_statement "{\n        local_2c = piVar5[2];\n        local_28 = piVar5[3];\n        local_24 = piVar5[4];\n        local_20 = piVar5[5];\n        local_34 = &local_2c;\n      }" { (expression_statement "local_2c = piVar5[2];" (assignment_expression "local_2c = piVar5[2]" identifier = (subscript_expression "piVar5[2]" identifier [ number_literal ])) ;) (expression_statement "local_28 = piVar5[3];" (assignment_expression "local_28 = piVar5[3]" identifier = (subscript_expression "piVar5[3]" identifier [ number_literal ])) ;) (expression_statement "local_24 = piVar5[4];" (assignment_expression "local_24 = piVar5[4]" identifier = (subscript_expression "piVar5[4]" identifier [ number_literal ])) ;) (expression_statement "local_20 = piVar5[5];" (assignment_expression "local_20 = piVar5[5]" identifier = (subscript_expression "piVar5[5]" identifier [ number_literal ])) ;) (expression_statement "local_34 = &local_2c;" (assignment_expression "local_34 = &local_2c" identifier = (pointer_expression "&local_2c" & identifier)) ;) }) (else_clause "else {\n        local_2c = piVar5[2];\n        local_34 = (int *)*piVar5;\n      }" else (compound_statement "{\n        local_2c = piVar5[2];\n        local_34 = (int *)*piVar5;\n      }" { (expression_statement "local_2c = piVar5[2];" (assignment_expression "local_2c = piVar5[2]" identifier = (subscript_expression "piVar5[2]" identifier [ number_literal ])) ;) (expression_statement "local_34 = (int *)*piVar5;" (assignment_expression "local_34 = (int *)*piVar5" identifier = (cast_expression "(int *)*piVar5" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*piVar5" * identifier))) ;) }))) (expression_statement "local_30 = piVar5[1];" (assignment_expression "local_30 = piVar5[1]" identifier = (subscript_expression "piVar5[1]" identifier [ number_literal ])) ;) (expression_statement "*(undefined1 *)(piVar5 + 2) = 0;" (assignment_expression "*(undefined1 *)(piVar5 + 2) = 0" (pointer_expression "*(undefined1 *)(piVar5 + 2)" * (cast_expression "(undefined1 *)(piVar5 + 2)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar5 + 2)" ( (binary_expression "piVar5 + 2" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*piVar5 = (int)(piVar5 + 2);" (assignment_expression "*piVar5 = (int)(piVar5 + 2)" (pointer_expression "*piVar5" * identifier) = (cast_expression "(int)(piVar5 + 2)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(piVar5 + 2)" ( (binary_expression "piVar5 + 2" identifier + number_literal) )))) ;) (expression_statement "piVar5[1] = 0;" (assignment_expression "piVar5[1] = 0" (subscript_expression "piVar5[1]" identifier [ number_literal ]) = number_literal) ;) comment (expression_statement "piVar5 = (int *)FUN_000b25f0(&local_34,uVar7,uVar6,uVar4,local_ac,local_a8,param_4);" (assignment_expression "piVar5 = (int *)FUN_000b25f0(&local_34,uVar7,uVar6,uVar4,local_ac,local_a8,param_4)" identifier = (cast_expression "(int *)FUN_000b25f0(&local_34,uVar7,uVar6,uVar4,local_ac,local_a8,param_4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_000b25f0(&local_34,uVar7,uVar6,uVar4,local_ac,local_a8,param_4)" identifier (argument_list "(&local_34,uVar7,uVar6,uVar4,local_ac,local_a8,param_4)" ( (pointer_expression "&local_34" & identifier) , identifier , identifier , identifier , identifier , identifier , identifier ))))) ;) (if_statement "if (local_34 != &local_2c) {\n        FUN_001e6db0(local_34);\n      }" if (parenthesized_expression "(local_34 != &local_2c)" ( (binary_expression "local_34 != &local_2c" identifier != (pointer_expression "&local_2c" & identifier)) )) (compound_statement "{\n        FUN_001e6db0(local_34);\n      }" { (expression_statement "FUN_001e6db0(local_34);" (call_expression "FUN_001e6db0(local_34)" identifier (argument_list "(local_34)" ( identifier ))) ;) })) (if_statement "if (local_4c != &local_44) {\n        FUN_001e6db0(local_4c);\n      }" if (parenthesized_expression "(local_4c != &local_44)" ( (binary_expression "local_4c != &local_44" identifier != (pointer_expression "&local_44" & identifier)) )) (compound_statement "{\n        FUN_001e6db0(local_4c);\n      }" { (expression_statement "FUN_001e6db0(local_4c);" (call_expression "FUN_001e6db0(local_4c)" identifier (argument_list "(local_4c)" ( identifier ))) ;) })) (if_statement "if (local_64 != &local_5c) {\n        FUN_001e6db0(local_64);\n      }" if (parenthesized_expression "(local_64 != &local_5c)" ( (binary_expression "local_64 != &local_5c" identifier != (pointer_expression "&local_5c" & identifier)) )) (compound_statement "{\n        FUN_001e6db0(local_64);\n      }" { (expression_statement "FUN_001e6db0(local_64);" (call_expression "FUN_001e6db0(local_64)" identifier (argument_list "(local_64)" ( identifier ))) ;) })) (if_statement "if (local_7c != local_74) {\n        FUN_001e6db0(local_7c);\n      }" if (parenthesized_expression "(local_7c != local_74)" ( (binary_expression "local_7c != local_74" identifier != identifier) )) (compound_statement "{\n        FUN_001e6db0(local_7c);\n      }" { (expression_statement "FUN_001e6db0(local_7c);" (call_expression "FUN_001e6db0(local_7c)" identifier (argument_list "(local_7c)" ( identifier ))) ;) })) })) (if_statement "if (*(int *)(DAT_0038f378 + 8) == 0) {\n                    /* WARNING: Subroutine does not return */\n      FUN_00069d00("../../gold/parameters.h",0x5c,"options",0);\n    }" if (parenthesized_expression "(*(int *)(DAT_0038f378 + 8) == 0)" ( (binary_expression "*(int *)(DAT_0038f378 + 8) == 0" (pointer_expression "*(int *)(DAT_0038f378 + 8)" * (cast_expression "(int *)(DAT_0038f378 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(DAT_0038f378 + 8)" ( (binary_expression "DAT_0038f378 + 8" identifier + number_literal) )))) == number_literal) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n      FUN_00069d00("../../gold/parameters.h",0x5c,"options",0);\n    }" { comment (expression_statement "FUN_00069d00("../../gold/parameters.h",0x5c,"options",0);" (call_expression "FUN_00069d00("../../gold/parameters.h",0x5c,"options",0)" identifier (argument_list "("../../gold/parameters.h",0x5c,"options",0)" ( (string_literal ""../../gold/parameters.h"" " string_content ") , number_literal , (string_literal ""options"" " string_content ") , number_literal ))) ;) })) (expression_statement "iVar1 = *(int *)(*(int *)(DAT_0038f378 + 8) + 0x593c);" (assignment_expression "iVar1 = *(int *)(*(int *)(DAT_0038f378 + 8) + 0x593c)" identifier = (pointer_expression "*(int *)(*(int *)(DAT_0038f378 + 8) + 0x593c)" * (cast_expression "(int *)(*(int *)(DAT_0038f378 + 8) + 0x593c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(DAT_0038f378 + 8) + 0x593c)" ( (binary_expression "*(int *)(DAT_0038f378 + 8) + 0x593c" (pointer_expression "*(int *)(DAT_0038f378 + 8)" * (cast_expression "(int *)(DAT_0038f378 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(DAT_0038f378 + 8)" ( (binary_expression "DAT_0038f378 + 8" identifier + number_literal) )))) + number_literal) ))))) ;) (if_statement "if ((iVar1 != 0) &&\n       (piVar3 = (int *)FUN_0013d200(iVar1,local_b0,local_a4,local_a0,local_9c,local_98,piVar5),\n       piVar3 != (int *)0x0)) {\n      if (piVar5 != (int *)0x0) {\n        (**(code **)(*piVar5 + 4))(piVar5);\n      }\n      goto LAB_0019637f;\n    }" if (parenthesized_expression "((iVar1 != 0) &&\n       (piVar3 = (int *)FUN_0013d200(iVar1,local_b0,local_a4,local_a0,local_9c,local_98,piVar5),\n       piVar3 != (int *)0x0))" ( (binary_expression "(iVar1 != 0) &&\n       (piVar3 = (int *)FUN_0013d200(iVar1,local_b0,local_a4,local_a0,local_9c,local_98,piVar5),\n       piVar3 != (int *)0x0)" (parenthesized_expression "(iVar1 != 0)" ( (binary_expression "iVar1 != 0" identifier != number_literal) )) && (parenthesized_expression "(piVar3 = (int *)FUN_0013d200(iVar1,local_b0,local_a4,local_a0,local_9c,local_98,piVar5),\n       piVar3 != (int *)0x0)" ( (comma_expression "piVar3 = (int *)FUN_0013d200(iVar1,local_b0,local_a4,local_a0,local_9c,local_98,piVar5),\n       piVar3 != (int *)0x0" (assignment_expression "piVar3 = (int *)FUN_0013d200(iVar1,local_b0,local_a4,local_a0,local_9c,local_98,piVar5)" identifier = (cast_expression "(int *)FUN_0013d200(iVar1,local_b0,local_a4,local_a0,local_9c,local_98,piVar5)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_0013d200(iVar1,local_b0,local_a4,local_a0,local_9c,local_98,piVar5)" identifier (argument_list "(iVar1,local_b0,local_a4,local_a0,local_9c,local_98,piVar5)" ( identifier , identifier , identifier , identifier , identifier , identifier , identifier ))))) , (binary_expression "piVar3 != (int *)0x0" identifier != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal))) ))) )) (compound_statement "{\n      if (piVar5 != (int *)0x0) {\n        (**(code **)(*piVar5 + 4))(piVar5);\n      }\n      goto LAB_0019637f;\n    }" { (if_statement "if (piVar5 != (int *)0x0) {\n        (**(code **)(*piVar5 + 4))(piVar5);\n      }" if (parenthesized_expression "(piVar5 != (int *)0x0)" ( (binary_expression "piVar5 != (int *)0x0" identifier != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        (**(code **)(*piVar5 + 4))(piVar5);\n      }" { (expression_statement "(**(code **)(*piVar5 + 4))(piVar5);" (call_expression "(**(code **)(*piVar5 + 4))(piVar5)" (parenthesized_expression "(**(code **)(*piVar5 + 4))" ( (pointer_expression "**(code **)(*piVar5 + 4)" * (pointer_expression "*(code **)(*piVar5 + 4)" * (cast_expression "(code **)(*piVar5 + 4)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*piVar5 + 4)" ( (binary_expression "*piVar5 + 4" (pointer_expression "*piVar5" * identifier) + number_literal) ))))) )) (argument_list "(piVar5)" ( identifier ))) ;) })) (goto_statement "goto LAB_0019637f;" goto statement_identifier ;) })) (if_statement "if (cVar2 != '\0') {\n      piVar3 = piVar5;\n      if (piVar5 != (int *)0x0) {\n        *(byte *)(piVar5 + 0xb) =\n             *(byte *)(piVar5 + 0xb) & 0xef | (byte)((*(byte *)(param_1 + 0xd4) & 1) << 4);\n      }\n      goto LAB_0019637f;\n    }" if (parenthesized_expression "(cVar2 != '\0')" ( (binary_expression "cVar2 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n      piVar3 = piVar5;\n      if (piVar5 != (int *)0x0) {\n        *(byte *)(piVar5 + 0xb) =\n             *(byte *)(piVar5 + 0xb) & 0xef | (byte)((*(byte *)(param_1 + 0xd4) & 1) << 4);\n      }\n      goto LAB_0019637f;\n    }" { (expression_statement "piVar3 = piVar5;" (assignment_expression "piVar3 = piVar5" identifier = identifier) ;) (if_statement "if (piVar5 != (int *)0x0) {\n        *(byte *)(piVar5 + 0xb) =\n             *(byte *)(piVar5 + 0xb) & 0xef | (byte)((*(byte *)(param_1 + 0xd4) & 1) << 4);\n      }" if (parenthesized_expression "(piVar5 != (int *)0x0)" ( (binary_expression "piVar5 != (int *)0x0" identifier != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        *(byte *)(piVar5 + 0xb) =\n             *(byte *)(piVar5 + 0xb) & 0xef | (byte)((*(byte *)(param_1 + 0xd4) & 1) << 4);\n      }" { (expression_statement "*(byte *)(piVar5 + 0xb) =\n             *(byte *)(piVar5 + 0xb) & 0xef | (byte)((*(byte *)(param_1 + 0xd4) & 1) << 4);" (assignment_expression "*(byte *)(piVar5 + 0xb) =\n             *(byte *)(piVar5 + 0xb) & 0xef | (byte)((*(byte *)(param_1 + 0xd4) & 1) << 4)" (pointer_expression "*(byte *)(piVar5 + 0xb)" * (cast_expression "(byte *)(piVar5 + 0xb)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar5 + 0xb)" ( (binary_expression "piVar5 + 0xb" identifier + number_literal) )))) = (binary_expression "*(byte *)(piVar5 + 0xb) & 0xef | (byte)((*(byte *)(param_1 + 0xd4) & 1) << 4)" (binary_expression "*(byte *)(piVar5 + 0xb) & 0xef" (pointer_expression "*(byte *)(piVar5 + 0xb)" * (cast_expression "(byte *)(piVar5 + 0xb)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar5 + 0xb)" ( (binary_expression "piVar5 + 0xb" identifier + number_literal) )))) & number_literal) | (call_expression "(byte)((*(byte *)(param_1 + 0xd4) & 1) << 4)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "((*(byte *)(param_1 + 0xd4) & 1) << 4)" ( (binary_expression "(*(byte *)(param_1 + 0xd4) & 1) << 4" (parenthesized_expression "(*(byte *)(param_1 + 0xd4) & 1)" ( (binary_expression "*(byte *)(param_1 + 0xd4) & 1" (pointer_expression "*(byte *)(param_1 + 0xd4)" * (cast_expression "(byte *)(param_1 + 0xd4)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xd4)" ( (binary_expression "param_1 + 0xd4" identifier + number_literal) )))) & number_literal) )) << number_literal) ))))) ;) })) (goto_statement "goto LAB_0019637f;" goto statement_identifier ;) })) (expression_statement "uVar6 = *(undefined4 *)(param_1 + 0xc);" (assignment_expression "uVar6 = *(undefined4 *)(param_1 + 0xc)" identifier = (pointer_expression "*(undefined4 *)(param_1 + 0xc)" * (cast_expression "(undefined4 *)(param_1 + 0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xc)" ( (binary_expression "param_1 + 0xc" identifier + number_literal) ))))) ;) (expression_statement "uVar4 = gettext("%s: member at %zu is not an ELF object");" (assignment_expression "uVar4 = gettext("%s: member at %zu is not an ELF object")" identifier = (call_expression "gettext("%s: member at %zu is not an ELF object")" identifier (argument_list "("%s: member at %zu is not an ELF object")" ( (string_literal ""%s: member at %zu is not an ELF object"" " string_content ") )))) ;) comment (expression_statement "FUN_000654b0(uVar4,uVar6,param_2);" (call_expression "FUN_000654b0(uVar4,uVar6,param_2)" identifier (argument_list "(uVar4,uVar6,param_2)" ( identifier , identifier , identifier ))) ;) })) (expression_statement "piVar3 = (int *)0x0;" (assignment_expression "piVar3 = (int *)0x0" identifier = (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (labeled_statement "LAB_0019637f:\n  if (local_94 != local_8c) {\n    FUN_001e6db0(local_94);\n  }" statement_identifier : (if_statement "if (local_94 != local_8c) {\n    FUN_001e6db0(local_94);\n  }" if (parenthesized_expression "(local_94 != local_8c)" ( (binary_expression "local_94 != local_8c" identifier != identifier) )) (compound_statement "{\n    FUN_001e6db0(local_94);\n  }" { (expression_statement "FUN_001e6db0(local_94);" (call_expression "FUN_001e6db0(local_94)" identifier (argument_list "(local_94)" ( identifier ))) ;) }))) (return_statement "return piVar3;" return identifier ;) })))
(translation_unit "/* WARNING: Function: __x86.get_pc_thunk.si replaced with injection: get_pc_thunk_si */\n/* WARNING: Enum "DT": Some values do not have unique names */\n/* DWARF original prototype: Object * get_elf_object_for_member(Archive * this, off_t off, bool *\n   punconfigured) */\n\nObject * __thiscall\ngold::Archive::get_elf_object_for_member(Archive *this,off_t off,bool *punconfigured)\n\n{\n  Plugin_manager *this_00;\n  pointer pcVar1;\n  Input_file *name;\n  Input_file *input_file_00;\n  undefined4 uVar2;\n  bool bVar3;\n  Pluginobj *pPVar4;\n  int *piVar5;\n  char *format;\n  Pluginobj *elf_object;\n  bool *punconfigured_00;\n  Input_file *input_file;\n  uchar *ehdr;\n  int read_size;\n  off_t memoff;\n  off_t memsize;\n  string member_name;\n  basic_string<char,_std::char_traits<char>,_std::allocator<char>_> local_7c;\n  int *local_64;\n  int local_60;\n  int local_5c;\n  int local_58;\n  int local_54;\n  int local_50;\n  int *local_4c;\n  int local_48;\n  int local_44;\n  int local_40;\n  int local_3c;\n  int local_38;\n  int *local_34;\n  int local_30;\n  int local_2c;\n  int local_28;\n  int local_24;\n  int local_20;\n  \n  if (punconfigured != (bool *)0x0) {\n    *punconfigured = false;\n  }\n  member_name._M_string_length = 0;\n  member_name.field_2._M_local_buf[0] = '\0';\n  member_name._M_dataplus._M_p = (pointer)&member_name.field_2;\n                    /* try { // try from 00196297 to 00196404 has its CatchHandler @ 001966ac */\n  bVar3 = get_file_and_offset(this,off,&input_file,&memoff,&memsize,&member_name);\n  if (bVar3) {\n    bVar3 = is_elf_object(input_file,CONCAT44(memoff._4_4_,(Input_file *)memoff),&ehdr,&read_size);\n    uVar2 = memoff._4_4_;\n    input_file_00 = (Input_file *)memoff;\n    name = input_file;\n    elf_object = (Pluginobj *)0x0;\n    if (bVar3) {\n      pcVar1 = (this->input_file_->file_).name_._M_dataplus._M_p;\n      punconfigured_00 = (bool *)0x0;\n      local_7c._M_dataplus._M_p = (pointer)&local_7c.field_2;\n      std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>::\n      _M_construct<char*>(&local_7c,pcVar1,\n                          pcVar1 + (this->input_file_->file_).name_._M_string_length);\n      if (local_7c._M_string_length == 0x7fffffff) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 00196681 to 00196685 has its CatchHandler @ 001966b3 */\n        std::__throw_length_error("basic_string::append");\n      }\n                    /* try { // try from 00196424 to 00196428 has its CatchHandler @ 001966b3 */\n      piVar5 = (int *)std::string::_M_append((string *)&local_7c,"(",1);\n      if ((int *)*piVar5 == piVar5 + 2) {\n        local_5c = piVar5[2];\n        local_58 = piVar5[3];\n        local_54 = piVar5[4];\n        local_50 = piVar5[5];\n        local_64 = &local_5c;\n      }\n      else {\n        local_5c = piVar5[2];\n        local_64 = (int *)*piVar5;\n      }\n      local_60 = piVar5[1];\n      *(undefined1 *)(piVar5 + 2) = 0;\n      *piVar5 = (int)(piVar5 + 2);\n      piVar5[1] = 0;\n                    /* try { // try from 00196476 to 0019647a has its CatchHandler @ 001966a5 */\n      piVar5 = (int *)std::string::_M_append\n                                ((string *)&local_64,member_name._M_dataplus._M_p,\n                                 member_name._M_string_length);\n      if ((int *)*piVar5 == piVar5 + 2) {\n        local_44 = piVar5[2];\n        local_40 = piVar5[3];\n        local_3c = piVar5[4];\n        local_38 = piVar5[5];\n        local_4c = &local_44;\n      }\n      else {\n        local_44 = piVar5[2];\n        local_4c = (int *)*piVar5;\n      }\n      local_48 = piVar5[1];\n      *(undefined1 *)(piVar5 + 2) = 0;\n      *piVar5 = (int)(piVar5 + 2);\n      piVar5[1] = 0;\n      if (local_48 == 0x7fffffff) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 00196692 to 00196696 has its CatchHandler @ 00196697 */\n        std::__throw_length_error("basic_string::append");\n      }\n                    /* try { // try from 001964d2 to 001964d6 has its CatchHandler @ 00196697 */\n      piVar5 = (int *)std::string::_M_append((string *)&local_4c,")",1);\n      if ((int *)*piVar5 == piVar5 + 2) {\n        local_2c = piVar5[2];\n        local_28 = piVar5[3];\n        local_24 = piVar5[4];\n        local_20 = piVar5[5];\n        local_34 = &local_2c;\n      }\n      else {\n        local_2c = piVar5[2];\n        local_34 = (int *)*piVar5;\n      }\n      local_30 = piVar5[1];\n      *(undefined1 *)(piVar5 + 2) = 0;\n      *piVar5 = (int)(piVar5 + 2);\n      piVar5[1] = 0;\n                    /* try { // try from 00196534 to 00196538 has its CatchHandler @ 0019669e */\n      elf_object = (Pluginobj *)\n                   make_elf_object((gold *)&local_34,(string *)name,input_file_00,\n                                   CONCAT44(ehdr,uVar2),(uchar *)read_size,\n                                   (section_offset_type)punconfigured,punconfigured_00);\n      if (local_34 != &local_2c) {\n        operator_delete(local_34);\n      }\n      if (local_4c != &local_44) {\n        operator_delete(local_4c);\n      }\n      if (local_64 != &local_5c) {\n        operator_delete(local_64);\n      }\n      if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n           *)local_7c._M_dataplus._M_p != &local_7c.field_2) {\n        operator_delete(local_7c._M_dataplus._M_p);\n      }\n    }\n    if (parameters->options_ == (General_options *)0x0) {\n                    /* WARNING: Subroutine does not return */\n      do_gold_unreachable("../../gold/parameters.h",0x5c,"options");\n    }\n    this_00 = parameters->options_->plugins_;\n    if ((this_00 != (Plugin_manager *)0x0) &&\n       (pPVar4 = Plugin_manager::claim_file\n                           (this_00,input_file,CONCAT44(memoff._4_4_,(Input_file *)memoff),\n                            CONCAT44(memsize._4_4_,(undefined4)memsize),&elf_object->super_Object),\n       pPVar4 != (Pluginobj *)0x0)) {\n      if (elf_object != (Pluginobj *)0x0) {\n        (*(elf_object->super_Object)._vptr_Object[1])(elf_object);\n      }\n      goto LAB_0019637f;\n    }\n    if (bVar3) {\n      pPVar4 = elf_object;\n      if (elf_object != (Pluginobj *)0x0) {\n        (elf_object->super_Object).field_0x2c =\n             (elf_object->super_Object).field_0x2c & 0xef | (byte)((this->no_export_ & 1) << 4);\n      }\n      goto LAB_0019637f;\n    }\n    pcVar1 = (this->name_)._M_dataplus._M_p;\n    format = (char *)gettext("%s: member at %zu is not an ELF object");\n                    /* try { // try from 001965d2 to 00196674 has its CatchHandler @ 001966ac */\n    gold_error(format,pcVar1,(undefined4)off);\n  }\n  pPVar4 = (Pluginobj *)0x0;\nLAB_0019637f:\n  if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n       *)member_name._M_dataplus._M_p != &member_name.field_2) {\n    operator_delete(member_name._M_dataplus._M_p);\n  }\n  return &pPVar4->super_Object;\n}\n\n" comment comment comment (ERROR "Object * __thiscall\ngold::Archive::get_elf_object_for_member(Archive *this,off_t off,bool *punconfigured)" (binary_expression "Object * __thiscall\ngold::Archive::get_elf_object_for_member(Archive *this" (binary_expression "Object * __thiscall" identifier * identifier) (ERROR "gold::Archive::get_elf_object_for_member(Archive" identifier : : identifier : : identifier ( identifier) * identifier) , type_identifier identifier , (ERROR "bool" identifier) (pointer_declarator "*punconfigured" * identifier) )) (compound_statement "{\n  Plugin_manager *this_00;\n  pointer pcVar1;\n  Input_file *name;\n  Input_file *input_file_00;\n  undefined4 uVar2;\n  bool bVar3;\n  Pluginobj *pPVar4;\n  int *piVar5;\n  char *format;\n  Pluginobj *elf_object;\n  bool *punconfigured_00;\n  Input_file *input_file;\n  uchar *ehdr;\n  int read_size;\n  off_t memoff;\n  off_t memsize;\n  string member_name;\n  basic_string<char,_std::char_traits<char>,_std::allocator<char>_> local_7c;\n  int *local_64;\n  int local_60;\n  int local_5c;\n  int local_58;\n  int local_54;\n  int local_50;\n  int *local_4c;\n  int local_48;\n  int local_44;\n  int local_40;\n  int local_3c;\n  int local_38;\n  int *local_34;\n  int local_30;\n  int local_2c;\n  int local_28;\n  int local_24;\n  int local_20;\n  \n  if (punconfigured != (bool *)0x0) {\n    *punconfigured = false;\n  }\n  member_name._M_string_length = 0;\n  member_name.field_2._M_local_buf[0] = '\0';\n  member_name._M_dataplus._M_p = (pointer)&member_name.field_2;\n                    /* try { // try from 00196297 to 00196404 has its CatchHandler @ 001966ac */\n  bVar3 = get_file_and_offset(this,off,&input_file,&memoff,&memsize,&member_name);\n  if (bVar3) {\n    bVar3 = is_elf_object(input_file,CONCAT44(memoff._4_4_,(Input_file *)memoff),&ehdr,&read_size);\n    uVar2 = memoff._4_4_;\n    input_file_00 = (Input_file *)memoff;\n    name = input_file;\n    elf_object = (Pluginobj *)0x0;\n    if (bVar3) {\n      pcVar1 = (this->input_file_->file_).name_._M_dataplus._M_p;\n      punconfigured_00 = (bool *)0x0;\n      local_7c._M_dataplus._M_p = (pointer)&local_7c.field_2;\n      std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>::\n      _M_construct<char*>(&local_7c,pcVar1,\n                          pcVar1 + (this->input_file_->file_).name_._M_string_length);\n      if (local_7c._M_string_length == 0x7fffffff) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 00196681 to 00196685 has its CatchHandler @ 001966b3 */\n        std::__throw_length_error("basic_string::append");\n      }\n                    /* try { // try from 00196424 to 00196428 has its CatchHandler @ 001966b3 */\n      piVar5 = (int *)std::string::_M_append((string *)&local_7c,"(",1);\n      if ((int *)*piVar5 == piVar5 + 2) {\n        local_5c = piVar5[2];\n        local_58 = piVar5[3];\n        local_54 = piVar5[4];\n        local_50 = piVar5[5];\n        local_64 = &local_5c;\n      }\n      else {\n        local_5c = piVar5[2];\n        local_64 = (int *)*piVar5;\n      }\n      local_60 = piVar5[1];\n      *(undefined1 *)(piVar5 + 2) = 0;\n      *piVar5 = (int)(piVar5 + 2);\n      piVar5[1] = 0;\n                    /* try { // try from 00196476 to 0019647a has its CatchHandler @ 001966a5 */\n      piVar5 = (int *)std::string::_M_append\n                                ((string *)&local_64,member_name._M_dataplus._M_p,\n                                 member_name._M_string_length);\n      if ((int *)*piVar5 == piVar5 + 2) {\n        local_44 = piVar5[2];\n        local_40 = piVar5[3];\n        local_3c = piVar5[4];\n        local_38 = piVar5[5];\n        local_4c = &local_44;\n      }\n      else {\n        local_44 = piVar5[2];\n        local_4c = (int *)*piVar5;\n      }\n      local_48 = piVar5[1];\n      *(undefined1 *)(piVar5 + 2) = 0;\n      *piVar5 = (int)(piVar5 + 2);\n      piVar5[1] = 0;\n      if (local_48 == 0x7fffffff) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 00196692 to 00196696 has its CatchHandler @ 00196697 */\n        std::__throw_length_error("basic_string::append");\n      }\n                    /* try { // try from 001964d2 to 001964d6 has its CatchHandler @ 00196697 */\n      piVar5 = (int *)std::string::_M_append((string *)&local_4c,")",1);\n      if ((int *)*piVar5 == piVar5 + 2) {\n        local_2c = piVar5[2];\n        local_28 = piVar5[3];\n        local_24 = piVar5[4];\n        local_20 = piVar5[5];\n        local_34 = &local_2c;\n      }\n      else {\n        local_2c = piVar5[2];\n        local_34 = (int *)*piVar5;\n      }\n      local_30 = piVar5[1];\n      *(undefined1 *)(piVar5 + 2) = 0;\n      *piVar5 = (int)(piVar5 + 2);\n      piVar5[1] = 0;\n                    /* try { // try from 00196534 to 00196538 has its CatchHandler @ 0019669e */\n      elf_object = (Pluginobj *)\n                   make_elf_object((gold *)&local_34,(string *)name,input_file_00,\n                                   CONCAT44(ehdr,uVar2),(uchar *)read_size,\n                                   (section_offset_type)punconfigured,punconfigured_00);\n      if (local_34 != &local_2c) {\n        operator_delete(local_34);\n      }\n      if (local_4c != &local_44) {\n        operator_delete(local_4c);\n      }\n      if (local_64 != &local_5c) {\n        operator_delete(local_64);\n      }\n      if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n           *)local_7c._M_dataplus._M_p != &local_7c.field_2) {\n        operator_delete(local_7c._M_dataplus._M_p);\n      }\n    }\n    if (parameters->options_ == (General_options *)0x0) {\n                    /* WARNING: Subroutine does not return */\n      do_gold_unreachable("../../gold/parameters.h",0x5c,"options");\n    }\n    this_00 = parameters->options_->plugins_;\n    if ((this_00 != (Plugin_manager *)0x0) &&\n       (pPVar4 = Plugin_manager::claim_file\n                           (this_00,input_file,CONCAT44(memoff._4_4_,(Input_file *)memoff),\n                            CONCAT44(memsize._4_4_,(undefined4)memsize),&elf_object->super_Object),\n       pPVar4 != (Pluginobj *)0x0)) {\n      if (elf_object != (Pluginobj *)0x0) {\n        (*(elf_object->super_Object)._vptr_Object[1])(elf_object);\n      }\n      goto LAB_0019637f;\n    }\n    if (bVar3) {\n      pPVar4 = elf_object;\n      if (elf_object != (Pluginobj *)0x0) {\n        (elf_object->super_Object).field_0x2c =\n             (elf_object->super_Object).field_0x2c & 0xef | (byte)((this->no_export_ & 1) << 4);\n      }\n      goto LAB_0019637f;\n    }\n    pcVar1 = (this->name_)._M_dataplus._M_p;\n    format = (char *)gettext("%s: member at %zu is not an ELF object");\n                    /* try { // try from 001965d2 to 00196674 has its CatchHandler @ 001966ac */\n    gold_error(format,pcVar1,(undefined4)off);\n  }\n  pPVar4 = (Pluginobj *)0x0;\nLAB_0019637f:\n  if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n       *)member_name._M_dataplus._M_p != &member_name.field_2) {\n    operator_delete(member_name._M_dataplus._M_p);\n  }\n  return &pPVar4->super_Object;\n}" { (declaration "Plugin_manager *this_00;" type_identifier (pointer_declarator "*this_00" * identifier) ;) (declaration "pointer pcVar1;" type_identifier identifier ;) (declaration "Input_file *name;" type_identifier (pointer_declarator "*name" * identifier) ;) (declaration "Input_file *input_file_00;" type_identifier (pointer_declarator "*input_file_00" * identifier) ;) (declaration "undefined4 uVar2;" type_identifier identifier ;) (declaration "bool bVar3;" primitive_type identifier ;) (declaration "Pluginobj *pPVar4;" type_identifier (pointer_declarator "*pPVar4" * identifier) ;) (declaration "int *piVar5;" primitive_type (pointer_declarator "*piVar5" * identifier) ;) (declaration "char *format;" primitive_type (pointer_declarator "*format" * identifier) ;) (declaration "Pluginobj *elf_object;" type_identifier (pointer_declarator "*elf_object" * identifier) ;) (declaration "bool *punconfigured_00;" primitive_type (pointer_declarator "*punconfigured_00" * identifier) ;) (declaration "Input_file *input_file;" type_identifier (pointer_declarator "*input_file" * identifier) ;) (declaration "uchar *ehdr;" type_identifier (pointer_declarator "*ehdr" * identifier) ;) (declaration "int read_size;" primitive_type identifier ;) (declaration "off_t memoff;" type_identifier identifier ;) (declaration "off_t memsize;" type_identifier identifier ;) (declaration "string member_name;" type_identifier identifier ;) (ERROR "basic_string<char,_std::char_traits<char>,_std::" (comma_expression "basic_string<char,_std" (binary_expression "basic_string<char" identifier < identifier) , identifier) : : (binary_expression "char_traits<char>,_std" (binary_expression "char_traits<char" identifier < identifier) > (ERROR "," ,) identifier) : :) (expression_statement "allocator<char>_> local_7c;" (binary_expression "allocator<char>_> local_7c" (binary_expression "allocator<char>_" (binary_expression "allocator<char" identifier < identifier) > identifier) > identifier) ;) (declaration "int *local_64;" primitive_type (pointer_declarator "*local_64" * identifier) ;) (declaration "int local_60;" primitive_type identifier ;) (declaration "int local_5c;" primitive_type identifier ;) (declaration "int local_58;" primitive_type identifier ;) (declaration "int local_54;" primitive_type identifier ;) (declaration "int local_50;" primitive_type identifier ;) (declaration "int *local_4c;" primitive_type (pointer_declarator "*local_4c" * identifier) ;) (declaration "int local_48;" primitive_type identifier ;) (declaration "int local_44;" primitive_type identifier ;) (declaration "int local_40;" primitive_type identifier ;) (declaration "int local_3c;" primitive_type identifier ;) (declaration "int local_38;" primitive_type identifier ;) (declaration "int *local_34;" primitive_type (pointer_declarator "*local_34" * identifier) ;) (declaration "int local_30;" primitive_type identifier ;) (declaration "int local_2c;" primitive_type identifier ;) (declaration "int local_28;" primitive_type identifier ;) (declaration "int local_24;" primitive_type identifier ;) (declaration "int local_20;" primitive_type identifier ;) (if_statement "if (punconfigured != (bool *)0x0) {\n    *punconfigured = false;\n  }" if (parenthesized_expression "(punconfigured != (bool *)0x0)" ( (binary_expression "punconfigured != (bool *)0x0" identifier != (cast_expression "(bool *)0x0" ( (type_descriptor "bool *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    *punconfigured = false;\n  }" { (expression_statement "*punconfigured = false;" (assignment_expression "*punconfigured = false" (pointer_expression "*punconfigured" * identifier) = false) ;) })) (expression_statement "member_name._M_string_length = 0;" (assignment_expression "member_name._M_string_length = 0" (field_expression "member_name._M_string_length" identifier . field_identifier) = number_literal) ;) (expression_statement "member_name.field_2._M_local_buf[0] = '\0';" (assignment_expression "member_name.field_2._M_local_buf[0] = '\0'" (subscript_expression "member_name.field_2._M_local_buf[0]" (field_expression "member_name.field_2._M_local_buf" (field_expression "member_name.field_2" identifier . field_identifier) . field_identifier) [ number_literal ]) = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "member_name._M_dataplus._M_p = (pointer)&member_name.field_2;" (assignment_expression "member_name._M_dataplus._M_p = (pointer)&member_name.field_2" (field_expression "member_name._M_dataplus._M_p" (field_expression "member_name._M_dataplus" identifier . field_identifier) . field_identifier) = (binary_expression "(pointer)&member_name.field_2" (parenthesized_expression "(pointer)" ( identifier )) & (field_expression "member_name.field_2" identifier . field_identifier))) ;) comment (expression_statement "bVar3 = get_file_and_offset(this,off,&input_file,&memoff,&memsize,&member_name);" (assignment_expression "bVar3 = get_file_and_offset(this,off,&input_file,&memoff,&memsize,&member_name)" identifier = (call_expression "get_file_and_offset(this,off,&input_file,&memoff,&memsize,&member_name)" identifier (argument_list "(this,off,&input_file,&memoff,&memsize,&member_name)" ( identifier , identifier , (pointer_expression "&input_file" & identifier) , (pointer_expression "&memoff" & identifier) , (pointer_expression "&memsize" & identifier) , (pointer_expression "&member_name" & identifier) )))) ;) (if_statement "if (bVar3) {\n    bVar3 = is_elf_object(input_file,CONCAT44(memoff._4_4_,(Input_file *)memoff),&ehdr,&read_size);\n    uVar2 = memoff._4_4_;\n    input_file_00 = (Input_file *)memoff;\n    name = input_file;\n    elf_object = (Pluginobj *)0x0;\n    if (bVar3) {\n      pcVar1 = (this->input_file_->file_).name_._M_dataplus._M_p;\n      punconfigured_00 = (bool *)0x0;\n      local_7c._M_dataplus._M_p = (pointer)&local_7c.field_2;\n      std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>::\n      _M_construct<char*>(&local_7c,pcVar1,\n                          pcVar1 + (this->input_file_->file_).name_._M_string_length);\n      if (local_7c._M_string_length == 0x7fffffff) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 00196681 to 00196685 has its CatchHandler @ 001966b3 */\n        std::__throw_length_error("basic_string::append");\n      }\n                    /* try { // try from 00196424 to 00196428 has its CatchHandler @ 001966b3 */\n      piVar5 = (int *)std::string::_M_append((string *)&local_7c,"(",1);\n      if ((int *)*piVar5 == piVar5 + 2) {\n        local_5c = piVar5[2];\n        local_58 = piVar5[3];\n        local_54 = piVar5[4];\n        local_50 = piVar5[5];\n        local_64 = &local_5c;\n      }\n      else {\n        local_5c = piVar5[2];\n        local_64 = (int *)*piVar5;\n      }\n      local_60 = piVar5[1];\n      *(undefined1 *)(piVar5 + 2) = 0;\n      *piVar5 = (int)(piVar5 + 2);\n      piVar5[1] = 0;\n                    /* try { // try from 00196476 to 0019647a has its CatchHandler @ 001966a5 */\n      piVar5 = (int *)std::string::_M_append\n                                ((string *)&local_64,member_name._M_dataplus._M_p,\n                                 member_name._M_string_length);\n      if ((int *)*piVar5 == piVar5 + 2) {\n        local_44 = piVar5[2];\n        local_40 = piVar5[3];\n        local_3c = piVar5[4];\n        local_38 = piVar5[5];\n        local_4c = &local_44;\n      }\n      else {\n        local_44 = piVar5[2];\n        local_4c = (int *)*piVar5;\n      }\n      local_48 = piVar5[1];\n      *(undefined1 *)(piVar5 + 2) = 0;\n      *piVar5 = (int)(piVar5 + 2);\n      piVar5[1] = 0;\n      if (local_48 == 0x7fffffff) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 00196692 to 00196696 has its CatchHandler @ 00196697 */\n        std::__throw_length_error("basic_string::append");\n      }\n                    /* try { // try from 001964d2 to 001964d6 has its CatchHandler @ 00196697 */\n      piVar5 = (int *)std::string::_M_append((string *)&local_4c,")",1);\n      if ((int *)*piVar5 == piVar5 + 2) {\n        local_2c = piVar5[2];\n        local_28 = piVar5[3];\n        local_24 = piVar5[4];\n        local_20 = piVar5[5];\n        local_34 = &local_2c;\n      }\n      else {\n        local_2c = piVar5[2];\n        local_34 = (int *)*piVar5;\n      }\n      local_30 = piVar5[1];\n      *(undefined1 *)(piVar5 + 2) = 0;\n      *piVar5 = (int)(piVar5 + 2);\n      piVar5[1] = 0;\n                    /* try { // try from 00196534 to 00196538 has its CatchHandler @ 0019669e */\n      elf_object = (Pluginobj *)\n                   make_elf_object((gold *)&local_34,(string *)name,input_file_00,\n                                   CONCAT44(ehdr,uVar2),(uchar *)read_size,\n                                   (section_offset_type)punconfigured,punconfigured_00);\n      if (local_34 != &local_2c) {\n        operator_delete(local_34);\n      }\n      if (local_4c != &local_44) {\n        operator_delete(local_4c);\n      }\n      if (local_64 != &local_5c) {\n        operator_delete(local_64);\n      }\n      if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n           *)local_7c._M_dataplus._M_p != &local_7c.field_2) {\n        operator_delete(local_7c._M_dataplus._M_p);\n      }\n    }\n    if (parameters->options_ == (General_options *)0x0) {\n                    /* WARNING: Subroutine does not return */\n      do_gold_unreachable("../../gold/parameters.h",0x5c,"options");\n    }\n    this_00 = parameters->options_->plugins_;\n    if ((this_00 != (Plugin_manager *)0x0) &&\n       (pPVar4 = Plugin_manager::claim_file\n                           (this_00,input_file,CONCAT44(memoff._4_4_,(Input_file *)memoff),\n                            CONCAT44(memsize._4_4_,(undefined4)memsize),&elf_object->super_Object),\n       pPVar4 != (Pluginobj *)0x0)) {\n      if (elf_object != (Pluginobj *)0x0) {\n        (*(elf_object->super_Object)._vptr_Object[1])(elf_object);\n      }\n      goto LAB_0019637f;\n    }\n    if (bVar3) {\n      pPVar4 = elf_object;\n      if (elf_object != (Pluginobj *)0x0) {\n        (elf_object->super_Object).field_0x2c =\n             (elf_object->super_Object).field_0x2c & 0xef | (byte)((this->no_export_ & 1) << 4);\n      }\n      goto LAB_0019637f;\n    }\n    pcVar1 = (this->name_)._M_dataplus._M_p;\n    format = (char *)gettext("%s: member at %zu is not an ELF object");\n                    /* try { // try from 001965d2 to 00196674 has its CatchHandler @ 001966ac */\n    gold_error(format,pcVar1,(undefined4)off);\n  }" if (parenthesized_expression "(bVar3)" ( identifier )) (compound_statement "{\n    bVar3 = is_elf_object(input_file,CONCAT44(memoff._4_4_,(Input_file *)memoff),&ehdr,&read_size);\n    uVar2 = memoff._4_4_;\n    input_file_00 = (Input_file *)memoff;\n    name = input_file;\n    elf_object = (Pluginobj *)0x0;\n    if (bVar3) {\n      pcVar1 = (this->input_file_->file_).name_._M_dataplus._M_p;\n      punconfigured_00 = (bool *)0x0;\n      local_7c._M_dataplus._M_p = (pointer)&local_7c.field_2;\n      std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>::\n      _M_construct<char*>(&local_7c,pcVar1,\n                          pcVar1 + (this->input_file_->file_).name_._M_string_length);\n      if (local_7c._M_string_length == 0x7fffffff) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 00196681 to 00196685 has its CatchHandler @ 001966b3 */\n        std::__throw_length_error("basic_string::append");\n      }\n                    /* try { // try from 00196424 to 00196428 has its CatchHandler @ 001966b3 */\n      piVar5 = (int *)std::string::_M_append((string *)&local_7c,"(",1);\n      if ((int *)*piVar5 == piVar5 + 2) {\n        local_5c = piVar5[2];\n        local_58 = piVar5[3];\n        local_54 = piVar5[4];\n        local_50 = piVar5[5];\n        local_64 = &local_5c;\n      }\n      else {\n        local_5c = piVar5[2];\n        local_64 = (int *)*piVar5;\n      }\n      local_60 = piVar5[1];\n      *(undefined1 *)(piVar5 + 2) = 0;\n      *piVar5 = (int)(piVar5 + 2);\n      piVar5[1] = 0;\n                    /* try { // try from 00196476 to 0019647a has its CatchHandler @ 001966a5 */\n      piVar5 = (int *)std::string::_M_append\n                                ((string *)&local_64,member_name._M_dataplus._M_p,\n                                 member_name._M_string_length);\n      if ((int *)*piVar5 == piVar5 + 2) {\n        local_44 = piVar5[2];\n        local_40 = piVar5[3];\n        local_3c = piVar5[4];\n        local_38 = piVar5[5];\n        local_4c = &local_44;\n      }\n      else {\n        local_44 = piVar5[2];\n        local_4c = (int *)*piVar5;\n      }\n      local_48 = piVar5[1];\n      *(undefined1 *)(piVar5 + 2) = 0;\n      *piVar5 = (int)(piVar5 + 2);\n      piVar5[1] = 0;\n      if (local_48 == 0x7fffffff) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 00196692 to 00196696 has its CatchHandler @ 00196697 */\n        std::__throw_length_error("basic_string::append");\n      }\n                    /* try { // try from 001964d2 to 001964d6 has its CatchHandler @ 00196697 */\n      piVar5 = (int *)std::string::_M_append((string *)&local_4c,")",1);\n      if ((int *)*piVar5 == piVar5 + 2) {\n        local_2c = piVar5[2];\n        local_28 = piVar5[3];\n        local_24 = piVar5[4];\n        local_20 = piVar5[5];\n        local_34 = &local_2c;\n      }\n      else {\n        local_2c = piVar5[2];\n        local_34 = (int *)*piVar5;\n      }\n      local_30 = piVar5[1];\n      *(undefined1 *)(piVar5 + 2) = 0;\n      *piVar5 = (int)(piVar5 + 2);\n      piVar5[1] = 0;\n                    /* try { // try from 00196534 to 00196538 has its CatchHandler @ 0019669e */\n      elf_object = (Pluginobj *)\n                   make_elf_object((gold *)&local_34,(string *)name,input_file_00,\n                                   CONCAT44(ehdr,uVar2),(uchar *)read_size,\n                                   (section_offset_type)punconfigured,punconfigured_00);\n      if (local_34 != &local_2c) {\n        operator_delete(local_34);\n      }\n      if (local_4c != &local_44) {\n        operator_delete(local_4c);\n      }\n      if (local_64 != &local_5c) {\n        operator_delete(local_64);\n      }\n      if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n           *)local_7c._M_dataplus._M_p != &local_7c.field_2) {\n        operator_delete(local_7c._M_dataplus._M_p);\n      }\n    }\n    if (parameters->options_ == (General_options *)0x0) {\n                    /* WARNING: Subroutine does not return */\n      do_gold_unreachable("../../gold/parameters.h",0x5c,"options");\n    }\n    this_00 = parameters->options_->plugins_;\n    if ((this_00 != (Plugin_manager *)0x0) &&\n       (pPVar4 = Plugin_manager::claim_file\n                           (this_00,input_file,CONCAT44(memoff._4_4_,(Input_file *)memoff),\n                            CONCAT44(memsize._4_4_,(undefined4)memsize),&elf_object->super_Object),\n       pPVar4 != (Pluginobj *)0x0)) {\n      if (elf_object != (Pluginobj *)0x0) {\n        (*(elf_object->super_Object)._vptr_Object[1])(elf_object);\n      }\n      goto LAB_0019637f;\n    }\n    if (bVar3) {\n      pPVar4 = elf_object;\n      if (elf_object != (Pluginobj *)0x0) {\n        (elf_object->super_Object).field_0x2c =\n             (elf_object->super_Object).field_0x2c & 0xef | (byte)((this->no_export_ & 1) << 4);\n      }\n      goto LAB_0019637f;\n    }\n    pcVar1 = (this->name_)._M_dataplus._M_p;\n    format = (char *)gettext("%s: member at %zu is not an ELF object");\n                    /* try { // try from 001965d2 to 00196674 has its CatchHandler @ 001966ac */\n    gold_error(format,pcVar1,(undefined4)off);\n  }" { (expression_statement "bVar3 = is_elf_object(input_file,CONCAT44(memoff._4_4_,(Input_file *)memoff),&ehdr,&read_size);" (assignment_expression "bVar3 = is_elf_object(input_file,CONCAT44(memoff._4_4_,(Input_file *)memoff),&ehdr,&read_size)" identifier = (call_expression "is_elf_object(input_file,CONCAT44(memoff._4_4_,(Input_file *)memoff),&ehdr,&read_size)" identifier (argument_list "(input_file,CONCAT44(memoff._4_4_,(Input_file *)memoff),&ehdr,&read_size)" ( identifier , (call_expression "CONCAT44(memoff._4_4_,(Input_file *)memoff)" identifier (argument_list "(memoff._4_4_,(Input_file *)memoff)" ( (field_expression "memoff._4_4_" identifier . field_identifier) , (cast_expression "(Input_file *)memoff" ( (type_descriptor "Input_file *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) ))) , (pointer_expression "&ehdr" & identifier) , (pointer_expression "&read_size" & identifier) )))) ;) (expression_statement "uVar2 = memoff._4_4_;" (assignment_expression "uVar2 = memoff._4_4_" identifier = (field_expression "memoff._4_4_" identifier . field_identifier)) ;) (expression_statement "input_file_00 = (Input_file *)memoff;" (assignment_expression "input_file_00 = (Input_file *)memoff" identifier = (cast_expression "(Input_file *)memoff" ( (type_descriptor "Input_file *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (expression_statement "name = input_file;" (assignment_expression "name = input_file" identifier = identifier) ;) (expression_statement "elf_object = (Pluginobj *)0x0;" (assignment_expression "elf_object = (Pluginobj *)0x0" identifier = (cast_expression "(Pluginobj *)0x0" ( (type_descriptor "Pluginobj *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (if_statement "if (bVar3) {\n      pcVar1 = (this->input_file_->file_).name_._M_dataplus._M_p;\n      punconfigured_00 = (bool *)0x0;\n      local_7c._M_dataplus._M_p = (pointer)&local_7c.field_2;\n      std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>::\n      _M_construct<char*>(&local_7c,pcVar1,\n                          pcVar1 + (this->input_file_->file_).name_._M_string_length);\n      if (local_7c._M_string_length == 0x7fffffff) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 00196681 to 00196685 has its CatchHandler @ 001966b3 */\n        std::__throw_length_error("basic_string::append");\n      }\n                    /* try { // try from 00196424 to 00196428 has its CatchHandler @ 001966b3 */\n      piVar5 = (int *)std::string::_M_append((string *)&local_7c,"(",1);\n      if ((int *)*piVar5 == piVar5 + 2) {\n        local_5c = piVar5[2];\n        local_58 = piVar5[3];\n        local_54 = piVar5[4];\n        local_50 = piVar5[5];\n        local_64 = &local_5c;\n      }\n      else {\n        local_5c = piVar5[2];\n        local_64 = (int *)*piVar5;\n      }\n      local_60 = piVar5[1];\n      *(undefined1 *)(piVar5 + 2) = 0;\n      *piVar5 = (int)(piVar5 + 2);\n      piVar5[1] = 0;\n                    /* try { // try from 00196476 to 0019647a has its CatchHandler @ 001966a5 */\n      piVar5 = (int *)std::string::_M_append\n                                ((string *)&local_64,member_name._M_dataplus._M_p,\n                                 member_name._M_string_length);\n      if ((int *)*piVar5 == piVar5 + 2) {\n        local_44 = piVar5[2];\n        local_40 = piVar5[3];\n        local_3c = piVar5[4];\n        local_38 = piVar5[5];\n        local_4c = &local_44;\n      }\n      else {\n        local_44 = piVar5[2];\n        local_4c = (int *)*piVar5;\n      }\n      local_48 = piVar5[1];\n      *(undefined1 *)(piVar5 + 2) = 0;\n      *piVar5 = (int)(piVar5 + 2);\n      piVar5[1] = 0;\n      if (local_48 == 0x7fffffff) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 00196692 to 00196696 has its CatchHandler @ 00196697 */\n        std::__throw_length_error("basic_string::append");\n      }\n                    /* try { // try from 001964d2 to 001964d6 has its CatchHandler @ 00196697 */\n      piVar5 = (int *)std::string::_M_append((string *)&local_4c,")",1);\n      if ((int *)*piVar5 == piVar5 + 2) {\n        local_2c = piVar5[2];\n        local_28 = piVar5[3];\n        local_24 = piVar5[4];\n        local_20 = piVar5[5];\n        local_34 = &local_2c;\n      }\n      else {\n        local_2c = piVar5[2];\n        local_34 = (int *)*piVar5;\n      }\n      local_30 = piVar5[1];\n      *(undefined1 *)(piVar5 + 2) = 0;\n      *piVar5 = (int)(piVar5 + 2);\n      piVar5[1] = 0;\n                    /* try { // try from 00196534 to 00196538 has its CatchHandler @ 0019669e */\n      elf_object = (Pluginobj *)\n                   make_elf_object((gold *)&local_34,(string *)name,input_file_00,\n                                   CONCAT44(ehdr,uVar2),(uchar *)read_size,\n                                   (section_offset_type)punconfigured,punconfigured_00);\n      if (local_34 != &local_2c) {\n        operator_delete(local_34);\n      }\n      if (local_4c != &local_44) {\n        operator_delete(local_4c);\n      }\n      if (local_64 != &local_5c) {\n        operator_delete(local_64);\n      }\n      if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n           *)local_7c._M_dataplus._M_p != &local_7c.field_2) {\n        operator_delete(local_7c._M_dataplus._M_p);\n      }\n    }" if (parenthesized_expression "(bVar3)" ( identifier )) (compound_statement "{\n      pcVar1 = (this->input_file_->file_).name_._M_dataplus._M_p;\n      punconfigured_00 = (bool *)0x0;\n      local_7c._M_dataplus._M_p = (pointer)&local_7c.field_2;\n      std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>::\n      _M_construct<char*>(&local_7c,pcVar1,\n                          pcVar1 + (this->input_file_->file_).name_._M_string_length);\n      if (local_7c._M_string_length == 0x7fffffff) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 00196681 to 00196685 has its CatchHandler @ 001966b3 */\n        std::__throw_length_error("basic_string::append");\n      }\n                    /* try { // try from 00196424 to 00196428 has its CatchHandler @ 001966b3 */\n      piVar5 = (int *)std::string::_M_append((string *)&local_7c,"(",1);\n      if ((int *)*piVar5 == piVar5 + 2) {\n        local_5c = piVar5[2];\n        local_58 = piVar5[3];\n        local_54 = piVar5[4];\n        local_50 = piVar5[5];\n        local_64 = &local_5c;\n      }\n      else {\n        local_5c = piVar5[2];\n        local_64 = (int *)*piVar5;\n      }\n      local_60 = piVar5[1];\n      *(undefined1 *)(piVar5 + 2) = 0;\n      *piVar5 = (int)(piVar5 + 2);\n      piVar5[1] = 0;\n                    /* try { // try from 00196476 to 0019647a has its CatchHandler @ 001966a5 */\n      piVar5 = (int *)std::string::_M_append\n                                ((string *)&local_64,member_name._M_dataplus._M_p,\n                                 member_name._M_string_length);\n      if ((int *)*piVar5 == piVar5 + 2) {\n        local_44 = piVar5[2];\n        local_40 = piVar5[3];\n        local_3c = piVar5[4];\n        local_38 = piVar5[5];\n        local_4c = &local_44;\n      }\n      else {\n        local_44 = piVar5[2];\n        local_4c = (int *)*piVar5;\n      }\n      local_48 = piVar5[1];\n      *(undefined1 *)(piVar5 + 2) = 0;\n      *piVar5 = (int)(piVar5 + 2);\n      piVar5[1] = 0;\n      if (local_48 == 0x7fffffff) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 00196692 to 00196696 has its CatchHandler @ 00196697 */\n        std::__throw_length_error("basic_string::append");\n      }\n                    /* try { // try from 001964d2 to 001964d6 has its CatchHandler @ 00196697 */\n      piVar5 = (int *)std::string::_M_append((string *)&local_4c,")",1);\n      if ((int *)*piVar5 == piVar5 + 2) {\n        local_2c = piVar5[2];\n        local_28 = piVar5[3];\n        local_24 = piVar5[4];\n        local_20 = piVar5[5];\n        local_34 = &local_2c;\n      }\n      else {\n        local_2c = piVar5[2];\n        local_34 = (int *)*piVar5;\n      }\n      local_30 = piVar5[1];\n      *(undefined1 *)(piVar5 + 2) = 0;\n      *piVar5 = (int)(piVar5 + 2);\n      piVar5[1] = 0;\n                    /* try { // try from 00196534 to 00196538 has its CatchHandler @ 0019669e */\n      elf_object = (Pluginobj *)\n                   make_elf_object((gold *)&local_34,(string *)name,input_file_00,\n                                   CONCAT44(ehdr,uVar2),(uchar *)read_size,\n                                   (section_offset_type)punconfigured,punconfigured_00);\n      if (local_34 != &local_2c) {\n        operator_delete(local_34);\n      }\n      if (local_4c != &local_44) {\n        operator_delete(local_4c);\n      }\n      if (local_64 != &local_5c) {\n        operator_delete(local_64);\n      }\n      if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n           *)local_7c._M_dataplus._M_p != &local_7c.field_2) {\n        operator_delete(local_7c._M_dataplus._M_p);\n      }\n    }" { (expression_statement "pcVar1 = (this->input_file_->file_).name_._M_dataplus._M_p;" (assignment_expression "pcVar1 = (this->input_file_->file_).name_._M_dataplus._M_p" identifier = (field_expression "(this->input_file_->file_).name_._M_dataplus._M_p" (field_expression "(this->input_file_->file_).name_._M_dataplus" (field_expression "(this->input_file_->file_).name_" (parenthesized_expression "(this->input_file_->file_)" ( (field_expression "this->input_file_->file_" (field_expression "this->input_file_" identifier -> field_identifier) -> field_identifier) )) . field_identifier) . field_identifier) . field_identifier)) ;) (expression_statement "punconfigured_00 = (bool *)0x0;" (assignment_expression "punconfigured_00 = (bool *)0x0" identifier = (cast_expression "(bool *)0x0" ( (type_descriptor "bool *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "local_7c._M_dataplus._M_p = (pointer)&local_7c.field_2;" (assignment_expression "local_7c._M_dataplus._M_p = (pointer)&local_7c.field_2" (field_expression "local_7c._M_dataplus._M_p" (field_expression "local_7c._M_dataplus" identifier . field_identifier) . field_identifier) = (binary_expression "(pointer)&local_7c.field_2" (parenthesized_expression "(pointer)" ( identifier )) & (field_expression "local_7c.field_2" identifier . field_identifier))) ;) (labeled_statement "std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>::\n      _M_construct<char*>(&local_7c,pcVar1,\n                          pcVar1 + (this->input_file_->file_).name_._M_string_length);" statement_identifier (ERROR "::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>:" : : (comma_expression "__cxx11::basic_string<char,_std::char_traits<char>,_std" identifier (ERROR "::basic_string<char,_std::char_traits<char>" : : (comma_expression "basic_string<char,_std" (binary_expression "basic_string<char" identifier < identifier) , identifier) : : (binary_expression "char_traits<char" identifier < identifier) >) , identifier) : : (binary_expression "allocator<char>_" (binary_expression "allocator<char" identifier < identifier) > identifier) > :) : (expression_statement "_M_construct<char*>(&local_7c,pcVar1,\n                          pcVar1 + (this->input_file_->file_).name_._M_string_length);" (binary_expression "_M_construct<char*>(&local_7c,pcVar1,\n                          pcVar1 + (this->input_file_->file_).name_._M_string_length)" (binary_expression "_M_construct<char" identifier < identifier) (ERROR "*" *) > (parenthesized_expression "(&local_7c,pcVar1,\n                          pcVar1 + (this->input_file_->file_).name_._M_string_length)" ( (comma_expression "&local_7c,pcVar1,\n                          pcVar1 + (this->input_file_->file_).name_._M_string_length" (pointer_expression "&local_7c" & identifier) , (comma_expression "pcVar1,\n                          pcVar1 + (this->input_file_->file_).name_._M_string_length" identifier , (binary_expression "pcVar1 + (this->input_file_->file_).name_._M_string_length" identifier + (field_expression "(this->input_file_->file_).name_._M_string_length" (field_expression "(this->input_file_->file_).name_" (parenthesized_expression "(this->input_file_->file_)" ( (field_expression "this->input_file_->file_" (field_expression "this->input_file_" identifier -> field_identifier) -> field_identifier) )) . field_identifier) . field_identifier)))) ))) ;)) (if_statement "if (local_7c._M_string_length == 0x7fffffff) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 00196681 to 00196685 has its CatchHandler @ 001966b3 */\n        std::__throw_length_error("basic_string::append");\n      }" if (parenthesized_expression "(local_7c._M_string_length == 0x7fffffff)" ( (binary_expression "local_7c._M_string_length == 0x7fffffff" (field_expression "local_7c._M_string_length" identifier . field_identifier) == number_literal) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 00196681 to 00196685 has its CatchHandler @ 001966b3 */\n        std::__throw_length_error("basic_string::append");\n      }" { comment comment (labeled_statement "std::__throw_length_error("basic_string::append");" statement_identifier : (ERROR ":" :) (expression_statement "__throw_length_error("basic_string::append");" (call_expression "__throw_length_error("basic_string::append")" identifier (argument_list "("basic_string::append")" ( (string_literal ""basic_string::append"" " string_content ") ))) ;)) })) comment (ERROR "piVar5 = (int *)std::" (assignment_expression "piVar5 = (int *)std" identifier = (cast_expression "(int *)std" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) : :) (labeled_statement "string::_M_append((string *)&local_7c,"(",1);" statement_identifier : (ERROR ":" :) (expression_statement "_M_append((string *)&local_7c,"(",1);" (call_expression "_M_append((string *)&local_7c,"(",1)" identifier (argument_list "((string *)&local_7c,"(",1)" ( (cast_expression "(string *)&local_7c" ( (type_descriptor "string *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&local_7c" & identifier)) , (string_literal ""("" " string_content ") , number_literal ))) ;)) (if_statement "if ((int *)*piVar5 == piVar5 + 2) {\n        local_5c = piVar5[2];\n        local_58 = piVar5[3];\n        local_54 = piVar5[4];\n        local_50 = piVar5[5];\n        local_64 = &local_5c;\n      }\n      else {\n        local_5c = piVar5[2];\n        local_64 = (int *)*piVar5;\n      }" if (parenthesized_expression "((int *)*piVar5 == piVar5 + 2)" ( (binary_expression "(int *)*piVar5 == piVar5 + 2" (cast_expression "(int *)*piVar5" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*piVar5" * identifier)) == (binary_expression "piVar5 + 2" identifier + number_literal)) )) (compound_statement "{\n        local_5c = piVar5[2];\n        local_58 = piVar5[3];\n        local_54 = piVar5[4];\n        local_50 = piVar5[5];\n        local_64 = &local_5c;\n      }" { (expression_statement "local_5c = piVar5[2];" (assignment_expression "local_5c = piVar5[2]" identifier = (subscript_expression "piVar5[2]" identifier [ number_literal ])) ;) (expression_statement "local_58 = piVar5[3];" (assignment_expression "local_58 = piVar5[3]" identifier = (subscript_expression "piVar5[3]" identifier [ number_literal ])) ;) (expression_statement "local_54 = piVar5[4];" (assignment_expression "local_54 = piVar5[4]" identifier = (subscript_expression "piVar5[4]" identifier [ number_literal ])) ;) (expression_statement "local_50 = piVar5[5];" (assignment_expression "local_50 = piVar5[5]" identifier = (subscript_expression "piVar5[5]" identifier [ number_literal ])) ;) (expression_statement "local_64 = &local_5c;" (assignment_expression "local_64 = &local_5c" identifier = (pointer_expression "&local_5c" & identifier)) ;) }) (else_clause "else {\n        local_5c = piVar5[2];\n        local_64 = (int *)*piVar5;\n      }" else (compound_statement "{\n        local_5c = piVar5[2];\n        local_64 = (int *)*piVar5;\n      }" { (expression_statement "local_5c = piVar5[2];" (assignment_expression "local_5c = piVar5[2]" identifier = (subscript_expression "piVar5[2]" identifier [ number_literal ])) ;) (expression_statement "local_64 = (int *)*piVar5;" (assignment_expression "local_64 = (int *)*piVar5" identifier = (cast_expression "(int *)*piVar5" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*piVar5" * identifier))) ;) }))) (expression_statement "local_60 = piVar5[1];" (assignment_expression "local_60 = piVar5[1]" identifier = (subscript_expression "piVar5[1]" identifier [ number_literal ])) ;) (expression_statement "*(undefined1 *)(piVar5 + 2) = 0;" (assignment_expression "*(undefined1 *)(piVar5 + 2) = 0" (pointer_expression "*(undefined1 *)(piVar5 + 2)" * (cast_expression "(undefined1 *)(piVar5 + 2)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar5 + 2)" ( (binary_expression "piVar5 + 2" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*piVar5 = (int)(piVar5 + 2);" (assignment_expression "*piVar5 = (int)(piVar5 + 2)" (pointer_expression "*piVar5" * identifier) = (cast_expression "(int)(piVar5 + 2)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(piVar5 + 2)" ( (binary_expression "piVar5 + 2" identifier + number_literal) )))) ;) (expression_statement "piVar5[1] = 0;" (assignment_expression "piVar5[1] = 0" (subscript_expression "piVar5[1]" identifier [ number_literal ]) = number_literal) ;) comment (ERROR "piVar5 = (int *)std::" (assignment_expression "piVar5 = (int *)std" identifier = (cast_expression "(int *)std" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) : :) (labeled_statement "string::_M_append\n                                ((string *)&local_64,member_name._M_dataplus._M_p,\n                                 member_name._M_string_length);" statement_identifier : (ERROR ":" :) (expression_statement "_M_append\n                                ((string *)&local_64,member_name._M_dataplus._M_p,\n                                 member_name._M_string_length);" (call_expression "_M_append\n                                ((string *)&local_64,member_name._M_dataplus._M_p,\n                                 member_name._M_string_length)" identifier (argument_list "((string *)&local_64,member_name._M_dataplus._M_p,\n                                 member_name._M_string_length)" ( (cast_expression "(string *)&local_64" ( (type_descriptor "string *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&local_64" & identifier)) , (field_expression "member_name._M_dataplus._M_p" (field_expression "member_name._M_dataplus" identifier . field_identifier) . field_identifier) , (field_expression "member_name._M_string_length" identifier . field_identifier) ))) ;)) (if_statement "if ((int *)*piVar5 == piVar5 + 2) {\n        local_44 = piVar5[2];\n        local_40 = piVar5[3];\n        local_3c = piVar5[4];\n        local_38 = piVar5[5];\n        local_4c = &local_44;\n      }\n      else {\n        local_44 = piVar5[2];\n        local_4c = (int *)*piVar5;\n      }" if (parenthesized_expression "((int *)*piVar5 == piVar5 + 2)" ( (binary_expression "(int *)*piVar5 == piVar5 + 2" (cast_expression "(int *)*piVar5" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*piVar5" * identifier)) == (binary_expression "piVar5 + 2" identifier + number_literal)) )) (compound_statement "{\n        local_44 = piVar5[2];\n        local_40 = piVar5[3];\n        local_3c = piVar5[4];\n        local_38 = piVar5[5];\n        local_4c = &local_44;\n      }" { (expression_statement "local_44 = piVar5[2];" (assignment_expression "local_44 = piVar5[2]" identifier = (subscript_expression "piVar5[2]" identifier [ number_literal ])) ;) (expression_statement "local_40 = piVar5[3];" (assignment_expression "local_40 = piVar5[3]" identifier = (subscript_expression "piVar5[3]" identifier [ number_literal ])) ;) (expression_statement "local_3c = piVar5[4];" (assignment_expression "local_3c = piVar5[4]" identifier = (subscript_expression "piVar5[4]" identifier [ number_literal ])) ;) (expression_statement "local_38 = piVar5[5];" (assignment_expression "local_38 = piVar5[5]" identifier = (subscript_expression "piVar5[5]" identifier [ number_literal ])) ;) (expression_statement "local_4c = &local_44;" (assignment_expression "local_4c = &local_44" identifier = (pointer_expression "&local_44" & identifier)) ;) }) (else_clause "else {\n        local_44 = piVar5[2];\n        local_4c = (int *)*piVar5;\n      }" else (compound_statement "{\n        local_44 = piVar5[2];\n        local_4c = (int *)*piVar5;\n      }" { (expression_statement "local_44 = piVar5[2];" (assignment_expression "local_44 = piVar5[2]" identifier = (subscript_expression "piVar5[2]" identifier [ number_literal ])) ;) (expression_statement "local_4c = (int *)*piVar5;" (assignment_expression "local_4c = (int *)*piVar5" identifier = (cast_expression "(int *)*piVar5" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*piVar5" * identifier))) ;) }))) (expression_statement "local_48 = piVar5[1];" (assignment_expression "local_48 = piVar5[1]" identifier = (subscript_expression "piVar5[1]" identifier [ number_literal ])) ;) (expression_statement "*(undefined1 *)(piVar5 + 2) = 0;" (assignment_expression "*(undefined1 *)(piVar5 + 2) = 0" (pointer_expression "*(undefined1 *)(piVar5 + 2)" * (cast_expression "(undefined1 *)(piVar5 + 2)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar5 + 2)" ( (binary_expression "piVar5 + 2" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*piVar5 = (int)(piVar5 + 2);" (assignment_expression "*piVar5 = (int)(piVar5 + 2)" (pointer_expression "*piVar5" * identifier) = (cast_expression "(int)(piVar5 + 2)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(piVar5 + 2)" ( (binary_expression "piVar5 + 2" identifier + number_literal) )))) ;) (expression_statement "piVar5[1] = 0;" (assignment_expression "piVar5[1] = 0" (subscript_expression "piVar5[1]" identifier [ number_literal ]) = number_literal) ;) (if_statement "if (local_48 == 0x7fffffff) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 00196692 to 00196696 has its CatchHandler @ 00196697 */\n        std::__throw_length_error("basic_string::append");\n      }" if (parenthesized_expression "(local_48 == 0x7fffffff)" ( (binary_expression "local_48 == 0x7fffffff" identifier == number_literal) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 00196692 to 00196696 has its CatchHandler @ 00196697 */\n        std::__throw_length_error("basic_string::append");\n      }" { comment comment (labeled_statement "std::__throw_length_error("basic_string::append");" statement_identifier : (ERROR ":" :) (expression_statement "__throw_length_error("basic_string::append");" (call_expression "__throw_length_error("basic_string::append")" identifier (argument_list "("basic_string::append")" ( (string_literal ""basic_string::append"" " string_content ") ))) ;)) })) comment (ERROR "piVar5 = (int *)std::" (assignment_expression "piVar5 = (int *)std" identifier = (cast_expression "(int *)std" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) : :) (labeled_statement "string::_M_append((string *)&local_4c,")",1);" statement_identifier : (ERROR ":" :) (expression_statement "_M_append((string *)&local_4c,")",1);" (call_expression "_M_append((string *)&local_4c,")",1)" identifier (argument_list "((string *)&local_4c,")",1)" ( (cast_expression "(string *)&local_4c" ( (type_descriptor "string *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&local_4c" & identifier)) , (string_literal "")"" " string_content ") , number_literal ))) ;)) (if_statement "if ((int *)*piVar5 == piVar5 + 2) {\n        local_2c = piVar5[2];\n        local_28 = piVar5[3];\n        local_24 = piVar5[4];\n        local_20 = piVar5[5];\n        local_34 = &local_2c;\n      }\n      else {\n        local_2c = piVar5[2];\n        local_34 = (int *)*piVar5;\n      }" if (parenthesized_expression "((int *)*piVar5 == piVar5 + 2)" ( (binary_expression "(int *)*piVar5 == piVar5 + 2" (cast_expression "(int *)*piVar5" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*piVar5" * identifier)) == (binary_expression "piVar5 + 2" identifier + number_literal)) )) (compound_statement "{\n        local_2c = piVar5[2];\n        local_28 = piVar5[3];\n        local_24 = piVar5[4];\n        local_20 = piVar5[5];\n        local_34 = &local_2c;\n      }" { (expression_statement "local_2c = piVar5[2];" (assignment_expression "local_2c = piVar5[2]" identifier = (subscript_expression "piVar5[2]" identifier [ number_literal ])) ;) (expression_statement "local_28 = piVar5[3];" (assignment_expression "local_28 = piVar5[3]" identifier = (subscript_expression "piVar5[3]" identifier [ number_literal ])) ;) (expression_statement "local_24 = piVar5[4];" (assignment_expression "local_24 = piVar5[4]" identifier = (subscript_expression "piVar5[4]" identifier [ number_literal ])) ;) (expression_statement "local_20 = piVar5[5];" (assignment_expression "local_20 = piVar5[5]" identifier = (subscript_expression "piVar5[5]" identifier [ number_literal ])) ;) (expression_statement "local_34 = &local_2c;" (assignment_expression "local_34 = &local_2c" identifier = (pointer_expression "&local_2c" & identifier)) ;) }) (else_clause "else {\n        local_2c = piVar5[2];\n        local_34 = (int *)*piVar5;\n      }" else (compound_statement "{\n        local_2c = piVar5[2];\n        local_34 = (int *)*piVar5;\n      }" { (expression_statement "local_2c = piVar5[2];" (assignment_expression "local_2c = piVar5[2]" identifier = (subscript_expression "piVar5[2]" identifier [ number_literal ])) ;) (expression_statement "local_34 = (int *)*piVar5;" (assignment_expression "local_34 = (int *)*piVar5" identifier = (cast_expression "(int *)*piVar5" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*piVar5" * identifier))) ;) }))) (expression_statement "local_30 = piVar5[1];" (assignment_expression "local_30 = piVar5[1]" identifier = (subscript_expression "piVar5[1]" identifier [ number_literal ])) ;) (expression_statement "*(undefined1 *)(piVar5 + 2) = 0;" (assignment_expression "*(undefined1 *)(piVar5 + 2) = 0" (pointer_expression "*(undefined1 *)(piVar5 + 2)" * (cast_expression "(undefined1 *)(piVar5 + 2)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar5 + 2)" ( (binary_expression "piVar5 + 2" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*piVar5 = (int)(piVar5 + 2);" (assignment_expression "*piVar5 = (int)(piVar5 + 2)" (pointer_expression "*piVar5" * identifier) = (cast_expression "(int)(piVar5 + 2)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(piVar5 + 2)" ( (binary_expression "piVar5 + 2" identifier + number_literal) )))) ;) (expression_statement "piVar5[1] = 0;" (assignment_expression "piVar5[1] = 0" (subscript_expression "piVar5[1]" identifier [ number_literal ]) = number_literal) ;) comment (expression_statement "elf_object = (Pluginobj *)\n                   make_elf_object((gold *)&local_34,(string *)name,input_file_00,\n                                   CONCAT44(ehdr,uVar2),(uchar *)read_size,\n                                   (section_offset_type)punconfigured,punconfigured_00);" (assignment_expression "elf_object = (Pluginobj *)\n                   make_elf_object((gold *)&local_34,(string *)name,input_file_00,\n                                   CONCAT44(ehdr,uVar2),(uchar *)read_size,\n                                   (section_offset_type)punconfigured,punconfigured_00)" identifier = (cast_expression "(Pluginobj *)\n                   make_elf_object((gold *)&local_34,(string *)name,input_file_00,\n                                   CONCAT44(ehdr,uVar2),(uchar *)read_size,\n                                   (section_offset_type)punconfigured,punconfigured_00)" ( (type_descriptor "Pluginobj *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "make_elf_object((gold *)&local_34,(string *)name,input_file_00,\n                                   CONCAT44(ehdr,uVar2),(uchar *)read_size,\n                                   (section_offset_type)punconfigured,punconfigured_00)" identifier (argument_list "((gold *)&local_34,(string *)name,input_file_00,\n                                   CONCAT44(ehdr,uVar2),(uchar *)read_size,\n                                   (section_offset_type)punconfigured,punconfigured_00)" ( (cast_expression "(gold *)&local_34" ( (type_descriptor "gold *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&local_34" & identifier)) , (cast_expression "(string *)name" ( (type_descriptor "string *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) , identifier , (call_expression "CONCAT44(ehdr,uVar2)" identifier (argument_list "(ehdr,uVar2)" ( identifier , identifier ))) , (cast_expression "(uchar *)read_size" ( (type_descriptor "uchar *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) , (cast_expression "(section_offset_type)punconfigured" ( (type_descriptor "section_offset_type" type_identifier) ) identifier) , identifier ))))) ;) (if_statement "if (local_34 != &local_2c) {\n        operator_delete(local_34);\n      }" if (parenthesized_expression "(local_34 != &local_2c)" ( (binary_expression "local_34 != &local_2c" identifier != (pointer_expression "&local_2c" & identifier)) )) (compound_statement "{\n        operator_delete(local_34);\n      }" { (expression_statement "operator_delete(local_34);" (call_expression "operator_delete(local_34)" identifier (argument_list "(local_34)" ( identifier ))) ;) })) (if_statement "if (local_4c != &local_44) {\n        operator_delete(local_4c);\n      }" if (parenthesized_expression "(local_4c != &local_44)" ( (binary_expression "local_4c != &local_44" identifier != (pointer_expression "&local_44" & identifier)) )) (compound_statement "{\n        operator_delete(local_4c);\n      }" { (expression_statement "operator_delete(local_4c);" (call_expression "operator_delete(local_4c)" identifier (argument_list "(local_4c)" ( identifier ))) ;) })) (if_statement "if (local_64 != &local_5c) {\n        operator_delete(local_64);\n      }" if (parenthesized_expression "(local_64 != &local_5c)" ( (binary_expression "local_64 != &local_5c" identifier != (pointer_expression "&local_5c" & identifier)) )) (compound_statement "{\n        operator_delete(local_64);\n      }" { (expression_statement "operator_delete(local_64);" (call_expression "operator_delete(local_64)" identifier (argument_list "(local_64)" ( identifier ))) ;) })) (if_statement "if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n           *)local_7c._M_dataplus._M_p != &local_7c.field_2) {\n        operator_delete(local_7c._M_dataplus._M_p);\n      }" if (parenthesized_expression "((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n           *)local_7c._M_dataplus._M_p != &local_7c.field_2)" ( (parenthesized_expression "(anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n           *)local_7c._M_dataplus._M_p != &local_7c.field_2)" ( (ERROR "anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::" (comma_expression "anon_union_16_2_edb7204a_for_basic_string<char,_std" (binary_expression "anon_union_16_2_edb7204a_for_basic_string<char" identifier < identifier) , identifier) : : (binary_expression "char_traits<char>,_std" (binary_expression "char_traits<char" identifier < identifier) > (ERROR "," ,) identifier) : :) (binary_expression "allocator<char>_>_9\n           *)local_7c._M_dataplus._M_p != &local_7c.field_2" (binary_expression "allocator<char>_>_9\n           *)local_7c._M_dataplus._M_p" (binary_expression "allocator<char>_" (binary_expression "allocator<char" identifier < identifier) > identifier) > (binary_expression "_9\n           *)local_7c._M_dataplus._M_p" identifier * (ERROR ")" )) (field_expression "local_7c._M_dataplus._M_p" (field_expression "local_7c._M_dataplus" identifier . field_identifier) . field_identifier))) != (pointer_expression "&local_7c.field_2" & (field_expression "local_7c.field_2" identifier . field_identifier))) )) )) (compound_statement "{\n        operator_delete(local_7c._M_dataplus._M_p);\n      }" { (expression_statement "operator_delete(local_7c._M_dataplus._M_p);" (call_expression "operator_delete(local_7c._M_dataplus._M_p)" identifier (argument_list "(local_7c._M_dataplus._M_p)" ( (field_expression "local_7c._M_dataplus._M_p" (field_expression "local_7c._M_dataplus" identifier . field_identifier) . field_identifier) ))) ;) })) })) (if_statement "if (parameters->options_ == (General_options *)0x0) {\n                    /* WARNING: Subroutine does not return */\n      do_gold_unreachable("../../gold/parameters.h",0x5c,"options");\n    }" if (parenthesized_expression "(parameters->options_ == (General_options *)0x0)" ( (binary_expression "parameters->options_ == (General_options *)0x0" (field_expression "parameters->options_" identifier -> field_identifier) == (cast_expression "(General_options *)0x0" ( (type_descriptor "General_options *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n      do_gold_unreachable("../../gold/parameters.h",0x5c,"options");\n    }" { comment (expression_statement "do_gold_unreachable("../../gold/parameters.h",0x5c,"options");" (call_expression "do_gold_unreachable("../../gold/parameters.h",0x5c,"options")" identifier (argument_list "("../../gold/parameters.h",0x5c,"options")" ( (string_literal ""../../gold/parameters.h"" " string_content ") , number_literal , (string_literal ""options"" " string_content ") ))) ;) })) (expression_statement "this_00 = parameters->options_->plugins_;" (assignment_expression "this_00 = parameters->options_->plugins_" identifier = (field_expression "parameters->options_->plugins_" (field_expression "parameters->options_" identifier -> field_identifier) -> field_identifier)) ;) (if_statement "if ((this_00 != (Plugin_manager *)0x0) &&\n       (pPVar4 = Plugin_manager::claim_file\n                           (this_00,input_file,CONCAT44(memoff._4_4_,(Input_file *)memoff),\n                            CONCAT44(memsize._4_4_,(undefined4)memsize),&elf_object->super_Object),\n       pPVar4 != (Pluginobj *)0x0)) {\n      if (elf_object != (Pluginobj *)0x0) {\n        (*(elf_object->super_Object)._vptr_Object[1])(elf_object);\n      }\n      goto LAB_0019637f;\n    }" if (parenthesized_expression "((this_00 != (Plugin_manager *)0x0) &&\n       (pPVar4 = Plugin_manager::claim_file\n                           (this_00,input_file,CONCAT44(memoff._4_4_,(Input_file *)memoff),\n                            CONCAT44(memsize._4_4_,(undefined4)memsize),&elf_object->super_Object),\n       pPVar4 != (Pluginobj *)0x0))" ( (binary_expression "(this_00 != (Plugin_manager *)0x0) &&\n       (pPVar4 = Plugin_manager::claim_file\n                           (this_00,input_file,CONCAT44(memoff._4_4_,(Input_file *)memoff),\n                            CONCAT44(memsize._4_4_,(undefined4)memsize),&elf_object->super_Object),\n       pPVar4 != (Pluginobj *)0x0)" (parenthesized_expression "(this_00 != (Plugin_manager *)0x0)" ( (binary_expression "this_00 != (Plugin_manager *)0x0" identifier != (cast_expression "(Plugin_manager *)0x0" ( (type_descriptor "Plugin_manager *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) && (parenthesized_expression "(pPVar4 = Plugin_manager::claim_file\n                           (this_00,input_file,CONCAT44(memoff._4_4_,(Input_file *)memoff),\n                            CONCAT44(memsize._4_4_,(undefined4)memsize),&elf_object->super_Object),\n       pPVar4 != (Pluginobj *)0x0)" ( (ERROR "pPVar4 = Plugin_manager::" (assignment_expression "pPVar4 = Plugin_manager" identifier = identifier) : :) (comma_expression "claim_file\n                           (this_00,input_file,CONCAT44(memoff._4_4_,(Input_file *)memoff),\n                            CONCAT44(memsize._4_4_,(undefined4)memsize),&elf_object->super_Object),\n       pPVar4 != (Pluginobj *)0x0" (call_expression "claim_file\n                           (this_00,input_file,CONCAT44(memoff._4_4_,(Input_file *)memoff),\n                            CONCAT44(memsize._4_4_,(undefined4)memsize),&elf_object->super_Object)" identifier (argument_list "(this_00,input_file,CONCAT44(memoff._4_4_,(Input_file *)memoff),\n                            CONCAT44(memsize._4_4_,(undefined4)memsize),&elf_object->super_Object)" ( identifier , identifier , (call_expression "CONCAT44(memoff._4_4_,(Input_file *)memoff)" identifier (argument_list "(memoff._4_4_,(Input_file *)memoff)" ( (field_expression "memoff._4_4_" identifier . field_identifier) , (cast_expression "(Input_file *)memoff" ( (type_descriptor "Input_file *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) ))) , (call_expression "CONCAT44(memsize._4_4_,(undefined4)memsize)" identifier (argument_list "(memsize._4_4_,(undefined4)memsize)" ( (field_expression "memsize._4_4_" identifier . field_identifier) , (cast_expression "(undefined4)memsize" ( (type_descriptor "undefined4" type_identifier) ) identifier) ))) , (pointer_expression "&elf_object->super_Object" & (field_expression "elf_object->super_Object" identifier -> field_identifier)) ))) , (binary_expression "pPVar4 != (Pluginobj *)0x0" identifier != (cast_expression "(Pluginobj *)0x0" ( (type_descriptor "Pluginobj *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal))) ))) )) (compound_statement "{\n      if (elf_object != (Pluginobj *)0x0) {\n        (*(elf_object->super_Object)._vptr_Object[1])(elf_object);\n      }\n      goto LAB_0019637f;\n    }" { (if_statement "if (elf_object != (Pluginobj *)0x0) {\n        (*(elf_object->super_Object)._vptr_Object[1])(elf_object);\n      }" if (parenthesized_expression "(elf_object != (Pluginobj *)0x0)" ( (binary_expression "elf_object != (Pluginobj *)0x0" identifier != (cast_expression "(Pluginobj *)0x0" ( (type_descriptor "Pluginobj *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        (*(elf_object->super_Object)._vptr_Object[1])(elf_object);\n      }" { (expression_statement "(*(elf_object->super_Object)._vptr_Object[1])(elf_object);" (call_expression "(*(elf_object->super_Object)._vptr_Object[1])(elf_object)" (parenthesized_expression "(*(elf_object->super_Object)._vptr_Object[1])" ( (pointer_expression "*(elf_object->super_Object)._vptr_Object[1]" * (subscript_expression "(elf_object->super_Object)._vptr_Object[1]" (field_expression "(elf_object->super_Object)._vptr_Object" (parenthesized_expression "(elf_object->super_Object)" ( (field_expression "elf_object->super_Object" identifier -> field_identifier) )) . field_identifier) [ number_literal ])) )) (argument_list "(elf_object)" ( identifier ))) ;) })) (goto_statement "goto LAB_0019637f;" goto statement_identifier ;) })) (if_statement "if (bVar3) {\n      pPVar4 = elf_object;\n      if (elf_object != (Pluginobj *)0x0) {\n        (elf_object->super_Object).field_0x2c =\n             (elf_object->super_Object).field_0x2c & 0xef | (byte)((this->no_export_ & 1) << 4);\n      }\n      goto LAB_0019637f;\n    }" if (parenthesized_expression "(bVar3)" ( identifier )) (compound_statement "{\n      pPVar4 = elf_object;\n      if (elf_object != (Pluginobj *)0x0) {\n        (elf_object->super_Object).field_0x2c =\n             (elf_object->super_Object).field_0x2c & 0xef | (byte)((this->no_export_ & 1) << 4);\n      }\n      goto LAB_0019637f;\n    }" { (expression_statement "pPVar4 = elf_object;" (assignment_expression "pPVar4 = elf_object" identifier = identifier) ;) (if_statement "if (elf_object != (Pluginobj *)0x0) {\n        (elf_object->super_Object).field_0x2c =\n             (elf_object->super_Object).field_0x2c & 0xef | (byte)((this->no_export_ & 1) << 4);\n      }" if (parenthesized_expression "(elf_object != (Pluginobj *)0x0)" ( (binary_expression "elf_object != (Pluginobj *)0x0" identifier != (cast_expression "(Pluginobj *)0x0" ( (type_descriptor "Pluginobj *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        (elf_object->super_Object).field_0x2c =\n             (elf_object->super_Object).field_0x2c & 0xef | (byte)((this->no_export_ & 1) << 4);\n      }" { (expression_statement "(elf_object->super_Object).field_0x2c =\n             (elf_object->super_Object).field_0x2c & 0xef | (byte)((this->no_export_ & 1) << 4);" (assignment_expression "(elf_object->super_Object).field_0x2c =\n             (elf_object->super_Object).field_0x2c & 0xef | (byte)((this->no_export_ & 1) << 4)" (field_expression "(elf_object->super_Object).field_0x2c" (parenthesized_expression "(elf_object->super_Object)" ( (field_expression "elf_object->super_Object" identifier -> field_identifier) )) . field_identifier) = (binary_expression "(elf_object->super_Object).field_0x2c & 0xef | (byte)((this->no_export_ & 1) << 4)" (binary_expression "(elf_object->super_Object).field_0x2c & 0xef" (field_expression "(elf_object->super_Object).field_0x2c" (parenthesized_expression "(elf_object->super_Object)" ( (field_expression "elf_object->super_Object" identifier -> field_identifier) )) . field_identifier) & number_literal) | (call_expression "(byte)((this->no_export_ & 1) << 4)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "((this->no_export_ & 1) << 4)" ( (binary_expression "(this->no_export_ & 1) << 4" (parenthesized_expression "(this->no_export_ & 1)" ( (binary_expression "this->no_export_ & 1" (field_expression "this->no_export_" identifier -> field_identifier) & number_literal) )) << number_literal) ))))) ;) })) (goto_statement "goto LAB_0019637f;" goto statement_identifier ;) })) (expression_statement "pcVar1 = (this->name_)._M_dataplus._M_p;" (assignment_expression "pcVar1 = (this->name_)._M_dataplus._M_p" identifier = (field_expression "(this->name_)._M_dataplus._M_p" (field_expression "(this->name_)._M_dataplus" (parenthesized_expression "(this->name_)" ( (field_expression "this->name_" identifier -> field_identifier) )) . field_identifier) . field_identifier)) ;) (expression_statement "format = (char *)gettext("%s: member at %zu is not an ELF object");" (assignment_expression "format = (char *)gettext("%s: member at %zu is not an ELF object")" identifier = (cast_expression "(char *)gettext("%s: member at %zu is not an ELF object")" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "gettext("%s: member at %zu is not an ELF object")" identifier (argument_list "("%s: member at %zu is not an ELF object")" ( (string_literal ""%s: member at %zu is not an ELF object"" " string_content ") ))))) ;) comment (expression_statement "gold_error(format,pcVar1,(undefined4)off);" (call_expression "gold_error(format,pcVar1,(undefined4)off)" identifier (argument_list "(format,pcVar1,(undefined4)off)" ( identifier , identifier , (cast_expression "(undefined4)off" ( (type_descriptor "undefined4" type_identifier) ) identifier) ))) ;) })) (expression_statement "pPVar4 = (Pluginobj *)0x0;" (assignment_expression "pPVar4 = (Pluginobj *)0x0" identifier = (cast_expression "(Pluginobj *)0x0" ( (type_descriptor "Pluginobj *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (labeled_statement "LAB_0019637f:\n  if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n       *)member_name._M_dataplus._M_p != &member_name.field_2) {\n    operator_delete(member_name._M_dataplus._M_p);\n  }" statement_identifier : (if_statement "if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n       *)member_name._M_dataplus._M_p != &member_name.field_2) {\n    operator_delete(member_name._M_dataplus._M_p);\n  }" if (parenthesized_expression "((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n       *)member_name._M_dataplus._M_p != &member_name.field_2)" ( (parenthesized_expression "(anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n       *)member_name._M_dataplus._M_p != &member_name.field_2)" ( (ERROR "anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::" (comma_expression "anon_union_16_2_edb7204a_for_basic_string<char,_std" (binary_expression "anon_union_16_2_edb7204a_for_basic_string<char" identifier < identifier) , identifier) : : (binary_expression "char_traits<char>,_std" (binary_expression "char_traits<char" identifier < identifier) > (ERROR "," ,) identifier) : :) (binary_expression "allocator<char>_>_9\n       *)member_name._M_dataplus._M_p != &member_name.field_2" (binary_expression "allocator<char>_>_9\n       *)member_name._M_dataplus._M_p" (binary_expression "allocator<char>_" (binary_expression "allocator<char" identifier < identifier) > identifier) > (binary_expression "_9\n       *)member_name._M_dataplus._M_p" identifier * (ERROR ")" )) (field_expression "member_name._M_dataplus._M_p" (field_expression "member_name._M_dataplus" identifier . field_identifier) . field_identifier))) != (pointer_expression "&member_name.field_2" & (field_expression "member_name.field_2" identifier . field_identifier))) )) )) (compound_statement "{\n    operator_delete(member_name._M_dataplus._M_p);\n  }" { (expression_statement "operator_delete(member_name._M_dataplus._M_p);" (call_expression "operator_delete(member_name._M_dataplus._M_p)" identifier (argument_list "(member_name._M_dataplus._M_p)" ( (field_expression "member_name._M_dataplus._M_p" (field_expression "member_name._M_dataplus" identifier . field_identifier) . field_identifier) ))) ;) }))) (return_statement "return &pPVar4->super_Object;" return (pointer_expression "&pPVar4->super_Object" & (field_expression "pPVar4->super_Object" identifier -> field_identifier)) ;) }))
(translation_unit "int * FUN_00196210(int param_1,undefined4 param_2,undefined4 param_3,undefined1 *param_4)\n\n{\n  int iVar1;\n  char cVar2;\n  int *piVar3;\n  undefined4 uVar4;\n  int *piVar5;\n  undefined4 uVar6;\n  undefined4 uVar7;\n  undefined4 local_b0;\n  undefined4 local_ac;\n  undefined4 local_a8;\n  undefined4 local_a4;\n  undefined4 local_a0;\n  undefined4 local_9c;\n  undefined4 local_98;\n  undefined1 *local_94;\n  undefined4 local_90;\n  undefined1 local_8c [16];\n  undefined1 *local_7c;\n  int local_78;\n  undefined1 local_74 [16];\n  int *local_64;\n  int local_60;\n  int local_5c;\n  int local_58;\n  int local_54;\n  int local_50;\n  int *local_4c;\n  int local_48;\n  int local_44;\n  int local_40;\n  int local_3c;\n  int local_38;\n  int *local_34;\n  int local_30;\n  int local_2c;\n  int local_28;\n  int local_24;\n  int local_20;\n  \n  if (param_4 != (undefined1 *)0x0) {\n    *param_4 = 0;\n  }\n  local_90 = 0;\n  local_8c[0] = 0;\n  local_94 = local_8c;\n                    \n  cVar2 = FUN_00195b60(param_1,param_2,param_3,&local_b0,&local_a4,&local_9c,&local_94);\n  if (cVar2 != '\0') {\n    cVar2 = FUN_000b23e0(local_b0,local_a4,local_a0,&local_ac,&local_a8);\n    piVar5 = (int *)0x0;\n    if (cVar2 != '\0') {\n      iVar1 = *(int *)(*(int *)(param_1 + 0x24) + 0x1c);\n      uVar6 = local_a4;\n      uVar4 = local_a0;\n      uVar7 = local_b0;\n      local_7c = local_74;\n      FUN_000513a0(&local_7c,iVar1,*(int *)(*(int *)(param_1 + 0x24) + 0x20) + iVar1,0,local_a4,\n                   local_a0,local_b0,local_ac);\n      if (local_78 == 0x7fffffff) {\n                    \n                    \n        FUN_0022c7a0("basic_string::append");\n      }\n                    \n      piVar5 = (int *)FUN_001f05c0(&local_7c,"(",1);\n      if ((int *)*piVar5 == piVar5 + 2) {\n        local_5c = piVar5[2];\n        local_58 = piVar5[3];\n        local_54 = piVar5[4];\n        local_50 = piVar5[5];\n        local_64 = &local_5c;\n      }\n      else {\n        local_5c = piVar5[2];\n        local_64 = (int *)*piVar5;\n      }\n      local_60 = piVar5[1];\n      *(undefined1 *)(piVar5 + 2) = 0;\n      *piVar5 = (int)(piVar5 + 2);\n      piVar5[1] = 0;\n                    \n      piVar5 = (int *)FUN_001f05c0(&local_64,local_94,local_90);\n      if ((int *)*piVar5 == piVar5 + 2) {\n        local_44 = piVar5[2];\n        local_40 = piVar5[3];\n        local_3c = piVar5[4];\n        local_38 = piVar5[5];\n        local_4c = &local_44;\n      }\n      else {\n        local_44 = piVar5[2];\n        local_4c = (int *)*piVar5;\n      }\n      local_48 = piVar5[1];\n      *(undefined1 *)(piVar5 + 2) = 0;\n      *piVar5 = (int)(piVar5 + 2);\n      piVar5[1] = 0;\n      if (local_48 == 0x7fffffff) {\n                    \n                    \n        FUN_0022c7a0("basic_string::append");\n      }\n                    \n      piVar5 = (int *)FUN_001f05c0(&local_4c,&DAT_002a0f9f,1);\n      if ((int *)*piVar5 == piVar5 + 2) {\n        local_2c = piVar5[2];\n        local_28 = piVar5[3];\n        local_24 = piVar5[4];\n        local_20 = piVar5[5];\n        local_34 = &local_2c;\n      }\n      else {\n        local_2c = piVar5[2];\n        local_34 = (int *)*piVar5;\n      }\n      local_30 = piVar5[1];\n      *(undefined1 *)(piVar5 + 2) = 0;\n      *piVar5 = (int)(piVar5 + 2);\n      piVar5[1] = 0;\n                    \n      piVar5 = (int *)FUN_000b25f0(&local_34,uVar7,uVar6,uVar4,local_ac,local_a8,param_4);\n      if (local_34 != &local_2c) {\n        FUN_001e6db0(local_34);\n      }\n      if (local_4c != &local_44) {\n        FUN_001e6db0(local_4c);\n      }\n      if (local_64 != &local_5c) {\n        FUN_001e6db0(local_64);\n      }\n      if (local_7c != local_74) {\n        FUN_001e6db0(local_7c);\n      }\n    }\n    if (*(int *)(DAT_0038f378 + 8) == 0) {\n                    \n      FUN_00069d00("../../gold/parameters.h",0x5c,"options",0);\n    }\n    iVar1 = *(int *)(*(int *)(DAT_0038f378 + 8) + 0x593c);\n    if ((iVar1 != 0) &&\n       (piVar3 = (int *)FUN_0013d200(iVar1,local_b0,local_a4,local_a0,local_9c,local_98,piVar5),\n       piVar3 != (int *)0x0)) {\n      if (piVar5 != (int *)0x0) {\n        (**(code **)(*piVar5 + 4))(piVar5);\n      }\n      goto LAB_0019637f;\n    }\n    if (cVar2 != '\0') {\n      piVar3 = piVar5;\n      if (piVar5 != (int *)0x0) {\n        *(byte *)(piVar5 + 0xb) =\n             *(byte *)(piVar5 + 0xb) & 0xef | (byte)((*(byte *)(param_1 + 0xd4) & 1) << 4);\n      }\n      goto LAB_0019637f;\n    }\n    uVar6 = *(undefined4 *)(param_1 + 0xc);\n    uVar4 = gettext("%s: member at %zu is not an ELF object");\n                    \n    FUN_000654b0(uVar4,uVar6,param_2);\n  }\n  piVar3 = (int *)0x0;\nLAB_0019637f:\n  if (local_94 != local_8c) {\n    FUN_001e6db0(local_94);\n  }\n  return piVar3;\n}\n\n" (function_definition "int * FUN_00196210(int param_1,undefined4 param_2,undefined4 param_3,undefined1 *param_4)\n\n{\n  int iVar1;\n  char cVar2;\n  int *piVar3;\n  undefined4 uVar4;\n  int *piVar5;\n  undefined4 uVar6;\n  undefined4 uVar7;\n  undefined4 local_b0;\n  undefined4 local_ac;\n  undefined4 local_a8;\n  undefined4 local_a4;\n  undefined4 local_a0;\n  undefined4 local_9c;\n  undefined4 local_98;\n  undefined1 *local_94;\n  undefined4 local_90;\n  undefined1 local_8c [16];\n  undefined1 *local_7c;\n  int local_78;\n  undefined1 local_74 [16];\n  int *local_64;\n  int local_60;\n  int local_5c;\n  int local_58;\n  int local_54;\n  int local_50;\n  int *local_4c;\n  int local_48;\n  int local_44;\n  int local_40;\n  int local_3c;\n  int local_38;\n  int *local_34;\n  int local_30;\n  int local_2c;\n  int local_28;\n  int local_24;\n  int local_20;\n  \n  if (param_4 != (undefined1 *)0x0) {\n    *param_4 = 0;\n  }\n  local_90 = 0;\n  local_8c[0] = 0;\n  local_94 = local_8c;\n                    \n  cVar2 = FUN_00195b60(param_1,param_2,param_3,&local_b0,&local_a4,&local_9c,&local_94);\n  if (cVar2 != '\0') {\n    cVar2 = FUN_000b23e0(local_b0,local_a4,local_a0,&local_ac,&local_a8);\n    piVar5 = (int *)0x0;\n    if (cVar2 != '\0') {\n      iVar1 = *(int *)(*(int *)(param_1 + 0x24) + 0x1c);\n      uVar6 = local_a4;\n      uVar4 = local_a0;\n      uVar7 = local_b0;\n      local_7c = local_74;\n      FUN_000513a0(&local_7c,iVar1,*(int *)(*(int *)(param_1 + 0x24) + 0x20) + iVar1,0,local_a4,\n                   local_a0,local_b0,local_ac);\n      if (local_78 == 0x7fffffff) {\n                    \n                    \n        FUN_0022c7a0("basic_string::append");\n      }\n                    \n      piVar5 = (int *)FUN_001f05c0(&local_7c,"(",1);\n      if ((int *)*piVar5 == piVar5 + 2) {\n        local_5c = piVar5[2];\n        local_58 = piVar5[3];\n        local_54 = piVar5[4];\n        local_50 = piVar5[5];\n        local_64 = &local_5c;\n      }\n      else {\n        local_5c = piVar5[2];\n        local_64 = (int *)*piVar5;\n      }\n      local_60 = piVar5[1];\n      *(undefined1 *)(piVar5 + 2) = 0;\n      *piVar5 = (int)(piVar5 + 2);\n      piVar5[1] = 0;\n                    \n      piVar5 = (int *)FUN_001f05c0(&local_64,local_94,local_90);\n      if ((int *)*piVar5 == piVar5 + 2) {\n        local_44 = piVar5[2];\n        local_40 = piVar5[3];\n        local_3c = piVar5[4];\n        local_38 = piVar5[5];\n        local_4c = &local_44;\n      }\n      else {\n        local_44 = piVar5[2];\n        local_4c = (int *)*piVar5;\n      }\n      local_48 = piVar5[1];\n      *(undefined1 *)(piVar5 + 2) = 0;\n      *piVar5 = (int)(piVar5 + 2);\n      piVar5[1] = 0;\n      if (local_48 == 0x7fffffff) {\n                    \n                    \n        FUN_0022c7a0("basic_string::append");\n      }\n                    \n      piVar5 = (int *)FUN_001f05c0(&local_4c,&DAT_002a0f9f,1);\n      if ((int *)*piVar5 == piVar5 + 2) {\n        local_2c = piVar5[2];\n        local_28 = piVar5[3];\n        local_24 = piVar5[4];\n        local_20 = piVar5[5];\n        local_34 = &local_2c;\n      }\n      else {\n        local_2c = piVar5[2];\n        local_34 = (int *)*piVar5;\n      }\n      local_30 = piVar5[1];\n      *(undefined1 *)(piVar5 + 2) = 0;\n      *piVar5 = (int)(piVar5 + 2);\n      piVar5[1] = 0;\n                    \n      piVar5 = (int *)FUN_000b25f0(&local_34,uVar7,uVar6,uVar4,local_ac,local_a8,param_4);\n      if (local_34 != &local_2c) {\n        FUN_001e6db0(local_34);\n      }\n      if (local_4c != &local_44) {\n        FUN_001e6db0(local_4c);\n      }\n      if (local_64 != &local_5c) {\n        FUN_001e6db0(local_64);\n      }\n      if (local_7c != local_74) {\n        FUN_001e6db0(local_7c);\n      }\n    }\n    if (*(int *)(DAT_0038f378 + 8) == 0) {\n                    \n      FUN_00069d00("../../gold/parameters.h",0x5c,"options",0);\n    }\n    iVar1 = *(int *)(*(int *)(DAT_0038f378 + 8) + 0x593c);\n    if ((iVar1 != 0) &&\n       (piVar3 = (int *)FUN_0013d200(iVar1,local_b0,local_a4,local_a0,local_9c,local_98,piVar5),\n       piVar3 != (int *)0x0)) {\n      if (piVar5 != (int *)0x0) {\n        (**(code **)(*piVar5 + 4))(piVar5);\n      }\n      goto LAB_0019637f;\n    }\n    if (cVar2 != '\0') {\n      piVar3 = piVar5;\n      if (piVar5 != (int *)0x0) {\n        *(byte *)(piVar5 + 0xb) =\n             *(byte *)(piVar5 + 0xb) & 0xef | (byte)((*(byte *)(param_1 + 0xd4) & 1) << 4);\n      }\n      goto LAB_0019637f;\n    }\n    uVar6 = *(undefined4 *)(param_1 + 0xc);\n    uVar4 = gettext("%s: member at %zu is not an ELF object");\n                    \n    FUN_000654b0(uVar4,uVar6,param_2);\n  }\n  piVar3 = (int *)0x0;\nLAB_0019637f:\n  if (local_94 != local_8c) {\n    FUN_001e6db0(local_94);\n  }\n  return piVar3;\n}" primitive_type (pointer_declarator "* FUN_00196210(int param_1,undefined4 param_2,undefined4 param_3,undefined1 *param_4)" * (function_declarator "FUN_00196210(int param_1,undefined4 param_2,undefined4 param_3,undefined1 *param_4)" identifier (parameter_list "(int param_1,undefined4 param_2,undefined4 param_3,undefined1 *param_4)" ( (parameter_declaration "int param_1" primitive_type identifier) , (parameter_declaration "undefined4 param_2" type_identifier identifier) , (parameter_declaration "undefined4 param_3" type_identifier identifier) , (parameter_declaration "undefined1 *param_4" type_identifier (pointer_declarator "*param_4" * identifier)) )))) (compound_statement "{\n  int iVar1;\n  char cVar2;\n  int *piVar3;\n  undefined4 uVar4;\n  int *piVar5;\n  undefined4 uVar6;\n  undefined4 uVar7;\n  undefined4 local_b0;\n  undefined4 local_ac;\n  undefined4 local_a8;\n  undefined4 local_a4;\n  undefined4 local_a0;\n  undefined4 local_9c;\n  undefined4 local_98;\n  undefined1 *local_94;\n  undefined4 local_90;\n  undefined1 local_8c [16];\n  undefined1 *local_7c;\n  int local_78;\n  undefined1 local_74 [16];\n  int *local_64;\n  int local_60;\n  int local_5c;\n  int local_58;\n  int local_54;\n  int local_50;\n  int *local_4c;\n  int local_48;\n  int local_44;\n  int local_40;\n  int local_3c;\n  int local_38;\n  int *local_34;\n  int local_30;\n  int local_2c;\n  int local_28;\n  int local_24;\n  int local_20;\n  \n  if (param_4 != (undefined1 *)0x0) {\n    *param_4 = 0;\n  }\n  local_90 = 0;\n  local_8c[0] = 0;\n  local_94 = local_8c;\n                    \n  cVar2 = FUN_00195b60(param_1,param_2,param_3,&local_b0,&local_a4,&local_9c,&local_94);\n  if (cVar2 != '\0') {\n    cVar2 = FUN_000b23e0(local_b0,local_a4,local_a0,&local_ac,&local_a8);\n    piVar5 = (int *)0x0;\n    if (cVar2 != '\0') {\n      iVar1 = *(int *)(*(int *)(param_1 + 0x24) + 0x1c);\n      uVar6 = local_a4;\n      uVar4 = local_a0;\n      uVar7 = local_b0;\n      local_7c = local_74;\n      FUN_000513a0(&local_7c,iVar1,*(int *)(*(int *)(param_1 + 0x24) + 0x20) + iVar1,0,local_a4,\n                   local_a0,local_b0,local_ac);\n      if (local_78 == 0x7fffffff) {\n                    \n                    \n        FUN_0022c7a0("basic_string::append");\n      }\n                    \n      piVar5 = (int *)FUN_001f05c0(&local_7c,"(",1);\n      if ((int *)*piVar5 == piVar5 + 2) {\n        local_5c = piVar5[2];\n        local_58 = piVar5[3];\n        local_54 = piVar5[4];\n        local_50 = piVar5[5];\n        local_64 = &local_5c;\n      }\n      else {\n        local_5c = piVar5[2];\n        local_64 = (int *)*piVar5;\n      }\n      local_60 = piVar5[1];\n      *(undefined1 *)(piVar5 + 2) = 0;\n      *piVar5 = (int)(piVar5 + 2);\n      piVar5[1] = 0;\n                    \n      piVar5 = (int *)FUN_001f05c0(&local_64,local_94,local_90);\n      if ((int *)*piVar5 == piVar5 + 2) {\n        local_44 = piVar5[2];\n        local_40 = piVar5[3];\n        local_3c = piVar5[4];\n        local_38 = piVar5[5];\n        local_4c = &local_44;\n      }\n      else {\n        local_44 = piVar5[2];\n        local_4c = (int *)*piVar5;\n      }\n      local_48 = piVar5[1];\n      *(undefined1 *)(piVar5 + 2) = 0;\n      *piVar5 = (int)(piVar5 + 2);\n      piVar5[1] = 0;\n      if (local_48 == 0x7fffffff) {\n                    \n                    \n        FUN_0022c7a0("basic_string::append");\n      }\n                    \n      piVar5 = (int *)FUN_001f05c0(&local_4c,&DAT_002a0f9f,1);\n      if ((int *)*piVar5 == piVar5 + 2) {\n        local_2c = piVar5[2];\n        local_28 = piVar5[3];\n        local_24 = piVar5[4];\n        local_20 = piVar5[5];\n        local_34 = &local_2c;\n      }\n      else {\n        local_2c = piVar5[2];\n        local_34 = (int *)*piVar5;\n      }\n      local_30 = piVar5[1];\n      *(undefined1 *)(piVar5 + 2) = 0;\n      *piVar5 = (int)(piVar5 + 2);\n      piVar5[1] = 0;\n                    \n      piVar5 = (int *)FUN_000b25f0(&local_34,uVar7,uVar6,uVar4,local_ac,local_a8,param_4);\n      if (local_34 != &local_2c) {\n        FUN_001e6db0(local_34);\n      }\n      if (local_4c != &local_44) {\n        FUN_001e6db0(local_4c);\n      }\n      if (local_64 != &local_5c) {\n        FUN_001e6db0(local_64);\n      }\n      if (local_7c != local_74) {\n        FUN_001e6db0(local_7c);\n      }\n    }\n    if (*(int *)(DAT_0038f378 + 8) == 0) {\n                    \n      FUN_00069d00("../../gold/parameters.h",0x5c,"options",0);\n    }\n    iVar1 = *(int *)(*(int *)(DAT_0038f378 + 8) + 0x593c);\n    if ((iVar1 != 0) &&\n       (piVar3 = (int *)FUN_0013d200(iVar1,local_b0,local_a4,local_a0,local_9c,local_98,piVar5),\n       piVar3 != (int *)0x0)) {\n      if (piVar5 != (int *)0x0) {\n        (**(code **)(*piVar5 + 4))(piVar5);\n      }\n      goto LAB_0019637f;\n    }\n    if (cVar2 != '\0') {\n      piVar3 = piVar5;\n      if (piVar5 != (int *)0x0) {\n        *(byte *)(piVar5 + 0xb) =\n             *(byte *)(piVar5 + 0xb) & 0xef | (byte)((*(byte *)(param_1 + 0xd4) & 1) << 4);\n      }\n      goto LAB_0019637f;\n    }\n    uVar6 = *(undefined4 *)(param_1 + 0xc);\n    uVar4 = gettext("%s: member at %zu is not an ELF object");\n                    \n    FUN_000654b0(uVar4,uVar6,param_2);\n  }\n  piVar3 = (int *)0x0;\nLAB_0019637f:\n  if (local_94 != local_8c) {\n    FUN_001e6db0(local_94);\n  }\n  return piVar3;\n}" { (declaration "int iVar1;" primitive_type identifier ;) (declaration "char cVar2;" primitive_type identifier ;) (declaration "int *piVar3;" primitive_type (pointer_declarator "*piVar3" * identifier) ;) (declaration "undefined4 uVar4;" type_identifier identifier ;) (declaration "int *piVar5;" primitive_type (pointer_declarator "*piVar5" * identifier) ;) (declaration "undefined4 uVar6;" type_identifier identifier ;) (declaration "undefined4 uVar7;" type_identifier identifier ;) (declaration "undefined4 local_b0;" type_identifier identifier ;) (declaration "undefined4 local_ac;" type_identifier identifier ;) (declaration "undefined4 local_a8;" type_identifier identifier ;) (declaration "undefined4 local_a4;" type_identifier identifier ;) (declaration "undefined4 local_a0;" type_identifier identifier ;) (declaration "undefined4 local_9c;" type_identifier identifier ;) (declaration "undefined4 local_98;" type_identifier identifier ;) (declaration "undefined1 *local_94;" type_identifier (pointer_declarator "*local_94" * identifier) ;) (declaration "undefined4 local_90;" type_identifier identifier ;) (declaration "undefined1 local_8c [16];" type_identifier (array_declarator "local_8c [16]" identifier [ number_literal ]) ;) (declaration "undefined1 *local_7c;" type_identifier (pointer_declarator "*local_7c" * identifier) ;) (declaration "int local_78;" primitive_type identifier ;) (declaration "undefined1 local_74 [16];" type_identifier (array_declarator "local_74 [16]" identifier [ number_literal ]) ;) (declaration "int *local_64;" primitive_type (pointer_declarator "*local_64" * identifier) ;) (declaration "int local_60;" primitive_type identifier ;) (declaration "int local_5c;" primitive_type identifier ;) (declaration "int local_58;" primitive_type identifier ;) (declaration "int local_54;" primitive_type identifier ;) (declaration "int local_50;" primitive_type identifier ;) (declaration "int *local_4c;" primitive_type (pointer_declarator "*local_4c" * identifier) ;) (declaration "int local_48;" primitive_type identifier ;) (declaration "int local_44;" primitive_type identifier ;) (declaration "int local_40;" primitive_type identifier ;) (declaration "int local_3c;" primitive_type identifier ;) (declaration "int local_38;" primitive_type identifier ;) (declaration "int *local_34;" primitive_type (pointer_declarator "*local_34" * identifier) ;) (declaration "int local_30;" primitive_type identifier ;) (declaration "int local_2c;" primitive_type identifier ;) (declaration "int local_28;" primitive_type identifier ;) (declaration "int local_24;" primitive_type identifier ;) (declaration "int local_20;" primitive_type identifier ;) (if_statement "if (param_4 != (undefined1 *)0x0) {\n    *param_4 = 0;\n  }" if (parenthesized_expression "(param_4 != (undefined1 *)0x0)" ( (binary_expression "param_4 != (undefined1 *)0x0" identifier != (cast_expression "(undefined1 *)0x0" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    *param_4 = 0;\n  }" { (expression_statement "*param_4 = 0;" (assignment_expression "*param_4 = 0" (pointer_expression "*param_4" * identifier) = number_literal) ;) })) (expression_statement "local_90 = 0;" (assignment_expression "local_90 = 0" identifier = number_literal) ;) (expression_statement "local_8c[0] = 0;" (assignment_expression "local_8c[0] = 0" (subscript_expression "local_8c[0]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "local_94 = local_8c;" (assignment_expression "local_94 = local_8c" identifier = identifier) ;) (expression_statement "cVar2 = FUN_00195b60(param_1,param_2,param_3,&local_b0,&local_a4,&local_9c,&local_94);" (assignment_expression "cVar2 = FUN_00195b60(param_1,param_2,param_3,&local_b0,&local_a4,&local_9c,&local_94)" identifier = (call_expression "FUN_00195b60(param_1,param_2,param_3,&local_b0,&local_a4,&local_9c,&local_94)" identifier (argument_list "(param_1,param_2,param_3,&local_b0,&local_a4,&local_9c,&local_94)" ( identifier , identifier , identifier , (pointer_expression "&local_b0" & identifier) , (pointer_expression "&local_a4" & identifier) , (pointer_expression "&local_9c" & identifier) , (pointer_expression "&local_94" & identifier) )))) ;) (if_statement "if (cVar2 != '\0') {\n    cVar2 = FUN_000b23e0(local_b0,local_a4,local_a0,&local_ac,&local_a8);\n    piVar5 = (int *)0x0;\n    if (cVar2 != '\0') {\n      iVar1 = *(int *)(*(int *)(param_1 + 0x24) + 0x1c);\n      uVar6 = local_a4;\n      uVar4 = local_a0;\n      uVar7 = local_b0;\n      local_7c = local_74;\n      FUN_000513a0(&local_7c,iVar1,*(int *)(*(int *)(param_1 + 0x24) + 0x20) + iVar1,0,local_a4,\n                   local_a0,local_b0,local_ac);\n      if (local_78 == 0x7fffffff) {\n                    \n                    \n        FUN_0022c7a0("basic_string::append");\n      }\n                    \n      piVar5 = (int *)FUN_001f05c0(&local_7c,"(",1);\n      if ((int *)*piVar5 == piVar5 + 2) {\n        local_5c = piVar5[2];\n        local_58 = piVar5[3];\n        local_54 = piVar5[4];\n        local_50 = piVar5[5];\n        local_64 = &local_5c;\n      }\n      else {\n        local_5c = piVar5[2];\n        local_64 = (int *)*piVar5;\n      }\n      local_60 = piVar5[1];\n      *(undefined1 *)(piVar5 + 2) = 0;\n      *piVar5 = (int)(piVar5 + 2);\n      piVar5[1] = 0;\n                    \n      piVar5 = (int *)FUN_001f05c0(&local_64,local_94,local_90);\n      if ((int *)*piVar5 == piVar5 + 2) {\n        local_44 = piVar5[2];\n        local_40 = piVar5[3];\n        local_3c = piVar5[4];\n        local_38 = piVar5[5];\n        local_4c = &local_44;\n      }\n      else {\n        local_44 = piVar5[2];\n        local_4c = (int *)*piVar5;\n      }\n      local_48 = piVar5[1];\n      *(undefined1 *)(piVar5 + 2) = 0;\n      *piVar5 = (int)(piVar5 + 2);\n      piVar5[1] = 0;\n      if (local_48 == 0x7fffffff) {\n                    \n                    \n        FUN_0022c7a0("basic_string::append");\n      }\n                    \n      piVar5 = (int *)FUN_001f05c0(&local_4c,&DAT_002a0f9f,1);\n      if ((int *)*piVar5 == piVar5 + 2) {\n        local_2c = piVar5[2];\n        local_28 = piVar5[3];\n        local_24 = piVar5[4];\n        local_20 = piVar5[5];\n        local_34 = &local_2c;\n      }\n      else {\n        local_2c = piVar5[2];\n        local_34 = (int *)*piVar5;\n      }\n      local_30 = piVar5[1];\n      *(undefined1 *)(piVar5 + 2) = 0;\n      *piVar5 = (int)(piVar5 + 2);\n      piVar5[1] = 0;\n                    \n      piVar5 = (int *)FUN_000b25f0(&local_34,uVar7,uVar6,uVar4,local_ac,local_a8,param_4);\n      if (local_34 != &local_2c) {\n        FUN_001e6db0(local_34);\n      }\n      if (local_4c != &local_44) {\n        FUN_001e6db0(local_4c);\n      }\n      if (local_64 != &local_5c) {\n        FUN_001e6db0(local_64);\n      }\n      if (local_7c != local_74) {\n        FUN_001e6db0(local_7c);\n      }\n    }\n    if (*(int *)(DAT_0038f378 + 8) == 0) {\n                    \n      FUN_00069d00("../../gold/parameters.h",0x5c,"options",0);\n    }\n    iVar1 = *(int *)(*(int *)(DAT_0038f378 + 8) + 0x593c);\n    if ((iVar1 != 0) &&\n       (piVar3 = (int *)FUN_0013d200(iVar1,local_b0,local_a4,local_a0,local_9c,local_98,piVar5),\n       piVar3 != (int *)0x0)) {\n      if (piVar5 != (int *)0x0) {\n        (**(code **)(*piVar5 + 4))(piVar5);\n      }\n      goto LAB_0019637f;\n    }\n    if (cVar2 != '\0') {\n      piVar3 = piVar5;\n      if (piVar5 != (int *)0x0) {\n        *(byte *)(piVar5 + 0xb) =\n             *(byte *)(piVar5 + 0xb) & 0xef | (byte)((*(byte *)(param_1 + 0xd4) & 1) << 4);\n      }\n      goto LAB_0019637f;\n    }\n    uVar6 = *(undefined4 *)(param_1 + 0xc);\n    uVar4 = gettext("%s: member at %zu is not an ELF object");\n                    \n    FUN_000654b0(uVar4,uVar6,param_2);\n  }" if (parenthesized_expression "(cVar2 != '\0')" ( (binary_expression "cVar2 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n    cVar2 = FUN_000b23e0(local_b0,local_a4,local_a0,&local_ac,&local_a8);\n    piVar5 = (int *)0x0;\n    if (cVar2 != '\0') {\n      iVar1 = *(int *)(*(int *)(param_1 + 0x24) + 0x1c);\n      uVar6 = local_a4;\n      uVar4 = local_a0;\n      uVar7 = local_b0;\n      local_7c = local_74;\n      FUN_000513a0(&local_7c,iVar1,*(int *)(*(int *)(param_1 + 0x24) + 0x20) + iVar1,0,local_a4,\n                   local_a0,local_b0,local_ac);\n      if (local_78 == 0x7fffffff) {\n                    \n                    \n        FUN_0022c7a0("basic_string::append");\n      }\n                    \n      piVar5 = (int *)FUN_001f05c0(&local_7c,"(",1);\n      if ((int *)*piVar5 == piVar5 + 2) {\n        local_5c = piVar5[2];\n        local_58 = piVar5[3];\n        local_54 = piVar5[4];\n        local_50 = piVar5[5];\n        local_64 = &local_5c;\n      }\n      else {\n        local_5c = piVar5[2];\n        local_64 = (int *)*piVar5;\n      }\n      local_60 = piVar5[1];\n      *(undefined1 *)(piVar5 + 2) = 0;\n      *piVar5 = (int)(piVar5 + 2);\n      piVar5[1] = 0;\n                    \n      piVar5 = (int *)FUN_001f05c0(&local_64,local_94,local_90);\n      if ((int *)*piVar5 == piVar5 + 2) {\n        local_44 = piVar5[2];\n        local_40 = piVar5[3];\n        local_3c = piVar5[4];\n        local_38 = piVar5[5];\n        local_4c = &local_44;\n      }\n      else {\n        local_44 = piVar5[2];\n        local_4c = (int *)*piVar5;\n      }\n      local_48 = piVar5[1];\n      *(undefined1 *)(piVar5 + 2) = 0;\n      *piVar5 = (int)(piVar5 + 2);\n      piVar5[1] = 0;\n      if (local_48 == 0x7fffffff) {\n                    \n                    \n        FUN_0022c7a0("basic_string::append");\n      }\n                    \n      piVar5 = (int *)FUN_001f05c0(&local_4c,&DAT_002a0f9f,1);\n      if ((int *)*piVar5 == piVar5 + 2) {\n        local_2c = piVar5[2];\n        local_28 = piVar5[3];\n        local_24 = piVar5[4];\n        local_20 = piVar5[5];\n        local_34 = &local_2c;\n      }\n      else {\n        local_2c = piVar5[2];\n        local_34 = (int *)*piVar5;\n      }\n      local_30 = piVar5[1];\n      *(undefined1 *)(piVar5 + 2) = 0;\n      *piVar5 = (int)(piVar5 + 2);\n      piVar5[1] = 0;\n                    \n      piVar5 = (int *)FUN_000b25f0(&local_34,uVar7,uVar6,uVar4,local_ac,local_a8,param_4);\n      if (local_34 != &local_2c) {\n        FUN_001e6db0(local_34);\n      }\n      if (local_4c != &local_44) {\n        FUN_001e6db0(local_4c);\n      }\n      if (local_64 != &local_5c) {\n        FUN_001e6db0(local_64);\n      }\n      if (local_7c != local_74) {\n        FUN_001e6db0(local_7c);\n      }\n    }\n    if (*(int *)(DAT_0038f378 + 8) == 0) {\n                    \n      FUN_00069d00("../../gold/parameters.h",0x5c,"options",0);\n    }\n    iVar1 = *(int *)(*(int *)(DAT_0038f378 + 8) + 0x593c);\n    if ((iVar1 != 0) &&\n       (piVar3 = (int *)FUN_0013d200(iVar1,local_b0,local_a4,local_a0,local_9c,local_98,piVar5),\n       piVar3 != (int *)0x0)) {\n      if (piVar5 != (int *)0x0) {\n        (**(code **)(*piVar5 + 4))(piVar5);\n      }\n      goto LAB_0019637f;\n    }\n    if (cVar2 != '\0') {\n      piVar3 = piVar5;\n      if (piVar5 != (int *)0x0) {\n        *(byte *)(piVar5 + 0xb) =\n             *(byte *)(piVar5 + 0xb) & 0xef | (byte)((*(byte *)(param_1 + 0xd4) & 1) << 4);\n      }\n      goto LAB_0019637f;\n    }\n    uVar6 = *(undefined4 *)(param_1 + 0xc);\n    uVar4 = gettext("%s: member at %zu is not an ELF object");\n                    \n    FUN_000654b0(uVar4,uVar6,param_2);\n  }" { (expression_statement "cVar2 = FUN_000b23e0(local_b0,local_a4,local_a0,&local_ac,&local_a8);" (assignment_expression "cVar2 = FUN_000b23e0(local_b0,local_a4,local_a0,&local_ac,&local_a8)" identifier = (call_expression "FUN_000b23e0(local_b0,local_a4,local_a0,&local_ac,&local_a8)" identifier (argument_list "(local_b0,local_a4,local_a0,&local_ac,&local_a8)" ( identifier , identifier , identifier , (pointer_expression "&local_ac" & identifier) , (pointer_expression "&local_a8" & identifier) )))) ;) (expression_statement "piVar5 = (int *)0x0;" (assignment_expression "piVar5 = (int *)0x0" identifier = (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (if_statement "if (cVar2 != '\0') {\n      iVar1 = *(int *)(*(int *)(param_1 + 0x24) + 0x1c);\n      uVar6 = local_a4;\n      uVar4 = local_a0;\n      uVar7 = local_b0;\n      local_7c = local_74;\n      FUN_000513a0(&local_7c,iVar1,*(int *)(*(int *)(param_1 + 0x24) + 0x20) + iVar1,0,local_a4,\n                   local_a0,local_b0,local_ac);\n      if (local_78 == 0x7fffffff) {\n                    \n                    \n        FUN_0022c7a0("basic_string::append");\n      }\n                    \n      piVar5 = (int *)FUN_001f05c0(&local_7c,"(",1);\n      if ((int *)*piVar5 == piVar5 + 2) {\n        local_5c = piVar5[2];\n        local_58 = piVar5[3];\n        local_54 = piVar5[4];\n        local_50 = piVar5[5];\n        local_64 = &local_5c;\n      }\n      else {\n        local_5c = piVar5[2];\n        local_64 = (int *)*piVar5;\n      }\n      local_60 = piVar5[1];\n      *(undefined1 *)(piVar5 + 2) = 0;\n      *piVar5 = (int)(piVar5 + 2);\n      piVar5[1] = 0;\n                    \n      piVar5 = (int *)FUN_001f05c0(&local_64,local_94,local_90);\n      if ((int *)*piVar5 == piVar5 + 2) {\n        local_44 = piVar5[2];\n        local_40 = piVar5[3];\n        local_3c = piVar5[4];\n        local_38 = piVar5[5];\n        local_4c = &local_44;\n      }\n      else {\n        local_44 = piVar5[2];\n        local_4c = (int *)*piVar5;\n      }\n      local_48 = piVar5[1];\n      *(undefined1 *)(piVar5 + 2) = 0;\n      *piVar5 = (int)(piVar5 + 2);\n      piVar5[1] = 0;\n      if (local_48 == 0x7fffffff) {\n                    \n                    \n        FUN_0022c7a0("basic_string::append");\n      }\n                    \n      piVar5 = (int *)FUN_001f05c0(&local_4c,&DAT_002a0f9f,1);\n      if ((int *)*piVar5 == piVar5 + 2) {\n        local_2c = piVar5[2];\n        local_28 = piVar5[3];\n        local_24 = piVar5[4];\n        local_20 = piVar5[5];\n        local_34 = &local_2c;\n      }\n      else {\n        local_2c = piVar5[2];\n        local_34 = (int *)*piVar5;\n      }\n      local_30 = piVar5[1];\n      *(undefined1 *)(piVar5 + 2) = 0;\n      *piVar5 = (int)(piVar5 + 2);\n      piVar5[1] = 0;\n                    \n      piVar5 = (int *)FUN_000b25f0(&local_34,uVar7,uVar6,uVar4,local_ac,local_a8,param_4);\n      if (local_34 != &local_2c) {\n        FUN_001e6db0(local_34);\n      }\n      if (local_4c != &local_44) {\n        FUN_001e6db0(local_4c);\n      }\n      if (local_64 != &local_5c) {\n        FUN_001e6db0(local_64);\n      }\n      if (local_7c != local_74) {\n        FUN_001e6db0(local_7c);\n      }\n    }" if (parenthesized_expression "(cVar2 != '\0')" ( (binary_expression "cVar2 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n      iVar1 = *(int *)(*(int *)(param_1 + 0x24) + 0x1c);\n      uVar6 = local_a4;\n      uVar4 = local_a0;\n      uVar7 = local_b0;\n      local_7c = local_74;\n      FUN_000513a0(&local_7c,iVar1,*(int *)(*(int *)(param_1 + 0x24) + 0x20) + iVar1,0,local_a4,\n                   local_a0,local_b0,local_ac);\n      if (local_78 == 0x7fffffff) {\n                    \n                    \n        FUN_0022c7a0("basic_string::append");\n      }\n                    \n      piVar5 = (int *)FUN_001f05c0(&local_7c,"(",1);\n      if ((int *)*piVar5 == piVar5 + 2) {\n        local_5c = piVar5[2];\n        local_58 = piVar5[3];\n        local_54 = piVar5[4];\n        local_50 = piVar5[5];\n        local_64 = &local_5c;\n      }\n      else {\n        local_5c = piVar5[2];\n        local_64 = (int *)*piVar5;\n      }\n      local_60 = piVar5[1];\n      *(undefined1 *)(piVar5 + 2) = 0;\n      *piVar5 = (int)(piVar5 + 2);\n      piVar5[1] = 0;\n                    \n      piVar5 = (int *)FUN_001f05c0(&local_64,local_94,local_90);\n      if ((int *)*piVar5 == piVar5 + 2) {\n        local_44 = piVar5[2];\n        local_40 = piVar5[3];\n        local_3c = piVar5[4];\n        local_38 = piVar5[5];\n        local_4c = &local_44;\n      }\n      else {\n        local_44 = piVar5[2];\n        local_4c = (int *)*piVar5;\n      }\n      local_48 = piVar5[1];\n      *(undefined1 *)(piVar5 + 2) = 0;\n      *piVar5 = (int)(piVar5 + 2);\n      piVar5[1] = 0;\n      if (local_48 == 0x7fffffff) {\n                    \n                    \n        FUN_0022c7a0("basic_string::append");\n      }\n                    \n      piVar5 = (int *)FUN_001f05c0(&local_4c,&DAT_002a0f9f,1);\n      if ((int *)*piVar5 == piVar5 + 2) {\n        local_2c = piVar5[2];\n        local_28 = piVar5[3];\n        local_24 = piVar5[4];\n        local_20 = piVar5[5];\n        local_34 = &local_2c;\n      }\n      else {\n        local_2c = piVar5[2];\n        local_34 = (int *)*piVar5;\n      }\n      local_30 = piVar5[1];\n      *(undefined1 *)(piVar5 + 2) = 0;\n      *piVar5 = (int)(piVar5 + 2);\n      piVar5[1] = 0;\n                    \n      piVar5 = (int *)FUN_000b25f0(&local_34,uVar7,uVar6,uVar4,local_ac,local_a8,param_4);\n      if (local_34 != &local_2c) {\n        FUN_001e6db0(local_34);\n      }\n      if (local_4c != &local_44) {\n        FUN_001e6db0(local_4c);\n      }\n      if (local_64 != &local_5c) {\n        FUN_001e6db0(local_64);\n      }\n      if (local_7c != local_74) {\n        FUN_001e6db0(local_7c);\n      }\n    }" { (expression_statement "iVar1 = *(int *)(*(int *)(param_1 + 0x24) + 0x1c);" (assignment_expression "iVar1 = *(int *)(*(int *)(param_1 + 0x24) + 0x1c)" identifier = (pointer_expression "*(int *)(*(int *)(param_1 + 0x24) + 0x1c)" * (cast_expression "(int *)(*(int *)(param_1 + 0x24) + 0x1c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(param_1 + 0x24) + 0x1c)" ( (binary_expression "*(int *)(param_1 + 0x24) + 0x1c" (pointer_expression "*(int *)(param_1 + 0x24)" * (cast_expression "(int *)(param_1 + 0x24)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x24)" ( (binary_expression "param_1 + 0x24" identifier + number_literal) )))) + number_literal) ))))) ;) (expression_statement "uVar6 = local_a4;" (assignment_expression "uVar6 = local_a4" identifier = identifier) ;) (expression_statement "uVar4 = local_a0;" (assignment_expression "uVar4 = local_a0" identifier = identifier) ;) (expression_statement "uVar7 = local_b0;" (assignment_expression "uVar7 = local_b0" identifier = identifier) ;) (expression_statement "local_7c = local_74;" (assignment_expression "local_7c = local_74" identifier = identifier) ;) (expression_statement "FUN_000513a0(&local_7c,iVar1,*(int *)(*(int *)(param_1 + 0x24) + 0x20) + iVar1,0,local_a4,\n                   local_a0,local_b0,local_ac);" (call_expression "FUN_000513a0(&local_7c,iVar1,*(int *)(*(int *)(param_1 + 0x24) + 0x20) + iVar1,0,local_a4,\n                   local_a0,local_b0,local_ac)" identifier (argument_list "(&local_7c,iVar1,*(int *)(*(int *)(param_1 + 0x24) + 0x20) + iVar1,0,local_a4,\n                   local_a0,local_b0,local_ac)" ( (pointer_expression "&local_7c" & identifier) , identifier , (binary_expression "*(int *)(*(int *)(param_1 + 0x24) + 0x20) + iVar1" (pointer_expression "*(int *)(*(int *)(param_1 + 0x24) + 0x20)" * (cast_expression "(int *)(*(int *)(param_1 + 0x24) + 0x20)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(param_1 + 0x24) + 0x20)" ( (binary_expression "*(int *)(param_1 + 0x24) + 0x20" (pointer_expression "*(int *)(param_1 + 0x24)" * (cast_expression "(int *)(param_1 + 0x24)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x24)" ( (binary_expression "param_1 + 0x24" identifier + number_literal) )))) + number_literal) )))) + identifier) , number_literal , identifier , identifier , identifier , identifier ))) ;) (if_statement "if (local_78 == 0x7fffffff) {\n                    \n                    \n        FUN_0022c7a0("basic_string::append");\n      }" if (parenthesized_expression "(local_78 == 0x7fffffff)" ( (binary_expression "local_78 == 0x7fffffff" identifier == number_literal) )) (compound_statement "{\n                    \n                    \n        FUN_0022c7a0("basic_string::append");\n      }" { (expression_statement "FUN_0022c7a0("basic_string::append");" (call_expression "FUN_0022c7a0("basic_string::append")" identifier (argument_list "("basic_string::append")" ( (string_literal ""basic_string::append"" " string_content ") ))) ;) })) (expression_statement "piVar5 = (int *)FUN_001f05c0(&local_7c,"(",1);" (assignment_expression "piVar5 = (int *)FUN_001f05c0(&local_7c,"(",1)" identifier = (cast_expression "(int *)FUN_001f05c0(&local_7c,"(",1)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_001f05c0(&local_7c,"(",1)" identifier (argument_list "(&local_7c,"(",1)" ( (pointer_expression "&local_7c" & identifier) , (string_literal ""("" " string_content ") , number_literal ))))) ;) (if_statement "if ((int *)*piVar5 == piVar5 + 2) {\n        local_5c = piVar5[2];\n        local_58 = piVar5[3];\n        local_54 = piVar5[4];\n        local_50 = piVar5[5];\n        local_64 = &local_5c;\n      }\n      else {\n        local_5c = piVar5[2];\n        local_64 = (int *)*piVar5;\n      }" if (parenthesized_expression "((int *)*piVar5 == piVar5 + 2)" ( (binary_expression "(int *)*piVar5 == piVar5 + 2" (cast_expression "(int *)*piVar5" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*piVar5" * identifier)) == (binary_expression "piVar5 + 2" identifier + number_literal)) )) (compound_statement "{\n        local_5c = piVar5[2];\n        local_58 = piVar5[3];\n        local_54 = piVar5[4];\n        local_50 = piVar5[5];\n        local_64 = &local_5c;\n      }" { (expression_statement "local_5c = piVar5[2];" (assignment_expression "local_5c = piVar5[2]" identifier = (subscript_expression "piVar5[2]" identifier [ number_literal ])) ;) (expression_statement "local_58 = piVar5[3];" (assignment_expression "local_58 = piVar5[3]" identifier = (subscript_expression "piVar5[3]" identifier [ number_literal ])) ;) (expression_statement "local_54 = piVar5[4];" (assignment_expression "local_54 = piVar5[4]" identifier = (subscript_expression "piVar5[4]" identifier [ number_literal ])) ;) (expression_statement "local_50 = piVar5[5];" (assignment_expression "local_50 = piVar5[5]" identifier = (subscript_expression "piVar5[5]" identifier [ number_literal ])) ;) (expression_statement "local_64 = &local_5c;" (assignment_expression "local_64 = &local_5c" identifier = (pointer_expression "&local_5c" & identifier)) ;) }) (else_clause "else {\n        local_5c = piVar5[2];\n        local_64 = (int *)*piVar5;\n      }" else (compound_statement "{\n        local_5c = piVar5[2];\n        local_64 = (int *)*piVar5;\n      }" { (expression_statement "local_5c = piVar5[2];" (assignment_expression "local_5c = piVar5[2]" identifier = (subscript_expression "piVar5[2]" identifier [ number_literal ])) ;) (expression_statement "local_64 = (int *)*piVar5;" (assignment_expression "local_64 = (int *)*piVar5" identifier = (cast_expression "(int *)*piVar5" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*piVar5" * identifier))) ;) }))) (expression_statement "local_60 = piVar5[1];" (assignment_expression "local_60 = piVar5[1]" identifier = (subscript_expression "piVar5[1]" identifier [ number_literal ])) ;) (expression_statement "*(undefined1 *)(piVar5 + 2) = 0;" (assignment_expression "*(undefined1 *)(piVar5 + 2) = 0" (pointer_expression "*(undefined1 *)(piVar5 + 2)" * (cast_expression "(undefined1 *)(piVar5 + 2)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar5 + 2)" ( (binary_expression "piVar5 + 2" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*piVar5 = (int)(piVar5 + 2);" (assignment_expression "*piVar5 = (int)(piVar5 + 2)" (pointer_expression "*piVar5" * identifier) = (cast_expression "(int)(piVar5 + 2)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(piVar5 + 2)" ( (binary_expression "piVar5 + 2" identifier + number_literal) )))) ;) (expression_statement "piVar5[1] = 0;" (assignment_expression "piVar5[1] = 0" (subscript_expression "piVar5[1]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "piVar5 = (int *)FUN_001f05c0(&local_64,local_94,local_90);" (assignment_expression "piVar5 = (int *)FUN_001f05c0(&local_64,local_94,local_90)" identifier = (cast_expression "(int *)FUN_001f05c0(&local_64,local_94,local_90)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_001f05c0(&local_64,local_94,local_90)" identifier (argument_list "(&local_64,local_94,local_90)" ( (pointer_expression "&local_64" & identifier) , identifier , identifier ))))) ;) (if_statement "if ((int *)*piVar5 == piVar5 + 2) {\n        local_44 = piVar5[2];\n        local_40 = piVar5[3];\n        local_3c = piVar5[4];\n        local_38 = piVar5[5];\n        local_4c = &local_44;\n      }\n      else {\n        local_44 = piVar5[2];\n        local_4c = (int *)*piVar5;\n      }" if (parenthesized_expression "((int *)*piVar5 == piVar5 + 2)" ( (binary_expression "(int *)*piVar5 == piVar5 + 2" (cast_expression "(int *)*piVar5" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*piVar5" * identifier)) == (binary_expression "piVar5 + 2" identifier + number_literal)) )) (compound_statement "{\n        local_44 = piVar5[2];\n        local_40 = piVar5[3];\n        local_3c = piVar5[4];\n        local_38 = piVar5[5];\n        local_4c = &local_44;\n      }" { (expression_statement "local_44 = piVar5[2];" (assignment_expression "local_44 = piVar5[2]" identifier = (subscript_expression "piVar5[2]" identifier [ number_literal ])) ;) (expression_statement "local_40 = piVar5[3];" (assignment_expression "local_40 = piVar5[3]" identifier = (subscript_expression "piVar5[3]" identifier [ number_literal ])) ;) (expression_statement "local_3c = piVar5[4];" (assignment_expression "local_3c = piVar5[4]" identifier = (subscript_expression "piVar5[4]" identifier [ number_literal ])) ;) (expression_statement "local_38 = piVar5[5];" (assignment_expression "local_38 = piVar5[5]" identifier = (subscript_expression "piVar5[5]" identifier [ number_literal ])) ;) (expression_statement "local_4c = &local_44;" (assignment_expression "local_4c = &local_44" identifier = (pointer_expression "&local_44" & identifier)) ;) }) (else_clause "else {\n        local_44 = piVar5[2];\n        local_4c = (int *)*piVar5;\n      }" else (compound_statement "{\n        local_44 = piVar5[2];\n        local_4c = (int *)*piVar5;\n      }" { (expression_statement "local_44 = piVar5[2];" (assignment_expression "local_44 = piVar5[2]" identifier = (subscript_expression "piVar5[2]" identifier [ number_literal ])) ;) (expression_statement "local_4c = (int *)*piVar5;" (assignment_expression "local_4c = (int *)*piVar5" identifier = (cast_expression "(int *)*piVar5" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*piVar5" * identifier))) ;) }))) (expression_statement "local_48 = piVar5[1];" (assignment_expression "local_48 = piVar5[1]" identifier = (subscript_expression "piVar5[1]" identifier [ number_literal ])) ;) (expression_statement "*(undefined1 *)(piVar5 + 2) = 0;" (assignment_expression "*(undefined1 *)(piVar5 + 2) = 0" (pointer_expression "*(undefined1 *)(piVar5 + 2)" * (cast_expression "(undefined1 *)(piVar5 + 2)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar5 + 2)" ( (binary_expression "piVar5 + 2" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*piVar5 = (int)(piVar5 + 2);" (assignment_expression "*piVar5 = (int)(piVar5 + 2)" (pointer_expression "*piVar5" * identifier) = (cast_expression "(int)(piVar5 + 2)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(piVar5 + 2)" ( (binary_expression "piVar5 + 2" identifier + number_literal) )))) ;) (expression_statement "piVar5[1] = 0;" (assignment_expression "piVar5[1] = 0" (subscript_expression "piVar5[1]" identifier [ number_literal ]) = number_literal) ;) (if_statement "if (local_48 == 0x7fffffff) {\n                    \n                    \n        FUN_0022c7a0("basic_string::append");\n      }" if (parenthesized_expression "(local_48 == 0x7fffffff)" ( (binary_expression "local_48 == 0x7fffffff" identifier == number_literal) )) (compound_statement "{\n                    \n                    \n        FUN_0022c7a0("basic_string::append");\n      }" { (expression_statement "FUN_0022c7a0("basic_string::append");" (call_expression "FUN_0022c7a0("basic_string::append")" identifier (argument_list "("basic_string::append")" ( (string_literal ""basic_string::append"" " string_content ") ))) ;) })) (expression_statement "piVar5 = (int *)FUN_001f05c0(&local_4c,&DAT_002a0f9f,1);" (assignment_expression "piVar5 = (int *)FUN_001f05c0(&local_4c,&DAT_002a0f9f,1)" identifier = (cast_expression "(int *)FUN_001f05c0(&local_4c,&DAT_002a0f9f,1)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_001f05c0(&local_4c,&DAT_002a0f9f,1)" identifier (argument_list "(&local_4c,&DAT_002a0f9f,1)" ( (pointer_expression "&local_4c" & identifier) , (pointer_expression "&DAT_002a0f9f" & identifier) , number_literal ))))) ;) (if_statement "if ((int *)*piVar5 == piVar5 + 2) {\n        local_2c = piVar5[2];\n        local_28 = piVar5[3];\n        local_24 = piVar5[4];\n        local_20 = piVar5[5];\n        local_34 = &local_2c;\n      }\n      else {\n        local_2c = piVar5[2];\n        local_34 = (int *)*piVar5;\n      }" if (parenthesized_expression "((int *)*piVar5 == piVar5 + 2)" ( (binary_expression "(int *)*piVar5 == piVar5 + 2" (cast_expression "(int *)*piVar5" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*piVar5" * identifier)) == (binary_expression "piVar5 + 2" identifier + number_literal)) )) (compound_statement "{\n        local_2c = piVar5[2];\n        local_28 = piVar5[3];\n        local_24 = piVar5[4];\n        local_20 = piVar5[5];\n        local_34 = &local_2c;\n      }" { (expression_statement "local_2c = piVar5[2];" (assignment_expression "local_2c = piVar5[2]" identifier = (subscript_expression "piVar5[2]" identifier [ number_literal ])) ;) (expression_statement "local_28 = piVar5[3];" (assignment_expression "local_28 = piVar5[3]" identifier = (subscript_expression "piVar5[3]" identifier [ number_literal ])) ;) (expression_statement "local_24 = piVar5[4];" (assignment_expression "local_24 = piVar5[4]" identifier = (subscript_expression "piVar5[4]" identifier [ number_literal ])) ;) (expression_statement "local_20 = piVar5[5];" (assignment_expression "local_20 = piVar5[5]" identifier = (subscript_expression "piVar5[5]" identifier [ number_literal ])) ;) (expression_statement "local_34 = &local_2c;" (assignment_expression "local_34 = &local_2c" identifier = (pointer_expression "&local_2c" & identifier)) ;) }) (else_clause "else {\n        local_2c = piVar5[2];\n        local_34 = (int *)*piVar5;\n      }" else (compound_statement "{\n        local_2c = piVar5[2];\n        local_34 = (int *)*piVar5;\n      }" { (expression_statement "local_2c = piVar5[2];" (assignment_expression "local_2c = piVar5[2]" identifier = (subscript_expression "piVar5[2]" identifier [ number_literal ])) ;) (expression_statement "local_34 = (int *)*piVar5;" (assignment_expression "local_34 = (int *)*piVar5" identifier = (cast_expression "(int *)*piVar5" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*piVar5" * identifier))) ;) }))) (expression_statement "local_30 = piVar5[1];" (assignment_expression "local_30 = piVar5[1]" identifier = (subscript_expression "piVar5[1]" identifier [ number_literal ])) ;) (expression_statement "*(undefined1 *)(piVar5 + 2) = 0;" (assignment_expression "*(undefined1 *)(piVar5 + 2) = 0" (pointer_expression "*(undefined1 *)(piVar5 + 2)" * (cast_expression "(undefined1 *)(piVar5 + 2)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar5 + 2)" ( (binary_expression "piVar5 + 2" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*piVar5 = (int)(piVar5 + 2);" (assignment_expression "*piVar5 = (int)(piVar5 + 2)" (pointer_expression "*piVar5" * identifier) = (cast_expression "(int)(piVar5 + 2)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(piVar5 + 2)" ( (binary_expression "piVar5 + 2" identifier + number_literal) )))) ;) (expression_statement "piVar5[1] = 0;" (assignment_expression "piVar5[1] = 0" (subscript_expression "piVar5[1]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "piVar5 = (int *)FUN_000b25f0(&local_34,uVar7,uVar6,uVar4,local_ac,local_a8,param_4);" (assignment_expression "piVar5 = (int *)FUN_000b25f0(&local_34,uVar7,uVar6,uVar4,local_ac,local_a8,param_4)" identifier = (cast_expression "(int *)FUN_000b25f0(&local_34,uVar7,uVar6,uVar4,local_ac,local_a8,param_4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_000b25f0(&local_34,uVar7,uVar6,uVar4,local_ac,local_a8,param_4)" identifier (argument_list "(&local_34,uVar7,uVar6,uVar4,local_ac,local_a8,param_4)" ( (pointer_expression "&local_34" & identifier) , identifier , identifier , identifier , identifier , identifier , identifier ))))) ;) (if_statement "if (local_34 != &local_2c) {\n        FUN_001e6db0(local_34);\n      }" if (parenthesized_expression "(local_34 != &local_2c)" ( (binary_expression "local_34 != &local_2c" identifier != (pointer_expression "&local_2c" & identifier)) )) (compound_statement "{\n        FUN_001e6db0(local_34);\n      }" { (expression_statement "FUN_001e6db0(local_34);" (call_expression "FUN_001e6db0(local_34)" identifier (argument_list "(local_34)" ( identifier ))) ;) })) (if_statement "if (local_4c != &local_44) {\n        FUN_001e6db0(local_4c);\n      }" if (parenthesized_expression "(local_4c != &local_44)" ( (binary_expression "local_4c != &local_44" identifier != (pointer_expression "&local_44" & identifier)) )) (compound_statement "{\n        FUN_001e6db0(local_4c);\n      }" { (expression_statement "FUN_001e6db0(local_4c);" (call_expression "FUN_001e6db0(local_4c)" identifier (argument_list "(local_4c)" ( identifier ))) ;) })) (if_statement "if (local_64 != &local_5c) {\n        FUN_001e6db0(local_64);\n      }" if (parenthesized_expression "(local_64 != &local_5c)" ( (binary_expression "local_64 != &local_5c" identifier != (pointer_expression "&local_5c" & identifier)) )) (compound_statement "{\n        FUN_001e6db0(local_64);\n      }" { (expression_statement "FUN_001e6db0(local_64);" (call_expression "FUN_001e6db0(local_64)" identifier (argument_list "(local_64)" ( identifier ))) ;) })) (if_statement "if (local_7c != local_74) {\n        FUN_001e6db0(local_7c);\n      }" if (parenthesized_expression "(local_7c != local_74)" ( (binary_expression "local_7c != local_74" identifier != identifier) )) (compound_statement "{\n        FUN_001e6db0(local_7c);\n      }" { (expression_statement "FUN_001e6db0(local_7c);" (call_expression "FUN_001e6db0(local_7c)" identifier (argument_list "(local_7c)" ( identifier ))) ;) })) })) (if_statement "if (*(int *)(DAT_0038f378 + 8) == 0) {\n                    \n      FUN_00069d00("../../gold/parameters.h",0x5c,"options",0);\n    }" if (parenthesized_expression "(*(int *)(DAT_0038f378 + 8) == 0)" ( (binary_expression "*(int *)(DAT_0038f378 + 8) == 0" (pointer_expression "*(int *)(DAT_0038f378 + 8)" * (cast_expression "(int *)(DAT_0038f378 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(DAT_0038f378 + 8)" ( (binary_expression "DAT_0038f378 + 8" identifier + number_literal) )))) == number_literal) )) (compound_statement "{\n                    \n      FUN_00069d00("../../gold/parameters.h",0x5c,"options",0);\n    }" { (expression_statement "FUN_00069d00("../../gold/parameters.h",0x5c,"options",0);" (call_expression "FUN_00069d00("../../gold/parameters.h",0x5c,"options",0)" identifier (argument_list "("../../gold/parameters.h",0x5c,"options",0)" ( (string_literal ""../../gold/parameters.h"" " string_content ") , number_literal , (string_literal ""options"" " string_content ") , number_literal ))) ;) })) (expression_statement "iVar1 = *(int *)(*(int *)(DAT_0038f378 + 8) + 0x593c);" (assignment_expression "iVar1 = *(int *)(*(int *)(DAT_0038f378 + 8) + 0x593c)" identifier = (pointer_expression "*(int *)(*(int *)(DAT_0038f378 + 8) + 0x593c)" * (cast_expression "(int *)(*(int *)(DAT_0038f378 + 8) + 0x593c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(DAT_0038f378 + 8) + 0x593c)" ( (binary_expression "*(int *)(DAT_0038f378 + 8) + 0x593c" (pointer_expression "*(int *)(DAT_0038f378 + 8)" * (cast_expression "(int *)(DAT_0038f378 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(DAT_0038f378 + 8)" ( (binary_expression "DAT_0038f378 + 8" identifier + number_literal) )))) + number_literal) ))))) ;) (if_statement "if ((iVar1 != 0) &&\n       (piVar3 = (int *)FUN_0013d200(iVar1,local_b0,local_a4,local_a0,local_9c,local_98,piVar5),\n       piVar3 != (int *)0x0)) {\n      if (piVar5 != (int *)0x0) {\n        (**(code **)(*piVar5 + 4))(piVar5);\n      }\n      goto LAB_0019637f;\n    }" if (parenthesized_expression "((iVar1 != 0) &&\n       (piVar3 = (int *)FUN_0013d200(iVar1,local_b0,local_a4,local_a0,local_9c,local_98,piVar5),\n       piVar3 != (int *)0x0))" ( (binary_expression "(iVar1 != 0) &&\n       (piVar3 = (int *)FUN_0013d200(iVar1,local_b0,local_a4,local_a0,local_9c,local_98,piVar5),\n       piVar3 != (int *)0x0)" (parenthesized_expression "(iVar1 != 0)" ( (binary_expression "iVar1 != 0" identifier != number_literal) )) && (parenthesized_expression "(piVar3 = (int *)FUN_0013d200(iVar1,local_b0,local_a4,local_a0,local_9c,local_98,piVar5),\n       piVar3 != (int *)0x0)" ( (comma_expression "piVar3 = (int *)FUN_0013d200(iVar1,local_b0,local_a4,local_a0,local_9c,local_98,piVar5),\n       piVar3 != (int *)0x0" (assignment_expression "piVar3 = (int *)FUN_0013d200(iVar1,local_b0,local_a4,local_a0,local_9c,local_98,piVar5)" identifier = (cast_expression "(int *)FUN_0013d200(iVar1,local_b0,local_a4,local_a0,local_9c,local_98,piVar5)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_0013d200(iVar1,local_b0,local_a4,local_a0,local_9c,local_98,piVar5)" identifier (argument_list "(iVar1,local_b0,local_a4,local_a0,local_9c,local_98,piVar5)" ( identifier , identifier , identifier , identifier , identifier , identifier , identifier ))))) , (binary_expression "piVar3 != (int *)0x0" identifier != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal))) ))) )) (compound_statement "{\n      if (piVar5 != (int *)0x0) {\n        (**(code **)(*piVar5 + 4))(piVar5);\n      }\n      goto LAB_0019637f;\n    }" { (if_statement "if (piVar5 != (int *)0x0) {\n        (**(code **)(*piVar5 + 4))(piVar5);\n      }" if (parenthesized_expression "(piVar5 != (int *)0x0)" ( (binary_expression "piVar5 != (int *)0x0" identifier != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        (**(code **)(*piVar5 + 4))(piVar5);\n      }" { (expression_statement "(**(code **)(*piVar5 + 4))(piVar5);" (call_expression "(**(code **)(*piVar5 + 4))(piVar5)" (parenthesized_expression "(**(code **)(*piVar5 + 4))" ( (pointer_expression "**(code **)(*piVar5 + 4)" * (pointer_expression "*(code **)(*piVar5 + 4)" * (cast_expression "(code **)(*piVar5 + 4)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*piVar5 + 4)" ( (binary_expression "*piVar5 + 4" (pointer_expression "*piVar5" * identifier) + number_literal) ))))) )) (argument_list "(piVar5)" ( identifier ))) ;) })) (goto_statement "goto LAB_0019637f;" goto statement_identifier ;) })) (if_statement "if (cVar2 != '\0') {\n      piVar3 = piVar5;\n      if (piVar5 != (int *)0x0) {\n        *(byte *)(piVar5 + 0xb) =\n             *(byte *)(piVar5 + 0xb) & 0xef | (byte)((*(byte *)(param_1 + 0xd4) & 1) << 4);\n      }\n      goto LAB_0019637f;\n    }" if (parenthesized_expression "(cVar2 != '\0')" ( (binary_expression "cVar2 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n      piVar3 = piVar5;\n      if (piVar5 != (int *)0x0) {\n        *(byte *)(piVar5 + 0xb) =\n             *(byte *)(piVar5 + 0xb) & 0xef | (byte)((*(byte *)(param_1 + 0xd4) & 1) << 4);\n      }\n      goto LAB_0019637f;\n    }" { (expression_statement "piVar3 = piVar5;" (assignment_expression "piVar3 = piVar5" identifier = identifier) ;) (if_statement "if (piVar5 != (int *)0x0) {\n        *(byte *)(piVar5 + 0xb) =\n             *(byte *)(piVar5 + 0xb) & 0xef | (byte)((*(byte *)(param_1 + 0xd4) & 1) << 4);\n      }" if (parenthesized_expression "(piVar5 != (int *)0x0)" ( (binary_expression "piVar5 != (int *)0x0" identifier != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        *(byte *)(piVar5 + 0xb) =\n             *(byte *)(piVar5 + 0xb) & 0xef | (byte)((*(byte *)(param_1 + 0xd4) & 1) << 4);\n      }" { (expression_statement "*(byte *)(piVar5 + 0xb) =\n             *(byte *)(piVar5 + 0xb) & 0xef | (byte)((*(byte *)(param_1 + 0xd4) & 1) << 4);" (assignment_expression "*(byte *)(piVar5 + 0xb) =\n             *(byte *)(piVar5 + 0xb) & 0xef | (byte)((*(byte *)(param_1 + 0xd4) & 1) << 4)" (pointer_expression "*(byte *)(piVar5 + 0xb)" * (cast_expression "(byte *)(piVar5 + 0xb)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar5 + 0xb)" ( (binary_expression "piVar5 + 0xb" identifier + number_literal) )))) = (binary_expression "*(byte *)(piVar5 + 0xb) & 0xef | (byte)((*(byte *)(param_1 + 0xd4) & 1) << 4)" (binary_expression "*(byte *)(piVar5 + 0xb) & 0xef" (pointer_expression "*(byte *)(piVar5 + 0xb)" * (cast_expression "(byte *)(piVar5 + 0xb)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar5 + 0xb)" ( (binary_expression "piVar5 + 0xb" identifier + number_literal) )))) & number_literal) | (call_expression "(byte)((*(byte *)(param_1 + 0xd4) & 1) << 4)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "((*(byte *)(param_1 + 0xd4) & 1) << 4)" ( (binary_expression "(*(byte *)(param_1 + 0xd4) & 1) << 4" (parenthesized_expression "(*(byte *)(param_1 + 0xd4) & 1)" ( (binary_expression "*(byte *)(param_1 + 0xd4) & 1" (pointer_expression "*(byte *)(param_1 + 0xd4)" * (cast_expression "(byte *)(param_1 + 0xd4)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xd4)" ( (binary_expression "param_1 + 0xd4" identifier + number_literal) )))) & number_literal) )) << number_literal) ))))) ;) })) (goto_statement "goto LAB_0019637f;" goto statement_identifier ;) })) (expression_statement "uVar6 = *(undefined4 *)(param_1 + 0xc);" (assignment_expression "uVar6 = *(undefined4 *)(param_1 + 0xc)" identifier = (pointer_expression "*(undefined4 *)(param_1 + 0xc)" * (cast_expression "(undefined4 *)(param_1 + 0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xc)" ( (binary_expression "param_1 + 0xc" identifier + number_literal) ))))) ;) (expression_statement "uVar4 = gettext("%s: member at %zu is not an ELF object");" (assignment_expression "uVar4 = gettext("%s: member at %zu is not an ELF object")" identifier = (call_expression "gettext("%s: member at %zu is not an ELF object")" identifier (argument_list "("%s: member at %zu is not an ELF object")" ( (string_literal ""%s: member at %zu is not an ELF object"" " string_content ") )))) ;) (expression_statement "FUN_000654b0(uVar4,uVar6,param_2);" (call_expression "FUN_000654b0(uVar4,uVar6,param_2)" identifier (argument_list "(uVar4,uVar6,param_2)" ( identifier , identifier , identifier ))) ;) })) (expression_statement "piVar3 = (int *)0x0;" (assignment_expression "piVar3 = (int *)0x0" identifier = (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (labeled_statement "LAB_0019637f:\n  if (local_94 != local_8c) {\n    FUN_001e6db0(local_94);\n  }" statement_identifier : (if_statement "if (local_94 != local_8c) {\n    FUN_001e6db0(local_94);\n  }" if (parenthesized_expression "(local_94 != local_8c)" ( (binary_expression "local_94 != local_8c" identifier != identifier) )) (compound_statement "{\n    FUN_001e6db0(local_94);\n  }" { (expression_statement "FUN_001e6db0(local_94);" (call_expression "FUN_001e6db0(local_94)" identifier (argument_list "(local_94)" ( identifier ))) ;) }))) (return_statement "return piVar3;" return identifier ;) })))
(translation_unit (function_definition TYPE (pointer_declarator * (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE (pointer_declarator * IDENT)) )))) (compound_statement { (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE 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 IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (array_declarator IDENT [ LIT ]) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (array_declarator IDENT [ LIT ]) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * IDENT) = LIT) ;) })) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT , (pointer_expression & IDENT) , (pointer_expression & IDENT) , (pointer_expression & IDENT) , (pointer_expression & IDENT) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (char_literal ' escape_sequence ')) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT , (pointer_expression & IDENT) , (pointer_expression & IDENT) )))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (char_literal ' escape_sequence ')) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (call_expression IDENT (argument_list ( (pointer_expression & IDENT) , IDENT , (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) )))) + IDENT) , LIT , IDENT , IDENT , IDENT , IDENT ))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (string_literal " string_content ") ))) ;) })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( (pointer_expression & IDENT) , (string_literal " string_content ") , LIT ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT)) == (binary_expression IDENT + LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (pointer_expression & IDENT)) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) ;) }))) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (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 * IDENT) = (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( (pointer_expression & IDENT) , IDENT , IDENT ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT)) == (binary_expression IDENT + LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (pointer_expression & IDENT)) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) ;) }))) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (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 * IDENT) = (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (string_literal " string_content ") ))) ;) })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( (pointer_expression & IDENT) , (pointer_expression & IDENT) , LIT ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT)) == (binary_expression IDENT + LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (pointer_expression & IDENT)) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) ;) }))) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (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 * IDENT) = (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( (pointer_expression & IDENT) , IDENT , IDENT , IDENT , IDENT , IDENT , IDENT ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (pointer_expression & IDENT)) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (pointer_expression & IDENT)) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (pointer_expression & IDENT)) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT != IDENT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) })) })) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (string_literal " string_content ") , LIT , (string_literal " string_content ") , LIT ))) ;) })) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT != LIT) )) && (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT , IDENT , IDENT , IDENT , IDENT ))))) , (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT))) ))) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (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 ))) ;) })) (goto_statement goto statement_identifier ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (char_literal ' escape_sequence ')) )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) & LIT) | (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) & LIT) )) << LIT) ))))) ;) })) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (string_literal " string_content ") )))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT ))) ;) })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression IDENT != IDENT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) }))) (return_statement return IDENT ;) })))
(function_definition "int * FUN_00196210(int param_1,undefined4 param_2,undefined4 param_3,undefined1 *param_4)\n\n{\n  int iVar1;\n  char cVar2;\n  int *piVar3;\n  undefined4 uVar4;\n  int *piVar5;\n  undefined4 uVar6;\n  undefined4 uVar7;\n  undefined4 local_b0;\n  undefined4 local_ac;\n  undefined4 local_a8;\n  undefined4 local_a4;\n  undefined4 local_a0;\n  undefined4 local_9c;\n  undefined4 local_98;\n  undefined1 *local_94;\n  undefined4 local_90;\n  undefined1 local_8c [16];\n  undefined1 *local_7c;\n  int local_78;\n  undefined1 local_74 [16];\n  int *local_64;\n  int local_60;\n  int local_5c;\n  int local_58;\n  int local_54;\n  int local_50;\n  int *local_4c;\n  int local_48;\n  int local_44;\n  int local_40;\n  int local_3c;\n  int local_38;\n  int *local_34;\n  int local_30;\n  int local_2c;\n  int local_28;\n  int local_24;\n  int local_20;\n  \n  if (param_4 != (undefined1 *)0x0) {\n    *param_4 = 0;\n  }\n  local_90 = 0;\n  local_8c[0] = 0;\n  local_94 = local_8c;\n                    \n  cVar2 = FUN_00195b60(param_1,param_2,param_3,&local_b0,&local_a4,&local_9c,&local_94);\n  if (cVar2 != '\0') {\n    cVar2 = FUN_000b23e0(local_b0,local_a4,local_a0,&local_ac,&local_a8);\n    piVar5 = (int *)0x0;\n    if (cVar2 != '\0') {\n      iVar1 = *(int *)(*(int *)(param_1 + 0x24) + 0x1c);\n      uVar6 = local_a4;\n      uVar4 = local_a0;\n      uVar7 = local_b0;\n      local_7c = local_74;\n      FUN_000513a0(&local_7c,iVar1,*(int *)(*(int *)(param_1 + 0x24) + 0x20) + iVar1,0,local_a4,\n                   local_a0,local_b0,local_ac);\n      if (local_78 == 0x7fffffff) {\n                    \n                    \n        FUN_0022c7a0("basic_string::append");\n      }\n                    \n      piVar5 = (int *)FUN_001f05c0(&local_7c,"(",1);\n      if ((int *)*piVar5 == piVar5 + 2) {\n        local_5c = piVar5[2];\n        local_58 = piVar5[3];\n        local_54 = piVar5[4];\n        local_50 = piVar5[5];\n        local_64 = &local_5c;\n      }\n      else {\n        local_5c = piVar5[2];\n        local_64 = (int *)*piVar5;\n      }\n      local_60 = piVar5[1];\n      *(undefined1 *)(piVar5 + 2) = 0;\n      *piVar5 = (int)(piVar5 + 2);\n      piVar5[1] = 0;\n                    \n      piVar5 = (int *)FUN_001f05c0(&local_64,local_94,local_90);\n      if ((int *)*piVar5 == piVar5 + 2) {\n        local_44 = piVar5[2];\n        local_40 = piVar5[3];\n        local_3c = piVar5[4];\n        local_38 = piVar5[5];\n        local_4c = &local_44;\n      }\n      else {\n        local_44 = piVar5[2];\n        local_4c = (int *)*piVar5;\n      }\n      local_48 = piVar5[1];\n      *(undefined1 *)(piVar5 + 2) = 0;\n      *piVar5 = (int)(piVar5 + 2);\n      piVar5[1] = 0;\n      if (local_48 == 0x7fffffff) {\n                    \n                    \n        FUN_0022c7a0("basic_string::append");\n      }\n                    \n      piVar5 = (int *)FUN_001f05c0(&local_4c,&DAT_002a0f9f,1);\n      if ((int *)*piVar5 == piVar5 + 2) {\n        local_2c = piVar5[2];\n        local_28 = piVar5[3];\n        local_24 = piVar5[4];\n        local_20 = piVar5[5];\n        local_34 = &local_2c;\n      }\n      else {\n        local_2c = piVar5[2];\n        local_34 = (int *)*piVar5;\n      }\n      local_30 = piVar5[1];\n      *(undefined1 *)(piVar5 + 2) = 0;\n      *piVar5 = (int)(piVar5 + 2);\n      piVar5[1] = 0;\n                    \n      piVar5 = (int *)FUN_000b25f0(&local_34,uVar7,uVar6,uVar4,local_ac,local_a8,param_4);\n      if (local_34 != &local_2c) {\n        FUN_001e6db0(local_34);\n      }\n      if (local_4c != &local_44) {\n        FUN_001e6db0(local_4c);\n      }\n      if (local_64 != &local_5c) {\n        FUN_001e6db0(local_64);\n      }\n      if (local_7c != local_74) {\n        FUN_001e6db0(local_7c);\n      }\n    }\n    if (*(int *)(DAT_0038f378 + 8) == 0) {\n                    \n      FUN_00069d00("../../gold/parameters.h",0x5c,"options",0);\n    }\n    iVar1 = *(int *)(*(int *)(DAT_0038f378 + 8) + 0x593c);\n    if ((iVar1 != 0) &&\n       (piVar3 = (int *)FUN_0013d200(iVar1,local_b0,local_a4,local_a0,local_9c,local_98,piVar5),\n       piVar3 != (int *)0x0)) {\n      if (piVar5 != (int *)0x0) {\n        (**(code **)(*piVar5 + 4))(piVar5);\n      }\n      goto LAB_0019637f;\n    }\n    if (cVar2 != '\0') {\n      piVar3 = piVar5;\n      if (piVar5 != (int *)0x0) {\n        *(byte *)(piVar5 + 0xb) =\n             *(byte *)(piVar5 + 0xb) & 0xef | (byte)((*(byte *)(param_1 + 0xd4) & 1) << 4);\n      }\n      goto LAB_0019637f;\n    }\n    uVar6 = *(undefined4 *)(param_1 + 0xc);\n    uVar4 = gettext("%s: member at %zu is not an ELF object");\n                    \n    FUN_000654b0(uVar4,uVar6,param_2);\n  }\n  piVar3 = (int *)0x0;\nLAB_0019637f:\n  if (local_94 != local_8c) {\n    FUN_001e6db0(local_94);\n  }\n  return piVar3;\n}" (primitive_type "int") (pointer_declarator "* FUN_00196210(int param_1,undefined4 param_2,undefined4 param_3,undefined1 *param_4)" (* "*") (function_declarator "FUN_00196210(int param_1,undefined4 param_2,undefined4 param_3,undefined1 *param_4)" (identifier "FUN_00196210") (parameter_list "(int param_1,undefined4 param_2,undefined4 param_3,undefined1 *param_4)" (( "(") (parameter_declaration "int param_1" (primitive_type "int") (identifier "param_1")) (, ",") (parameter_declaration "undefined4 param_2" (type_identifier "undefined4") (identifier "param_2")) (, ",") (parameter_declaration "undefined4 param_3" (type_identifier "undefined4") (identifier "param_3")) (, ",") (parameter_declaration "undefined1 *param_4" (type_identifier "undefined1") (pointer_declarator "*param_4" (* "*") (identifier "param_4"))) () ")")))) (compound_statement "{\n  int iVar1;\n  char cVar2;\n  int *piVar3;\n  undefined4 uVar4;\n  int *piVar5;\n  undefined4 uVar6;\n  undefined4 uVar7;\n  undefined4 local_b0;\n  undefined4 local_ac;\n  undefined4 local_a8;\n  undefined4 local_a4;\n  undefined4 local_a0;\n  undefined4 local_9c;\n  undefined4 local_98;\n  undefined1 *local_94;\n  undefined4 local_90;\n  undefined1 local_8c [16];\n  undefined1 *local_7c;\n  int local_78;\n  undefined1 local_74 [16];\n  int *local_64;\n  int local_60;\n  int local_5c;\n  int local_58;\n  int local_54;\n  int local_50;\n  int *local_4c;\n  int local_48;\n  int local_44;\n  int local_40;\n  int local_3c;\n  int local_38;\n  int *local_34;\n  int local_30;\n  int local_2c;\n  int local_28;\n  int local_24;\n  int local_20;\n  \n  if (param_4 != (undefined1 *)0x0) {\n    *param_4 = 0;\n  }\n  local_90 = 0;\n  local_8c[0] = 0;\n  local_94 = local_8c;\n                    \n  cVar2 = FUN_00195b60(param_1,param_2,param_3,&local_b0,&local_a4,&local_9c,&local_94);\n  if (cVar2 != '\0') {\n    cVar2 = FUN_000b23e0(local_b0,local_a4,local_a0,&local_ac,&local_a8);\n    piVar5 = (int *)0x0;\n    if (cVar2 != '\0') {\n      iVar1 = *(int *)(*(int *)(param_1 + 0x24) + 0x1c);\n      uVar6 = local_a4;\n      uVar4 = local_a0;\n      uVar7 = local_b0;\n      local_7c = local_74;\n      FUN_000513a0(&local_7c,iVar1,*(int *)(*(int *)(param_1 + 0x24) + 0x20) + iVar1,0,local_a4,\n                   local_a0,local_b0,local_ac);\n      if (local_78 == 0x7fffffff) {\n                    \n                    \n        FUN_0022c7a0("basic_string::append");\n      }\n                    \n      piVar5 = (int *)FUN_001f05c0(&local_7c,"(",1);\n      if ((int *)*piVar5 == piVar5 + 2) {\n        local_5c = piVar5[2];\n        local_58 = piVar5[3];\n        local_54 = piVar5[4];\n        local_50 = piVar5[5];\n        local_64 = &local_5c;\n      }\n      else {\n        local_5c = piVar5[2];\n        local_64 = (int *)*piVar5;\n      }\n      local_60 = piVar5[1];\n      *(undefined1 *)(piVar5 + 2) = 0;\n      *piVar5 = (int)(piVar5 + 2);\n      piVar5[1] = 0;\n                    \n      piVar5 = (int *)FUN_001f05c0(&local_64,local_94,local_90);\n      if ((int *)*piVar5 == piVar5 + 2) {\n        local_44 = piVar5[2];\n        local_40 = piVar5[3];\n        local_3c = piVar5[4];\n        local_38 = piVar5[5];\n        local_4c = &local_44;\n      }\n      else {\n        local_44 = piVar5[2];\n        local_4c = (int *)*piVar5;\n      }\n      local_48 = piVar5[1];\n      *(undefined1 *)(piVar5 + 2) = 0;\n      *piVar5 = (int)(piVar5 + 2);\n      piVar5[1] = 0;\n      if (local_48 == 0x7fffffff) {\n                    \n                    \n        FUN_0022c7a0("basic_string::append");\n      }\n                    \n      piVar5 = (int *)FUN_001f05c0(&local_4c,&DAT_002a0f9f,1);\n      if ((int *)*piVar5 == piVar5 + 2) {\n        local_2c = piVar5[2];\n        local_28 = piVar5[3];\n        local_24 = piVar5[4];\n        local_20 = piVar5[5];\n        local_34 = &local_2c;\n      }\n      else {\n        local_2c = piVar5[2];\n        local_34 = (int *)*piVar5;\n      }\n      local_30 = piVar5[1];\n      *(undefined1 *)(piVar5 + 2) = 0;\n      *piVar5 = (int)(piVar5 + 2);\n      piVar5[1] = 0;\n                    \n      piVar5 = (int *)FUN_000b25f0(&local_34,uVar7,uVar6,uVar4,local_ac,local_a8,param_4);\n      if (local_34 != &local_2c) {\n        FUN_001e6db0(local_34);\n      }\n      if (local_4c != &local_44) {\n        FUN_001e6db0(local_4c);\n      }\n      if (local_64 != &local_5c) {\n        FUN_001e6db0(local_64);\n      }\n      if (local_7c != local_74) {\n        FUN_001e6db0(local_7c);\n      }\n    }\n    if (*(int *)(DAT_0038f378 + 8) == 0) {\n                    \n      FUN_00069d00("../../gold/parameters.h",0x5c,"options",0);\n    }\n    iVar1 = *(int *)(*(int *)(DAT_0038f378 + 8) + 0x593c);\n    if ((iVar1 != 0) &&\n       (piVar3 = (int *)FUN_0013d200(iVar1,local_b0,local_a4,local_a0,local_9c,local_98,piVar5),\n       piVar3 != (int *)0x0)) {\n      if (piVar5 != (int *)0x0) {\n        (**(code **)(*piVar5 + 4))(piVar5);\n      }\n      goto LAB_0019637f;\n    }\n    if (cVar2 != '\0') {\n      piVar3 = piVar5;\n      if (piVar5 != (int *)0x0) {\n        *(byte *)(piVar5 + 0xb) =\n             *(byte *)(piVar5 + 0xb) & 0xef | (byte)((*(byte *)(param_1 + 0xd4) & 1) << 4);\n      }\n      goto LAB_0019637f;\n    }\n    uVar6 = *(undefined4 *)(param_1 + 0xc);\n    uVar4 = gettext("%s: member at %zu is not an ELF object");\n                    \n    FUN_000654b0(uVar4,uVar6,param_2);\n  }\n  piVar3 = (int *)0x0;\nLAB_0019637f:\n  if (local_94 != local_8c) {\n    FUN_001e6db0(local_94);\n  }\n  return piVar3;\n}" ({ "{") (declaration "int iVar1;" (primitive_type "int") (identifier "iVar1") (; ";")) (declaration "char cVar2;" (primitive_type "char") (identifier "cVar2") (; ";")) (declaration "int *piVar3;" (primitive_type "int") (pointer_declarator "*piVar3" (* "*") (identifier "piVar3")) (; ";")) (declaration "undefined4 uVar4;" (type_identifier "undefined4") (identifier "uVar4") (; ";")) (declaration "int *piVar5;" (primitive_type "int") (pointer_declarator "*piVar5" (* "*") (identifier "piVar5")) (; ";")) (declaration "undefined4 uVar6;" (type_identifier "undefined4") (identifier "uVar6") (; ";")) (declaration "undefined4 uVar7;" (type_identifier "undefined4") (identifier "uVar7") (; ";")) (declaration "undefined4 local_b0;" (type_identifier "undefined4") (identifier "local_b0") (; ";")) (declaration "undefined4 local_ac;" (type_identifier "undefined4") (identifier "local_ac") (; ";")) (declaration "undefined4 local_a8;" (type_identifier "undefined4") (identifier "local_a8") (; ";")) (declaration "undefined4 local_a4;" (type_identifier "undefined4") (identifier "local_a4") (; ";")) (declaration "undefined4 local_a0;" (type_identifier "undefined4") (identifier "local_a0") (; ";")) (declaration "undefined4 local_9c;" (type_identifier "undefined4") (identifier "local_9c") (; ";")) (declaration "undefined4 local_98;" (type_identifier "undefined4") (identifier "local_98") (; ";")) (declaration "undefined1 *local_94;" (type_identifier "undefined1") (pointer_declarator "*local_94" (* "*") (identifier "local_94")) (; ";")) (declaration "undefined4 local_90;" (type_identifier "undefined4") (identifier "local_90") (; ";")) (declaration "undefined1 local_8c [16];" (type_identifier "undefined1") (array_declarator "local_8c [16]" (identifier "local_8c") ([ "[") (number_literal "16") (] "]")) (; ";")) (declaration "undefined1 *local_7c;" (type_identifier "undefined1") (pointer_declarator "*local_7c" (* "*") (identifier "local_7c")) (; ";")) (declaration "int local_78;" (primitive_type "int") (identifier "local_78") (; ";")) (declaration "undefined1 local_74 [16];" (type_identifier "undefined1") (array_declarator "local_74 [16]" (identifier "local_74") ([ "[") (number_literal "16") (] "]")) (; ";")) (declaration "int *local_64;" (primitive_type "int") (pointer_declarator "*local_64" (* "*") (identifier "local_64")) (; ";")) (declaration "int local_60;" (primitive_type "int") (identifier "local_60") (; ";")) (declaration "int local_5c;" (primitive_type "int") (identifier "local_5c") (; ";")) (declaration "int local_58;" (primitive_type "int") (identifier "local_58") (; ";")) (declaration "int local_54;" (primitive_type "int") (identifier "local_54") (; ";")) (declaration "int local_50;" (primitive_type "int") (identifier "local_50") (; ";")) (declaration "int *local_4c;" (primitive_type "int") (pointer_declarator "*local_4c" (* "*") (identifier "local_4c")) (; ";")) (declaration "int local_48;" (primitive_type "int") (identifier "local_48") (; ";")) (declaration "int local_44;" (primitive_type "int") (identifier "local_44") (; ";")) (declaration "int local_40;" (primitive_type "int") (identifier "local_40") (; ";")) (declaration "int local_3c;" (primitive_type "int") (identifier "local_3c") (; ";")) (declaration "int local_38;" (primitive_type "int") (identifier "local_38") (; ";")) (declaration "int *local_34;" (primitive_type "int") (pointer_declarator "*local_34" (* "*") (identifier "local_34")) (; ";")) (declaration "int local_30;" (primitive_type "int") (identifier "local_30") (; ";")) (declaration "int local_2c;" (primitive_type "int") (identifier "local_2c") (; ";")) (declaration "int local_28;" (primitive_type "int") (identifier "local_28") (; ";")) (declaration "int local_24;" (primitive_type "int") (identifier "local_24") (; ";")) (declaration "int local_20;" (primitive_type "int") (identifier "local_20") (; ";")) (if_statement "if (param_4 != (undefined1 *)0x0) {\n    *param_4 = 0;\n  }" (if "if") (parenthesized_expression "(param_4 != (undefined1 *)0x0)" (( "(") (binary_expression "param_4 != (undefined1 *)0x0" (identifier "param_4") (!= "!=") (cast_expression "(undefined1 *)0x0" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n    *param_4 = 0;\n  }" ({ "{") (expression_statement "*param_4 = 0;" (assignment_expression "*param_4 = 0" (pointer_expression "*param_4" (* "*") (identifier "param_4")) (= "=") (number_literal "0")) (; ";")) (} "}"))) (expression_statement "local_90 = 0;" (assignment_expression "local_90 = 0" (identifier "local_90") (= "=") (number_literal "0")) (; ";")) (expression_statement "local_8c[0] = 0;" (assignment_expression "local_8c[0] = 0" (subscript_expression "local_8c[0]" (identifier "local_8c") ([ "[") (number_literal "0") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "local_94 = local_8c;" (assignment_expression "local_94 = local_8c" (identifier "local_94") (= "=") (identifier "local_8c")) (; ";")) (expression_statement "cVar2 = FUN_00195b60(param_1,param_2,param_3,&local_b0,&local_a4,&local_9c,&local_94);" (assignment_expression "cVar2 = FUN_00195b60(param_1,param_2,param_3,&local_b0,&local_a4,&local_9c,&local_94)" (identifier "cVar2") (= "=") (call_expression "FUN_00195b60(param_1,param_2,param_3,&local_b0,&local_a4,&local_9c,&local_94)" (identifier "FUN_00195b60") (argument_list "(param_1,param_2,param_3,&local_b0,&local_a4,&local_9c,&local_94)" (( "(") (identifier "param_1") (, ",") (identifier "param_2") (, ",") (identifier "param_3") (, ",") (pointer_expression "&local_b0" (& "&") (identifier "local_b0")) (, ",") (pointer_expression "&local_a4" (& "&") (identifier "local_a4")) (, ",") (pointer_expression "&local_9c" (& "&") (identifier "local_9c")) (, ",") (pointer_expression "&local_94" (& "&") (identifier "local_94")) () ")")))) (; ";")) (if_statement "if (cVar2 != '\0') {\n    cVar2 = FUN_000b23e0(local_b0,local_a4,local_a0,&local_ac,&local_a8);\n    piVar5 = (int *)0x0;\n    if (cVar2 != '\0') {\n      iVar1 = *(int *)(*(int *)(param_1 + 0x24) + 0x1c);\n      uVar6 = local_a4;\n      uVar4 = local_a0;\n      uVar7 = local_b0;\n      local_7c = local_74;\n      FUN_000513a0(&local_7c,iVar1,*(int *)(*(int *)(param_1 + 0x24) + 0x20) + iVar1,0,local_a4,\n                   local_a0,local_b0,local_ac);\n      if (local_78 == 0x7fffffff) {\n                    \n                    \n        FUN_0022c7a0("basic_string::append");\n      }\n                    \n      piVar5 = (int *)FUN_001f05c0(&local_7c,"(",1);\n      if ((int *)*piVar5 == piVar5 + 2) {\n        local_5c = piVar5[2];\n        local_58 = piVar5[3];\n        local_54 = piVar5[4];\n        local_50 = piVar5[5];\n        local_64 = &local_5c;\n      }\n      else {\n        local_5c = piVar5[2];\n        local_64 = (int *)*piVar5;\n      }\n      local_60 = piVar5[1];\n      *(undefined1 *)(piVar5 + 2) = 0;\n      *piVar5 = (int)(piVar5 + 2);\n      piVar5[1] = 0;\n                    \n      piVar5 = (int *)FUN_001f05c0(&local_64,local_94,local_90);\n      if ((int *)*piVar5 == piVar5 + 2) {\n        local_44 = piVar5[2];\n        local_40 = piVar5[3];\n        local_3c = piVar5[4];\n        local_38 = piVar5[5];\n        local_4c = &local_44;\n      }\n      else {\n        local_44 = piVar5[2];\n        local_4c = (int *)*piVar5;\n      }\n      local_48 = piVar5[1];\n      *(undefined1 *)(piVar5 + 2) = 0;\n      *piVar5 = (int)(piVar5 + 2);\n      piVar5[1] = 0;\n      if (local_48 == 0x7fffffff) {\n                    \n                    \n        FUN_0022c7a0("basic_string::append");\n      }\n                    \n      piVar5 = (int *)FUN_001f05c0(&local_4c,&DAT_002a0f9f,1);\n      if ((int *)*piVar5 == piVar5 + 2) {\n        local_2c = piVar5[2];\n        local_28 = piVar5[3];\n        local_24 = piVar5[4];\n        local_20 = piVar5[5];\n        local_34 = &local_2c;\n      }\n      else {\n        local_2c = piVar5[2];\n        local_34 = (int *)*piVar5;\n      }\n      local_30 = piVar5[1];\n      *(undefined1 *)(piVar5 + 2) = 0;\n      *piVar5 = (int)(piVar5 + 2);\n      piVar5[1] = 0;\n                    \n      piVar5 = (int *)FUN_000b25f0(&local_34,uVar7,uVar6,uVar4,local_ac,local_a8,param_4);\n      if (local_34 != &local_2c) {\n        FUN_001e6db0(local_34);\n      }\n      if (local_4c != &local_44) {\n        FUN_001e6db0(local_4c);\n      }\n      if (local_64 != &local_5c) {\n        FUN_001e6db0(local_64);\n      }\n      if (local_7c != local_74) {\n        FUN_001e6db0(local_7c);\n      }\n    }\n    if (*(int *)(DAT_0038f378 + 8) == 0) {\n                    \n      FUN_00069d00("../../gold/parameters.h",0x5c,"options",0);\n    }\n    iVar1 = *(int *)(*(int *)(DAT_0038f378 + 8) + 0x593c);\n    if ((iVar1 != 0) &&\n       (piVar3 = (int *)FUN_0013d200(iVar1,local_b0,local_a4,local_a0,local_9c,local_98,piVar5),\n       piVar3 != (int *)0x0)) {\n      if (piVar5 != (int *)0x0) {\n        (**(code **)(*piVar5 + 4))(piVar5);\n      }\n      goto LAB_0019637f;\n    }\n    if (cVar2 != '\0') {\n      piVar3 = piVar5;\n      if (piVar5 != (int *)0x0) {\n        *(byte *)(piVar5 + 0xb) =\n             *(byte *)(piVar5 + 0xb) & 0xef | (byte)((*(byte *)(param_1 + 0xd4) & 1) << 4);\n      }\n      goto LAB_0019637f;\n    }\n    uVar6 = *(undefined4 *)(param_1 + 0xc);\n    uVar4 = gettext("%s: member at %zu is not an ELF object");\n                    \n    FUN_000654b0(uVar4,uVar6,param_2);\n  }" (if "if") (parenthesized_expression "(cVar2 != '\0')" (( "(") (binary_expression "cVar2 != '\0'" (identifier "cVar2") (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n    cVar2 = FUN_000b23e0(local_b0,local_a4,local_a0,&local_ac,&local_a8);\n    piVar5 = (int *)0x0;\n    if (cVar2 != '\0') {\n      iVar1 = *(int *)(*(int *)(param_1 + 0x24) + 0x1c);\n      uVar6 = local_a4;\n      uVar4 = local_a0;\n      uVar7 = local_b0;\n      local_7c = local_74;\n      FUN_000513a0(&local_7c,iVar1,*(int *)(*(int *)(param_1 + 0x24) + 0x20) + iVar1,0,local_a4,\n                   local_a0,local_b0,local_ac);\n      if (local_78 == 0x7fffffff) {\n                    \n                    \n        FUN_0022c7a0("basic_string::append");\n      }\n                    \n      piVar5 = (int *)FUN_001f05c0(&local_7c,"(",1);\n      if ((int *)*piVar5 == piVar5 + 2) {\n        local_5c = piVar5[2];\n        local_58 = piVar5[3];\n        local_54 = piVar5[4];\n        local_50 = piVar5[5];\n        local_64 = &local_5c;\n      }\n      else {\n        local_5c = piVar5[2];\n        local_64 = (int *)*piVar5;\n      }\n      local_60 = piVar5[1];\n      *(undefined1 *)(piVar5 + 2) = 0;\n      *piVar5 = (int)(piVar5 + 2);\n      piVar5[1] = 0;\n                    \n      piVar5 = (int *)FUN_001f05c0(&local_64,local_94,local_90);\n      if ((int *)*piVar5 == piVar5 + 2) {\n        local_44 = piVar5[2];\n        local_40 = piVar5[3];\n        local_3c = piVar5[4];\n        local_38 = piVar5[5];\n        local_4c = &local_44;\n      }\n      else {\n        local_44 = piVar5[2];\n        local_4c = (int *)*piVar5;\n      }\n      local_48 = piVar5[1];\n      *(undefined1 *)(piVar5 + 2) = 0;\n      *piVar5 = (int)(piVar5 + 2);\n      piVar5[1] = 0;\n      if (local_48 == 0x7fffffff) {\n                    \n                    \n        FUN_0022c7a0("basic_string::append");\n      }\n                    \n      piVar5 = (int *)FUN_001f05c0(&local_4c,&DAT_002a0f9f,1);\n      if ((int *)*piVar5 == piVar5 + 2) {\n        local_2c = piVar5[2];\n        local_28 = piVar5[3];\n        local_24 = piVar5[4];\n        local_20 = piVar5[5];\n        local_34 = &local_2c;\n      }\n      else {\n        local_2c = piVar5[2];\n        local_34 = (int *)*piVar5;\n      }\n      local_30 = piVar5[1];\n      *(undefined1 *)(piVar5 + 2) = 0;\n      *piVar5 = (int)(piVar5 + 2);\n      piVar5[1] = 0;\n                    \n      piVar5 = (int *)FUN_000b25f0(&local_34,uVar7,uVar6,uVar4,local_ac,local_a8,param_4);\n      if (local_34 != &local_2c) {\n        FUN_001e6db0(local_34);\n      }\n      if (local_4c != &local_44) {\n        FUN_001e6db0(local_4c);\n      }\n      if (local_64 != &local_5c) {\n        FUN_001e6db0(local_64);\n      }\n      if (local_7c != local_74) {\n        FUN_001e6db0(local_7c);\n      }\n    }\n    if (*(int *)(DAT_0038f378 + 8) == 0) {\n                    \n      FUN_00069d00("../../gold/parameters.h",0x5c,"options",0);\n    }\n    iVar1 = *(int *)(*(int *)(DAT_0038f378 + 8) + 0x593c);\n    if ((iVar1 != 0) &&\n       (piVar3 = (int *)FUN_0013d200(iVar1,local_b0,local_a4,local_a0,local_9c,local_98,piVar5),\n       piVar3 != (int *)0x0)) {\n      if (piVar5 != (int *)0x0) {\n        (**(code **)(*piVar5 + 4))(piVar5);\n      }\n      goto LAB_0019637f;\n    }\n    if (cVar2 != '\0') {\n      piVar3 = piVar5;\n      if (piVar5 != (int *)0x0) {\n        *(byte *)(piVar5 + 0xb) =\n             *(byte *)(piVar5 + 0xb) & 0xef | (byte)((*(byte *)(param_1 + 0xd4) & 1) << 4);\n      }\n      goto LAB_0019637f;\n    }\n    uVar6 = *(undefined4 *)(param_1 + 0xc);\n    uVar4 = gettext("%s: member at %zu is not an ELF object");\n                    \n    FUN_000654b0(uVar4,uVar6,param_2);\n  }" ({ "{") (expression_statement "cVar2 = FUN_000b23e0(local_b0,local_a4,local_a0,&local_ac,&local_a8);" (assignment_expression "cVar2 = FUN_000b23e0(local_b0,local_a4,local_a0,&local_ac,&local_a8)" (identifier "cVar2") (= "=") (call_expression "FUN_000b23e0(local_b0,local_a4,local_a0,&local_ac,&local_a8)" (identifier "FUN_000b23e0") (argument_list "(local_b0,local_a4,local_a0,&local_ac,&local_a8)" (( "(") (identifier "local_b0") (, ",") (identifier "local_a4") (, ",") (identifier "local_a0") (, ",") (pointer_expression "&local_ac" (& "&") (identifier "local_ac")) (, ",") (pointer_expression "&local_a8" (& "&") (identifier "local_a8")) () ")")))) (; ";")) (expression_statement "piVar5 = (int *)0x0;" (assignment_expression "piVar5 = (int *)0x0" (identifier "piVar5") (= "=") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";")) (if_statement "if (cVar2 != '\0') {\n      iVar1 = *(int *)(*(int *)(param_1 + 0x24) + 0x1c);\n      uVar6 = local_a4;\n      uVar4 = local_a0;\n      uVar7 = local_b0;\n      local_7c = local_74;\n      FUN_000513a0(&local_7c,iVar1,*(int *)(*(int *)(param_1 + 0x24) + 0x20) + iVar1,0,local_a4,\n                   local_a0,local_b0,local_ac);\n      if (local_78 == 0x7fffffff) {\n                    \n                    \n        FUN_0022c7a0("basic_string::append");\n      }\n                    \n      piVar5 = (int *)FUN_001f05c0(&local_7c,"(",1);\n      if ((int *)*piVar5 == piVar5 + 2) {\n        local_5c = piVar5[2];\n        local_58 = piVar5[3];\n        local_54 = piVar5[4];\n        local_50 = piVar5[5];\n        local_64 = &local_5c;\n      }\n      else {\n        local_5c = piVar5[2];\n        local_64 = (int *)*piVar5;\n      }\n      local_60 = piVar5[1];\n      *(undefined1 *)(piVar5 + 2) = 0;\n      *piVar5 = (int)(piVar5 + 2);\n      piVar5[1] = 0;\n                    \n      piVar5 = (int *)FUN_001f05c0(&local_64,local_94,local_90);\n      if ((int *)*piVar5 == piVar5 + 2) {\n        local_44 = piVar5[2];\n        local_40 = piVar5[3];\n        local_3c = piVar5[4];\n        local_38 = piVar5[5];\n        local_4c = &local_44;\n      }\n      else {\n        local_44 = piVar5[2];\n        local_4c = (int *)*piVar5;\n      }\n      local_48 = piVar5[1];\n      *(undefined1 *)(piVar5 + 2) = 0;\n      *piVar5 = (int)(piVar5 + 2);\n      piVar5[1] = 0;\n      if (local_48 == 0x7fffffff) {\n                    \n                    \n        FUN_0022c7a0("basic_string::append");\n      }\n                    \n      piVar5 = (int *)FUN_001f05c0(&local_4c,&DAT_002a0f9f,1);\n      if ((int *)*piVar5 == piVar5 + 2) {\n        local_2c = piVar5[2];\n        local_28 = piVar5[3];\n        local_24 = piVar5[4];\n        local_20 = piVar5[5];\n        local_34 = &local_2c;\n      }\n      else {\n        local_2c = piVar5[2];\n        local_34 = (int *)*piVar5;\n      }\n      local_30 = piVar5[1];\n      *(undefined1 *)(piVar5 + 2) = 0;\n      *piVar5 = (int)(piVar5 + 2);\n      piVar5[1] = 0;\n                    \n      piVar5 = (int *)FUN_000b25f0(&local_34,uVar7,uVar6,uVar4,local_ac,local_a8,param_4);\n      if (local_34 != &local_2c) {\n        FUN_001e6db0(local_34);\n      }\n      if (local_4c != &local_44) {\n        FUN_001e6db0(local_4c);\n      }\n      if (local_64 != &local_5c) {\n        FUN_001e6db0(local_64);\n      }\n      if (local_7c != local_74) {\n        FUN_001e6db0(local_7c);\n      }\n    }" (if "if") (parenthesized_expression "(cVar2 != '\0')" (( "(") (binary_expression "cVar2 != '\0'" (identifier "cVar2") (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n      iVar1 = *(int *)(*(int *)(param_1 + 0x24) + 0x1c);\n      uVar6 = local_a4;\n      uVar4 = local_a0;\n      uVar7 = local_b0;\n      local_7c = local_74;\n      FUN_000513a0(&local_7c,iVar1,*(int *)(*(int *)(param_1 + 0x24) + 0x20) + iVar1,0,local_a4,\n                   local_a0,local_b0,local_ac);\n      if (local_78 == 0x7fffffff) {\n                    \n                    \n        FUN_0022c7a0("basic_string::append");\n      }\n                    \n      piVar5 = (int *)FUN_001f05c0(&local_7c,"(",1);\n      if ((int *)*piVar5 == piVar5 + 2) {\n        local_5c = piVar5[2];\n        local_58 = piVar5[3];\n        local_54 = piVar5[4];\n        local_50 = piVar5[5];\n        local_64 = &local_5c;\n      }\n      else {\n        local_5c = piVar5[2];\n        local_64 = (int *)*piVar5;\n      }\n      local_60 = piVar5[1];\n      *(undefined1 *)(piVar5 + 2) = 0;\n      *piVar5 = (int)(piVar5 + 2);\n      piVar5[1] = 0;\n                    \n      piVar5 = (int *)FUN_001f05c0(&local_64,local_94,local_90);\n      if ((int *)*piVar5 == piVar5 + 2) {\n        local_44 = piVar5[2];\n        local_40 = piVar5[3];\n        local_3c = piVar5[4];\n        local_38 = piVar5[5];\n        local_4c = &local_44;\n      }\n      else {\n        local_44 = piVar5[2];\n        local_4c = (int *)*piVar5;\n      }\n      local_48 = piVar5[1];\n      *(undefined1 *)(piVar5 + 2) = 0;\n      *piVar5 = (int)(piVar5 + 2);\n      piVar5[1] = 0;\n      if (local_48 == 0x7fffffff) {\n                    \n                    \n        FUN_0022c7a0("basic_string::append");\n      }\n                    \n      piVar5 = (int *)FUN_001f05c0(&local_4c,&DAT_002a0f9f,1);\n      if ((int *)*piVar5 == piVar5 + 2) {\n        local_2c = piVar5[2];\n        local_28 = piVar5[3];\n        local_24 = piVar5[4];\n        local_20 = piVar5[5];\n        local_34 = &local_2c;\n      }\n      else {\n        local_2c = piVar5[2];\n        local_34 = (int *)*piVar5;\n      }\n      local_30 = piVar5[1];\n      *(undefined1 *)(piVar5 + 2) = 0;\n      *piVar5 = (int)(piVar5 + 2);\n      piVar5[1] = 0;\n                    \n      piVar5 = (int *)FUN_000b25f0(&local_34,uVar7,uVar6,uVar4,local_ac,local_a8,param_4);\n      if (local_34 != &local_2c) {\n        FUN_001e6db0(local_34);\n      }\n      if (local_4c != &local_44) {\n        FUN_001e6db0(local_4c);\n      }\n      if (local_64 != &local_5c) {\n        FUN_001e6db0(local_64);\n      }\n      if (local_7c != local_74) {\n        FUN_001e6db0(local_7c);\n      }\n    }" ({ "{") (expression_statement "iVar1 = *(int *)(*(int *)(param_1 + 0x24) + 0x1c);" (assignment_expression "iVar1 = *(int *)(*(int *)(param_1 + 0x24) + 0x1c)" (identifier "iVar1") (= "=") (pointer_expression "*(int *)(*(int *)(param_1 + 0x24) + 0x1c)" (* "*") (cast_expression "(int *)(*(int *)(param_1 + 0x24) + 0x1c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(param_1 + 0x24) + 0x1c)" (( "(") (binary_expression "*(int *)(param_1 + 0x24) + 0x1c" (pointer_expression "*(int *)(param_1 + 0x24)" (* "*") (cast_expression "(int *)(param_1 + 0x24)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x24)" (( "(") (binary_expression "param_1 + 0x24" (identifier "param_1") (+ "+") (number_literal "0x24")) () ")")))) (+ "+") (number_literal "0x1c")) () ")"))))) (; ";")) (expression_statement "uVar6 = local_a4;" (assignment_expression "uVar6 = local_a4" (identifier "uVar6") (= "=") (identifier "local_a4")) (; ";")) (expression_statement "uVar4 = local_a0;" (assignment_expression "uVar4 = local_a0" (identifier "uVar4") (= "=") (identifier "local_a0")) (; ";")) (expression_statement "uVar7 = local_b0;" (assignment_expression "uVar7 = local_b0" (identifier "uVar7") (= "=") (identifier "local_b0")) (; ";")) (expression_statement "local_7c = local_74;" (assignment_expression "local_7c = local_74" (identifier "local_7c") (= "=") (identifier "local_74")) (; ";")) (expression_statement "FUN_000513a0(&local_7c,iVar1,*(int *)(*(int *)(param_1 + 0x24) + 0x20) + iVar1,0,local_a4,\n                   local_a0,local_b0,local_ac);" (call_expression "FUN_000513a0(&local_7c,iVar1,*(int *)(*(int *)(param_1 + 0x24) + 0x20) + iVar1,0,local_a4,\n                   local_a0,local_b0,local_ac)" (identifier "FUN_000513a0") (argument_list "(&local_7c,iVar1,*(int *)(*(int *)(param_1 + 0x24) + 0x20) + iVar1,0,local_a4,\n                   local_a0,local_b0,local_ac)" (( "(") (pointer_expression "&local_7c" (& "&") (identifier "local_7c")) (, ",") (identifier "iVar1") (, ",") (binary_expression "*(int *)(*(int *)(param_1 + 0x24) + 0x20) + iVar1" (pointer_expression "*(int *)(*(int *)(param_1 + 0x24) + 0x20)" (* "*") (cast_expression "(int *)(*(int *)(param_1 + 0x24) + 0x20)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(param_1 + 0x24) + 0x20)" (( "(") (binary_expression "*(int *)(param_1 + 0x24) + 0x20" (pointer_expression "*(int *)(param_1 + 0x24)" (* "*") (cast_expression "(int *)(param_1 + 0x24)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x24)" (( "(") (binary_expression "param_1 + 0x24" (identifier "param_1") (+ "+") (number_literal "0x24")) () ")")))) (+ "+") (number_literal "0x20")) () ")")))) (+ "+") (identifier "iVar1")) (, ",") (number_literal "0") (, ",") (identifier "local_a4") (, ",") (identifier "local_a0") (, ",") (identifier "local_b0") (, ",") (identifier "local_ac") () ")"))) (; ";")) (if_statement "if (local_78 == 0x7fffffff) {\n                    \n                    \n        FUN_0022c7a0("basic_string::append");\n      }" (if "if") (parenthesized_expression "(local_78 == 0x7fffffff)" (( "(") (binary_expression "local_78 == 0x7fffffff" (identifier "local_78") (== "==") (number_literal "0x7fffffff")) () ")")) (compound_statement "{\n                    \n                    \n        FUN_0022c7a0("basic_string::append");\n      }" ({ "{") (expression_statement "FUN_0022c7a0("basic_string::append");" (call_expression "FUN_0022c7a0("basic_string::append")" (identifier "FUN_0022c7a0") (argument_list "("basic_string::append")" (( "(") (string_literal ""basic_string::append"" (" """) (string_content "basic_string::append") (" """)) () ")"))) (; ";")) (} "}"))) (expression_statement "piVar5 = (int *)FUN_001f05c0(&local_7c,"(",1);" (assignment_expression "piVar5 = (int *)FUN_001f05c0(&local_7c,"(",1)" (identifier "piVar5") (= "=") (cast_expression "(int *)FUN_001f05c0(&local_7c,"(",1)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_001f05c0(&local_7c,"(",1)" (identifier "FUN_001f05c0") (argument_list "(&local_7c,"(",1)" (( "(") (pointer_expression "&local_7c" (& "&") (identifier "local_7c")) (, ",") (string_literal ""("" (" """) (string_content "(") (" """)) (, ",") (number_literal "1") () ")"))))) (; ";")) (if_statement "if ((int *)*piVar5 == piVar5 + 2) {\n        local_5c = piVar5[2];\n        local_58 = piVar5[3];\n        local_54 = piVar5[4];\n        local_50 = piVar5[5];\n        local_64 = &local_5c;\n      }\n      else {\n        local_5c = piVar5[2];\n        local_64 = (int *)*piVar5;\n      }" (if "if") (parenthesized_expression "((int *)*piVar5 == piVar5 + 2)" (( "(") (binary_expression "(int *)*piVar5 == piVar5 + 2" (cast_expression "(int *)*piVar5" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*piVar5" (* "*") (identifier "piVar5"))) (== "==") (binary_expression "piVar5 + 2" (identifier "piVar5") (+ "+") (number_literal "2"))) () ")")) (compound_statement "{\n        local_5c = piVar5[2];\n        local_58 = piVar5[3];\n        local_54 = piVar5[4];\n        local_50 = piVar5[5];\n        local_64 = &local_5c;\n      }" ({ "{") (expression_statement "local_5c = piVar5[2];" (assignment_expression "local_5c = piVar5[2]" (identifier "local_5c") (= "=") (subscript_expression "piVar5[2]" (identifier "piVar5") ([ "[") (number_literal "2") (] "]"))) (; ";")) (expression_statement "local_58 = piVar5[3];" (assignment_expression "local_58 = piVar5[3]" (identifier "local_58") (= "=") (subscript_expression "piVar5[3]" (identifier "piVar5") ([ "[") (number_literal "3") (] "]"))) (; ";")) (expression_statement "local_54 = piVar5[4];" (assignment_expression "local_54 = piVar5[4]" (identifier "local_54") (= "=") (subscript_expression "piVar5[4]" (identifier "piVar5") ([ "[") (number_literal "4") (] "]"))) (; ";")) (expression_statement "local_50 = piVar5[5];" (assignment_expression "local_50 = piVar5[5]" (identifier "local_50") (= "=") (subscript_expression "piVar5[5]" (identifier "piVar5") ([ "[") (number_literal "5") (] "]"))) (; ";")) (expression_statement "local_64 = &local_5c;" (assignment_expression "local_64 = &local_5c" (identifier "local_64") (= "=") (pointer_expression "&local_5c" (& "&") (identifier "local_5c"))) (; ";")) (} "}")) (else_clause "else {\n        local_5c = piVar5[2];\n        local_64 = (int *)*piVar5;\n      }" (else "else") (compound_statement "{\n        local_5c = piVar5[2];\n        local_64 = (int *)*piVar5;\n      }" ({ "{") (expression_statement "local_5c = piVar5[2];" (assignment_expression "local_5c = piVar5[2]" (identifier "local_5c") (= "=") (subscript_expression "piVar5[2]" (identifier "piVar5") ([ "[") (number_literal "2") (] "]"))) (; ";")) (expression_statement "local_64 = (int *)*piVar5;" (assignment_expression "local_64 = (int *)*piVar5" (identifier "local_64") (= "=") (cast_expression "(int *)*piVar5" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*piVar5" (* "*") (identifier "piVar5")))) (; ";")) (} "}")))) (expression_statement "local_60 = piVar5[1];" (assignment_expression "local_60 = piVar5[1]" (identifier "local_60") (= "=") (subscript_expression "piVar5[1]" (identifier "piVar5") ([ "[") (number_literal "1") (] "]"))) (; ";")) (expression_statement "*(undefined1 *)(piVar5 + 2) = 0;" (assignment_expression "*(undefined1 *)(piVar5 + 2) = 0" (pointer_expression "*(undefined1 *)(piVar5 + 2)" (* "*") (cast_expression "(undefined1 *)(piVar5 + 2)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(piVar5 + 2)" (( "(") (binary_expression "piVar5 + 2" (identifier "piVar5") (+ "+") (number_literal "2")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "*piVar5 = (int)(piVar5 + 2);" (assignment_expression "*piVar5 = (int)(piVar5 + 2)" (pointer_expression "*piVar5" (* "*") (identifier "piVar5")) (= "=") (cast_expression "(int)(piVar5 + 2)" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (parenthesized_expression "(piVar5 + 2)" (( "(") (binary_expression "piVar5 + 2" (identifier "piVar5") (+ "+") (number_literal "2")) () ")")))) (; ";")) (expression_statement "piVar5[1] = 0;" (assignment_expression "piVar5[1] = 0" (subscript_expression "piVar5[1]" (identifier "piVar5") ([ "[") (number_literal "1") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "piVar5 = (int *)FUN_001f05c0(&local_64,local_94,local_90);" (assignment_expression "piVar5 = (int *)FUN_001f05c0(&local_64,local_94,local_90)" (identifier "piVar5") (= "=") (cast_expression "(int *)FUN_001f05c0(&local_64,local_94,local_90)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_001f05c0(&local_64,local_94,local_90)" (identifier "FUN_001f05c0") (argument_list "(&local_64,local_94,local_90)" (( "(") (pointer_expression "&local_64" (& "&") (identifier "local_64")) (, ",") (identifier "local_94") (, ",") (identifier "local_90") () ")"))))) (; ";")) (if_statement "if ((int *)*piVar5 == piVar5 + 2) {\n        local_44 = piVar5[2];\n        local_40 = piVar5[3];\n        local_3c = piVar5[4];\n        local_38 = piVar5[5];\n        local_4c = &local_44;\n      }\n      else {\n        local_44 = piVar5[2];\n        local_4c = (int *)*piVar5;\n      }" (if "if") (parenthesized_expression "((int *)*piVar5 == piVar5 + 2)" (( "(") (binary_expression "(int *)*piVar5 == piVar5 + 2" (cast_expression "(int *)*piVar5" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*piVar5" (* "*") (identifier "piVar5"))) (== "==") (binary_expression "piVar5 + 2" (identifier "piVar5") (+ "+") (number_literal "2"))) () ")")) (compound_statement "{\n        local_44 = piVar5[2];\n        local_40 = piVar5[3];\n        local_3c = piVar5[4];\n        local_38 = piVar5[5];\n        local_4c = &local_44;\n      }" ({ "{") (expression_statement "local_44 = piVar5[2];" (assignment_expression "local_44 = piVar5[2]" (identifier "local_44") (= "=") (subscript_expression "piVar5[2]" (identifier "piVar5") ([ "[") (number_literal "2") (] "]"))) (; ";")) (expression_statement "local_40 = piVar5[3];" (assignment_expression "local_40 = piVar5[3]" (identifier "local_40") (= "=") (subscript_expression "piVar5[3]" (identifier "piVar5") ([ "[") (number_literal "3") (] "]"))) (; ";")) (expression_statement "local_3c = piVar5[4];" (assignment_expression "local_3c = piVar5[4]" (identifier "local_3c") (= "=") (subscript_expression "piVar5[4]" (identifier "piVar5") ([ "[") (number_literal "4") (] "]"))) (; ";")) (expression_statement "local_38 = piVar5[5];" (assignment_expression "local_38 = piVar5[5]" (identifier "local_38") (= "=") (subscript_expression "piVar5[5]" (identifier "piVar5") ([ "[") (number_literal "5") (] "]"))) (; ";")) (expression_statement "local_4c = &local_44;" (assignment_expression "local_4c = &local_44" (identifier "local_4c") (= "=") (pointer_expression "&local_44" (& "&") (identifier "local_44"))) (; ";")) (} "}")) (else_clause "else {\n        local_44 = piVar5[2];\n        local_4c = (int *)*piVar5;\n      }" (else "else") (compound_statement "{\n        local_44 = piVar5[2];\n        local_4c = (int *)*piVar5;\n      }" ({ "{") (expression_statement "local_44 = piVar5[2];" (assignment_expression "local_44 = piVar5[2]" (identifier "local_44") (= "=") (subscript_expression "piVar5[2]" (identifier "piVar5") ([ "[") (number_literal "2") (] "]"))) (; ";")) (expression_statement "local_4c = (int *)*piVar5;" (assignment_expression "local_4c = (int *)*piVar5" (identifier "local_4c") (= "=") (cast_expression "(int *)*piVar5" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*piVar5" (* "*") (identifier "piVar5")))) (; ";")) (} "}")))) (expression_statement "local_48 = piVar5[1];" (assignment_expression "local_48 = piVar5[1]" (identifier "local_48") (= "=") (subscript_expression "piVar5[1]" (identifier "piVar5") ([ "[") (number_literal "1") (] "]"))) (; ";")) (expression_statement "*(undefined1 *)(piVar5 + 2) = 0;" (assignment_expression "*(undefined1 *)(piVar5 + 2) = 0" (pointer_expression "*(undefined1 *)(piVar5 + 2)" (* "*") (cast_expression "(undefined1 *)(piVar5 + 2)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(piVar5 + 2)" (( "(") (binary_expression "piVar5 + 2" (identifier "piVar5") (+ "+") (number_literal "2")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "*piVar5 = (int)(piVar5 + 2);" (assignment_expression "*piVar5 = (int)(piVar5 + 2)" (pointer_expression "*piVar5" (* "*") (identifier "piVar5")) (= "=") (cast_expression "(int)(piVar5 + 2)" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (parenthesized_expression "(piVar5 + 2)" (( "(") (binary_expression "piVar5 + 2" (identifier "piVar5") (+ "+") (number_literal "2")) () ")")))) (; ";")) (expression_statement "piVar5[1] = 0;" (assignment_expression "piVar5[1] = 0" (subscript_expression "piVar5[1]" (identifier "piVar5") ([ "[") (number_literal "1") (] "]")) (= "=") (number_literal "0")) (; ";")) (if_statement "if (local_48 == 0x7fffffff) {\n                    \n                    \n        FUN_0022c7a0("basic_string::append");\n      }" (if "if") (parenthesized_expression "(local_48 == 0x7fffffff)" (( "(") (binary_expression "local_48 == 0x7fffffff" (identifier "local_48") (== "==") (number_literal "0x7fffffff")) () ")")) (compound_statement "{\n                    \n                    \n        FUN_0022c7a0("basic_string::append");\n      }" ({ "{") (expression_statement "FUN_0022c7a0("basic_string::append");" (call_expression "FUN_0022c7a0("basic_string::append")" (identifier "FUN_0022c7a0") (argument_list "("basic_string::append")" (( "(") (string_literal ""basic_string::append"" (" """) (string_content "basic_string::append") (" """)) () ")"))) (; ";")) (} "}"))) (expression_statement "piVar5 = (int *)FUN_001f05c0(&local_4c,&DAT_002a0f9f,1);" (assignment_expression "piVar5 = (int *)FUN_001f05c0(&local_4c,&DAT_002a0f9f,1)" (identifier "piVar5") (= "=") (cast_expression "(int *)FUN_001f05c0(&local_4c,&DAT_002a0f9f,1)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_001f05c0(&local_4c,&DAT_002a0f9f,1)" (identifier "FUN_001f05c0") (argument_list "(&local_4c,&DAT_002a0f9f,1)" (( "(") (pointer_expression "&local_4c" (& "&") (identifier "local_4c")) (, ",") (pointer_expression "&DAT_002a0f9f" (& "&") (identifier "DAT_002a0f9f")) (, ",") (number_literal "1") () ")"))))) (; ";")) (if_statement "if ((int *)*piVar5 == piVar5 + 2) {\n        local_2c = piVar5[2];\n        local_28 = piVar5[3];\n        local_24 = piVar5[4];\n        local_20 = piVar5[5];\n        local_34 = &local_2c;\n      }\n      else {\n        local_2c = piVar5[2];\n        local_34 = (int *)*piVar5;\n      }" (if "if") (parenthesized_expression "((int *)*piVar5 == piVar5 + 2)" (( "(") (binary_expression "(int *)*piVar5 == piVar5 + 2" (cast_expression "(int *)*piVar5" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*piVar5" (* "*") (identifier "piVar5"))) (== "==") (binary_expression "piVar5 + 2" (identifier "piVar5") (+ "+") (number_literal "2"))) () ")")) (compound_statement "{\n        local_2c = piVar5[2];\n        local_28 = piVar5[3];\n        local_24 = piVar5[4];\n        local_20 = piVar5[5];\n        local_34 = &local_2c;\n      }" ({ "{") (expression_statement "local_2c = piVar5[2];" (assignment_expression "local_2c = piVar5[2]" (identifier "local_2c") (= "=") (subscript_expression "piVar5[2]" (identifier "piVar5") ([ "[") (number_literal "2") (] "]"))) (; ";")) (expression_statement "local_28 = piVar5[3];" (assignment_expression "local_28 = piVar5[3]" (identifier "local_28") (= "=") (subscript_expression "piVar5[3]" (identifier "piVar5") ([ "[") (number_literal "3") (] "]"))) (; ";")) (expression_statement "local_24 = piVar5[4];" (assignment_expression "local_24 = piVar5[4]" (identifier "local_24") (= "=") (subscript_expression "piVar5[4]" (identifier "piVar5") ([ "[") (number_literal "4") (] "]"))) (; ";")) (expression_statement "local_20 = piVar5[5];" (assignment_expression "local_20 = piVar5[5]" (identifier "local_20") (= "=") (subscript_expression "piVar5[5]" (identifier "piVar5") ([ "[") (number_literal "5") (] "]"))) (; ";")) (expression_statement "local_34 = &local_2c;" (assignment_expression "local_34 = &local_2c" (identifier "local_34") (= "=") (pointer_expression "&local_2c" (& "&") (identifier "local_2c"))) (; ";")) (} "}")) (else_clause "else {\n        local_2c = piVar5[2];\n        local_34 = (int *)*piVar5;\n      }" (else "else") (compound_statement "{\n        local_2c = piVar5[2];\n        local_34 = (int *)*piVar5;\n      }" ({ "{") (expression_statement "local_2c = piVar5[2];" (assignment_expression "local_2c = piVar5[2]" (identifier "local_2c") (= "=") (subscript_expression "piVar5[2]" (identifier "piVar5") ([ "[") (number_literal "2") (] "]"))) (; ";")) (expression_statement "local_34 = (int *)*piVar5;" (assignment_expression "local_34 = (int *)*piVar5" (identifier "local_34") (= "=") (cast_expression "(int *)*piVar5" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*piVar5" (* "*") (identifier "piVar5")))) (; ";")) (} "}")))) (expression_statement "local_30 = piVar5[1];" (assignment_expression "local_30 = piVar5[1]" (identifier "local_30") (= "=") (subscript_expression "piVar5[1]" (identifier "piVar5") ([ "[") (number_literal "1") (] "]"))) (; ";")) (expression_statement "*(undefined1 *)(piVar5 + 2) = 0;" (assignment_expression "*(undefined1 *)(piVar5 + 2) = 0" (pointer_expression "*(undefined1 *)(piVar5 + 2)" (* "*") (cast_expression "(undefined1 *)(piVar5 + 2)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(piVar5 + 2)" (( "(") (binary_expression "piVar5 + 2" (identifier "piVar5") (+ "+") (number_literal "2")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "*piVar5 = (int)(piVar5 + 2);" (assignment_expression "*piVar5 = (int)(piVar5 + 2)" (pointer_expression "*piVar5" (* "*") (identifier "piVar5")) (= "=") (cast_expression "(int)(piVar5 + 2)" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (parenthesized_expression "(piVar5 + 2)" (( "(") (binary_expression "piVar5 + 2" (identifier "piVar5") (+ "+") (number_literal "2")) () ")")))) (; ";")) (expression_statement "piVar5[1] = 0;" (assignment_expression "piVar5[1] = 0" (subscript_expression "piVar5[1]" (identifier "piVar5") ([ "[") (number_literal "1") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "piVar5 = (int *)FUN_000b25f0(&local_34,uVar7,uVar6,uVar4,local_ac,local_a8,param_4);" (assignment_expression "piVar5 = (int *)FUN_000b25f0(&local_34,uVar7,uVar6,uVar4,local_ac,local_a8,param_4)" (identifier "piVar5") (= "=") (cast_expression "(int *)FUN_000b25f0(&local_34,uVar7,uVar6,uVar4,local_ac,local_a8,param_4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_000b25f0(&local_34,uVar7,uVar6,uVar4,local_ac,local_a8,param_4)" (identifier "FUN_000b25f0") (argument_list "(&local_34,uVar7,uVar6,uVar4,local_ac,local_a8,param_4)" (( "(") (pointer_expression "&local_34" (& "&") (identifier "local_34")) (, ",") (identifier "uVar7") (, ",") (identifier "uVar6") (, ",") (identifier "uVar4") (, ",") (identifier "local_ac") (, ",") (identifier "local_a8") (, ",") (identifier "param_4") () ")"))))) (; ";")) (if_statement "if (local_34 != &local_2c) {\n        FUN_001e6db0(local_34);\n      }" (if "if") (parenthesized_expression "(local_34 != &local_2c)" (( "(") (binary_expression "local_34 != &local_2c" (identifier "local_34") (!= "!=") (pointer_expression "&local_2c" (& "&") (identifier "local_2c"))) () ")")) (compound_statement "{\n        FUN_001e6db0(local_34);\n      }" ({ "{") (expression_statement "FUN_001e6db0(local_34);" (call_expression "FUN_001e6db0(local_34)" (identifier "FUN_001e6db0") (argument_list "(local_34)" (( "(") (identifier "local_34") () ")"))) (; ";")) (} "}"))) (if_statement "if (local_4c != &local_44) {\n        FUN_001e6db0(local_4c);\n      }" (if "if") (parenthesized_expression "(local_4c != &local_44)" (( "(") (binary_expression "local_4c != &local_44" (identifier "local_4c") (!= "!=") (pointer_expression "&local_44" (& "&") (identifier "local_44"))) () ")")) (compound_statement "{\n        FUN_001e6db0(local_4c);\n      }" ({ "{") (expression_statement "FUN_001e6db0(local_4c);" (call_expression "FUN_001e6db0(local_4c)" (identifier "FUN_001e6db0") (argument_list "(local_4c)" (( "(") (identifier "local_4c") () ")"))) (; ";")) (} "}"))) (if_statement "if (local_64 != &local_5c) {\n        FUN_001e6db0(local_64);\n      }" (if "if") (parenthesized_expression "(local_64 != &local_5c)" (( "(") (binary_expression "local_64 != &local_5c" (identifier "local_64") (!= "!=") (pointer_expression "&local_5c" (& "&") (identifier "local_5c"))) () ")")) (compound_statement "{\n        FUN_001e6db0(local_64);\n      }" ({ "{") (expression_statement "FUN_001e6db0(local_64);" (call_expression "FUN_001e6db0(local_64)" (identifier "FUN_001e6db0") (argument_list "(local_64)" (( "(") (identifier "local_64") () ")"))) (; ";")) (} "}"))) (if_statement "if (local_7c != local_74) {\n        FUN_001e6db0(local_7c);\n      }" (if "if") (parenthesized_expression "(local_7c != local_74)" (( "(") (binary_expression "local_7c != local_74" (identifier "local_7c") (!= "!=") (identifier "local_74")) () ")")) (compound_statement "{\n        FUN_001e6db0(local_7c);\n      }" ({ "{") (expression_statement "FUN_001e6db0(local_7c);" (call_expression "FUN_001e6db0(local_7c)" (identifier "FUN_001e6db0") (argument_list "(local_7c)" (( "(") (identifier "local_7c") () ")"))) (; ";")) (} "}"))) (} "}"))) (if_statement "if (*(int *)(DAT_0038f378 + 8) == 0) {\n                    \n      FUN_00069d00("../../gold/parameters.h",0x5c,"options",0);\n    }" (if "if") (parenthesized_expression "(*(int *)(DAT_0038f378 + 8) == 0)" (( "(") (binary_expression "*(int *)(DAT_0038f378 + 8) == 0" (pointer_expression "*(int *)(DAT_0038f378 + 8)" (* "*") (cast_expression "(int *)(DAT_0038f378 + 8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(DAT_0038f378 + 8)" (( "(") (binary_expression "DAT_0038f378 + 8" (identifier "DAT_0038f378") (+ "+") (number_literal "8")) () ")")))) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n                    \n      FUN_00069d00("../../gold/parameters.h",0x5c,"options",0);\n    }" ({ "{") (expression_statement "FUN_00069d00("../../gold/parameters.h",0x5c,"options",0);" (call_expression "FUN_00069d00("../../gold/parameters.h",0x5c,"options",0)" (identifier "FUN_00069d00") (argument_list "("../../gold/parameters.h",0x5c,"options",0)" (( "(") (string_literal ""../../gold/parameters.h"" (" """) (string_content "../../gold/parameters.h") (" """)) (, ",") (number_literal "0x5c") (, ",") (string_literal ""options"" (" """) (string_content "options") (" """)) (, ",") (number_literal "0") () ")"))) (; ";")) (} "}"))) (expression_statement "iVar1 = *(int *)(*(int *)(DAT_0038f378 + 8) + 0x593c);" (assignment_expression "iVar1 = *(int *)(*(int *)(DAT_0038f378 + 8) + 0x593c)" (identifier "iVar1") (= "=") (pointer_expression "*(int *)(*(int *)(DAT_0038f378 + 8) + 0x593c)" (* "*") (cast_expression "(int *)(*(int *)(DAT_0038f378 + 8) + 0x593c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(DAT_0038f378 + 8) + 0x593c)" (( "(") (binary_expression "*(int *)(DAT_0038f378 + 8) + 0x593c" (pointer_expression "*(int *)(DAT_0038f378 + 8)" (* "*") (cast_expression "(int *)(DAT_0038f378 + 8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(DAT_0038f378 + 8)" (( "(") (binary_expression "DAT_0038f378 + 8" (identifier "DAT_0038f378") (+ "+") (number_literal "8")) () ")")))) (+ "+") (number_literal "0x593c")) () ")"))))) (; ";")) (if_statement "if ((iVar1 != 0) &&\n       (piVar3 = (int *)FUN_0013d200(iVar1,local_b0,local_a4,local_a0,local_9c,local_98,piVar5),\n       piVar3 != (int *)0x0)) {\n      if (piVar5 != (int *)0x0) {\n        (**(code **)(*piVar5 + 4))(piVar5);\n      }\n      goto LAB_0019637f;\n    }" (if "if") (parenthesized_expression "((iVar1 != 0) &&\n       (piVar3 = (int *)FUN_0013d200(iVar1,local_b0,local_a4,local_a0,local_9c,local_98,piVar5),\n       piVar3 != (int *)0x0))" (( "(") (binary_expression "(iVar1 != 0) &&\n       (piVar3 = (int *)FUN_0013d200(iVar1,local_b0,local_a4,local_a0,local_9c,local_98,piVar5),\n       piVar3 != (int *)0x0)" (parenthesized_expression "(iVar1 != 0)" (( "(") (binary_expression "iVar1 != 0" (identifier "iVar1") (!= "!=") (number_literal "0")) () ")")) (&& "&&") (parenthesized_expression "(piVar3 = (int *)FUN_0013d200(iVar1,local_b0,local_a4,local_a0,local_9c,local_98,piVar5),\n       piVar3 != (int *)0x0)" (( "(") (comma_expression "piVar3 = (int *)FUN_0013d200(iVar1,local_b0,local_a4,local_a0,local_9c,local_98,piVar5),\n       piVar3 != (int *)0x0" (assignment_expression "piVar3 = (int *)FUN_0013d200(iVar1,local_b0,local_a4,local_a0,local_9c,local_98,piVar5)" (identifier "piVar3") (= "=") (cast_expression "(int *)FUN_0013d200(iVar1,local_b0,local_a4,local_a0,local_9c,local_98,piVar5)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_0013d200(iVar1,local_b0,local_a4,local_a0,local_9c,local_98,piVar5)" (identifier "FUN_0013d200") (argument_list "(iVar1,local_b0,local_a4,local_a0,local_9c,local_98,piVar5)" (( "(") (identifier "iVar1") (, ",") (identifier "local_b0") (, ",") (identifier "local_a4") (, ",") (identifier "local_a0") (, ",") (identifier "local_9c") (, ",") (identifier "local_98") (, ",") (identifier "piVar5") () ")"))))) (, ",") (binary_expression "piVar3 != (int *)0x0" (identifier "piVar3") (!= "!=") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0")))) () ")"))) () ")")) (compound_statement "{\n      if (piVar5 != (int *)0x0) {\n        (**(code **)(*piVar5 + 4))(piVar5);\n      }\n      goto LAB_0019637f;\n    }" ({ "{") (if_statement "if (piVar5 != (int *)0x0) {\n        (**(code **)(*piVar5 + 4))(piVar5);\n      }" (if "if") (parenthesized_expression "(piVar5 != (int *)0x0)" (( "(") (binary_expression "piVar5 != (int *)0x0" (identifier "piVar5") (!= "!=") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n        (**(code **)(*piVar5 + 4))(piVar5);\n      }" ({ "{") (expression_statement "(**(code **)(*piVar5 + 4))(piVar5);" (call_expression "(**(code **)(*piVar5 + 4))(piVar5)" (parenthesized_expression "(**(code **)(*piVar5 + 4))" (( "(") (pointer_expression "**(code **)(*piVar5 + 4)" (* "*") (pointer_expression "*(code **)(*piVar5 + 4)" (* "*") (cast_expression "(code **)(*piVar5 + 4)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*piVar5 + 4)" (( "(") (binary_expression "*piVar5 + 4" (pointer_expression "*piVar5" (* "*") (identifier "piVar5")) (+ "+") (number_literal "4")) () ")"))))) () ")")) (argument_list "(piVar5)" (( "(") (identifier "piVar5") () ")"))) (; ";")) (} "}"))) (goto_statement "goto LAB_0019637f;" (goto "goto") (statement_identifier "LAB_0019637f") (; ";")) (} "}"))) (if_statement "if (cVar2 != '\0') {\n      piVar3 = piVar5;\n      if (piVar5 != (int *)0x0) {\n        *(byte *)(piVar5 + 0xb) =\n             *(byte *)(piVar5 + 0xb) & 0xef | (byte)((*(byte *)(param_1 + 0xd4) & 1) << 4);\n      }\n      goto LAB_0019637f;\n    }" (if "if") (parenthesized_expression "(cVar2 != '\0')" (( "(") (binary_expression "cVar2 != '\0'" (identifier "cVar2") (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n      piVar3 = piVar5;\n      if (piVar5 != (int *)0x0) {\n        *(byte *)(piVar5 + 0xb) =\n             *(byte *)(piVar5 + 0xb) & 0xef | (byte)((*(byte *)(param_1 + 0xd4) & 1) << 4);\n      }\n      goto LAB_0019637f;\n    }" ({ "{") (expression_statement "piVar3 = piVar5;" (assignment_expression "piVar3 = piVar5" (identifier "piVar3") (= "=") (identifier "piVar5")) (; ";")) (if_statement "if (piVar5 != (int *)0x0) {\n        *(byte *)(piVar5 + 0xb) =\n             *(byte *)(piVar5 + 0xb) & 0xef | (byte)((*(byte *)(param_1 + 0xd4) & 1) << 4);\n      }" (if "if") (parenthesized_expression "(piVar5 != (int *)0x0)" (( "(") (binary_expression "piVar5 != (int *)0x0" (identifier "piVar5") (!= "!=") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n        *(byte *)(piVar5 + 0xb) =\n             *(byte *)(piVar5 + 0xb) & 0xef | (byte)((*(byte *)(param_1 + 0xd4) & 1) << 4);\n      }" ({ "{") (expression_statement "*(byte *)(piVar5 + 0xb) =\n             *(byte *)(piVar5 + 0xb) & 0xef | (byte)((*(byte *)(param_1 + 0xd4) & 1) << 4);" (assignment_expression "*(byte *)(piVar5 + 0xb) =\n             *(byte *)(piVar5 + 0xb) & 0xef | (byte)((*(byte *)(param_1 + 0xd4) & 1) << 4)" (pointer_expression "*(byte *)(piVar5 + 0xb)" (* "*") (cast_expression "(byte *)(piVar5 + 0xb)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(piVar5 + 0xb)" (( "(") (binary_expression "piVar5 + 0xb" (identifier "piVar5") (+ "+") (number_literal "0xb")) () ")")))) (= "=") (binary_expression "*(byte *)(piVar5 + 0xb) & 0xef | (byte)((*(byte *)(param_1 + 0xd4) & 1) << 4)" (binary_expression "*(byte *)(piVar5 + 0xb) & 0xef" (pointer_expression "*(byte *)(piVar5 + 0xb)" (* "*") (cast_expression "(byte *)(piVar5 + 0xb)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(piVar5 + 0xb)" (( "(") (binary_expression "piVar5 + 0xb" (identifier "piVar5") (+ "+") (number_literal "0xb")) () ")")))) (& "&") (number_literal "0xef")) (| "|") (call_expression "(byte)((*(byte *)(param_1 + 0xd4) & 1) << 4)" (parenthesized_expression "(byte)" (( "(") (identifier "byte") () ")")) (argument_list "((*(byte *)(param_1 + 0xd4) & 1) << 4)" (( "(") (binary_expression "(*(byte *)(param_1 + 0xd4) & 1) << 4" (parenthesized_expression "(*(byte *)(param_1 + 0xd4) & 1)" (( "(") (binary_expression "*(byte *)(param_1 + 0xd4) & 1" (pointer_expression "*(byte *)(param_1 + 0xd4)" (* "*") (cast_expression "(byte *)(param_1 + 0xd4)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0xd4)" (( "(") (binary_expression "param_1 + 0xd4" (identifier "param_1") (+ "+") (number_literal "0xd4")) () ")")))) (& "&") (number_literal "1")) () ")")) (<< "<<") (number_literal "4")) () ")"))))) (; ";")) (} "}"))) (goto_statement "goto LAB_0019637f;" (goto "goto") (statement_identifier "LAB_0019637f") (; ";")) (} "}"))) (expression_statement "uVar6 = *(undefined4 *)(param_1 + 0xc);" (assignment_expression "uVar6 = *(undefined4 *)(param_1 + 0xc)" (identifier "uVar6") (= "=") (pointer_expression "*(undefined4 *)(param_1 + 0xc)" (* "*") (cast_expression "(undefined4 *)(param_1 + 0xc)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0xc)" (( "(") (binary_expression "param_1 + 0xc" (identifier "param_1") (+ "+") (number_literal "0xc")) () ")"))))) (; ";")) (expression_statement "uVar4 = gettext("%s: member at %zu is not an ELF object");" (assignment_expression "uVar4 = gettext("%s: member at %zu is not an ELF object")" (identifier "uVar4") (= "=") (call_expression "gettext("%s: member at %zu is not an ELF object")" (identifier "gettext") (argument_list "("%s: member at %zu is not an ELF object")" (( "(") (string_literal ""%s: member at %zu is not an ELF object"" (" """) (string_content "%s: member at %zu is not an ELF object") (" """)) () ")")))) (; ";")) (expression_statement "FUN_000654b0(uVar4,uVar6,param_2);" (call_expression "FUN_000654b0(uVar4,uVar6,param_2)" (identifier "FUN_000654b0") (argument_list "(uVar4,uVar6,param_2)" (( "(") (identifier "uVar4") (, ",") (identifier "uVar6") (, ",") (identifier "param_2") () ")"))) (; ";")) (} "}"))) (expression_statement "piVar3 = (int *)0x0;" (assignment_expression "piVar3 = (int *)0x0" (identifier "piVar3") (= "=") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";")) (labeled_statement "LAB_0019637f:\n  if (local_94 != local_8c) {\n    FUN_001e6db0(local_94);\n  }" (statement_identifier "LAB_0019637f") (: ":") (if_statement "if (local_94 != local_8c) {\n    FUN_001e6db0(local_94);\n  }" (if "if") (parenthesized_expression "(local_94 != local_8c)" (( "(") (binary_expression "local_94 != local_8c" (identifier "local_94") (!= "!=") (identifier "local_8c")) () ")")) (compound_statement "{\n    FUN_001e6db0(local_94);\n  }" ({ "{") (expression_statement "FUN_001e6db0(local_94);" (call_expression "FUN_001e6db0(local_94)" (identifier "FUN_001e6db0") (argument_list "(local_94)" (( "(") (identifier "local_94") () ")"))) (; ";")) (} "}")))) (return_statement "return piVar3;" (return "return") (identifier "piVar3") (; ";")) (} "}")))

/* WARNING: Function: __x86.get_pc_thunk.si replaced with injection: get_pc_thunk_si */
/* WARNING: Enum "DT": Some values do not have unique names */
/* DWARF original prototype: Object * get_elf_object_for_member(Archive * this, off_t off, bool *
   punconfigured) */

Object * __thiscall
type_10::Archive::get_elf_object_for_member(Archive *this,type_7 off,bool *var_5)

{
  type_1 *var_22;
  type_2 var_10;
  type_3 *name;
  type_3 *input_file_00;
  type_4 uVar2;
  bool bVar3;
  type_5 *var_24;
  int *var_13;
  char *format;
  type_5 *var_25;
  bool *punconfigured_00;
  type_3 *input_file;
  type_6 *ehdr;
  int read_size;
  type_7 memoff;
  type_7 memsize;
  type_8 member_name;
  basic_string<var_2,_std::char_traits<var_2>,_std::var_1<var_2>var_3> var_4;
  int *var_19;
  int local_60;
  int local_5c;
  int local_58;
  int local_54;
  int local_50;
  int *var_18;
  int var_14;
  int local_44;
  int local_40;
  int local_3c;
  int local_38;
  int *var_16;
  int local_30;
  int local_2c;
  int local_28;
  int local_24;
  int local_20;
  
  if (var_5 != (bool *)0x0) {
    *var_5 = false;
  }
  member_name._M_string_length = 0;
  member_name.field_2._M_local_buf[0] = '\0';
  member_name._M_dataplus._M_p = (type_2)&member_name.field_2;
                    /* try { // try from 00196297 to 00196404 has its CatchHandler @ 001966ac */
  bVar3 = var_6(this,off,&input_file,&memoff,&memsize,&member_name);
  if (bVar3) {
    bVar3 = var_7(input_file,var_8(memoff._4_4_,(type_3 *)memoff),&ehdr,&read_size);
    uVar2 = memoff._4_4_;
    input_file_00 = (type_3 *)memoff;
    name = input_file;
    var_25 = (type_5 *)0x0;
    if (bVar3) {
      var_10 = (this->input_file_->file_).name_._M_dataplus._M_p;
      punconfigured_00 = (bool *)0x0;
      var_4._M_dataplus._M_p = (type_2)&var_4.field_2;
      std::__cxx11::basic_string<var_2,_std::char_traits<var_2>,_std::var_1<var_2>var_3>::
      var_9<var_2*>(&var_4,var_10,
                          var_10 + (this->input_file_->file_).name_._M_string_length);
      if (var_4._M_string_length == 0x7fffffff) {
                    /* WARNING: Subroutine does not return */
                    /* try { // try from 00196681 to 00196685 has its CatchHandler @ 001966b3 */
        std::var_11("basic_string::append");
      }
                    /* try { // try from 00196424 to 00196428 has its CatchHandler @ 001966b3 */
      var_13 = (int *)std::string::var_12((type_8 *)&var_4,"(",1);
      if ((int *)*var_13 == var_13 + 2) {
        local_5c = var_13[2];
        local_58 = var_13[3];
        local_54 = var_13[4];
        local_50 = var_13[5];
        var_19 = &local_5c;
      }
      else {
        local_5c = var_13[2];
        var_19 = (int *)*var_13;
      }
      local_60 = var_13[1];
      *(type_9 *)(var_13 + 2) = 0;
      *var_13 = (int)(var_13 + 2);
      var_13[1] = 0;
                    /* try { // try from 00196476 to 0019647a has its CatchHandler @ 001966a5 */
      var_13 = (int *)std::string::var_12
                                ((type_8 *)&var_19,member_name._M_dataplus._M_p,
                                 member_name._M_string_length);
      if ((int *)*var_13 == var_13 + 2) {
        local_44 = var_13[2];
        local_40 = var_13[3];
        local_3c = var_13[4];
        local_38 = var_13[5];
        var_18 = &local_44;
      }
      else {
        local_44 = var_13[2];
        var_18 = (int *)*var_13;
      }
      var_14 = var_13[1];
      *(type_9 *)(var_13 + 2) = 0;
      *var_13 = (int)(var_13 + 2);
      var_13[1] = 0;
      if (var_14 == 0x7fffffff) {
                    /* WARNING: Subroutine does not return */
                    /* try { // try from 00196692 to 00196696 has its CatchHandler @ 00196697 */
        std::var_11("basic_string::append");
      }
                    /* try { // try from 001964d2 to 001964d6 has its CatchHandler @ 00196697 */
      var_13 = (int *)std::string::var_12((type_8 *)&var_18,")",1);
      if ((int *)*var_13 == var_13 + 2) {
        local_2c = var_13[2];
        local_28 = var_13[3];
        local_24 = var_13[4];
        local_20 = var_13[5];
        var_16 = &local_2c;
      }
      else {
        local_2c = var_13[2];
        var_16 = (int *)*var_13;
      }
      local_30 = var_13[1];
      *(type_9 *)(var_13 + 2) = 0;
      *var_13 = (int)(var_13 + 2);
      var_13[1] = 0;
                    /* try { // try from 00196534 to 00196538 has its CatchHandler @ 0019669e */
      var_25 = (type_5 *)
                   var_15((type_10 *)&var_16,(type_8 *)name,input_file_00,
                                   var_8(ehdr,uVar2),(type_6 *)read_size,
                                   (type_11)var_5,punconfigured_00);
      if (var_16 != &local_2c) {
        var_17(var_16);
      }
      if (var_18 != &local_44) {
        var_17(var_18);
      }
      if (var_19 != &local_5c) {
        var_17(var_19);
      }
      if ((anon_union_16_2_edb7204a_for_basic_string<var_2,_std::char_traits<var_2>,_std::var_1<var_2>var_3>var_20
           *)var_4._M_dataplus._M_p != &var_4.field_2) {
        var_17(var_4._M_dataplus._M_p);
      }
    }
    if (parameters->options_ == (type_12 *)0x0) {
                    /* WARNING: Subroutine does not return */
      var_21("../../gold/parameters.h",0x5c,"options");
    }
    var_22 = parameters->options_->plugins_;
    if ((var_22 != (type_1 *)0x0) &&
       (var_24 = type_1::var_23
                           (var_22,input_file,var_8(memoff._4_4_,(type_3 *)memoff),
                            var_8(memsize._4_4_,(type_4)memsize),&var_25->super_Object),
       var_24 != (type_5 *)0x0)) {
      if (var_25 != (type_5 *)0x0) {
        (*(var_25->super_Object)._vptr_Object[1])(var_25);
      }
      goto LAB_0019637f;
    }
    if (bVar3) {
      var_24 = var_25;
      if (var_25 != (type_5 *)0x0) {
        (var_25->super_Object).field_0x2c =
             (var_25->super_Object).field_0x2c & 0xef | (byte)((this->no_export_ & 1) << 4);
      }
      goto LAB_0019637f;
    }
    var_10 = (this->name_)._M_dataplus._M_p;
    format = (char *)var_26("%s: member at %zu is not an ELF object");
                    /* try { // try from 001965d2 to 00196674 has its CatchHandler @ 001966ac */
    var_27(format,var_10,(type_4)off);
  }
  var_24 = (type_5 *)0x0;
LAB_0019637f:
  if ((anon_union_16_2_edb7204a_for_basic_string<var_2,_std::char_traits<var_2>,_std::var_1<var_2>var_3>var_20
       *)member_name._M_dataplus._M_p != &member_name.field_2) {
    var_17(member_name._M_dataplus._M_p);
  }
  return &var_24->super_Object;
}


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

/* WARNING: Function: __i686.get_pc_thunk.si replaced with injection: get_pc_thunk_si */

int * MASKED(int param_1,undefined4 param_2,undefined4 param_3,undefined1 *param_4)

{
  int iVar1;
  char cVar2;
  int *piVar3;
  undefined4 uVar4;
  int *piVar5;
  undefined4 uVar6;
  undefined4 uVar7;
  undefined4 local_b0;
  undefined4 local_ac;
  undefined4 local_a8;
  undefined4 local_a4;
  undefined4 local_a0;
  undefined4 local_9c;
  undefined4 local_98;
  undefined1 *local_94;
  undefined4 local_90;
  undefined1 local_8c [16];
  undefined1 *local_7c;
  int local_78;
  undefined1 local_74 [16];
  int *local_64;
  int local_60;
  int local_5c;
  int local_58;
  int local_54;
  int local_50;
  int *local_4c;
  int local_48;
  int local_44;
  int local_40;
  int local_3c;
  int local_38;
  int *local_34;
  int local_30;
  int local_2c;
  int local_28;
  int local_24;
  int local_20;
  
  if (param_4 != (undefined1 *)0x0) {
    *param_4 = 0;
  }
  local_90 = 0;
  local_8c[0] = 0;
  local_94 = local_8c;
                    /* try { // try from 00196297 to 00196404 has its CatchHandler @ 001966ac */
  cVar2 = FUN_00195b60(param_1,param_2,param_3,&local_b0,&local_a4,&local_9c,&local_94);
  if (cVar2 != '\0') {
    cVar2 = FUN_000b23e0(local_b0,local_a4,local_a0,&local_ac,&local_a8);
    piVar5 = (int *)0x0;
    if (cVar2 != '\0') {
      iVar1 = *(int *)(*(int *)(param_1 + 0x24) + 0x1c);
      uVar6 = local_a4;
      uVar4 = local_a0;
      uVar7 = local_b0;
      local_7c = local_74;
      FUN_000513a0(&local_7c,iVar1,*(int *)(*(int *)(param_1 + 0x24) + 0x20) + iVar1,0,local_a4,
                   local_a0,local_b0,local_ac);
      if (local_78 == 0x7fffffff) {
                    /* WARNING: Subroutine does not return */
                    /* try { // try from 00196681 to 00196685 has its CatchHandler @ 001966b3 */
        FUN_0022c7a0("basic_string::append");
      }
                    /* try { // try from 00196424 to 00196428 has its CatchHandler @ 001966b3 */
      piVar5 = (int *)FUN_001f05c0(&local_7c,"(",1);
      if ((int *)*piVar5 == piVar5 + 2) {
        local_5c = piVar5[2];
        local_58 = piVar5[3];
        local_54 = piVar5[4];
        local_50 = piVar5[5];
        local_64 = &local_5c;
      }
      else {
        local_5c = piVar5[2];
        local_64 = (int *)*piVar5;
      }
      local_60 = piVar5[1];
      *(undefined1 *)(piVar5 + 2) = 0;
      *piVar5 = (int)(piVar5 + 2);
      piVar5[1] = 0;
                    /* try { // try from 00196476 to 0019647a has its CatchHandler @ 001966a5 */
      piVar5 = (int *)FUN_001f05c0(&local_64,local_94,local_90);
      if ((int *)*piVar5 == piVar5 + 2) {
        local_44 = piVar5[2];
        local_40 = piVar5[3];
        local_3c = piVar5[4];
        local_38 = piVar5[5];
        local_4c = &local_44;
      }
      else {
        local_44 = piVar5[2];
        local_4c = (int *)*piVar5;
      }
      local_48 = piVar5[1];
      *(undefined1 *)(piVar5 + 2) = 0;
      *piVar5 = (int)(piVar5 + 2);
      piVar5[1] = 0;
      if (local_48 == 0x7fffffff) {
                    /* WARNING: Subroutine does not return */
                    /* try { // try from 00196692 to 00196696 has its CatchHandler @ 00196697 */
        FUN_0022c7a0("basic_string::append");
      }
                    /* try { // try from 001964d2 to 001964d6 has its CatchHandler @ 00196697 */
      piVar5 = (int *)FUN_001f05c0(&local_4c,&DAT_002a0f9f,1);
      if ((int *)*piVar5 == piVar5 + 2) {
        local_2c = piVar5[2];
        local_28 = piVar5[3];
        local_24 = piVar5[4];
        local_20 = piVar5[5];
        local_34 = &local_2c;
      }
      else {
        local_2c = piVar5[2];
        local_34 = (int *)*piVar5;
      }
      local_30 = piVar5[1];
      *(undefined1 *)(piVar5 + 2) = 0;
      *piVar5 = (int)(piVar5 + 2);
      piVar5[1] = 0;
                    /* try { // try from 00196534 to 00196538 has its CatchHandler @ 0019669e */
      piVar5 = (int *)FUN_000b25f0(&local_34,uVar7,uVar6,uVar4,local_ac,local_a8,param_4);
      if (local_34 != &local_2c) {
        FUN_001e6db0(local_34);
      }
      if (local_4c != &local_44) {
        FUN_001e6db0(local_4c);
      }
      if (local_64 != &local_5c) {
        FUN_001e6db0(local_64);
      }
      if (local_7c != local_74) {
        FUN_001e6db0(local_7c);
      }
    }
    if (*(int *)(DAT_0038f378 + 8) == 0) {
                    /* WARNING: Subroutine does not return */
      FUN_00069d00("../../gold/parameters.h",0x5c,"options",0);
    }
    iVar1 = *(int *)(*(int *)(DAT_0038f378 + 8) + 0x593c);
    if ((iVar1 != 0) &&
       (piVar3 = (int *)FUN_0013d200(iVar1,local_b0,local_a4,local_a0,local_9c,local_98,piVar5),
       piVar3 != (int *)0x0)) {
      if (piVar5 != (int *)0x0) {
        (**(code **)(*piVar5 + 4))(piVar5);
      }
      goto LAB_0019637f;
    }
    if (cVar2 != '\0') {
      piVar3 = piVar5;
      if (piVar5 != (int *)0x0) {
        *(byte *)(piVar5 + 0xb) =
             *(byte *)(piVar5 + 0xb) & 0xef | (byte)((*(byte *)(param_1 + 0xd4) & 1) << 4);
      }
      goto LAB_0019637f;
    }
    uVar6 = *(undefined4 *)(param_1 + 0xc);
    uVar4 = gettext("%s: member at %zu is not an ELF object");
                    /* try { // try from 001965d2 to 00196674 has its CatchHandler @ 001966ac */
    FUN_000654b0(uVar4,uVar6,param_2);
  }
  piVar3 = (int *)0x0;
LAB_0019637f:
  if (local_94 != local_8c) {
    FUN_001e6db0(local_94);
  }
  return piVar3;
}

