
/* WARNING: Function: __x86.get_pc_thunk.ax replaced with injection: get_pc_thunk_ax */
/* WARNING: Enum "DT": Some values do not have unique names */
/* WARNING: Enum "ELFOSABI": Some values do not have unique names */
/* DWARF original prototype: void do_add_symbols(Sized_pluginobj<32,_true> * this, Symbol_table *
   symtab, Read_symbols_data * param_2, Layout * layout) */

void __thiscall
gold::Sized_pluginobj<32,_true>::do_add_symbols
          (Sized_pluginobj<32,_true> *this,Symbol_table *symtab,Read_symbols_data *param_2,
          Layout *layout)

{
  anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9
  *paVar1;
  Plugin_recorder *this_00;
  pointer ppSVar2;
  pointer ppSVar3;
  char *pcVar4;
  int iVar5;
  char cVar6;
  bool bVar7;
  ushort uVar8;
  uint uVar9;
  Symbol *pSVar10;
  ld_plugin_symbol *plVar11;
  size_t sVar12;
  uint uVar13;
  char *ver;
  uchar local_60;
  char local_5c;
  char *local_58;
  ushort local_54;
  int local_50;
  Sym<32,_true> sym;
  uchar symbuf [16];
  basic_string<char,_std::char_traits<char>,_std::allocator<char>_> local_34;
  
  sym.p_ = (Sym_data<32> *)symbuf;
  if (parameters->options_ == (General_options *)0x0) {
                    /* WARNING: Subroutine does not return */
    do_gold_unreachable("../../gold/parameters.h",0x5c,"options");
  }
  this_00 = parameters->options_->plugins_->recorder_;
  uVar9 = (this->super_Pluginobj).nsyms_;
  if (this_00 != (Plugin_recorder *)0x0) {
    Plugin_recorder::record_symbols(this_00,(Object *)this,uVar9,(this->super_Pluginobj).syms_);
    uVar9 = (this->super_Pluginobj).nsyms_;
  }
  ppSVar2 = (this->super_Pluginobj).symbols_.
            super__Vector_base<gold::Symbol*,_std::allocator<gold::Symbol*>_>._M_impl._M_finish;
  ppSVar3 = (this->super_Pluginobj).symbols_.
            super__Vector_base<gold::Symbol*,_std::allocator<gold::Symbol*>_>._M_impl._M_start;
  uVar13 = (int)ppSVar2 - (int)ppSVar3 >> 2;
  if (uVar13 < uVar9) {
    std::vector<gold::Symbol*,_std::allocator<gold::Symbol*>_>::_M_default_append
              (&(this->super_Pluginobj).symbols_,uVar9 - uVar13);
    uVar9 = (this->super_Pluginobj).nsyms_;
  }
  else if ((uVar9 < uVar13) && (ppSVar3 = ppSVar3 + uVar9, ppSVar2 != ppSVar3)) {
    (this->super_Pluginobj).symbols_.
    super__Vector_base<gold::Symbol*,_std::allocator<gold::Symbol*>_>._M_impl._M_finish = ppSVar3;
  }
  local_50 = 0;
  if (0 < (int)uVar9) {
    do {
      plVar11 = (this->super_Pluginobj).syms_ + local_50;
      pcVar4 = plVar11->name;
      ver = plVar11->version;
      local_58 = pcVar4;
      if ((pcVar4 != (char *)0x0) && (local_58 = (char *)0x0, *pcVar4 != '\0')) {
        local_58 = pcVar4;
      }
      if ((ver != (char *)0x0) && (*ver == '\0')) {
        ver = (char *)0x0;
      }
      iVar5 = plVar11->def;
      if (iVar5 == 1) {
        local_5c = '\x02';
        local_54 = 1;
        goto LAB_003123e2;
      }
      if (iVar5 == 3) {
        cVar6 = '\x02';
LAB_003124f7:
        local_5c = cVar6;
        local_54 = 0;
      }
      else {
        local_5c = '\x01';
        cVar6 = '\x01';
        if (iVar5 < 0) goto LAB_003124f7;
        if (iVar5 < 2) {
          local_54 = 1;
        }
        else {
          local_54 = 0xfff2;
          if (iVar5 != 4) goto LAB_003124f7;
        }
      }
LAB_003123e2:
      local_60 = '\0';
      uVar9 = plVar11->visibility - 1;
      if (uVar9 < 3) {
        local_60 = (uchar)*(undefined4 *)(CSWTCH_704 + uVar9 * 4);
      }
      pcVar4 = plVar11->comdat_key;
      if ((pcVar4 == (char *)0x0) || (*pcVar4 == '\0')) {
        uVar8 = local_54 << 8 | local_54 >> 8;
      }
      else {
        paVar1 = &local_34.field_2;
        local_34._M_dataplus._M_p = (pointer)paVar1;
        sVar12 = strlen(pcVar4);
        std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>::
        _M_construct<char_const*>(&local_34,pcVar4,pcVar4 + sVar12,0);
                    /* try { // try from 0031255b to 0031255f has its CatchHandler @ 0031261e */
        bVar7 = Pluginobj::include_comdat_group(&this->super_Pluginobj,&local_34,layout);
        if (bVar7) {
          uVar8 = local_54 << 8 | local_54 >> 8;
          if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9
               *)local_34._M_dataplus._M_p != paVar1) {
            operator_delete(local_34._M_dataplus._M_p);
          }
        }
        else {
          if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9
               *)local_34._M_dataplus._M_p != paVar1) {
            operator_delete(local_34._M_dataplus._M_p);
          }
          uVar8 = 0;
        }
      }
      symbuf._14_2_ = uVar8;
      symbuf[0] = '\0';
      symbuf[1] = '\0';
      symbuf[2] = '\0';
      symbuf[3] = '\0';
      symbuf[4] = '\0';
      symbuf[5] = '\0';
      symbuf[6] = '\0';
      symbuf[7] = '\0';
      symbuf[8] = '\0';
      symbuf[9] = '\0';
      symbuf[10] = '\0';
      symbuf[0xb] = '\0';
      symbuf[0xc] = local_5c << 4;
      symbuf[0xd] = local_60;
      ppSVar3 = (this->super_Pluginobj).symbols_.
                super__Vector_base<gold::Symbol*,_std::allocator<gold::Symbol*>_>._M_impl._M_start +
                local_50;
      pSVar10 = Symbol_table::add_from_pluginobj<32,_true>(symtab,this,local_58,ver,&sym);
      local_50 = local_50 + 1;
      *ppSVar3 = pSVar10;
    } while (local_50 < (this->super_Pluginobj).nsyms_);
  }
  return;
}



/* WARNING: Function: __i686.get_pc_thunk.ax replaced with injection: get_pc_thunk_ax */

void FUN_00312340(int param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4)

{
  int iVar1;
  int iVar2;
  char *pcVar3;
  char cVar4;
  ushort uVar5;
  uint uVar6;
  undefined4 uVar7;
  undefined4 *puVar8;
  size_t sVar9;
  uint uVar10;
  char *pcVar11;
  undefined1 local_60;
  char local_5c;
  char *local_58;
  ushort local_54;
  int local_50;
  undefined4 *local_48;
  undefined4 local_44;
  undefined4 local_40;
  undefined4 local_3c;
  char local_38;
  undefined1 local_37;
  ushort local_36;
  undefined1 *local_34 [2];
  undefined1 local_2c [28];
  
  local_48 = &local_44;
  if (*(int *)(DAT_005ea7c8 + 8) == 0) {
                    /* WARNING: Subroutine does not return */
    FUN_002446e0("../../gold/parameters.h",0x5c,"options",param_1);
  }
  iVar1 = *(int *)(*(int *)(*(int *)(DAT_005ea7c8 + 8) + 0x593c) + 0xd4);
  uVar6 = *(uint *)(param_1 + 0x38);
  if (iVar1 != 0) {
    FUN_0030c0e0(iVar1,param_1,uVar6,*(undefined4 *)(param_1 + 0x3c));
    uVar6 = *(uint *)(param_1 + 0x38);
  }
  uVar10 = *(int *)(param_1 + 0x44) - *(int *)(param_1 + 0x40) >> 2;
  if (uVar10 < uVar6) {
    FUN_002352a0(param_1 + 0x40,uVar6 - uVar10);
    uVar6 = *(uint *)(param_1 + 0x38);
  }
  else if ((uVar6 < uVar10) &&
          (iVar1 = *(int *)(param_1 + 0x40) + uVar6 * 4, *(int *)(param_1 + 0x44) != iVar1)) {
    *(int *)(param_1 + 0x44) = iVar1;
  }
  local_50 = 0;
  if (0 < (int)uVar6) {
    do {
      puVar8 = (undefined4 *)(local_50 * 0x20 + *(int *)(param_1 + 0x3c));
      pcVar3 = (char *)*puVar8;
      pcVar11 = (char *)puVar8[1];
      local_58 = pcVar3;
      if ((pcVar3 != (char *)0x0) && (local_58 = (char *)0x0, *pcVar3 != '\0')) {
        local_58 = pcVar3;
      }
      if ((pcVar11 != (char *)0x0) && (*pcVar11 == '\0')) {
        pcVar11 = (char *)0x0;
      }
      iVar1 = puVar8[2];
      if (iVar1 == 1) {
        local_5c = '\x02';
        local_54 = 1;
        goto LAB_003123e2;
      }
      if (iVar1 == 3) {
        cVar4 = '\x02';
LAB_003124f7:
        local_5c = cVar4;
        local_54 = 0;
      }
      else {
        local_5c = '\x01';
        cVar4 = '\x01';
        if (iVar1 < 0) goto LAB_003124f7;
        if (iVar1 < 2) {
          local_54 = 1;
        }
        else {
          local_54 = 0xfff2;
          if (iVar1 != 4) goto LAB_003124f7;
        }
      }
LAB_003123e2:
      local_60 = 0;
      if (puVar8[3] - 1 < 3) {
        local_60 = (undefined1)*(undefined4 *)(&DAT_004947f4 + (puVar8[3] - 1) * 4);
      }
      pcVar3 = (char *)puVar8[6];
      if ((pcVar3 == (char *)0x0) || (*pcVar3 == '\0')) {
        uVar5 = local_54 << 8 | local_54 >> 8;
      }
      else {
        local_34[0] = local_2c;
        sVar9 = strlen(pcVar3);
        FUN_00072b90(local_34,pcVar3,pcVar3 + sVar9,0);
                    /* try { // try from 0031255b to 0031255f has its CatchHandler @ 0031261e */
        cVar4 = FUN_0030f450(param_1,local_34,param_4);
        if (cVar4 == '\0') {
          if (local_34[0] != local_2c) {
            FUN_003ae080(local_34[0]);
          }
          uVar5 = 0;
        }
        else {
          uVar5 = local_54 << 8 | local_54 >> 8;
          if (local_34[0] != local_2c) {
            FUN_003ae080(local_34[0]);
          }
        }
      }
      local_36 = uVar5;
      local_44 = 0;
      local_40 = 0;
      local_3c = 0;
      local_38 = local_5c << 4;
      local_37 = local_60;
      iVar2 = *(int *)(param_1 + 0x40);
      iVar1 = local_50 * 4;
      uVar7 = FUN_00359950(param_2,param_1,local_58,pcVar11,&local_48);
      local_50 = local_50 + 1;
      *(undefined4 *)(iVar2 + iVar1) = uVar7;
    } while (local_50 < *(int *)(param_1 + 0x38));
  }
  return;
}


CALL 0x00074f02
ADD EAX,0x2d7cbb
PUSH EBP
MOV EBP,ESP
PUSH EDI
PUSH ESI
PUSH EBX
MOV ESI,EAX
SUB ESP,0x6c
MOV dword ptr [EBP + -0x60],EAX
LEA EAX,[EBP + -0x40]
MOV EDI,dword ptr [EBP + 0x8]
MOV dword ptr [EBP + -0x44],EAX
LEA EAX,[ESI + 0x7c8]
MOV EAX,dword ptr [EAX]
MOV EAX,dword ptr [EAX + 0x8]
TEST EAX,EAX
JZ 0x003125f2
MOV EAX,dword ptr [EAX + 0x593c]
MOV EDX,dword ptr [EAX + 0xd4]
MOV EAX,dword ptr [EDI + 0x38]
TEST EDX,EDX
JZ 0x00312398
PUSH dword ptr [EDI + 0x3c]
PUSH EAX
PUSH EDI
PUSH EDX
CALL 0x0030c0e0
MOV EAX,dword ptr [EDI + 0x38]
ADD ESP,0x10
MOV ECX,dword ptr [EDI + 0x44]
MOV ESI,dword ptr [EDI + 0x40]
MOV EDX,ECX
SUB EDX,ESI
SAR EDX,0x2
CMP EAX,EDX
JA 0x003125d8
JC 0x003125c0
MOV dword ptr [EBP + -0x4c],0x0
TEST EAX,EAX
JG 0x00312486
JMP 0x00312580
MOV EBX,0xfffffff2
MOV word ptr [EBP + -0x50],BX
CMP EDX,0x4
JNZ 0x003124f7
MOV ECX,dword ptr [EAX + 0xc]
MOV dword ptr [EBP + -0x5c],0x0
LEA EDX,[ECX + -0x1]
CMP EDX,0x2
JA 0x00312401
MOV ECX,dword ptr [EBP + -0x60]
MOV EDX,dword ptr [ECX + EDX*0x4 + 0xffeaa7f4]
MOV dword ptr [EBP + -0x5c],EDX
MOV EDX,dword ptr [EAX + 0x18]
TEST EDX,EDX
JZ 0x00312411
CMP byte ptr [EDX],0x0
JNZ 0x00312520
MOVZX EAX,word ptr [EBP + -0x50]
ROL AX,0x8
MOV word ptr [EBP + -0x50],AX
MOV ECX,dword ptr [EBP + -0x4c]
SUB ESP,0xc
MOV EBX,dword ptr [EBP + -0x60]
MOV dword ptr [EBP + -0x40],0x0
MOVZX EAX,byte ptr [EBP + -0x58]
MOV dword ptr [EBP + -0x3c],0x0
MOV dword ptr [EBP + -0x38],0x0
SHL EAX,0x4
MOV byte ptr [EBP + -0x34],AL
MOVZX EAX,byte ptr [EBP + -0x5c]
MOV byte ptr [EBP + -0x33],AL
MOVZX EAX,word ptr [EBP + -0x50]
MOV word ptr [EBP + -0x32],AX
MOV EAX,dword ptr [EDI + 0x40]
LEA EAX,[EAX + ECX*0x4]
MOV dword ptr [EBP + -0x50],EAX
LEA EAX,[EBP + -0x44]
PUSH EAX
PUSH ESI
PUSH dword ptr [EBP + -0x54]
PUSH EDI
PUSH dword ptr [EBP + 0xc]
CALL 0x00359950
MOV ESI,dword ptr [EBP + -0x50]
ADD dword ptr [EBP + -0x4c],0x1
ADD ESP,0x20
MOV ECX,dword ptr [EBP + -0x4c]
MOV dword ptr [ESI],EAX
CMP dword ptr [EDI + 0x38],ECX
JLE 0x00312580
MOV EAX,dword ptr [EBP + -0x4c]
SHL EAX,0x5
ADD EAX,dword ptr [EDI + 0x3c]
MOV EBX,dword ptr [EAX]
MOV ESI,dword ptr [EAX + 0x4]
MOV dword ptr [EBP + -0x54],EBX
TEST EBX,EBX
JZ 0x003124a9
CMP byte ptr [EBX],0x0
MOV ECX,0x0
CMOVNZ ECX,EBX
MOV dword ptr [EBP + -0x54],ECX
TEST ESI,ESI
JZ 0x003124b8
CMP byte ptr [ESI],0x0
MOV EDX,0x0
CMOVZ ESI,EDX
MOV EDX,dword ptr [EAX + 0x8]
CMP EDX,0x1
JZ 0x00312508
CMP EDX,0x3
JZ 0x003124f0
MOV dword ptr [EBP + -0x58],0x1
TEST EDX,EDX
JS 0x003124f7
CMP EDX,0x1
JG 0x003123d0
MOV EDX,0x1
MOV word ptr [EBP + -0x50],DX
JMP 0x003123e2
MOV dword ptr [EBP + -0x58],0x2
XOR ECX,ECX
MOV word ptr [EBP + -0x50],CX
JMP 0x003123e2
MOV EDX,0x1
MOV dword ptr [EBP + -0x58],0x2
MOV word ptr [EBP + -0x50],DX
JMP 0x003123e2
SUB ESP,0xc
MOV EBX,dword ptr [EBP + -0x60]
LEA ECX,[EBP + -0x28]
LEA EAX,[EBP + -0x30]
PUSH EDX
MOV dword ptr [EBP + -0x68],ECX
MOV dword ptr [EBP + -0x30],ECX
MOV dword ptr [EBP + -0x6c],EDX
MOV dword ptr [EBP + -0x64],EAX
CALL 0x00039330
MOV EDX,dword ptr [EBP + -0x6c]
MOV EBX,dword ptr [EBP + -0x64]
ADD ESP,0x10
PUSH 0x0
ADD EAX,EDX
PUSH EAX
PUSH EDX
PUSH EBX
CALL 0x00072b90
ADD ESP,0xc
PUSH dword ptr [EBP + 0x14]
PUSH EBX
PUSH EDI
CALL 0x0030f450
ADD ESP,0x10
MOV EDX,dword ptr [EBP + -0x30]
TEST AL,AL
JNZ 0x00312590
CMP EDX,dword ptr [EBP + -0x68]
JNZ 0x0031260a
XOR EAX,EAX
MOV word ptr [EBP + -0x50],AX
JMP 0x0031241d
LEA ESP,[EBP + -0xc]
POP EBX
POP ESI
POP EDI
POP EBP
RET
MOVZX EAX,word ptr [EBP + -0x50]
ROL AX,0x8
MOV word ptr [EBP + -0x50],AX
CMP EDX,dword ptr [EBP + -0x68]
JZ 0x0031241d
SUB ESP,0xc
MOV EBX,dword ptr [EBP + -0x60]
PUSH EDX
CALL 0x003ae080
ADD ESP,0x10
JMP 0x0031241d
LEA EDX,[ESI + EAX*0x4]
CMP ECX,EDX
JZ 0x003123b3
MOV dword ptr [EDI + 0x44],EDX
JMP 0x003123b3
SUB ESP,0x8
SUB EAX,EDX
PUSH EAX
LEA EAX,[EDI + 0x40]
PUSH EAX
CALL 0x002352a0
MOV EAX,dword ptr [EDI + 0x38]
ADD ESP,0x10
JMP 0x003123b3
LEA EAX,[ESI + 0xffeaacd4]
PUSH EDI
MOV EBX,ESI
PUSH EAX
LEA EAX,[ESI + 0xffe5e26d]
PUSH 0x5c
PUSH EAX
CALL 0x002446e0
SUB ESP,0xc
MOV EBX,dword ptr [EBP + -0x60]
PUSH EDX
CALL 0x003ae080
ADD ESP,0x10
JMP 0x00312573
(translation_unit "/* WARNING: Function: __i686.get_pc_thunk.ax replaced with injection: get_pc_thunk_ax */\n\nvoid FUN_00312340(int param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4)\n\n{\n  int iVar1;\n  int iVar2;\n  char *pcVar3;\n  char cVar4;\n  ushort uVar5;\n  uint uVar6;\n  undefined4 uVar7;\n  undefined4 *puVar8;\n  size_t sVar9;\n  uint uVar10;\n  char *pcVar11;\n  undefined1 local_60;\n  char local_5c;\n  char *local_58;\n  ushort local_54;\n  int local_50;\n  undefined4 *local_48;\n  undefined4 local_44;\n  undefined4 local_40;\n  undefined4 local_3c;\n  char local_38;\n  undefined1 local_37;\n  ushort local_36;\n  undefined1 *local_34 [2];\n  undefined1 local_2c [28];\n  \n  local_48 = &local_44;\n  if (*(int *)(DAT_005ea7c8 + 8) == 0) {\n                    /* WARNING: Subroutine does not return */\n    FUN_002446e0("../../gold/parameters.h",0x5c,"options",param_1);\n  }\n  iVar1 = *(int *)(*(int *)(*(int *)(DAT_005ea7c8 + 8) + 0x593c) + 0xd4);\n  uVar6 = *(uint *)(param_1 + 0x38);\n  if (iVar1 != 0) {\n    FUN_0030c0e0(iVar1,param_1,uVar6,*(undefined4 *)(param_1 + 0x3c));\n    uVar6 = *(uint *)(param_1 + 0x38);\n  }\n  uVar10 = *(int *)(param_1 + 0x44) - *(int *)(param_1 + 0x40) >> 2;\n  if (uVar10 < uVar6) {\n    FUN_002352a0(param_1 + 0x40,uVar6 - uVar10);\n    uVar6 = *(uint *)(param_1 + 0x38);\n  }\n  else if ((uVar6 < uVar10) &&\n          (iVar1 = *(int *)(param_1 + 0x40) + uVar6 * 4, *(int *)(param_1 + 0x44) != iVar1)) {\n    *(int *)(param_1 + 0x44) = iVar1;\n  }\n  local_50 = 0;\n  if (0 < (int)uVar6) {\n    do {\n      puVar8 = (undefined4 *)(local_50 * 0x20 + *(int *)(param_1 + 0x3c));\n      pcVar3 = (char *)*puVar8;\n      pcVar11 = (char *)puVar8[1];\n      local_58 = pcVar3;\n      if ((pcVar3 != (char *)0x0) && (local_58 = (char *)0x0, *pcVar3 != '\0')) {\n        local_58 = pcVar3;\n      }\n      if ((pcVar11 != (char *)0x0) && (*pcVar11 == '\0')) {\n        pcVar11 = (char *)0x0;\n      }\n      iVar1 = puVar8[2];\n      if (iVar1 == 1) {\n        local_5c = '\x02';\n        local_54 = 1;\n        goto LAB_003123e2;\n      }\n      if (iVar1 == 3) {\n        cVar4 = '\x02';\nLAB_003124f7:\n        local_5c = cVar4;\n        local_54 = 0;\n      }\n      else {\n        local_5c = '\x01';\n        cVar4 = '\x01';\n        if (iVar1 < 0) goto LAB_003124f7;\n        if (iVar1 < 2) {\n          local_54 = 1;\n        }\n        else {\n          local_54 = 0xfff2;\n          if (iVar1 != 4) goto LAB_003124f7;\n        }\n      }\nLAB_003123e2:\n      local_60 = 0;\n      if (puVar8[3] - 1 < 3) {\n        local_60 = (undefined1)*(undefined4 *)(&DAT_004947f4 + (puVar8[3] - 1) * 4);\n      }\n      pcVar3 = (char *)puVar8[6];\n      if ((pcVar3 == (char *)0x0) || (*pcVar3 == '\0')) {\n        uVar5 = local_54 << 8 | local_54 >> 8;\n      }\n      else {\n        local_34[0] = local_2c;\n        sVar9 = strlen(pcVar3);\n        FUN_00072b90(local_34,pcVar3,pcVar3 + sVar9,0);\n                    /* try { // try from 0031255b to 0031255f has its CatchHandler @ 0031261e */\n        cVar4 = FUN_0030f450(param_1,local_34,param_4);\n        if (cVar4 == '\0') {\n          if (local_34[0] != local_2c) {\n            FUN_003ae080(local_34[0]);\n          }\n          uVar5 = 0;\n        }\n        else {\n          uVar5 = local_54 << 8 | local_54 >> 8;\n          if (local_34[0] != local_2c) {\n            FUN_003ae080(local_34[0]);\n          }\n        }\n      }\n      local_36 = uVar5;\n      local_44 = 0;\n      local_40 = 0;\n      local_3c = 0;\n      local_38 = local_5c << 4;\n      local_37 = local_60;\n      iVar2 = *(int *)(param_1 + 0x40);\n      iVar1 = local_50 * 4;\n      uVar7 = FUN_00359950(param_2,param_1,local_58,pcVar11,&local_48);\n      local_50 = local_50 + 1;\n      *(undefined4 *)(iVar2 + iVar1) = uVar7;\n    } while (local_50 < *(int *)(param_1 + 0x38));\n  }\n  return;\n}\n\n" comment (function_definition "void FUN_00312340(int param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4)\n\n{\n  int iVar1;\n  int iVar2;\n  char *pcVar3;\n  char cVar4;\n  ushort uVar5;\n  uint uVar6;\n  undefined4 uVar7;\n  undefined4 *puVar8;\n  size_t sVar9;\n  uint uVar10;\n  char *pcVar11;\n  undefined1 local_60;\n  char local_5c;\n  char *local_58;\n  ushort local_54;\n  int local_50;\n  undefined4 *local_48;\n  undefined4 local_44;\n  undefined4 local_40;\n  undefined4 local_3c;\n  char local_38;\n  undefined1 local_37;\n  ushort local_36;\n  undefined1 *local_34 [2];\n  undefined1 local_2c [28];\n  \n  local_48 = &local_44;\n  if (*(int *)(DAT_005ea7c8 + 8) == 0) {\n                    /* WARNING: Subroutine does not return */\n    FUN_002446e0("../../gold/parameters.h",0x5c,"options",param_1);\n  }\n  iVar1 = *(int *)(*(int *)(*(int *)(DAT_005ea7c8 + 8) + 0x593c) + 0xd4);\n  uVar6 = *(uint *)(param_1 + 0x38);\n  if (iVar1 != 0) {\n    FUN_0030c0e0(iVar1,param_1,uVar6,*(undefined4 *)(param_1 + 0x3c));\n    uVar6 = *(uint *)(param_1 + 0x38);\n  }\n  uVar10 = *(int *)(param_1 + 0x44) - *(int *)(param_1 + 0x40) >> 2;\n  if (uVar10 < uVar6) {\n    FUN_002352a0(param_1 + 0x40,uVar6 - uVar10);\n    uVar6 = *(uint *)(param_1 + 0x38);\n  }\n  else if ((uVar6 < uVar10) &&\n          (iVar1 = *(int *)(param_1 + 0x40) + uVar6 * 4, *(int *)(param_1 + 0x44) != iVar1)) {\n    *(int *)(param_1 + 0x44) = iVar1;\n  }\n  local_50 = 0;\n  if (0 < (int)uVar6) {\n    do {\n      puVar8 = (undefined4 *)(local_50 * 0x20 + *(int *)(param_1 + 0x3c));\n      pcVar3 = (char *)*puVar8;\n      pcVar11 = (char *)puVar8[1];\n      local_58 = pcVar3;\n      if ((pcVar3 != (char *)0x0) && (local_58 = (char *)0x0, *pcVar3 != '\0')) {\n        local_58 = pcVar3;\n      }\n      if ((pcVar11 != (char *)0x0) && (*pcVar11 == '\0')) {\n        pcVar11 = (char *)0x0;\n      }\n      iVar1 = puVar8[2];\n      if (iVar1 == 1) {\n        local_5c = '\x02';\n        local_54 = 1;\n        goto LAB_003123e2;\n      }\n      if (iVar1 == 3) {\n        cVar4 = '\x02';\nLAB_003124f7:\n        local_5c = cVar4;\n        local_54 = 0;\n      }\n      else {\n        local_5c = '\x01';\n        cVar4 = '\x01';\n        if (iVar1 < 0) goto LAB_003124f7;\n        if (iVar1 < 2) {\n          local_54 = 1;\n        }\n        else {\n          local_54 = 0xfff2;\n          if (iVar1 != 4) goto LAB_003124f7;\n        }\n      }\nLAB_003123e2:\n      local_60 = 0;\n      if (puVar8[3] - 1 < 3) {\n        local_60 = (undefined1)*(undefined4 *)(&DAT_004947f4 + (puVar8[3] - 1) * 4);\n      }\n      pcVar3 = (char *)puVar8[6];\n      if ((pcVar3 == (char *)0x0) || (*pcVar3 == '\0')) {\n        uVar5 = local_54 << 8 | local_54 >> 8;\n      }\n      else {\n        local_34[0] = local_2c;\n        sVar9 = strlen(pcVar3);\n        FUN_00072b90(local_34,pcVar3,pcVar3 + sVar9,0);\n                    /* try { // try from 0031255b to 0031255f has its CatchHandler @ 0031261e */\n        cVar4 = FUN_0030f450(param_1,local_34,param_4);\n        if (cVar4 == '\0') {\n          if (local_34[0] != local_2c) {\n            FUN_003ae080(local_34[0]);\n          }\n          uVar5 = 0;\n        }\n        else {\n          uVar5 = local_54 << 8 | local_54 >> 8;\n          if (local_34[0] != local_2c) {\n            FUN_003ae080(local_34[0]);\n          }\n        }\n      }\n      local_36 = uVar5;\n      local_44 = 0;\n      local_40 = 0;\n      local_3c = 0;\n      local_38 = local_5c << 4;\n      local_37 = local_60;\n      iVar2 = *(int *)(param_1 + 0x40);\n      iVar1 = local_50 * 4;\n      uVar7 = FUN_00359950(param_2,param_1,local_58,pcVar11,&local_48);\n      local_50 = local_50 + 1;\n      *(undefined4 *)(iVar2 + iVar1) = uVar7;\n    } while (local_50 < *(int *)(param_1 + 0x38));\n  }\n  return;\n}" primitive_type (function_declarator "FUN_00312340(int param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4)" identifier (parameter_list "(int param_1,undefined4 param_2,undefined4 param_3,undefined4 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 "undefined4 param_4" type_identifier identifier) ))) (compound_statement "{\n  int iVar1;\n  int iVar2;\n  char *pcVar3;\n  char cVar4;\n  ushort uVar5;\n  uint uVar6;\n  undefined4 uVar7;\n  undefined4 *puVar8;\n  size_t sVar9;\n  uint uVar10;\n  char *pcVar11;\n  undefined1 local_60;\n  char local_5c;\n  char *local_58;\n  ushort local_54;\n  int local_50;\n  undefined4 *local_48;\n  undefined4 local_44;\n  undefined4 local_40;\n  undefined4 local_3c;\n  char local_38;\n  undefined1 local_37;\n  ushort local_36;\n  undefined1 *local_34 [2];\n  undefined1 local_2c [28];\n  \n  local_48 = &local_44;\n  if (*(int *)(DAT_005ea7c8 + 8) == 0) {\n                    /* WARNING: Subroutine does not return */\n    FUN_002446e0("../../gold/parameters.h",0x5c,"options",param_1);\n  }\n  iVar1 = *(int *)(*(int *)(*(int *)(DAT_005ea7c8 + 8) + 0x593c) + 0xd4);\n  uVar6 = *(uint *)(param_1 + 0x38);\n  if (iVar1 != 0) {\n    FUN_0030c0e0(iVar1,param_1,uVar6,*(undefined4 *)(param_1 + 0x3c));\n    uVar6 = *(uint *)(param_1 + 0x38);\n  }\n  uVar10 = *(int *)(param_1 + 0x44) - *(int *)(param_1 + 0x40) >> 2;\n  if (uVar10 < uVar6) {\n    FUN_002352a0(param_1 + 0x40,uVar6 - uVar10);\n    uVar6 = *(uint *)(param_1 + 0x38);\n  }\n  else if ((uVar6 < uVar10) &&\n          (iVar1 = *(int *)(param_1 + 0x40) + uVar6 * 4, *(int *)(param_1 + 0x44) != iVar1)) {\n    *(int *)(param_1 + 0x44) = iVar1;\n  }\n  local_50 = 0;\n  if (0 < (int)uVar6) {\n    do {\n      puVar8 = (undefined4 *)(local_50 * 0x20 + *(int *)(param_1 + 0x3c));\n      pcVar3 = (char *)*puVar8;\n      pcVar11 = (char *)puVar8[1];\n      local_58 = pcVar3;\n      if ((pcVar3 != (char *)0x0) && (local_58 = (char *)0x0, *pcVar3 != '\0')) {\n        local_58 = pcVar3;\n      }\n      if ((pcVar11 != (char *)0x0) && (*pcVar11 == '\0')) {\n        pcVar11 = (char *)0x0;\n      }\n      iVar1 = puVar8[2];\n      if (iVar1 == 1) {\n        local_5c = '\x02';\n        local_54 = 1;\n        goto LAB_003123e2;\n      }\n      if (iVar1 == 3) {\n        cVar4 = '\x02';\nLAB_003124f7:\n        local_5c = cVar4;\n        local_54 = 0;\n      }\n      else {\n        local_5c = '\x01';\n        cVar4 = '\x01';\n        if (iVar1 < 0) goto LAB_003124f7;\n        if (iVar1 < 2) {\n          local_54 = 1;\n        }\n        else {\n          local_54 = 0xfff2;\n          if (iVar1 != 4) goto LAB_003124f7;\n        }\n      }\nLAB_003123e2:\n      local_60 = 0;\n      if (puVar8[3] - 1 < 3) {\n        local_60 = (undefined1)*(undefined4 *)(&DAT_004947f4 + (puVar8[3] - 1) * 4);\n      }\n      pcVar3 = (char *)puVar8[6];\n      if ((pcVar3 == (char *)0x0) || (*pcVar3 == '\0')) {\n        uVar5 = local_54 << 8 | local_54 >> 8;\n      }\n      else {\n        local_34[0] = local_2c;\n        sVar9 = strlen(pcVar3);\n        FUN_00072b90(local_34,pcVar3,pcVar3 + sVar9,0);\n                    /* try { // try from 0031255b to 0031255f has its CatchHandler @ 0031261e */\n        cVar4 = FUN_0030f450(param_1,local_34,param_4);\n        if (cVar4 == '\0') {\n          if (local_34[0] != local_2c) {\n            FUN_003ae080(local_34[0]);\n          }\n          uVar5 = 0;\n        }\n        else {\n          uVar5 = local_54 << 8 | local_54 >> 8;\n          if (local_34[0] != local_2c) {\n            FUN_003ae080(local_34[0]);\n          }\n        }\n      }\n      local_36 = uVar5;\n      local_44 = 0;\n      local_40 = 0;\n      local_3c = 0;\n      local_38 = local_5c << 4;\n      local_37 = local_60;\n      iVar2 = *(int *)(param_1 + 0x40);\n      iVar1 = local_50 * 4;\n      uVar7 = FUN_00359950(param_2,param_1,local_58,pcVar11,&local_48);\n      local_50 = local_50 + 1;\n      *(undefined4 *)(iVar2 + iVar1) = uVar7;\n    } while (local_50 < *(int *)(param_1 + 0x38));\n  }\n  return;\n}" { (declaration "int iVar1;" primitive_type identifier ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "char *pcVar3;" primitive_type (pointer_declarator "*pcVar3" * identifier) ;) (declaration "char cVar4;" primitive_type identifier ;) (declaration "ushort uVar5;" type_identifier identifier ;) (declaration "uint uVar6;" type_identifier identifier ;) (declaration "undefined4 uVar7;" type_identifier identifier ;) (declaration "undefined4 *puVar8;" type_identifier (pointer_declarator "*puVar8" * identifier) ;) (declaration "size_t sVar9;" primitive_type identifier ;) (declaration "uint uVar10;" type_identifier identifier ;) (declaration "char *pcVar11;" primitive_type (pointer_declarator "*pcVar11" * identifier) ;) (declaration "undefined1 local_60;" type_identifier identifier ;) (declaration "char local_5c;" primitive_type identifier ;) (declaration "char *local_58;" primitive_type (pointer_declarator "*local_58" * identifier) ;) (declaration "ushort local_54;" type_identifier identifier ;) (declaration "int local_50;" primitive_type identifier ;) (declaration "undefined4 *local_48;" type_identifier (pointer_declarator "*local_48" * identifier) ;) (declaration "undefined4 local_44;" type_identifier identifier ;) (declaration "undefined4 local_40;" type_identifier identifier ;) (declaration "undefined4 local_3c;" type_identifier identifier ;) (declaration "char local_38;" primitive_type identifier ;) (declaration "undefined1 local_37;" type_identifier identifier ;) (declaration "ushort local_36;" type_identifier identifier ;) (declaration "undefined1 *local_34 [2];" type_identifier (pointer_declarator "*local_34 [2]" * (array_declarator "local_34 [2]" identifier [ number_literal ])) ;) (declaration "undefined1 local_2c [28];" type_identifier (array_declarator "local_2c [28]" identifier [ number_literal ]) ;) (expression_statement "local_48 = &local_44;" (assignment_expression "local_48 = &local_44" identifier = (pointer_expression "&local_44" & identifier)) ;) (if_statement "if (*(int *)(DAT_005ea7c8 + 8) == 0) {\n                    /* WARNING: Subroutine does not return */\n    FUN_002446e0("../../gold/parameters.h",0x5c,"options",param_1);\n  }" if (parenthesized_expression "(*(int *)(DAT_005ea7c8 + 8) == 0)" ( (binary_expression "*(int *)(DAT_005ea7c8 + 8) == 0" (pointer_expression "*(int *)(DAT_005ea7c8 + 8)" * (cast_expression "(int *)(DAT_005ea7c8 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(DAT_005ea7c8 + 8)" ( (binary_expression "DAT_005ea7c8 + 8" identifier + number_literal) )))) == number_literal) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n    FUN_002446e0("../../gold/parameters.h",0x5c,"options",param_1);\n  }" { comment (expression_statement "FUN_002446e0("../../gold/parameters.h",0x5c,"options",param_1);" (call_expression "FUN_002446e0("../../gold/parameters.h",0x5c,"options",param_1)" identifier (argument_list "("../../gold/parameters.h",0x5c,"options",param_1)" ( (string_literal ""../../gold/parameters.h"" " string_content ") , number_literal , (string_literal ""options"" " string_content ") , identifier ))) ;) })) (expression_statement "iVar1 = *(int *)(*(int *)(*(int *)(DAT_005ea7c8 + 8) + 0x593c) + 0xd4);" (assignment_expression "iVar1 = *(int *)(*(int *)(*(int *)(DAT_005ea7c8 + 8) + 0x593c) + 0xd4)" identifier = (pointer_expression "*(int *)(*(int *)(*(int *)(DAT_005ea7c8 + 8) + 0x593c) + 0xd4)" * (cast_expression "(int *)(*(int *)(*(int *)(DAT_005ea7c8 + 8) + 0x593c) + 0xd4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(*(int *)(DAT_005ea7c8 + 8) + 0x593c) + 0xd4)" ( (binary_expression "*(int *)(*(int *)(DAT_005ea7c8 + 8) + 0x593c) + 0xd4" (pointer_expression "*(int *)(*(int *)(DAT_005ea7c8 + 8) + 0x593c)" * (cast_expression "(int *)(*(int *)(DAT_005ea7c8 + 8) + 0x593c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(DAT_005ea7c8 + 8) + 0x593c)" ( (binary_expression "*(int *)(DAT_005ea7c8 + 8) + 0x593c" (pointer_expression "*(int *)(DAT_005ea7c8 + 8)" * (cast_expression "(int *)(DAT_005ea7c8 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(DAT_005ea7c8 + 8)" ( (binary_expression "DAT_005ea7c8 + 8" identifier + number_literal) )))) + number_literal) )))) + number_literal) ))))) ;) (expression_statement "uVar6 = *(uint *)(param_1 + 0x38);" (assignment_expression "uVar6 = *(uint *)(param_1 + 0x38)" identifier = (pointer_expression "*(uint *)(param_1 + 0x38)" * (cast_expression "(uint *)(param_1 + 0x38)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x38)" ( (binary_expression "param_1 + 0x38" identifier + number_literal) ))))) ;) (if_statement "if (iVar1 != 0) {\n    FUN_0030c0e0(iVar1,param_1,uVar6,*(undefined4 *)(param_1 + 0x3c));\n    uVar6 = *(uint *)(param_1 + 0x38);\n  }" if (parenthesized_expression "(iVar1 != 0)" ( (binary_expression "iVar1 != 0" identifier != number_literal) )) (compound_statement "{\n    FUN_0030c0e0(iVar1,param_1,uVar6,*(undefined4 *)(param_1 + 0x3c));\n    uVar6 = *(uint *)(param_1 + 0x38);\n  }" { (expression_statement "FUN_0030c0e0(iVar1,param_1,uVar6,*(undefined4 *)(param_1 + 0x3c));" (call_expression "FUN_0030c0e0(iVar1,param_1,uVar6,*(undefined4 *)(param_1 + 0x3c))" identifier (argument_list "(iVar1,param_1,uVar6,*(undefined4 *)(param_1 + 0x3c))" ( identifier , identifier , identifier , (pointer_expression "*(undefined4 *)(param_1 + 0x3c)" * (cast_expression "(undefined4 *)(param_1 + 0x3c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x3c)" ( (binary_expression "param_1 + 0x3c" identifier + number_literal) )))) ))) ;) (expression_statement "uVar6 = *(uint *)(param_1 + 0x38);" (assignment_expression "uVar6 = *(uint *)(param_1 + 0x38)" identifier = (pointer_expression "*(uint *)(param_1 + 0x38)" * (cast_expression "(uint *)(param_1 + 0x38)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x38)" ( (binary_expression "param_1 + 0x38" identifier + number_literal) ))))) ;) })) (expression_statement "uVar10 = *(int *)(param_1 + 0x44) - *(int *)(param_1 + 0x40) >> 2;" (assignment_expression "uVar10 = *(int *)(param_1 + 0x44) - *(int *)(param_1 + 0x40) >> 2" identifier = (binary_expression "*(int *)(param_1 + 0x44) - *(int *)(param_1 + 0x40) >> 2" (binary_expression "*(int *)(param_1 + 0x44) - *(int *)(param_1 + 0x40)" (pointer_expression "*(int *)(param_1 + 0x44)" * (cast_expression "(int *)(param_1 + 0x44)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x44)" ( (binary_expression "param_1 + 0x44" identifier + number_literal) )))) - (pointer_expression "*(int *)(param_1 + 0x40)" * (cast_expression "(int *)(param_1 + 0x40)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x40)" ( (binary_expression "param_1 + 0x40" identifier + number_literal) ))))) >> number_literal)) ;) (if_statement "if (uVar10 < uVar6) {\n    FUN_002352a0(param_1 + 0x40,uVar6 - uVar10);\n    uVar6 = *(uint *)(param_1 + 0x38);\n  }\n  else if ((uVar6 < uVar10) &&\n          (iVar1 = *(int *)(param_1 + 0x40) + uVar6 * 4, *(int *)(param_1 + 0x44) != iVar1)) {\n    *(int *)(param_1 + 0x44) = iVar1;\n  }" if (parenthesized_expression "(uVar10 < uVar6)" ( (binary_expression "uVar10 < uVar6" identifier < identifier) )) (compound_statement "{\n    FUN_002352a0(param_1 + 0x40,uVar6 - uVar10);\n    uVar6 = *(uint *)(param_1 + 0x38);\n  }" { (expression_statement "FUN_002352a0(param_1 + 0x40,uVar6 - uVar10);" (call_expression "FUN_002352a0(param_1 + 0x40,uVar6 - uVar10)" identifier (argument_list "(param_1 + 0x40,uVar6 - uVar10)" ( (binary_expression "param_1 + 0x40" identifier + number_literal) , (binary_expression "uVar6 - uVar10" identifier - identifier) ))) ;) (expression_statement "uVar6 = *(uint *)(param_1 + 0x38);" (assignment_expression "uVar6 = *(uint *)(param_1 + 0x38)" identifier = (pointer_expression "*(uint *)(param_1 + 0x38)" * (cast_expression "(uint *)(param_1 + 0x38)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x38)" ( (binary_expression "param_1 + 0x38" identifier + number_literal) ))))) ;) }) (else_clause "else if ((uVar6 < uVar10) &&\n          (iVar1 = *(int *)(param_1 + 0x40) + uVar6 * 4, *(int *)(param_1 + 0x44) != iVar1)) {\n    *(int *)(param_1 + 0x44) = iVar1;\n  }" else (if_statement "if ((uVar6 < uVar10) &&\n          (iVar1 = *(int *)(param_1 + 0x40) + uVar6 * 4, *(int *)(param_1 + 0x44) != iVar1)) {\n    *(int *)(param_1 + 0x44) = iVar1;\n  }" if (parenthesized_expression "((uVar6 < uVar10) &&\n          (iVar1 = *(int *)(param_1 + 0x40) + uVar6 * 4, *(int *)(param_1 + 0x44) != iVar1))" ( (binary_expression "(uVar6 < uVar10) &&\n          (iVar1 = *(int *)(param_1 + 0x40) + uVar6 * 4, *(int *)(param_1 + 0x44) != iVar1)" (parenthesized_expression "(uVar6 < uVar10)" ( (binary_expression "uVar6 < uVar10" identifier < identifier) )) && (parenthesized_expression "(iVar1 = *(int *)(param_1 + 0x40) + uVar6 * 4, *(int *)(param_1 + 0x44) != iVar1)" ( (comma_expression "iVar1 = *(int *)(param_1 + 0x40) + uVar6 * 4, *(int *)(param_1 + 0x44) != iVar1" (assignment_expression "iVar1 = *(int *)(param_1 + 0x40) + uVar6 * 4" identifier = (binary_expression "*(int *)(param_1 + 0x40) + uVar6 * 4" (pointer_expression "*(int *)(param_1 + 0x40)" * (cast_expression "(int *)(param_1 + 0x40)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x40)" ( (binary_expression "param_1 + 0x40" identifier + number_literal) )))) + (binary_expression "uVar6 * 4" identifier * number_literal))) , (binary_expression "*(int *)(param_1 + 0x44) != iVar1" (pointer_expression "*(int *)(param_1 + 0x44)" * (cast_expression "(int *)(param_1 + 0x44)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x44)" ( (binary_expression "param_1 + 0x44" identifier + number_literal) )))) != identifier)) ))) )) (compound_statement "{\n    *(int *)(param_1 + 0x44) = iVar1;\n  }" { (expression_statement "*(int *)(param_1 + 0x44) = iVar1;" (assignment_expression "*(int *)(param_1 + 0x44) = iVar1" (pointer_expression "*(int *)(param_1 + 0x44)" * (cast_expression "(int *)(param_1 + 0x44)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x44)" ( (binary_expression "param_1 + 0x44" identifier + number_literal) )))) = identifier) ;) })))) (expression_statement "local_50 = 0;" (assignment_expression "local_50 = 0" identifier = number_literal) ;) (if_statement "if (0 < (int)uVar6) {\n    do {\n      puVar8 = (undefined4 *)(local_50 * 0x20 + *(int *)(param_1 + 0x3c));\n      pcVar3 = (char *)*puVar8;\n      pcVar11 = (char *)puVar8[1];\n      local_58 = pcVar3;\n      if ((pcVar3 != (char *)0x0) && (local_58 = (char *)0x0, *pcVar3 != '\0')) {\n        local_58 = pcVar3;\n      }\n      if ((pcVar11 != (char *)0x0) && (*pcVar11 == '\0')) {\n        pcVar11 = (char *)0x0;\n      }\n      iVar1 = puVar8[2];\n      if (iVar1 == 1) {\n        local_5c = '\x02';\n        local_54 = 1;\n        goto LAB_003123e2;\n      }\n      if (iVar1 == 3) {\n        cVar4 = '\x02';\nLAB_003124f7:\n        local_5c = cVar4;\n        local_54 = 0;\n      }\n      else {\n        local_5c = '\x01';\n        cVar4 = '\x01';\n        if (iVar1 < 0) goto LAB_003124f7;\n        if (iVar1 < 2) {\n          local_54 = 1;\n        }\n        else {\n          local_54 = 0xfff2;\n          if (iVar1 != 4) goto LAB_003124f7;\n        }\n      }\nLAB_003123e2:\n      local_60 = 0;\n      if (puVar8[3] - 1 < 3) {\n        local_60 = (undefined1)*(undefined4 *)(&DAT_004947f4 + (puVar8[3] - 1) * 4);\n      }\n      pcVar3 = (char *)puVar8[6];\n      if ((pcVar3 == (char *)0x0) || (*pcVar3 == '\0')) {\n        uVar5 = local_54 << 8 | local_54 >> 8;\n      }\n      else {\n        local_34[0] = local_2c;\n        sVar9 = strlen(pcVar3);\n        FUN_00072b90(local_34,pcVar3,pcVar3 + sVar9,0);\n                    /* try { // try from 0031255b to 0031255f has its CatchHandler @ 0031261e */\n        cVar4 = FUN_0030f450(param_1,local_34,param_4);\n        if (cVar4 == '\0') {\n          if (local_34[0] != local_2c) {\n            FUN_003ae080(local_34[0]);\n          }\n          uVar5 = 0;\n        }\n        else {\n          uVar5 = local_54 << 8 | local_54 >> 8;\n          if (local_34[0] != local_2c) {\n            FUN_003ae080(local_34[0]);\n          }\n        }\n      }\n      local_36 = uVar5;\n      local_44 = 0;\n      local_40 = 0;\n      local_3c = 0;\n      local_38 = local_5c << 4;\n      local_37 = local_60;\n      iVar2 = *(int *)(param_1 + 0x40);\n      iVar1 = local_50 * 4;\n      uVar7 = FUN_00359950(param_2,param_1,local_58,pcVar11,&local_48);\n      local_50 = local_50 + 1;\n      *(undefined4 *)(iVar2 + iVar1) = uVar7;\n    } while (local_50 < *(int *)(param_1 + 0x38));\n  }" if (parenthesized_expression "(0 < (int)uVar6)" ( (binary_expression "0 < (int)uVar6" number_literal < (cast_expression "(int)uVar6" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n    do {\n      puVar8 = (undefined4 *)(local_50 * 0x20 + *(int *)(param_1 + 0x3c));\n      pcVar3 = (char *)*puVar8;\n      pcVar11 = (char *)puVar8[1];\n      local_58 = pcVar3;\n      if ((pcVar3 != (char *)0x0) && (local_58 = (char *)0x0, *pcVar3 != '\0')) {\n        local_58 = pcVar3;\n      }\n      if ((pcVar11 != (char *)0x0) && (*pcVar11 == '\0')) {\n        pcVar11 = (char *)0x0;\n      }\n      iVar1 = puVar8[2];\n      if (iVar1 == 1) {\n        local_5c = '\x02';\n        local_54 = 1;\n        goto LAB_003123e2;\n      }\n      if (iVar1 == 3) {\n        cVar4 = '\x02';\nLAB_003124f7:\n        local_5c = cVar4;\n        local_54 = 0;\n      }\n      else {\n        local_5c = '\x01';\n        cVar4 = '\x01';\n        if (iVar1 < 0) goto LAB_003124f7;\n        if (iVar1 < 2) {\n          local_54 = 1;\n        }\n        else {\n          local_54 = 0xfff2;\n          if (iVar1 != 4) goto LAB_003124f7;\n        }\n      }\nLAB_003123e2:\n      local_60 = 0;\n      if (puVar8[3] - 1 < 3) {\n        local_60 = (undefined1)*(undefined4 *)(&DAT_004947f4 + (puVar8[3] - 1) * 4);\n      }\n      pcVar3 = (char *)puVar8[6];\n      if ((pcVar3 == (char *)0x0) || (*pcVar3 == '\0')) {\n        uVar5 = local_54 << 8 | local_54 >> 8;\n      }\n      else {\n        local_34[0] = local_2c;\n        sVar9 = strlen(pcVar3);\n        FUN_00072b90(local_34,pcVar3,pcVar3 + sVar9,0);\n                    /* try { // try from 0031255b to 0031255f has its CatchHandler @ 0031261e */\n        cVar4 = FUN_0030f450(param_1,local_34,param_4);\n        if (cVar4 == '\0') {\n          if (local_34[0] != local_2c) {\n            FUN_003ae080(local_34[0]);\n          }\n          uVar5 = 0;\n        }\n        else {\n          uVar5 = local_54 << 8 | local_54 >> 8;\n          if (local_34[0] != local_2c) {\n            FUN_003ae080(local_34[0]);\n          }\n        }\n      }\n      local_36 = uVar5;\n      local_44 = 0;\n      local_40 = 0;\n      local_3c = 0;\n      local_38 = local_5c << 4;\n      local_37 = local_60;\n      iVar2 = *(int *)(param_1 + 0x40);\n      iVar1 = local_50 * 4;\n      uVar7 = FUN_00359950(param_2,param_1,local_58,pcVar11,&local_48);\n      local_50 = local_50 + 1;\n      *(undefined4 *)(iVar2 + iVar1) = uVar7;\n    } while (local_50 < *(int *)(param_1 + 0x38));\n  }" { (do_statement "do {\n      puVar8 = (undefined4 *)(local_50 * 0x20 + *(int *)(param_1 + 0x3c));\n      pcVar3 = (char *)*puVar8;\n      pcVar11 = (char *)puVar8[1];\n      local_58 = pcVar3;\n      if ((pcVar3 != (char *)0x0) && (local_58 = (char *)0x0, *pcVar3 != '\0')) {\n        local_58 = pcVar3;\n      }\n      if ((pcVar11 != (char *)0x0) && (*pcVar11 == '\0')) {\n        pcVar11 = (char *)0x0;\n      }\n      iVar1 = puVar8[2];\n      if (iVar1 == 1) {\n        local_5c = '\x02';\n        local_54 = 1;\n        goto LAB_003123e2;\n      }\n      if (iVar1 == 3) {\n        cVar4 = '\x02';\nLAB_003124f7:\n        local_5c = cVar4;\n        local_54 = 0;\n      }\n      else {\n        local_5c = '\x01';\n        cVar4 = '\x01';\n        if (iVar1 < 0) goto LAB_003124f7;\n        if (iVar1 < 2) {\n          local_54 = 1;\n        }\n        else {\n          local_54 = 0xfff2;\n          if (iVar1 != 4) goto LAB_003124f7;\n        }\n      }\nLAB_003123e2:\n      local_60 = 0;\n      if (puVar8[3] - 1 < 3) {\n        local_60 = (undefined1)*(undefined4 *)(&DAT_004947f4 + (puVar8[3] - 1) * 4);\n      }\n      pcVar3 = (char *)puVar8[6];\n      if ((pcVar3 == (char *)0x0) || (*pcVar3 == '\0')) {\n        uVar5 = local_54 << 8 | local_54 >> 8;\n      }\n      else {\n        local_34[0] = local_2c;\n        sVar9 = strlen(pcVar3);\n        FUN_00072b90(local_34,pcVar3,pcVar3 + sVar9,0);\n                    /* try { // try from 0031255b to 0031255f has its CatchHandler @ 0031261e */\n        cVar4 = FUN_0030f450(param_1,local_34,param_4);\n        if (cVar4 == '\0') {\n          if (local_34[0] != local_2c) {\n            FUN_003ae080(local_34[0]);\n          }\n          uVar5 = 0;\n        }\n        else {\n          uVar5 = local_54 << 8 | local_54 >> 8;\n          if (local_34[0] != local_2c) {\n            FUN_003ae080(local_34[0]);\n          }\n        }\n      }\n      local_36 = uVar5;\n      local_44 = 0;\n      local_40 = 0;\n      local_3c = 0;\n      local_38 = local_5c << 4;\n      local_37 = local_60;\n      iVar2 = *(int *)(param_1 + 0x40);\n      iVar1 = local_50 * 4;\n      uVar7 = FUN_00359950(param_2,param_1,local_58,pcVar11,&local_48);\n      local_50 = local_50 + 1;\n      *(undefined4 *)(iVar2 + iVar1) = uVar7;\n    } while (local_50 < *(int *)(param_1 + 0x38));" do (compound_statement "{\n      puVar8 = (undefined4 *)(local_50 * 0x20 + *(int *)(param_1 + 0x3c));\n      pcVar3 = (char *)*puVar8;\n      pcVar11 = (char *)puVar8[1];\n      local_58 = pcVar3;\n      if ((pcVar3 != (char *)0x0) && (local_58 = (char *)0x0, *pcVar3 != '\0')) {\n        local_58 = pcVar3;\n      }\n      if ((pcVar11 != (char *)0x0) && (*pcVar11 == '\0')) {\n        pcVar11 = (char *)0x0;\n      }\n      iVar1 = puVar8[2];\n      if (iVar1 == 1) {\n        local_5c = '\x02';\n        local_54 = 1;\n        goto LAB_003123e2;\n      }\n      if (iVar1 == 3) {\n        cVar4 = '\x02';\nLAB_003124f7:\n        local_5c = cVar4;\n        local_54 = 0;\n      }\n      else {\n        local_5c = '\x01';\n        cVar4 = '\x01';\n        if (iVar1 < 0) goto LAB_003124f7;\n        if (iVar1 < 2) {\n          local_54 = 1;\n        }\n        else {\n          local_54 = 0xfff2;\n          if (iVar1 != 4) goto LAB_003124f7;\n        }\n      }\nLAB_003123e2:\n      local_60 = 0;\n      if (puVar8[3] - 1 < 3) {\n        local_60 = (undefined1)*(undefined4 *)(&DAT_004947f4 + (puVar8[3] - 1) * 4);\n      }\n      pcVar3 = (char *)puVar8[6];\n      if ((pcVar3 == (char *)0x0) || (*pcVar3 == '\0')) {\n        uVar5 = local_54 << 8 | local_54 >> 8;\n      }\n      else {\n        local_34[0] = local_2c;\n        sVar9 = strlen(pcVar3);\n        FUN_00072b90(local_34,pcVar3,pcVar3 + sVar9,0);\n                    /* try { // try from 0031255b to 0031255f has its CatchHandler @ 0031261e */\n        cVar4 = FUN_0030f450(param_1,local_34,param_4);\n        if (cVar4 == '\0') {\n          if (local_34[0] != local_2c) {\n            FUN_003ae080(local_34[0]);\n          }\n          uVar5 = 0;\n        }\n        else {\n          uVar5 = local_54 << 8 | local_54 >> 8;\n          if (local_34[0] != local_2c) {\n            FUN_003ae080(local_34[0]);\n          }\n        }\n      }\n      local_36 = uVar5;\n      local_44 = 0;\n      local_40 = 0;\n      local_3c = 0;\n      local_38 = local_5c << 4;\n      local_37 = local_60;\n      iVar2 = *(int *)(param_1 + 0x40);\n      iVar1 = local_50 * 4;\n      uVar7 = FUN_00359950(param_2,param_1,local_58,pcVar11,&local_48);\n      local_50 = local_50 + 1;\n      *(undefined4 *)(iVar2 + iVar1) = uVar7;\n    }" { (expression_statement "puVar8 = (undefined4 *)(local_50 * 0x20 + *(int *)(param_1 + 0x3c));" (assignment_expression "puVar8 = (undefined4 *)(local_50 * 0x20 + *(int *)(param_1 + 0x3c))" identifier = (cast_expression "(undefined4 *)(local_50 * 0x20 + *(int *)(param_1 + 0x3c))" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_50 * 0x20 + *(int *)(param_1 + 0x3c))" ( (binary_expression "local_50 * 0x20 + *(int *)(param_1 + 0x3c)" (binary_expression "local_50 * 0x20" identifier * number_literal) + (pointer_expression "*(int *)(param_1 + 0x3c)" * (cast_expression "(int *)(param_1 + 0x3c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x3c)" ( (binary_expression "param_1 + 0x3c" identifier + number_literal) ))))) )))) ;) (expression_statement "pcVar3 = (char *)*puVar8;" (assignment_expression "pcVar3 = (char *)*puVar8" identifier = (cast_expression "(char *)*puVar8" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar8" * identifier))) ;) (expression_statement "pcVar11 = (char *)puVar8[1];" (assignment_expression "pcVar11 = (char *)puVar8[1]" identifier = (cast_expression "(char *)puVar8[1]" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar8[1]" identifier [ number_literal ]))) ;) (expression_statement "local_58 = pcVar3;" (assignment_expression "local_58 = pcVar3" identifier = identifier) ;) (if_statement "if ((pcVar3 != (char *)0x0) && (local_58 = (char *)0x0, *pcVar3 != '\0')) {\n        local_58 = pcVar3;\n      }" if (parenthesized_expression "((pcVar3 != (char *)0x0) && (local_58 = (char *)0x0, *pcVar3 != '\0'))" ( (binary_expression "(pcVar3 != (char *)0x0) && (local_58 = (char *)0x0, *pcVar3 != '\0')" (parenthesized_expression "(pcVar3 != (char *)0x0)" ( (binary_expression "pcVar3 != (char *)0x0" identifier != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) && (parenthesized_expression "(local_58 = (char *)0x0, *pcVar3 != '\0')" ( (comma_expression "local_58 = (char *)0x0, *pcVar3 != '\0'" (assignment_expression "local_58 = (char *)0x0" identifier = (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) , (binary_expression "*pcVar3 != '\0'" (pointer_expression "*pcVar3" * identifier) != (char_literal "'\0'" ' escape_sequence '))) ))) )) (compound_statement "{\n        local_58 = pcVar3;\n      }" { (expression_statement "local_58 = pcVar3;" (assignment_expression "local_58 = pcVar3" identifier = identifier) ;) })) (if_statement "if ((pcVar11 != (char *)0x0) && (*pcVar11 == '\0')) {\n        pcVar11 = (char *)0x0;\n      }" if (parenthesized_expression "((pcVar11 != (char *)0x0) && (*pcVar11 == '\0'))" ( (binary_expression "(pcVar11 != (char *)0x0) && (*pcVar11 == '\0')" (parenthesized_expression "(pcVar11 != (char *)0x0)" ( (binary_expression "pcVar11 != (char *)0x0" identifier != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) && (parenthesized_expression "(*pcVar11 == '\0')" ( (binary_expression "*pcVar11 == '\0'" (pointer_expression "*pcVar11" * identifier) == (char_literal "'\0'" ' escape_sequence ')) ))) )) (compound_statement "{\n        pcVar11 = (char *)0x0;\n      }" { (expression_statement "pcVar11 = (char *)0x0;" (assignment_expression "pcVar11 = (char *)0x0" identifier = (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) })) (expression_statement "iVar1 = puVar8[2];" (assignment_expression "iVar1 = puVar8[2]" identifier = (subscript_expression "puVar8[2]" identifier [ number_literal ])) ;) (if_statement "if (iVar1 == 1) {\n        local_5c = '\x02';\n        local_54 = 1;\n        goto LAB_003123e2;\n      }" if (parenthesized_expression "(iVar1 == 1)" ( (binary_expression "iVar1 == 1" identifier == number_literal) )) (compound_statement "{\n        local_5c = '\x02';\n        local_54 = 1;\n        goto LAB_003123e2;\n      }" { (expression_statement "local_5c = '\x02';" (assignment_expression "local_5c = '\x02'" identifier = (char_literal "'\x02'" ' escape_sequence ')) ;) (expression_statement "local_54 = 1;" (assignment_expression "local_54 = 1" identifier = number_literal) ;) (goto_statement "goto LAB_003123e2;" goto statement_identifier ;) })) (if_statement "if (iVar1 == 3) {\n        cVar4 = '\x02';\nLAB_003124f7:\n        local_5c = cVar4;\n        local_54 = 0;\n      }\n      else {\n        local_5c = '\x01';\n        cVar4 = '\x01';\n        if (iVar1 < 0) goto LAB_003124f7;\n        if (iVar1 < 2) {\n          local_54 = 1;\n        }\n        else {\n          local_54 = 0xfff2;\n          if (iVar1 != 4) goto LAB_003124f7;\n        }\n      }" if (parenthesized_expression "(iVar1 == 3)" ( (binary_expression "iVar1 == 3" identifier == number_literal) )) (compound_statement "{\n        cVar4 = '\x02';\nLAB_003124f7:\n        local_5c = cVar4;\n        local_54 = 0;\n      }" { (expression_statement "cVar4 = '\x02';" (assignment_expression "cVar4 = '\x02'" identifier = (char_literal "'\x02'" ' escape_sequence ')) ;) (labeled_statement "LAB_003124f7:\n        local_5c = cVar4;" statement_identifier : (expression_statement "local_5c = cVar4;" (assignment_expression "local_5c = cVar4" identifier = identifier) ;)) (expression_statement "local_54 = 0;" (assignment_expression "local_54 = 0" identifier = number_literal) ;) }) (else_clause "else {\n        local_5c = '\x01';\n        cVar4 = '\x01';\n        if (iVar1 < 0) goto LAB_003124f7;\n        if (iVar1 < 2) {\n          local_54 = 1;\n        }\n        else {\n          local_54 = 0xfff2;\n          if (iVar1 != 4) goto LAB_003124f7;\n        }\n      }" else (compound_statement "{\n        local_5c = '\x01';\n        cVar4 = '\x01';\n        if (iVar1 < 0) goto LAB_003124f7;\n        if (iVar1 < 2) {\n          local_54 = 1;\n        }\n        else {\n          local_54 = 0xfff2;\n          if (iVar1 != 4) goto LAB_003124f7;\n        }\n      }" { (expression_statement "local_5c = '\x01';" (assignment_expression "local_5c = '\x01'" identifier = (char_literal "'\x01'" ' escape_sequence ')) ;) (expression_statement "cVar4 = '\x01';" (assignment_expression "cVar4 = '\x01'" identifier = (char_literal "'\x01'" ' escape_sequence ')) ;) (if_statement "if (iVar1 < 0) goto LAB_003124f7;" if (parenthesized_expression "(iVar1 < 0)" ( (binary_expression "iVar1 < 0" identifier < number_literal) )) (goto_statement "goto LAB_003124f7;" goto statement_identifier ;)) (if_statement "if (iVar1 < 2) {\n          local_54 = 1;\n        }\n        else {\n          local_54 = 0xfff2;\n          if (iVar1 != 4) goto LAB_003124f7;\n        }" if (parenthesized_expression "(iVar1 < 2)" ( (binary_expression "iVar1 < 2" identifier < number_literal) )) (compound_statement "{\n          local_54 = 1;\n        }" { (expression_statement "local_54 = 1;" (assignment_expression "local_54 = 1" identifier = number_literal) ;) }) (else_clause "else {\n          local_54 = 0xfff2;\n          if (iVar1 != 4) goto LAB_003124f7;\n        }" else (compound_statement "{\n          local_54 = 0xfff2;\n          if (iVar1 != 4) goto LAB_003124f7;\n        }" { (expression_statement "local_54 = 0xfff2;" (assignment_expression "local_54 = 0xfff2" identifier = number_literal) ;) (if_statement "if (iVar1 != 4) goto LAB_003124f7;" if (parenthesized_expression "(iVar1 != 4)" ( (binary_expression "iVar1 != 4" identifier != number_literal) )) (goto_statement "goto LAB_003124f7;" goto statement_identifier ;)) }))) }))) (labeled_statement "LAB_003123e2:\n      local_60 = 0;" statement_identifier : (expression_statement "local_60 = 0;" (assignment_expression "local_60 = 0" identifier = number_literal) ;)) (if_statement "if (puVar8[3] - 1 < 3) {\n        local_60 = (undefined1)*(undefined4 *)(&DAT_004947f4 + (puVar8[3] - 1) * 4);\n      }" if (parenthesized_expression "(puVar8[3] - 1 < 3)" ( (binary_expression "puVar8[3] - 1 < 3" (binary_expression "puVar8[3] - 1" (subscript_expression "puVar8[3]" identifier [ number_literal ]) - number_literal) < number_literal) )) (compound_statement "{\n        local_60 = (undefined1)*(undefined4 *)(&DAT_004947f4 + (puVar8[3] - 1) * 4);\n      }" { (expression_statement "local_60 = (undefined1)*(undefined4 *)(&DAT_004947f4 + (puVar8[3] - 1) * 4);" (assignment_expression "local_60 = (undefined1)*(undefined4 *)(&DAT_004947f4 + (puVar8[3] - 1) * 4)" identifier = (binary_expression "(undefined1)*(undefined4 *)(&DAT_004947f4 + (puVar8[3] - 1) * 4)" (parenthesized_expression "(undefined1)" ( identifier )) * (cast_expression "(undefined4 *)(&DAT_004947f4 + (puVar8[3] - 1) * 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(&DAT_004947f4 + (puVar8[3] - 1) * 4)" ( (binary_expression "&DAT_004947f4 + (puVar8[3] - 1) * 4" (pointer_expression "&DAT_004947f4" & identifier) + (binary_expression "(puVar8[3] - 1) * 4" (parenthesized_expression "(puVar8[3] - 1)" ( (binary_expression "puVar8[3] - 1" (subscript_expression "puVar8[3]" identifier [ number_literal ]) - number_literal) )) * number_literal)) ))))) ;) })) (expression_statement "pcVar3 = (char *)puVar8[6];" (assignment_expression "pcVar3 = (char *)puVar8[6]" identifier = (cast_expression "(char *)puVar8[6]" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar8[6]" identifier [ number_literal ]))) ;) (if_statement "if ((pcVar3 == (char *)0x0) || (*pcVar3 == '\0')) {\n        uVar5 = local_54 << 8 | local_54 >> 8;\n      }\n      else {\n        local_34[0] = local_2c;\n        sVar9 = strlen(pcVar3);\n        FUN_00072b90(local_34,pcVar3,pcVar3 + sVar9,0);\n                    /* try { // try from 0031255b to 0031255f has its CatchHandler @ 0031261e */\n        cVar4 = FUN_0030f450(param_1,local_34,param_4);\n        if (cVar4 == '\0') {\n          if (local_34[0] != local_2c) {\n            FUN_003ae080(local_34[0]);\n          }\n          uVar5 = 0;\n        }\n        else {\n          uVar5 = local_54 << 8 | local_54 >> 8;\n          if (local_34[0] != local_2c) {\n            FUN_003ae080(local_34[0]);\n          }\n        }\n      }" if (parenthesized_expression "((pcVar3 == (char *)0x0) || (*pcVar3 == '\0'))" ( (binary_expression "(pcVar3 == (char *)0x0) || (*pcVar3 == '\0')" (parenthesized_expression "(pcVar3 == (char *)0x0)" ( (binary_expression "pcVar3 == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) || (parenthesized_expression "(*pcVar3 == '\0')" ( (binary_expression "*pcVar3 == '\0'" (pointer_expression "*pcVar3" * identifier) == (char_literal "'\0'" ' escape_sequence ')) ))) )) (compound_statement "{\n        uVar5 = local_54 << 8 | local_54 >> 8;\n      }" { (expression_statement "uVar5 = local_54 << 8 | local_54 >> 8;" (assignment_expression "uVar5 = local_54 << 8 | local_54 >> 8" identifier = (binary_expression "local_54 << 8 | local_54 >> 8" (binary_expression "local_54 << 8" identifier << number_literal) | (binary_expression "local_54 >> 8" identifier >> number_literal))) ;) }) (else_clause "else {\n        local_34[0] = local_2c;\n        sVar9 = strlen(pcVar3);\n        FUN_00072b90(local_34,pcVar3,pcVar3 + sVar9,0);\n                    /* try { // try from 0031255b to 0031255f has its CatchHandler @ 0031261e */\n        cVar4 = FUN_0030f450(param_1,local_34,param_4);\n        if (cVar4 == '\0') {\n          if (local_34[0] != local_2c) {\n            FUN_003ae080(local_34[0]);\n          }\n          uVar5 = 0;\n        }\n        else {\n          uVar5 = local_54 << 8 | local_54 >> 8;\n          if (local_34[0] != local_2c) {\n            FUN_003ae080(local_34[0]);\n          }\n        }\n      }" else (compound_statement "{\n        local_34[0] = local_2c;\n        sVar9 = strlen(pcVar3);\n        FUN_00072b90(local_34,pcVar3,pcVar3 + sVar9,0);\n                    /* try { // try from 0031255b to 0031255f has its CatchHandler @ 0031261e */\n        cVar4 = FUN_0030f450(param_1,local_34,param_4);\n        if (cVar4 == '\0') {\n          if (local_34[0] != local_2c) {\n            FUN_003ae080(local_34[0]);\n          }\n          uVar5 = 0;\n        }\n        else {\n          uVar5 = local_54 << 8 | local_54 >> 8;\n          if (local_34[0] != local_2c) {\n            FUN_003ae080(local_34[0]);\n          }\n        }\n      }" { (expression_statement "local_34[0] = local_2c;" (assignment_expression "local_34[0] = local_2c" (subscript_expression "local_34[0]" identifier [ number_literal ]) = identifier) ;) (expression_statement "sVar9 = strlen(pcVar3);" (assignment_expression "sVar9 = strlen(pcVar3)" identifier = (call_expression "strlen(pcVar3)" identifier (argument_list "(pcVar3)" ( identifier )))) ;) (expression_statement "FUN_00072b90(local_34,pcVar3,pcVar3 + sVar9,0);" (call_expression "FUN_00072b90(local_34,pcVar3,pcVar3 + sVar9,0)" identifier (argument_list "(local_34,pcVar3,pcVar3 + sVar9,0)" ( identifier , identifier , (binary_expression "pcVar3 + sVar9" identifier + identifier) , number_literal ))) ;) comment (expression_statement "cVar4 = FUN_0030f450(param_1,local_34,param_4);" (assignment_expression "cVar4 = FUN_0030f450(param_1,local_34,param_4)" identifier = (call_expression "FUN_0030f450(param_1,local_34,param_4)" identifier (argument_list "(param_1,local_34,param_4)" ( identifier , identifier , identifier )))) ;) (if_statement "if (cVar4 == '\0') {\n          if (local_34[0] != local_2c) {\n            FUN_003ae080(local_34[0]);\n          }\n          uVar5 = 0;\n        }\n        else {\n          uVar5 = local_54 << 8 | local_54 >> 8;\n          if (local_34[0] != local_2c) {\n            FUN_003ae080(local_34[0]);\n          }\n        }" if (parenthesized_expression "(cVar4 == '\0')" ( (binary_expression "cVar4 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n          if (local_34[0] != local_2c) {\n            FUN_003ae080(local_34[0]);\n          }\n          uVar5 = 0;\n        }" { (if_statement "if (local_34[0] != local_2c) {\n            FUN_003ae080(local_34[0]);\n          }" if (parenthesized_expression "(local_34[0] != local_2c)" ( (binary_expression "local_34[0] != local_2c" (subscript_expression "local_34[0]" identifier [ number_literal ]) != identifier) )) (compound_statement "{\n            FUN_003ae080(local_34[0]);\n          }" { (expression_statement "FUN_003ae080(local_34[0]);" (call_expression "FUN_003ae080(local_34[0])" identifier (argument_list "(local_34[0])" ( (subscript_expression "local_34[0]" identifier [ number_literal ]) ))) ;) })) (expression_statement "uVar5 = 0;" (assignment_expression "uVar5 = 0" identifier = number_literal) ;) }) (else_clause "else {\n          uVar5 = local_54 << 8 | local_54 >> 8;\n          if (local_34[0] != local_2c) {\n            FUN_003ae080(local_34[0]);\n          }\n        }" else (compound_statement "{\n          uVar5 = local_54 << 8 | local_54 >> 8;\n          if (local_34[0] != local_2c) {\n            FUN_003ae080(local_34[0]);\n          }\n        }" { (expression_statement "uVar5 = local_54 << 8 | local_54 >> 8;" (assignment_expression "uVar5 = local_54 << 8 | local_54 >> 8" identifier = (binary_expression "local_54 << 8 | local_54 >> 8" (binary_expression "local_54 << 8" identifier << number_literal) | (binary_expression "local_54 >> 8" identifier >> number_literal))) ;) (if_statement "if (local_34[0] != local_2c) {\n            FUN_003ae080(local_34[0]);\n          }" if (parenthesized_expression "(local_34[0] != local_2c)" ( (binary_expression "local_34[0] != local_2c" (subscript_expression "local_34[0]" identifier [ number_literal ]) != identifier) )) (compound_statement "{\n            FUN_003ae080(local_34[0]);\n          }" { (expression_statement "FUN_003ae080(local_34[0]);" (call_expression "FUN_003ae080(local_34[0])" identifier (argument_list "(local_34[0])" ( (subscript_expression "local_34[0]" identifier [ number_literal ]) ))) ;) })) }))) }))) (expression_statement "local_36 = uVar5;" (assignment_expression "local_36 = uVar5" identifier = identifier) ;) (expression_statement "local_44 = 0;" (assignment_expression "local_44 = 0" identifier = number_literal) ;) (expression_statement "local_40 = 0;" (assignment_expression "local_40 = 0" identifier = number_literal) ;) (expression_statement "local_3c = 0;" (assignment_expression "local_3c = 0" identifier = number_literal) ;) (expression_statement "local_38 = local_5c << 4;" (assignment_expression "local_38 = local_5c << 4" identifier = (binary_expression "local_5c << 4" identifier << number_literal)) ;) (expression_statement "local_37 = local_60;" (assignment_expression "local_37 = local_60" identifier = identifier) ;) (expression_statement "iVar2 = *(int *)(param_1 + 0x40);" (assignment_expression "iVar2 = *(int *)(param_1 + 0x40)" identifier = (pointer_expression "*(int *)(param_1 + 0x40)" * (cast_expression "(int *)(param_1 + 0x40)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x40)" ( (binary_expression "param_1 + 0x40" identifier + number_literal) ))))) ;) (expression_statement "iVar1 = local_50 * 4;" (assignment_expression "iVar1 = local_50 * 4" identifier = (binary_expression "local_50 * 4" identifier * number_literal)) ;) (expression_statement "uVar7 = FUN_00359950(param_2,param_1,local_58,pcVar11,&local_48);" (assignment_expression "uVar7 = FUN_00359950(param_2,param_1,local_58,pcVar11,&local_48)" identifier = (call_expression "FUN_00359950(param_2,param_1,local_58,pcVar11,&local_48)" identifier (argument_list "(param_2,param_1,local_58,pcVar11,&local_48)" ( identifier , identifier , identifier , identifier , (pointer_expression "&local_48" & identifier) )))) ;) (expression_statement "local_50 = local_50 + 1;" (assignment_expression "local_50 = local_50 + 1" identifier = (binary_expression "local_50 + 1" identifier + number_literal)) ;) (expression_statement "*(undefined4 *)(iVar2 + iVar1) = uVar7;" (assignment_expression "*(undefined4 *)(iVar2 + iVar1) = uVar7" (pointer_expression "*(undefined4 *)(iVar2 + iVar1)" * (cast_expression "(undefined4 *)(iVar2 + iVar1)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + iVar1)" ( (binary_expression "iVar2 + iVar1" identifier + identifier) )))) = identifier) ;) }) while (parenthesized_expression "(local_50 < *(int *)(param_1 + 0x38))" ( (binary_expression "local_50 < *(int *)(param_1 + 0x38)" identifier < (pointer_expression "*(int *)(param_1 + 0x38)" * (cast_expression "(int *)(param_1 + 0x38)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x38)" ( (binary_expression "param_1 + 0x38" identifier + number_literal) ))))) )) ;) })) (return_statement "return;" return ;) })))
(translation_unit "/* WARNING: Function: __x86.get_pc_thunk.ax replaced with injection: get_pc_thunk_ax */\n/* WARNING: Enum "DT": Some values do not have unique names */\n/* WARNING: Enum "ELFOSABI": Some values do not have unique names */\n/* DWARF original prototype: void do_add_symbols(Sized_pluginobj<32,_true> * this, Symbol_table *\n   symtab, Read_symbols_data * param_2, Layout * layout) */\n\nvoid __thiscall\ngold::Sized_pluginobj<32,_true>::do_add_symbols\n          (Sized_pluginobj<32,_true> *this,Symbol_table *symtab,Read_symbols_data *param_2,\n          Layout *layout)\n\n{\n  anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n  *paVar1;\n  Plugin_recorder *this_00;\n  pointer ppSVar2;\n  pointer ppSVar3;\n  char *pcVar4;\n  int iVar5;\n  char cVar6;\n  bool bVar7;\n  ushort uVar8;\n  uint uVar9;\n  Symbol *pSVar10;\n  ld_plugin_symbol *plVar11;\n  size_t sVar12;\n  uint uVar13;\n  char *ver;\n  uchar local_60;\n  char local_5c;\n  char *local_58;\n  ushort local_54;\n  int local_50;\n  Sym<32,_true> sym;\n  uchar symbuf [16];\n  basic_string<char,_std::char_traits<char>,_std::allocator<char>_> local_34;\n  \n  sym.p_ = (Sym_data<32> *)symbuf;\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_->recorder_;\n  uVar9 = (this->super_Pluginobj).nsyms_;\n  if (this_00 != (Plugin_recorder *)0x0) {\n    Plugin_recorder::record_symbols(this_00,(Object *)this,uVar9,(this->super_Pluginobj).syms_);\n    uVar9 = (this->super_Pluginobj).nsyms_;\n  }\n  ppSVar2 = (this->super_Pluginobj).symbols_.\n            super__Vector_base<gold::Symbol*,_std::allocator<gold::Symbol*>_>._M_impl._M_finish;\n  ppSVar3 = (this->super_Pluginobj).symbols_.\n            super__Vector_base<gold::Symbol*,_std::allocator<gold::Symbol*>_>._M_impl._M_start;\n  uVar13 = (int)ppSVar2 - (int)ppSVar3 >> 2;\n  if (uVar13 < uVar9) {\n    std::vector<gold::Symbol*,_std::allocator<gold::Symbol*>_>::_M_default_append\n              (&(this->super_Pluginobj).symbols_,uVar9 - uVar13);\n    uVar9 = (this->super_Pluginobj).nsyms_;\n  }\n  else if ((uVar9 < uVar13) && (ppSVar3 = ppSVar3 + uVar9, ppSVar2 != ppSVar3)) {\n    (this->super_Pluginobj).symbols_.\n    super__Vector_base<gold::Symbol*,_std::allocator<gold::Symbol*>_>._M_impl._M_finish = ppSVar3;\n  }\n  local_50 = 0;\n  if (0 < (int)uVar9) {\n    do {\n      plVar11 = (this->super_Pluginobj).syms_ + local_50;\n      pcVar4 = plVar11->name;\n      ver = plVar11->version;\n      local_58 = pcVar4;\n      if ((pcVar4 != (char *)0x0) && (local_58 = (char *)0x0, *pcVar4 != '\0')) {\n        local_58 = pcVar4;\n      }\n      if ((ver != (char *)0x0) && (*ver == '\0')) {\n        ver = (char *)0x0;\n      }\n      iVar5 = plVar11->def;\n      if (iVar5 == 1) {\n        local_5c = '\x02';\n        local_54 = 1;\n        goto LAB_003123e2;\n      }\n      if (iVar5 == 3) {\n        cVar6 = '\x02';\nLAB_003124f7:\n        local_5c = cVar6;\n        local_54 = 0;\n      }\n      else {\n        local_5c = '\x01';\n        cVar6 = '\x01';\n        if (iVar5 < 0) goto LAB_003124f7;\n        if (iVar5 < 2) {\n          local_54 = 1;\n        }\n        else {\n          local_54 = 0xfff2;\n          if (iVar5 != 4) goto LAB_003124f7;\n        }\n      }\nLAB_003123e2:\n      local_60 = '\0';\n      uVar9 = plVar11->visibility - 1;\n      if (uVar9 < 3) {\n        local_60 = (uchar)*(undefined4 *)(CSWTCH_704 + uVar9 * 4);\n      }\n      pcVar4 = plVar11->comdat_key;\n      if ((pcVar4 == (char *)0x0) || (*pcVar4 == '\0')) {\n        uVar8 = local_54 << 8 | local_54 >> 8;\n      }\n      else {\n        paVar1 = &local_34.field_2;\n        local_34._M_dataplus._M_p = (pointer)paVar1;\n        sVar12 = strlen(pcVar4);\n        std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>::\n        _M_construct<char_const*>(&local_34,pcVar4,pcVar4 + sVar12,0);\n                    /* try { // try from 0031255b to 0031255f has its CatchHandler @ 0031261e */\n        bVar7 = Pluginobj::include_comdat_group(&this->super_Pluginobj,&local_34,layout);\n        if (bVar7) {\n          uVar8 = local_54 << 8 | local_54 >> 8;\n          if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n               *)local_34._M_dataplus._M_p != paVar1) {\n            operator_delete(local_34._M_dataplus._M_p);\n          }\n        }\n        else {\n          if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n               *)local_34._M_dataplus._M_p != paVar1) {\n            operator_delete(local_34._M_dataplus._M_p);\n          }\n          uVar8 = 0;\n        }\n      }\n      symbuf._14_2_ = uVar8;\n      symbuf[0] = '\0';\n      symbuf[1] = '\0';\n      symbuf[2] = '\0';\n      symbuf[3] = '\0';\n      symbuf[4] = '\0';\n      symbuf[5] = '\0';\n      symbuf[6] = '\0';\n      symbuf[7] = '\0';\n      symbuf[8] = '\0';\n      symbuf[9] = '\0';\n      symbuf[10] = '\0';\n      symbuf[0xb] = '\0';\n      symbuf[0xc] = local_5c << 4;\n      symbuf[0xd] = local_60;\n      ppSVar3 = (this->super_Pluginobj).symbols_.\n                super__Vector_base<gold::Symbol*,_std::allocator<gold::Symbol*>_>._M_impl._M_start +\n                local_50;\n      pSVar10 = Symbol_table::add_from_pluginobj<32,_true>(symtab,this,local_58,ver,&sym);\n      local_50 = local_50 + 1;\n      *ppSVar3 = pSVar10;\n    } while (local_50 < (this->super_Pluginobj).nsyms_);\n  }\n  return;\n}\n\n" comment comment comment comment (declaration "void __thiscall\ngold::Sized_pluginobj<32,_true>::do_add_symbols\n          (Sized_pluginobj<32,_true> *this,Symbol_table *symtab,Read_symbols_data *param_2,\n          Layout *layout)\n\n{\n  anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n  *paVar1;" primitive_type (ms_call_modifier "__thiscall" __thiscall) (ERROR "gold::" identifier : :) identifier (ERROR "<32" < number_literal) , (ERROR "_true>::do_add_symbols\n          (Sized_pluginobj<32,_true> *this,Symbol_table *symtab,Read_symbols_data *param_2,\n          Layout *layout)\n\n{" identifier > : : (function_declarator "do_add_symbols\n          (Sized_pluginobj<32,_true> *this,Symbol_table *symtab,Read_symbols_data *param_2,\n          Layout *layout)" identifier (parameter_list "(Sized_pluginobj<32,_true> *this,Symbol_table *symtab,Read_symbols_data *param_2,\n          Layout *layout)" ( (parameter_declaration "Sized_pluginobj" type_identifier) (ERROR "<32" < number_literal) , (parameter_declaration "_true> *this" type_identifier (ERROR ">" >) (pointer_declarator "*this" * identifier)) , (parameter_declaration "Symbol_table *symtab" type_identifier (pointer_declarator "*symtab" * identifier)) , (parameter_declaration "Read_symbols_data *param_2" type_identifier (pointer_declarator "*param_2" * identifier)) , (parameter_declaration "Layout *layout" type_identifier (pointer_declarator "*layout" * identifier)) ))) {) identifier (ERROR "<char" < primitive_type) , (ERROR "_std::" identifier : :) identifier (ERROR "<char>" < primitive_type >) , (ERROR "_std::allocator<char>_>_9" identifier : : identifier < primitive_type > identifier > identifier) (pointer_declarator "*paVar1" * identifier) ;) (declaration "Plugin_recorder *this_00;" type_identifier (pointer_declarator "*this_00" * identifier) ;) (declaration "pointer ppSVar2;" type_identifier identifier ;) (declaration "pointer ppSVar3;" type_identifier identifier ;) (declaration "char *pcVar4;" primitive_type (pointer_declarator "*pcVar4" * identifier) ;) (declaration "int iVar5;" primitive_type identifier ;) (declaration "char cVar6;" primitive_type identifier ;) (declaration "bool bVar7;" primitive_type identifier ;) (declaration "ushort uVar8;" type_identifier identifier ;) (declaration "uint uVar9;" type_identifier identifier ;) (declaration "Symbol *pSVar10;" type_identifier (pointer_declarator "*pSVar10" * identifier) ;) (declaration "ld_plugin_symbol *plVar11;" type_identifier (pointer_declarator "*plVar11" * identifier) ;) (declaration "size_t sVar12;" primitive_type identifier ;) (declaration "uint uVar13;" type_identifier identifier ;) (declaration "char *ver;" primitive_type (pointer_declarator "*ver" * identifier) ;) (declaration "uchar local_60;" type_identifier identifier ;) (declaration "char local_5c;" primitive_type identifier ;) (declaration "char *local_58;" primitive_type (pointer_declarator "*local_58" * identifier) ;) (declaration "ushort local_54;" type_identifier identifier ;) (declaration "int local_50;" primitive_type identifier ;) (expression_statement "Sym<32,_true> sym;" (update_expression "Sym<32,_true> sym" (binary_expression "Sym<32,_true> sym" (binary_expression "Sym<32" identifier < number_literal) (ERROR ",_true" , identifier) > identifier) --) ;) (declaration "uchar symbuf [16];" type_identifier (array_declarator "symbuf [16]" identifier [ number_literal ]) ;) (ERROR "basic_string<char," (binary_expression "basic_string<char" identifier < identifier) ,) (labeled_statement "_std::char_traits<char>,_std::allocator<char>_> local_34;" statement_identifier (ERROR "::char_traits<char>,_std:" : : (binary_expression "char_traits<char>,_std" (binary_expression "char_traits<char" identifier < identifier) > (ERROR "," ,) identifier) :) : (expression_statement "allocator<char>_> local_34;" (binary_expression "allocator<char>_> local_34" (binary_expression "allocator<char>_" (binary_expression "allocator<char" identifier < identifier) > identifier) > identifier) ;)) (expression_statement "sym.p_ = (Sym_data<32> *)symbuf;" (assignment_expression "sym.p_ = (Sym_data<32> *)symbuf" (field_expression "sym.p_" identifier . field_identifier) = (parenthesized_expression "(Sym_data<32> *)symbuf" ( (binary_expression "Sym_data<32> *)symbuf" (binary_expression "Sym_data<32" identifier < number_literal) > (pointer_expression "*)symbuf" * (ERROR ")" )) 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_->recorder_;" (assignment_expression "this_00 = parameters->options_->plugins_->recorder_" identifier = (field_expression "parameters->options_->plugins_->recorder_" (field_expression "parameters->options_->plugins_" (field_expression "parameters->options_" identifier -> field_identifier) -> field_identifier) -> field_identifier)) ;) (expression_statement "uVar9 = (this->super_Pluginobj).nsyms_;" (assignment_expression "uVar9 = (this->super_Pluginobj).nsyms_" identifier = (field_expression "(this->super_Pluginobj).nsyms_" (parenthesized_expression "(this->super_Pluginobj)" ( (field_expression "this->super_Pluginobj" identifier -> field_identifier) )) . field_identifier)) ;) (if_statement "if (this_00 != (Plugin_recorder *)0x0) {\n    Plugin_recorder::record_symbols(this_00,(Object *)this,uVar9,(this->super_Pluginobj).syms_);\n    uVar9 = (this->super_Pluginobj).nsyms_;\n  }" if (parenthesized_expression "(this_00 != (Plugin_recorder *)0x0)" ( (binary_expression "this_00 != (Plugin_recorder *)0x0" identifier != (cast_expression "(Plugin_recorder *)0x0" ( (type_descriptor "Plugin_recorder *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    Plugin_recorder::record_symbols(this_00,(Object *)this,uVar9,(this->super_Pluginobj).syms_);\n    uVar9 = (this->super_Pluginobj).nsyms_;\n  }" { (labeled_statement "Plugin_recorder::record_symbols(this_00,(Object *)this,uVar9,(this->super_Pluginobj).syms_);" statement_identifier : (ERROR ":" :) (expression_statement "record_symbols(this_00,(Object *)this,uVar9,(this->super_Pluginobj).syms_);" (call_expression "record_symbols(this_00,(Object *)this,uVar9,(this->super_Pluginobj).syms_)" identifier (argument_list "(this_00,(Object *)this,uVar9,(this->super_Pluginobj).syms_)" ( identifier , (cast_expression "(Object *)this" ( (type_descriptor "Object *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) , identifier , (field_expression "(this->super_Pluginobj).syms_" (parenthesized_expression "(this->super_Pluginobj)" ( (field_expression "this->super_Pluginobj" identifier -> field_identifier) )) . field_identifier) ))) ;)) (expression_statement "uVar9 = (this->super_Pluginobj).nsyms_;" (assignment_expression "uVar9 = (this->super_Pluginobj).nsyms_" identifier = (field_expression "(this->super_Pluginobj).nsyms_" (parenthesized_expression "(this->super_Pluginobj)" ( (field_expression "this->super_Pluginobj" identifier -> field_identifier) )) . field_identifier)) ;) })) (expression_statement "ppSVar2 = (this->super_Pluginobj).symbols_.\n            super__Vector_base<gold::Symbol*,_std::allocator<gold::Symbol*>_>._M_impl._M_finish;" (field_expression "ppSVar2 = (this->super_Pluginobj).symbols_.\n            super__Vector_base<gold::Symbol*,_std::allocator<gold::Symbol*>_>._M_impl._M_finish" (field_expression "ppSVar2 = (this->super_Pluginobj).symbols_.\n            super__Vector_base<gold::Symbol*,_std::allocator<gold::Symbol*>_>._M_impl" (binary_expression "ppSVar2 = (this->super_Pluginobj).symbols_.\n            super__Vector_base<gold::Symbol*,_std::allocator<gold::Symbol*>_" (binary_expression "ppSVar2 = (this->super_Pluginobj).symbols_.\n            super__Vector_base<gold::Symbol*,_std::allocator<gold" (binary_expression "ppSVar2 = (this->super_Pluginobj).symbols_.\n            super__Vector_base<gold::Symbol*,_std" (assignment_expression "ppSVar2 = (this->super_Pluginobj).symbols_.\n            super__Vector_base<gold" identifier = (binary_expression "(this->super_Pluginobj).symbols_.\n            super__Vector_base<gold" (field_expression "(this->super_Pluginobj).symbols_.\n            super__Vector_base" (field_expression "(this->super_Pluginobj).symbols_" (parenthesized_expression "(this->super_Pluginobj)" ( (field_expression "this->super_Pluginobj" identifier -> field_identifier) )) . field_identifier) . field_identifier) < identifier)) (ERROR "::Symbol" : : identifier) * (ERROR "," ,) identifier) (ERROR "::allocator" : : identifier) < identifier) (ERROR "::Symbol" : : identifier) * (ERROR ">" >) identifier) (ERROR ">" >) . field_identifier) . field_identifier) ;) (expression_statement "ppSVar3 = (this->super_Pluginobj).symbols_.\n            super__Vector_base<gold::Symbol*,_std::allocator<gold::Symbol*>_>._M_impl._M_start;" (field_expression "ppSVar3 = (this->super_Pluginobj).symbols_.\n            super__Vector_base<gold::Symbol*,_std::allocator<gold::Symbol*>_>._M_impl._M_start" (field_expression "ppSVar3 = (this->super_Pluginobj).symbols_.\n            super__Vector_base<gold::Symbol*,_std::allocator<gold::Symbol*>_>._M_impl" (binary_expression "ppSVar3 = (this->super_Pluginobj).symbols_.\n            super__Vector_base<gold::Symbol*,_std::allocator<gold::Symbol*>_" (binary_expression "ppSVar3 = (this->super_Pluginobj).symbols_.\n            super__Vector_base<gold::Symbol*,_std::allocator<gold" (binary_expression "ppSVar3 = (this->super_Pluginobj).symbols_.\n            super__Vector_base<gold::Symbol*,_std" (assignment_expression "ppSVar3 = (this->super_Pluginobj).symbols_.\n            super__Vector_base<gold" identifier = (binary_expression "(this->super_Pluginobj).symbols_.\n            super__Vector_base<gold" (field_expression "(this->super_Pluginobj).symbols_.\n            super__Vector_base" (field_expression "(this->super_Pluginobj).symbols_" (parenthesized_expression "(this->super_Pluginobj)" ( (field_expression "this->super_Pluginobj" identifier -> field_identifier) )) . field_identifier) . field_identifier) < identifier)) (ERROR "::Symbol" : : identifier) * (ERROR "," ,) identifier) (ERROR "::allocator" : : identifier) < identifier) (ERROR "::Symbol" : : identifier) * (ERROR ">" >) identifier) (ERROR ">" >) . field_identifier) . field_identifier) ;) (expression_statement "uVar13 = (int)ppSVar2 - (int)ppSVar3 >> 2;" (assignment_expression "uVar13 = (int)ppSVar2 - (int)ppSVar3 >> 2" identifier = (binary_expression "(int)ppSVar2 - (int)ppSVar3 >> 2" (binary_expression "(int)ppSVar2 - (int)ppSVar3" (cast_expression "(int)ppSVar2" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)ppSVar3" ( (type_descriptor "int" primitive_type) ) identifier)) >> number_literal)) ;) (if_statement "if (uVar13 < uVar9) {\n    std::vector<gold::Symbol*,_std::allocator<gold::Symbol*>_>::_M_default_append\n              (&(this->super_Pluginobj).symbols_,uVar9 - uVar13);\n    uVar9 = (this->super_Pluginobj).nsyms_;\n  }\n  else if ((uVar9 < uVar13) && (ppSVar3 = ppSVar3 + uVar9, ppSVar2 != ppSVar3)) {\n    (this->super_Pluginobj).symbols_.\n    super__Vector_base<gold::Symbol*,_std::allocator<gold::Symbol*>_>._M_impl._M_finish = ppSVar3;\n  }" if (parenthesized_expression "(uVar13 < uVar9)" ( (binary_expression "uVar13 < uVar9" identifier < identifier) )) (compound_statement "{\n    std::vector<gold::Symbol*,_std::allocator<gold::Symbol*>_>::_M_default_append\n              (&(this->super_Pluginobj).symbols_,uVar9 - uVar13);\n    uVar9 = (this->super_Pluginobj).nsyms_;\n  }" { (ERROR "std::vector<gold::Symbol*,_std::allocator<gold::" (comma_expression "std::vector<gold::Symbol*,_std" identifier (ERROR "::vector<gold::Symbol*" : : (binary_expression "vector<gold" identifier < identifier) : : identifier *) , identifier) : : (binary_expression "allocator<gold" identifier < identifier) : :) (expression_statement "Symbol*>_>::_M_default_append\n              (&(this->super_Pluginobj).symbols_,uVar9 - uVar13);" (binary_expression "Symbol*>_>::_M_default_append\n              (&(this->super_Pluginobj).symbols_,uVar9 - uVar13)" (binary_expression "Symbol*>_" identifier * (ERROR ">" >) identifier) > (ERROR "::" : :) (call_expression "_M_default_append\n              (&(this->super_Pluginobj).symbols_,uVar9 - uVar13)" identifier (argument_list "(&(this->super_Pluginobj).symbols_,uVar9 - uVar13)" ( (pointer_expression "&(this->super_Pluginobj).symbols_" & (field_expression "(this->super_Pluginobj).symbols_" (parenthesized_expression "(this->super_Pluginobj)" ( (field_expression "this->super_Pluginobj" identifier -> field_identifier) )) . field_identifier)) , (binary_expression "uVar9 - uVar13" identifier - identifier) )))) ;) (expression_statement "uVar9 = (this->super_Pluginobj).nsyms_;" (assignment_expression "uVar9 = (this->super_Pluginobj).nsyms_" identifier = (field_expression "(this->super_Pluginobj).nsyms_" (parenthesized_expression "(this->super_Pluginobj)" ( (field_expression "this->super_Pluginobj" identifier -> field_identifier) )) . field_identifier)) ;) }) (else_clause "else if ((uVar9 < uVar13) && (ppSVar3 = ppSVar3 + uVar9, ppSVar2 != ppSVar3)) {\n    (this->super_Pluginobj).symbols_.\n    super__Vector_base<gold::Symbol*,_std::allocator<gold::Symbol*>_>._M_impl._M_finish = ppSVar3;\n  }" else (if_statement "if ((uVar9 < uVar13) && (ppSVar3 = ppSVar3 + uVar9, ppSVar2 != ppSVar3)) {\n    (this->super_Pluginobj).symbols_.\n    super__Vector_base<gold::Symbol*,_std::allocator<gold::Symbol*>_>._M_impl._M_finish = ppSVar3;\n  }" if (parenthesized_expression "((uVar9 < uVar13) && (ppSVar3 = ppSVar3 + uVar9, ppSVar2 != ppSVar3))" ( (binary_expression "(uVar9 < uVar13) && (ppSVar3 = ppSVar3 + uVar9, ppSVar2 != ppSVar3)" (parenthesized_expression "(uVar9 < uVar13)" ( (binary_expression "uVar9 < uVar13" identifier < identifier) )) && (parenthesized_expression "(ppSVar3 = ppSVar3 + uVar9, ppSVar2 != ppSVar3)" ( (comma_expression "ppSVar3 = ppSVar3 + uVar9, ppSVar2 != ppSVar3" (assignment_expression "ppSVar3 = ppSVar3 + uVar9" identifier = (binary_expression "ppSVar3 + uVar9" identifier + identifier)) , (binary_expression "ppSVar2 != ppSVar3" identifier != identifier)) ))) )) (compound_statement "{\n    (this->super_Pluginobj).symbols_.\n    super__Vector_base<gold::Symbol*,_std::allocator<gold::Symbol*>_>._M_impl._M_finish = ppSVar3;\n  }" { (expression_statement "(this->super_Pluginobj).symbols_.\n    super__Vector_base<gold::Symbol*,_std::allocator<gold::Symbol*>_>._M_impl._M_finish = ppSVar3;" (assignment_expression "(this->super_Pluginobj).symbols_.\n    super__Vector_base<gold::Symbol*,_std::allocator<gold::Symbol*>_>._M_impl._M_finish = ppSVar3" (field_expression "(this->super_Pluginobj).symbols_.\n    super__Vector_base<gold::Symbol*,_std::allocator<gold::Symbol*>_>._M_impl._M_finish" (field_expression "(this->super_Pluginobj).symbols_.\n    super__Vector_base<gold::Symbol*,_std::allocator<gold::Symbol*>_>._M_impl" (binary_expression "(this->super_Pluginobj).symbols_.\n    super__Vector_base<gold::Symbol*,_std::allocator<gold::Symbol*>_" (binary_expression "(this->super_Pluginobj).symbols_.\n    super__Vector_base<gold::Symbol*,_std::allocator<gold" (binary_expression "(this->super_Pluginobj).symbols_.\n    super__Vector_base<gold::Symbol*,_std" (binary_expression "(this->super_Pluginobj).symbols_.\n    super__Vector_base<gold" (field_expression "(this->super_Pluginobj).symbols_.\n    super__Vector_base" (field_expression "(this->super_Pluginobj).symbols_" (parenthesized_expression "(this->super_Pluginobj)" ( (field_expression "this->super_Pluginobj" identifier -> field_identifier) )) . field_identifier) . field_identifier) < identifier) (ERROR "::Symbol" : : identifier) * (ERROR "," ,) identifier) (ERROR "::allocator" : : identifier) < identifier) (ERROR "::Symbol" : : identifier) * (ERROR ">" >) identifier) (ERROR ">" >) . field_identifier) . field_identifier) = identifier) ;) })))) (expression_statement "local_50 = 0;" (assignment_expression "local_50 = 0" identifier = number_literal) ;) (if_statement "if (0 < (int)uVar9) {\n    do {\n      plVar11 = (this->super_Pluginobj).syms_ + local_50;\n      pcVar4 = plVar11->name;\n      ver = plVar11->version;\n      local_58 = pcVar4;\n      if ((pcVar4 != (char *)0x0) && (local_58 = (char *)0x0, *pcVar4 != '\0')) {\n        local_58 = pcVar4;\n      }\n      if ((ver != (char *)0x0) && (*ver == '\0')) {\n        ver = (char *)0x0;\n      }\n      iVar5 = plVar11->def;\n      if (iVar5 == 1) {\n        local_5c = '\x02';\n        local_54 = 1;\n        goto LAB_003123e2;\n      }\n      if (iVar5 == 3) {\n        cVar6 = '\x02';\nLAB_003124f7:\n        local_5c = cVar6;\n        local_54 = 0;\n      }\n      else {\n        local_5c = '\x01';\n        cVar6 = '\x01';\n        if (iVar5 < 0) goto LAB_003124f7;\n        if (iVar5 < 2) {\n          local_54 = 1;\n        }\n        else {\n          local_54 = 0xfff2;\n          if (iVar5 != 4) goto LAB_003124f7;\n        }\n      }\nLAB_003123e2:\n      local_60 = '\0';\n      uVar9 = plVar11->visibility - 1;\n      if (uVar9 < 3) {\n        local_60 = (uchar)*(undefined4 *)(CSWTCH_704 + uVar9 * 4);\n      }\n      pcVar4 = plVar11->comdat_key;\n      if ((pcVar4 == (char *)0x0) || (*pcVar4 == '\0')) {\n        uVar8 = local_54 << 8 | local_54 >> 8;\n      }\n      else {\n        paVar1 = &local_34.field_2;\n        local_34._M_dataplus._M_p = (pointer)paVar1;\n        sVar12 = strlen(pcVar4);\n        std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>::\n        _M_construct<char_const*>(&local_34,pcVar4,pcVar4 + sVar12,0);\n                    /* try { // try from 0031255b to 0031255f has its CatchHandler @ 0031261e */\n        bVar7 = Pluginobj::include_comdat_group(&this->super_Pluginobj,&local_34,layout);\n        if (bVar7) {\n          uVar8 = local_54 << 8 | local_54 >> 8;\n          if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n               *)local_34._M_dataplus._M_p != paVar1) {\n            operator_delete(local_34._M_dataplus._M_p);\n          }\n        }\n        else {\n          if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n               *)local_34._M_dataplus._M_p != paVar1) {\n            operator_delete(local_34._M_dataplus._M_p);\n          }\n          uVar8 = 0;\n        }\n      }\n      symbuf._14_2_ = uVar8;\n      symbuf[0] = '\0';\n      symbuf[1] = '\0';\n      symbuf[2] = '\0';\n      symbuf[3] = '\0';\n      symbuf[4] = '\0';\n      symbuf[5] = '\0';\n      symbuf[6] = '\0';\n      symbuf[7] = '\0';\n      symbuf[8] = '\0';\n      symbuf[9] = '\0';\n      symbuf[10] = '\0';\n      symbuf[0xb] = '\0';\n      symbuf[0xc] = local_5c << 4;\n      symbuf[0xd] = local_60;\n      ppSVar3 = (this->super_Pluginobj).symbols_.\n                super__Vector_base<gold::Symbol*,_std::allocator<gold::Symbol*>_>._M_impl._M_start +\n                local_50;\n      pSVar10 = Symbol_table::add_from_pluginobj<32,_true>(symtab,this,local_58,ver,&sym);\n      local_50 = local_50 + 1;\n      *ppSVar3 = pSVar10;\n    } while (local_50 < (this->super_Pluginobj).nsyms_);\n  }" if (parenthesized_expression "(0 < (int)uVar9)" ( (binary_expression "0 < (int)uVar9" number_literal < (cast_expression "(int)uVar9" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n    do {\n      plVar11 = (this->super_Pluginobj).syms_ + local_50;\n      pcVar4 = plVar11->name;\n      ver = plVar11->version;\n      local_58 = pcVar4;\n      if ((pcVar4 != (char *)0x0) && (local_58 = (char *)0x0, *pcVar4 != '\0')) {\n        local_58 = pcVar4;\n      }\n      if ((ver != (char *)0x0) && (*ver == '\0')) {\n        ver = (char *)0x0;\n      }\n      iVar5 = plVar11->def;\n      if (iVar5 == 1) {\n        local_5c = '\x02';\n        local_54 = 1;\n        goto LAB_003123e2;\n      }\n      if (iVar5 == 3) {\n        cVar6 = '\x02';\nLAB_003124f7:\n        local_5c = cVar6;\n        local_54 = 0;\n      }\n      else {\n        local_5c = '\x01';\n        cVar6 = '\x01';\n        if (iVar5 < 0) goto LAB_003124f7;\n        if (iVar5 < 2) {\n          local_54 = 1;\n        }\n        else {\n          local_54 = 0xfff2;\n          if (iVar5 != 4) goto LAB_003124f7;\n        }\n      }\nLAB_003123e2:\n      local_60 = '\0';\n      uVar9 = plVar11->visibility - 1;\n      if (uVar9 < 3) {\n        local_60 = (uchar)*(undefined4 *)(CSWTCH_704 + uVar9 * 4);\n      }\n      pcVar4 = plVar11->comdat_key;\n      if ((pcVar4 == (char *)0x0) || (*pcVar4 == '\0')) {\n        uVar8 = local_54 << 8 | local_54 >> 8;\n      }\n      else {\n        paVar1 = &local_34.field_2;\n        local_34._M_dataplus._M_p = (pointer)paVar1;\n        sVar12 = strlen(pcVar4);\n        std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>::\n        _M_construct<char_const*>(&local_34,pcVar4,pcVar4 + sVar12,0);\n                    /* try { // try from 0031255b to 0031255f has its CatchHandler @ 0031261e */\n        bVar7 = Pluginobj::include_comdat_group(&this->super_Pluginobj,&local_34,layout);\n        if (bVar7) {\n          uVar8 = local_54 << 8 | local_54 >> 8;\n          if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n               *)local_34._M_dataplus._M_p != paVar1) {\n            operator_delete(local_34._M_dataplus._M_p);\n          }\n        }\n        else {\n          if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n               *)local_34._M_dataplus._M_p != paVar1) {\n            operator_delete(local_34._M_dataplus._M_p);\n          }\n          uVar8 = 0;\n        }\n      }\n      symbuf._14_2_ = uVar8;\n      symbuf[0] = '\0';\n      symbuf[1] = '\0';\n      symbuf[2] = '\0';\n      symbuf[3] = '\0';\n      symbuf[4] = '\0';\n      symbuf[5] = '\0';\n      symbuf[6] = '\0';\n      symbuf[7] = '\0';\n      symbuf[8] = '\0';\n      symbuf[9] = '\0';\n      symbuf[10] = '\0';\n      symbuf[0xb] = '\0';\n      symbuf[0xc] = local_5c << 4;\n      symbuf[0xd] = local_60;\n      ppSVar3 = (this->super_Pluginobj).symbols_.\n                super__Vector_base<gold::Symbol*,_std::allocator<gold::Symbol*>_>._M_impl._M_start +\n                local_50;\n      pSVar10 = Symbol_table::add_from_pluginobj<32,_true>(symtab,this,local_58,ver,&sym);\n      local_50 = local_50 + 1;\n      *ppSVar3 = pSVar10;\n    } while (local_50 < (this->super_Pluginobj).nsyms_);\n  }" { (do_statement "do {\n      plVar11 = (this->super_Pluginobj).syms_ + local_50;\n      pcVar4 = plVar11->name;\n      ver = plVar11->version;\n      local_58 = pcVar4;\n      if ((pcVar4 != (char *)0x0) && (local_58 = (char *)0x0, *pcVar4 != '\0')) {\n        local_58 = pcVar4;\n      }\n      if ((ver != (char *)0x0) && (*ver == '\0')) {\n        ver = (char *)0x0;\n      }\n      iVar5 = plVar11->def;\n      if (iVar5 == 1) {\n        local_5c = '\x02';\n        local_54 = 1;\n        goto LAB_003123e2;\n      }\n      if (iVar5 == 3) {\n        cVar6 = '\x02';\nLAB_003124f7:\n        local_5c = cVar6;\n        local_54 = 0;\n      }\n      else {\n        local_5c = '\x01';\n        cVar6 = '\x01';\n        if (iVar5 < 0) goto LAB_003124f7;\n        if (iVar5 < 2) {\n          local_54 = 1;\n        }\n        else {\n          local_54 = 0xfff2;\n          if (iVar5 != 4) goto LAB_003124f7;\n        }\n      }\nLAB_003123e2:\n      local_60 = '\0';\n      uVar9 = plVar11->visibility - 1;\n      if (uVar9 < 3) {\n        local_60 = (uchar)*(undefined4 *)(CSWTCH_704 + uVar9 * 4);\n      }\n      pcVar4 = plVar11->comdat_key;\n      if ((pcVar4 == (char *)0x0) || (*pcVar4 == '\0')) {\n        uVar8 = local_54 << 8 | local_54 >> 8;\n      }\n      else {\n        paVar1 = &local_34.field_2;\n        local_34._M_dataplus._M_p = (pointer)paVar1;\n        sVar12 = strlen(pcVar4);\n        std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>::\n        _M_construct<char_const*>(&local_34,pcVar4,pcVar4 + sVar12,0);\n                    /* try { // try from 0031255b to 0031255f has its CatchHandler @ 0031261e */\n        bVar7 = Pluginobj::include_comdat_group(&this->super_Pluginobj,&local_34,layout);\n        if (bVar7) {\n          uVar8 = local_54 << 8 | local_54 >> 8;\n          if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n               *)local_34._M_dataplus._M_p != paVar1) {\n            operator_delete(local_34._M_dataplus._M_p);\n          }\n        }\n        else {\n          if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n               *)local_34._M_dataplus._M_p != paVar1) {\n            operator_delete(local_34._M_dataplus._M_p);\n          }\n          uVar8 = 0;\n        }\n      }\n      symbuf._14_2_ = uVar8;\n      symbuf[0] = '\0';\n      symbuf[1] = '\0';\n      symbuf[2] = '\0';\n      symbuf[3] = '\0';\n      symbuf[4] = '\0';\n      symbuf[5] = '\0';\n      symbuf[6] = '\0';\n      symbuf[7] = '\0';\n      symbuf[8] = '\0';\n      symbuf[9] = '\0';\n      symbuf[10] = '\0';\n      symbuf[0xb] = '\0';\n      symbuf[0xc] = local_5c << 4;\n      symbuf[0xd] = local_60;\n      ppSVar3 = (this->super_Pluginobj).symbols_.\n                super__Vector_base<gold::Symbol*,_std::allocator<gold::Symbol*>_>._M_impl._M_start +\n                local_50;\n      pSVar10 = Symbol_table::add_from_pluginobj<32,_true>(symtab,this,local_58,ver,&sym);\n      local_50 = local_50 + 1;\n      *ppSVar3 = pSVar10;\n    } while (local_50 < (this->super_Pluginobj).nsyms_);" do (compound_statement "{\n      plVar11 = (this->super_Pluginobj).syms_ + local_50;\n      pcVar4 = plVar11->name;\n      ver = plVar11->version;\n      local_58 = pcVar4;\n      if ((pcVar4 != (char *)0x0) && (local_58 = (char *)0x0, *pcVar4 != '\0')) {\n        local_58 = pcVar4;\n      }\n      if ((ver != (char *)0x0) && (*ver == '\0')) {\n        ver = (char *)0x0;\n      }\n      iVar5 = plVar11->def;\n      if (iVar5 == 1) {\n        local_5c = '\x02';\n        local_54 = 1;\n        goto LAB_003123e2;\n      }\n      if (iVar5 == 3) {\n        cVar6 = '\x02';\nLAB_003124f7:\n        local_5c = cVar6;\n        local_54 = 0;\n      }\n      else {\n        local_5c = '\x01';\n        cVar6 = '\x01';\n        if (iVar5 < 0) goto LAB_003124f7;\n        if (iVar5 < 2) {\n          local_54 = 1;\n        }\n        else {\n          local_54 = 0xfff2;\n          if (iVar5 != 4) goto LAB_003124f7;\n        }\n      }\nLAB_003123e2:\n      local_60 = '\0';\n      uVar9 = plVar11->visibility - 1;\n      if (uVar9 < 3) {\n        local_60 = (uchar)*(undefined4 *)(CSWTCH_704 + uVar9 * 4);\n      }\n      pcVar4 = plVar11->comdat_key;\n      if ((pcVar4 == (char *)0x0) || (*pcVar4 == '\0')) {\n        uVar8 = local_54 << 8 | local_54 >> 8;\n      }\n      else {\n        paVar1 = &local_34.field_2;\n        local_34._M_dataplus._M_p = (pointer)paVar1;\n        sVar12 = strlen(pcVar4);\n        std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>::\n        _M_construct<char_const*>(&local_34,pcVar4,pcVar4 + sVar12,0);\n                    /* try { // try from 0031255b to 0031255f has its CatchHandler @ 0031261e */\n        bVar7 = Pluginobj::include_comdat_group(&this->super_Pluginobj,&local_34,layout);\n        if (bVar7) {\n          uVar8 = local_54 << 8 | local_54 >> 8;\n          if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n               *)local_34._M_dataplus._M_p != paVar1) {\n            operator_delete(local_34._M_dataplus._M_p);\n          }\n        }\n        else {\n          if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n               *)local_34._M_dataplus._M_p != paVar1) {\n            operator_delete(local_34._M_dataplus._M_p);\n          }\n          uVar8 = 0;\n        }\n      }\n      symbuf._14_2_ = uVar8;\n      symbuf[0] = '\0';\n      symbuf[1] = '\0';\n      symbuf[2] = '\0';\n      symbuf[3] = '\0';\n      symbuf[4] = '\0';\n      symbuf[5] = '\0';\n      symbuf[6] = '\0';\n      symbuf[7] = '\0';\n      symbuf[8] = '\0';\n      symbuf[9] = '\0';\n      symbuf[10] = '\0';\n      symbuf[0xb] = '\0';\n      symbuf[0xc] = local_5c << 4;\n      symbuf[0xd] = local_60;\n      ppSVar3 = (this->super_Pluginobj).symbols_.\n                super__Vector_base<gold::Symbol*,_std::allocator<gold::Symbol*>_>._M_impl._M_start +\n                local_50;\n      pSVar10 = Symbol_table::add_from_pluginobj<32,_true>(symtab,this,local_58,ver,&sym);\n      local_50 = local_50 + 1;\n      *ppSVar3 = pSVar10;\n    }" { (expression_statement "plVar11 = (this->super_Pluginobj).syms_ + local_50;" (assignment_expression "plVar11 = (this->super_Pluginobj).syms_ + local_50" identifier = (binary_expression "(this->super_Pluginobj).syms_ + local_50" (field_expression "(this->super_Pluginobj).syms_" (parenthesized_expression "(this->super_Pluginobj)" ( (field_expression "this->super_Pluginobj" identifier -> field_identifier) )) . field_identifier) + identifier)) ;) (expression_statement "pcVar4 = plVar11->name;" (assignment_expression "pcVar4 = plVar11->name" identifier = (field_expression "plVar11->name" identifier -> field_identifier)) ;) (expression_statement "ver = plVar11->version;" (assignment_expression "ver = plVar11->version" identifier = (field_expression "plVar11->version" identifier -> field_identifier)) ;) (expression_statement "local_58 = pcVar4;" (assignment_expression "local_58 = pcVar4" identifier = identifier) ;) (if_statement "if ((pcVar4 != (char *)0x0) && (local_58 = (char *)0x0, *pcVar4 != '\0')) {\n        local_58 = pcVar4;\n      }" if (parenthesized_expression "((pcVar4 != (char *)0x0) && (local_58 = (char *)0x0, *pcVar4 != '\0'))" ( (binary_expression "(pcVar4 != (char *)0x0) && (local_58 = (char *)0x0, *pcVar4 != '\0')" (parenthesized_expression "(pcVar4 != (char *)0x0)" ( (binary_expression "pcVar4 != (char *)0x0" identifier != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) && (parenthesized_expression "(local_58 = (char *)0x0, *pcVar4 != '\0')" ( (comma_expression "local_58 = (char *)0x0, *pcVar4 != '\0'" (assignment_expression "local_58 = (char *)0x0" identifier = (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) , (binary_expression "*pcVar4 != '\0'" (pointer_expression "*pcVar4" * identifier) != (char_literal "'\0'" ' escape_sequence '))) ))) )) (compound_statement "{\n        local_58 = pcVar4;\n      }" { (expression_statement "local_58 = pcVar4;" (assignment_expression "local_58 = pcVar4" identifier = identifier) ;) })) (if_statement "if ((ver != (char *)0x0) && (*ver == '\0')) {\n        ver = (char *)0x0;\n      }" if (parenthesized_expression "((ver != (char *)0x0) && (*ver == '\0'))" ( (binary_expression "(ver != (char *)0x0) && (*ver == '\0')" (parenthesized_expression "(ver != (char *)0x0)" ( (binary_expression "ver != (char *)0x0" identifier != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) && (parenthesized_expression "(*ver == '\0')" ( (binary_expression "*ver == '\0'" (pointer_expression "*ver" * identifier) == (char_literal "'\0'" ' escape_sequence ')) ))) )) (compound_statement "{\n        ver = (char *)0x0;\n      }" { (expression_statement "ver = (char *)0x0;" (assignment_expression "ver = (char *)0x0" identifier = (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) })) (expression_statement "iVar5 = plVar11->def;" (assignment_expression "iVar5 = plVar11->def" identifier = (field_expression "plVar11->def" identifier -> field_identifier)) ;) (if_statement "if (iVar5 == 1) {\n        local_5c = '\x02';\n        local_54 = 1;\n        goto LAB_003123e2;\n      }" if (parenthesized_expression "(iVar5 == 1)" ( (binary_expression "iVar5 == 1" identifier == number_literal) )) (compound_statement "{\n        local_5c = '\x02';\n        local_54 = 1;\n        goto LAB_003123e2;\n      }" { (expression_statement "local_5c = '\x02';" (assignment_expression "local_5c = '\x02'" identifier = (char_literal "'\x02'" ' escape_sequence ')) ;) (expression_statement "local_54 = 1;" (assignment_expression "local_54 = 1" identifier = number_literal) ;) (goto_statement "goto LAB_003123e2;" goto statement_identifier ;) })) (if_statement "if (iVar5 == 3) {\n        cVar6 = '\x02';\nLAB_003124f7:\n        local_5c = cVar6;\n        local_54 = 0;\n      }\n      else {\n        local_5c = '\x01';\n        cVar6 = '\x01';\n        if (iVar5 < 0) goto LAB_003124f7;\n        if (iVar5 < 2) {\n          local_54 = 1;\n        }\n        else {\n          local_54 = 0xfff2;\n          if (iVar5 != 4) goto LAB_003124f7;\n        }\n      }" if (parenthesized_expression "(iVar5 == 3)" ( (binary_expression "iVar5 == 3" identifier == number_literal) )) (compound_statement "{\n        cVar6 = '\x02';\nLAB_003124f7:\n        local_5c = cVar6;\n        local_54 = 0;\n      }" { (expression_statement "cVar6 = '\x02';" (assignment_expression "cVar6 = '\x02'" identifier = (char_literal "'\x02'" ' escape_sequence ')) ;) (labeled_statement "LAB_003124f7:\n        local_5c = cVar6;" statement_identifier : (expression_statement "local_5c = cVar6;" (assignment_expression "local_5c = cVar6" identifier = identifier) ;)) (expression_statement "local_54 = 0;" (assignment_expression "local_54 = 0" identifier = number_literal) ;) }) (else_clause "else {\n        local_5c = '\x01';\n        cVar6 = '\x01';\n        if (iVar5 < 0) goto LAB_003124f7;\n        if (iVar5 < 2) {\n          local_54 = 1;\n        }\n        else {\n          local_54 = 0xfff2;\n          if (iVar5 != 4) goto LAB_003124f7;\n        }\n      }" else (compound_statement "{\n        local_5c = '\x01';\n        cVar6 = '\x01';\n        if (iVar5 < 0) goto LAB_003124f7;\n        if (iVar5 < 2) {\n          local_54 = 1;\n        }\n        else {\n          local_54 = 0xfff2;\n          if (iVar5 != 4) goto LAB_003124f7;\n        }\n      }" { (expression_statement "local_5c = '\x01';" (assignment_expression "local_5c = '\x01'" identifier = (char_literal "'\x01'" ' escape_sequence ')) ;) (expression_statement "cVar6 = '\x01';" (assignment_expression "cVar6 = '\x01'" identifier = (char_literal "'\x01'" ' escape_sequence ')) ;) (if_statement "if (iVar5 < 0) goto LAB_003124f7;" if (parenthesized_expression "(iVar5 < 0)" ( (binary_expression "iVar5 < 0" identifier < number_literal) )) (goto_statement "goto LAB_003124f7;" goto statement_identifier ;)) (if_statement "if (iVar5 < 2) {\n          local_54 = 1;\n        }\n        else {\n          local_54 = 0xfff2;\n          if (iVar5 != 4) goto LAB_003124f7;\n        }" if (parenthesized_expression "(iVar5 < 2)" ( (binary_expression "iVar5 < 2" identifier < number_literal) )) (compound_statement "{\n          local_54 = 1;\n        }" { (expression_statement "local_54 = 1;" (assignment_expression "local_54 = 1" identifier = number_literal) ;) }) (else_clause "else {\n          local_54 = 0xfff2;\n          if (iVar5 != 4) goto LAB_003124f7;\n        }" else (compound_statement "{\n          local_54 = 0xfff2;\n          if (iVar5 != 4) goto LAB_003124f7;\n        }" { (expression_statement "local_54 = 0xfff2;" (assignment_expression "local_54 = 0xfff2" identifier = number_literal) ;) (if_statement "if (iVar5 != 4) goto LAB_003124f7;" if (parenthesized_expression "(iVar5 != 4)" ( (binary_expression "iVar5 != 4" identifier != number_literal) )) (goto_statement "goto LAB_003124f7;" goto statement_identifier ;)) }))) }))) (labeled_statement "LAB_003123e2:\n      local_60 = '\0';" statement_identifier : (expression_statement "local_60 = '\0';" (assignment_expression "local_60 = '\0'" identifier = (char_literal "'\0'" ' escape_sequence ')) ;)) (expression_statement "uVar9 = plVar11->visibility - 1;" (assignment_expression "uVar9 = plVar11->visibility - 1" identifier = (binary_expression "plVar11->visibility - 1" (field_expression "plVar11->visibility" identifier -> field_identifier) - number_literal)) ;) (if_statement "if (uVar9 < 3) {\n        local_60 = (uchar)*(undefined4 *)(CSWTCH_704 + uVar9 * 4);\n      }" if (parenthesized_expression "(uVar9 < 3)" ( (binary_expression "uVar9 < 3" identifier < number_literal) )) (compound_statement "{\n        local_60 = (uchar)*(undefined4 *)(CSWTCH_704 + uVar9 * 4);\n      }" { (expression_statement "local_60 = (uchar)*(undefined4 *)(CSWTCH_704 + uVar9 * 4);" (assignment_expression "local_60 = (uchar)*(undefined4 *)(CSWTCH_704 + uVar9 * 4)" identifier = (binary_expression "(uchar)*(undefined4 *)(CSWTCH_704 + uVar9 * 4)" (parenthesized_expression "(uchar)" ( identifier )) * (cast_expression "(undefined4 *)(CSWTCH_704 + uVar9 * 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(CSWTCH_704 + uVar9 * 4)" ( (binary_expression "CSWTCH_704 + uVar9 * 4" identifier + (binary_expression "uVar9 * 4" identifier * number_literal)) ))))) ;) })) (expression_statement "pcVar4 = plVar11->comdat_key;" (assignment_expression "pcVar4 = plVar11->comdat_key" identifier = (field_expression "plVar11->comdat_key" identifier -> field_identifier)) ;) (if_statement "if ((pcVar4 == (char *)0x0) || (*pcVar4 == '\0')) {\n        uVar8 = local_54 << 8 | local_54 >> 8;\n      }\n      else {\n        paVar1 = &local_34.field_2;\n        local_34._M_dataplus._M_p = (pointer)paVar1;\n        sVar12 = strlen(pcVar4);\n        std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>::\n        _M_construct<char_const*>(&local_34,pcVar4,pcVar4 + sVar12,0);\n                    /* try { // try from 0031255b to 0031255f has its CatchHandler @ 0031261e */\n        bVar7 = Pluginobj::include_comdat_group(&this->super_Pluginobj,&local_34,layout);\n        if (bVar7) {\n          uVar8 = local_54 << 8 | local_54 >> 8;\n          if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n               *)local_34._M_dataplus._M_p != paVar1) {\n            operator_delete(local_34._M_dataplus._M_p);\n          }\n        }\n        else {\n          if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n               *)local_34._M_dataplus._M_p != paVar1) {\n            operator_delete(local_34._M_dataplus._M_p);\n          }\n          uVar8 = 0;\n        }\n      }" if (parenthesized_expression "((pcVar4 == (char *)0x0) || (*pcVar4 == '\0'))" ( (binary_expression "(pcVar4 == (char *)0x0) || (*pcVar4 == '\0')" (parenthesized_expression "(pcVar4 == (char *)0x0)" ( (binary_expression "pcVar4 == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) || (parenthesized_expression "(*pcVar4 == '\0')" ( (binary_expression "*pcVar4 == '\0'" (pointer_expression "*pcVar4" * identifier) == (char_literal "'\0'" ' escape_sequence ')) ))) )) (compound_statement "{\n        uVar8 = local_54 << 8 | local_54 >> 8;\n      }" { (expression_statement "uVar8 = local_54 << 8 | local_54 >> 8;" (assignment_expression "uVar8 = local_54 << 8 | local_54 >> 8" identifier = (binary_expression "local_54 << 8 | local_54 >> 8" (binary_expression "local_54 << 8" identifier << number_literal) | (binary_expression "local_54 >> 8" identifier >> number_literal))) ;) }) (else_clause "else {\n        paVar1 = &local_34.field_2;\n        local_34._M_dataplus._M_p = (pointer)paVar1;\n        sVar12 = strlen(pcVar4);\n        std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>::\n        _M_construct<char_const*>(&local_34,pcVar4,pcVar4 + sVar12,0);\n                    /* try { // try from 0031255b to 0031255f has its CatchHandler @ 0031261e */\n        bVar7 = Pluginobj::include_comdat_group(&this->super_Pluginobj,&local_34,layout);\n        if (bVar7) {\n          uVar8 = local_54 << 8 | local_54 >> 8;\n          if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n               *)local_34._M_dataplus._M_p != paVar1) {\n            operator_delete(local_34._M_dataplus._M_p);\n          }\n        }\n        else {\n          if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n               *)local_34._M_dataplus._M_p != paVar1) {\n            operator_delete(local_34._M_dataplus._M_p);\n          }\n          uVar8 = 0;\n        }\n      }" else (compound_statement "{\n        paVar1 = &local_34.field_2;\n        local_34._M_dataplus._M_p = (pointer)paVar1;\n        sVar12 = strlen(pcVar4);\n        std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>::\n        _M_construct<char_const*>(&local_34,pcVar4,pcVar4 + sVar12,0);\n                    /* try { // try from 0031255b to 0031255f has its CatchHandler @ 0031261e */\n        bVar7 = Pluginobj::include_comdat_group(&this->super_Pluginobj,&local_34,layout);\n        if (bVar7) {\n          uVar8 = local_54 << 8 | local_54 >> 8;\n          if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n               *)local_34._M_dataplus._M_p != paVar1) {\n            operator_delete(local_34._M_dataplus._M_p);\n          }\n        }\n        else {\n          if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n               *)local_34._M_dataplus._M_p != paVar1) {\n            operator_delete(local_34._M_dataplus._M_p);\n          }\n          uVar8 = 0;\n        }\n      }" { (expression_statement "paVar1 = &local_34.field_2;" (assignment_expression "paVar1 = &local_34.field_2" identifier = (pointer_expression "&local_34.field_2" & (field_expression "local_34.field_2" identifier . field_identifier))) ;) (expression_statement "local_34._M_dataplus._M_p = (pointer)paVar1;" (assignment_expression "local_34._M_dataplus._M_p = (pointer)paVar1" (field_expression "local_34._M_dataplus._M_p" (field_expression "local_34._M_dataplus" identifier . field_identifier) . field_identifier) = (cast_expression "(pointer)paVar1" ( (type_descriptor "pointer" type_identifier) ) identifier)) ;) (expression_statement "sVar12 = strlen(pcVar4);" (assignment_expression "sVar12 = strlen(pcVar4)" identifier = (call_expression "strlen(pcVar4)" identifier (argument_list "(pcVar4)" ( identifier )))) ;) (labeled_statement "std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>::\n        _M_construct<char_const*>(&local_34,pcVar4,pcVar4 + sVar12,0);" 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_const*>(&local_34,pcVar4,pcVar4 + sVar12,0);" (binary_expression "_M_construct<char_const*>(&local_34,pcVar4,pcVar4 + sVar12,0)" (binary_expression "_M_construct<char_const" identifier < identifier) (ERROR "*" *) > (parenthesized_expression "(&local_34,pcVar4,pcVar4 + sVar12,0)" ( (comma_expression "&local_34,pcVar4,pcVar4 + sVar12,0" (pointer_expression "&local_34" & identifier) , (comma_expression "pcVar4,pcVar4 + sVar12,0" identifier , (comma_expression "pcVar4 + sVar12,0" (binary_expression "pcVar4 + sVar12" identifier + identifier) , number_literal))) ))) ;)) comment (ERROR "bVar7 = Pluginobj::" (assignment_expression "bVar7 = Pluginobj" identifier = identifier) : :) (expression_statement "include_comdat_group(&this->super_Pluginobj,&local_34,layout);" (call_expression "include_comdat_group(&this->super_Pluginobj,&local_34,layout)" identifier (argument_list "(&this->super_Pluginobj,&local_34,layout)" ( (pointer_expression "&this->super_Pluginobj" & (field_expression "this->super_Pluginobj" identifier -> field_identifier)) , (pointer_expression "&local_34" & identifier) , identifier ))) ;) (if_statement "if (bVar7) {\n          uVar8 = local_54 << 8 | local_54 >> 8;\n          if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n               *)local_34._M_dataplus._M_p != paVar1) {\n            operator_delete(local_34._M_dataplus._M_p);\n          }\n        }\n        else {\n          if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n               *)local_34._M_dataplus._M_p != paVar1) {\n            operator_delete(local_34._M_dataplus._M_p);\n          }\n          uVar8 = 0;\n        }" if (parenthesized_expression "(bVar7)" ( identifier )) (compound_statement "{\n          uVar8 = local_54 << 8 | local_54 >> 8;\n          if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n               *)local_34._M_dataplus._M_p != paVar1) {\n            operator_delete(local_34._M_dataplus._M_p);\n          }\n        }" { (expression_statement "uVar8 = local_54 << 8 | local_54 >> 8;" (assignment_expression "uVar8 = local_54 << 8 | local_54 >> 8" identifier = (binary_expression "local_54 << 8 | local_54 >> 8" (binary_expression "local_54 << 8" identifier << number_literal) | (binary_expression "local_54 >> 8" identifier >> number_literal))) ;) (if_statement "if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n               *)local_34._M_dataplus._M_p != paVar1) {\n            operator_delete(local_34._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_34._M_dataplus._M_p != paVar1)" ( (parenthesized_expression "(anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n               *)local_34._M_dataplus._M_p != paVar1)" ( (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_34._M_dataplus._M_p != paVar1" (binary_expression "allocator<char>_>_9\n               *)local_34._M_dataplus._M_p" (binary_expression "allocator<char>_" (binary_expression "allocator<char" identifier < identifier) > identifier) > (binary_expression "_9\n               *)local_34._M_dataplus._M_p" identifier * (ERROR ")" )) (field_expression "local_34._M_dataplus._M_p" (field_expression "local_34._M_dataplus" identifier . field_identifier) . field_identifier))) != identifier) )) )) (compound_statement "{\n            operator_delete(local_34._M_dataplus._M_p);\n          }" { (expression_statement "operator_delete(local_34._M_dataplus._M_p);" (call_expression "operator_delete(local_34._M_dataplus._M_p)" identifier (argument_list "(local_34._M_dataplus._M_p)" ( (field_expression "local_34._M_dataplus._M_p" (field_expression "local_34._M_dataplus" identifier . field_identifier) . field_identifier) ))) ;) })) }) (else_clause "else {\n          if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n               *)local_34._M_dataplus._M_p != paVar1) {\n            operator_delete(local_34._M_dataplus._M_p);\n          }\n          uVar8 = 0;\n        }" else (compound_statement "{\n          if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n               *)local_34._M_dataplus._M_p != paVar1) {\n            operator_delete(local_34._M_dataplus._M_p);\n          }\n          uVar8 = 0;\n        }" { (if_statement "if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n               *)local_34._M_dataplus._M_p != paVar1) {\n            operator_delete(local_34._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_34._M_dataplus._M_p != paVar1)" ( (parenthesized_expression "(anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n               *)local_34._M_dataplus._M_p != paVar1)" ( (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_34._M_dataplus._M_p != paVar1" (binary_expression "allocator<char>_>_9\n               *)local_34._M_dataplus._M_p" (binary_expression "allocator<char>_" (binary_expression "allocator<char" identifier < identifier) > identifier) > (binary_expression "_9\n               *)local_34._M_dataplus._M_p" identifier * (ERROR ")" )) (field_expression "local_34._M_dataplus._M_p" (field_expression "local_34._M_dataplus" identifier . field_identifier) . field_identifier))) != identifier) )) )) (compound_statement "{\n            operator_delete(local_34._M_dataplus._M_p);\n          }" { (expression_statement "operator_delete(local_34._M_dataplus._M_p);" (call_expression "operator_delete(local_34._M_dataplus._M_p)" identifier (argument_list "(local_34._M_dataplus._M_p)" ( (field_expression "local_34._M_dataplus._M_p" (field_expression "local_34._M_dataplus" identifier . field_identifier) . field_identifier) ))) ;) })) (expression_statement "uVar8 = 0;" (assignment_expression "uVar8 = 0" identifier = number_literal) ;) }))) }))) (expression_statement "symbuf._14_2_ = uVar8;" (assignment_expression "symbuf._14_2_ = uVar8" (field_expression "symbuf._14_2_" identifier . field_identifier) = identifier) ;) (expression_statement "symbuf[0] = '\0';" (assignment_expression "symbuf[0] = '\0'" (subscript_expression "symbuf[0]" identifier [ number_literal ]) = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "symbuf[1] = '\0';" (assignment_expression "symbuf[1] = '\0'" (subscript_expression "symbuf[1]" identifier [ number_literal ]) = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "symbuf[2] = '\0';" (assignment_expression "symbuf[2] = '\0'" (subscript_expression "symbuf[2]" identifier [ number_literal ]) = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "symbuf[3] = '\0';" (assignment_expression "symbuf[3] = '\0'" (subscript_expression "symbuf[3]" identifier [ number_literal ]) = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "symbuf[4] = '\0';" (assignment_expression "symbuf[4] = '\0'" (subscript_expression "symbuf[4]" identifier [ number_literal ]) = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "symbuf[5] = '\0';" (assignment_expression "symbuf[5] = '\0'" (subscript_expression "symbuf[5]" identifier [ number_literal ]) = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "symbuf[6] = '\0';" (assignment_expression "symbuf[6] = '\0'" (subscript_expression "symbuf[6]" identifier [ number_literal ]) = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "symbuf[7] = '\0';" (assignment_expression "symbuf[7] = '\0'" (subscript_expression "symbuf[7]" identifier [ number_literal ]) = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "symbuf[8] = '\0';" (assignment_expression "symbuf[8] = '\0'" (subscript_expression "symbuf[8]" identifier [ number_literal ]) = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "symbuf[9] = '\0';" (assignment_expression "symbuf[9] = '\0'" (subscript_expression "symbuf[9]" identifier [ number_literal ]) = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "symbuf[10] = '\0';" (assignment_expression "symbuf[10] = '\0'" (subscript_expression "symbuf[10]" identifier [ number_literal ]) = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "symbuf[0xb] = '\0';" (assignment_expression "symbuf[0xb] = '\0'" (subscript_expression "symbuf[0xb]" identifier [ number_literal ]) = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "symbuf[0xc] = local_5c << 4;" (assignment_expression "symbuf[0xc] = local_5c << 4" (subscript_expression "symbuf[0xc]" identifier [ number_literal ]) = (binary_expression "local_5c << 4" identifier << number_literal)) ;) (expression_statement "symbuf[0xd] = local_60;" (assignment_expression "symbuf[0xd] = local_60" (subscript_expression "symbuf[0xd]" identifier [ number_literal ]) = identifier) ;) (expression_statement "ppSVar3 = (this->super_Pluginobj).symbols_.\n                super__Vector_base<gold::Symbol*,_std::allocator<gold::Symbol*>_>._M_impl._M_start +\n                local_50;" (binary_expression "ppSVar3 = (this->super_Pluginobj).symbols_.\n                super__Vector_base<gold::Symbol*,_std::allocator<gold::Symbol*>_>._M_impl._M_start +\n                local_50" (field_expression "ppSVar3 = (this->super_Pluginobj).symbols_.\n                super__Vector_base<gold::Symbol*,_std::allocator<gold::Symbol*>_>._M_impl._M_start" (field_expression "ppSVar3 = (this->super_Pluginobj).symbols_.\n                super__Vector_base<gold::Symbol*,_std::allocator<gold::Symbol*>_>._M_impl" (binary_expression "ppSVar3 = (this->super_Pluginobj).symbols_.\n                super__Vector_base<gold::Symbol*,_std::allocator<gold::Symbol*>_" (binary_expression "ppSVar3 = (this->super_Pluginobj).symbols_.\n                super__Vector_base<gold::Symbol*,_std::allocator<gold" (binary_expression "ppSVar3 = (this->super_Pluginobj).symbols_.\n                super__Vector_base<gold::Symbol*,_std" (assignment_expression "ppSVar3 = (this->super_Pluginobj).symbols_.\n                super__Vector_base<gold" identifier = (binary_expression "(this->super_Pluginobj).symbols_.\n                super__Vector_base<gold" (field_expression "(this->super_Pluginobj).symbols_.\n                super__Vector_base" (field_expression "(this->super_Pluginobj).symbols_" (parenthesized_expression "(this->super_Pluginobj)" ( (field_expression "this->super_Pluginobj" identifier -> field_identifier) )) . field_identifier) . field_identifier) < identifier)) (ERROR "::Symbol" : : identifier) * (ERROR "," ,) identifier) (ERROR "::allocator" : : identifier) < identifier) (ERROR "::Symbol" : : identifier) * (ERROR ">" >) identifier) (ERROR ">" >) . field_identifier) . field_identifier) + identifier) ;) (expression_statement "pSVar10 = Symbol_table::add_from_pluginobj<32,_true>(symtab,this,local_58,ver,&sym);" (comma_expression "pSVar10 = Symbol_table::add_from_pluginobj<32,_true>(symtab,this,local_58,ver,&sym)" (binary_expression "pSVar10 = Symbol_table::add_from_pluginobj<32" (assignment_expression "pSVar10 = Symbol_table" identifier = identifier) (ERROR "::add_from_pluginobj" : : identifier) < number_literal) , (binary_expression "_true>(symtab,this,local_58,ver,&sym)" identifier > (parenthesized_expression "(symtab,this,local_58,ver,&sym)" ( (comma_expression "symtab,this,local_58,ver,&sym" identifier , (comma_expression "this,local_58,ver,&sym" identifier , (comma_expression "local_58,ver,&sym" identifier , (comma_expression "ver,&sym" identifier , (pointer_expression "&sym" & identifier))))) )))) ;) (expression_statement "local_50 = local_50 + 1;" (assignment_expression "local_50 = local_50 + 1" identifier = (binary_expression "local_50 + 1" identifier + number_literal)) ;) (expression_statement "*ppSVar3 = pSVar10;" (assignment_expression "*ppSVar3 = pSVar10" (pointer_expression "*ppSVar3" * identifier) = identifier) ;) }) while (parenthesized_expression "(local_50 < (this->super_Pluginobj).nsyms_)" ( (binary_expression "local_50 < (this->super_Pluginobj).nsyms_" identifier < (field_expression "(this->super_Pluginobj).nsyms_" (parenthesized_expression "(this->super_Pluginobj)" ( (field_expression "this->super_Pluginobj" identifier -> field_identifier) )) . field_identifier)) )) ;) })) (return_statement "return;" return ;) (ERROR "}" }))
(translation_unit "void FUN_00312340(int param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4)\n\n{\n  int iVar1;\n  int iVar2;\n  char *pcVar3;\n  char cVar4;\n  ushort uVar5;\n  uint uVar6;\n  undefined4 uVar7;\n  undefined4 *puVar8;\n  size_t sVar9;\n  uint uVar10;\n  char *pcVar11;\n  undefined1 local_60;\n  char local_5c;\n  char *local_58;\n  ushort local_54;\n  int local_50;\n  undefined4 *local_48;\n  undefined4 local_44;\n  undefined4 local_40;\n  undefined4 local_3c;\n  char local_38;\n  undefined1 local_37;\n  ushort local_36;\n  undefined1 *local_34 [2];\n  undefined1 local_2c [28];\n  \n  local_48 = &local_44;\n  if (*(int *)(DAT_005ea7c8 + 8) == 0) {\n                    \n    FUN_002446e0("../../gold/parameters.h",0x5c,"options",param_1);\n  }\n  iVar1 = *(int *)(*(int *)(*(int *)(DAT_005ea7c8 + 8) + 0x593c) + 0xd4);\n  uVar6 = *(uint *)(param_1 + 0x38);\n  if (iVar1 != 0) {\n    FUN_0030c0e0(iVar1,param_1,uVar6,*(undefined4 *)(param_1 + 0x3c));\n    uVar6 = *(uint *)(param_1 + 0x38);\n  }\n  uVar10 = *(int *)(param_1 + 0x44) - *(int *)(param_1 + 0x40) >> 2;\n  if (uVar10 < uVar6) {\n    FUN_002352a0(param_1 + 0x40,uVar6 - uVar10);\n    uVar6 = *(uint *)(param_1 + 0x38);\n  }\n  else if ((uVar6 < uVar10) &&\n          (iVar1 = *(int *)(param_1 + 0x40) + uVar6 * 4, *(int *)(param_1 + 0x44) != iVar1)) {\n    *(int *)(param_1 + 0x44) = iVar1;\n  }\n  local_50 = 0;\n  if (0 < (int)uVar6) {\n    do {\n      puVar8 = (undefined4 *)(local_50 * 0x20 + *(int *)(param_1 + 0x3c));\n      pcVar3 = (char *)*puVar8;\n      pcVar11 = (char *)puVar8[1];\n      local_58 = pcVar3;\n      if ((pcVar3 != (char *)0x0) && (local_58 = (char *)0x0, *pcVar3 != '\0')) {\n        local_58 = pcVar3;\n      }\n      if ((pcVar11 != (char *)0x0) && (*pcVar11 == '\0')) {\n        pcVar11 = (char *)0x0;\n      }\n      iVar1 = puVar8[2];\n      if (iVar1 == 1) {\n        local_5c = '\x02';\n        local_54 = 1;\n        goto LAB_003123e2;\n      }\n      if (iVar1 == 3) {\n        cVar4 = '\x02';\nLAB_003124f7:\n        local_5c = cVar4;\n        local_54 = 0;\n      }\n      else {\n        local_5c = '\x01';\n        cVar4 = '\x01';\n        if (iVar1 < 0) goto LAB_003124f7;\n        if (iVar1 < 2) {\n          local_54 = 1;\n        }\n        else {\n          local_54 = 0xfff2;\n          if (iVar1 != 4) goto LAB_003124f7;\n        }\n      }\nLAB_003123e2:\n      local_60 = 0;\n      if (puVar8[3] - 1 < 3) {\n        local_60 = (undefined1)*(undefined4 *)(&DAT_004947f4 + (puVar8[3] - 1) * 4);\n      }\n      pcVar3 = (char *)puVar8[6];\n      if ((pcVar3 == (char *)0x0) || (*pcVar3 == '\0')) {\n        uVar5 = local_54 << 8 | local_54 >> 8;\n      }\n      else {\n        local_34[0] = local_2c;\n        sVar9 = strlen(pcVar3);\n        FUN_00072b90(local_34,pcVar3,pcVar3 + sVar9,0);\n                    \n        cVar4 = FUN_0030f450(param_1,local_34,param_4);\n        if (cVar4 == '\0') {\n          if (local_34[0] != local_2c) {\n            FUN_003ae080(local_34[0]);\n          }\n          uVar5 = 0;\n        }\n        else {\n          uVar5 = local_54 << 8 | local_54 >> 8;\n          if (local_34[0] != local_2c) {\n            FUN_003ae080(local_34[0]);\n          }\n        }\n      }\n      local_36 = uVar5;\n      local_44 = 0;\n      local_40 = 0;\n      local_3c = 0;\n      local_38 = local_5c << 4;\n      local_37 = local_60;\n      iVar2 = *(int *)(param_1 + 0x40);\n      iVar1 = local_50 * 4;\n      uVar7 = FUN_00359950(param_2,param_1,local_58,pcVar11,&local_48);\n      local_50 = local_50 + 1;\n      *(undefined4 *)(iVar2 + iVar1) = uVar7;\n    } while (local_50 < *(int *)(param_1 + 0x38));\n  }\n  return;\n}\n\n" (function_definition "void FUN_00312340(int param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4)\n\n{\n  int iVar1;\n  int iVar2;\n  char *pcVar3;\n  char cVar4;\n  ushort uVar5;\n  uint uVar6;\n  undefined4 uVar7;\n  undefined4 *puVar8;\n  size_t sVar9;\n  uint uVar10;\n  char *pcVar11;\n  undefined1 local_60;\n  char local_5c;\n  char *local_58;\n  ushort local_54;\n  int local_50;\n  undefined4 *local_48;\n  undefined4 local_44;\n  undefined4 local_40;\n  undefined4 local_3c;\n  char local_38;\n  undefined1 local_37;\n  ushort local_36;\n  undefined1 *local_34 [2];\n  undefined1 local_2c [28];\n  \n  local_48 = &local_44;\n  if (*(int *)(DAT_005ea7c8 + 8) == 0) {\n                    \n    FUN_002446e0("../../gold/parameters.h",0x5c,"options",param_1);\n  }\n  iVar1 = *(int *)(*(int *)(*(int *)(DAT_005ea7c8 + 8) + 0x593c) + 0xd4);\n  uVar6 = *(uint *)(param_1 + 0x38);\n  if (iVar1 != 0) {\n    FUN_0030c0e0(iVar1,param_1,uVar6,*(undefined4 *)(param_1 + 0x3c));\n    uVar6 = *(uint *)(param_1 + 0x38);\n  }\n  uVar10 = *(int *)(param_1 + 0x44) - *(int *)(param_1 + 0x40) >> 2;\n  if (uVar10 < uVar6) {\n    FUN_002352a0(param_1 + 0x40,uVar6 - uVar10);\n    uVar6 = *(uint *)(param_1 + 0x38);\n  }\n  else if ((uVar6 < uVar10) &&\n          (iVar1 = *(int *)(param_1 + 0x40) + uVar6 * 4, *(int *)(param_1 + 0x44) != iVar1)) {\n    *(int *)(param_1 + 0x44) = iVar1;\n  }\n  local_50 = 0;\n  if (0 < (int)uVar6) {\n    do {\n      puVar8 = (undefined4 *)(local_50 * 0x20 + *(int *)(param_1 + 0x3c));\n      pcVar3 = (char *)*puVar8;\n      pcVar11 = (char *)puVar8[1];\n      local_58 = pcVar3;\n      if ((pcVar3 != (char *)0x0) && (local_58 = (char *)0x0, *pcVar3 != '\0')) {\n        local_58 = pcVar3;\n      }\n      if ((pcVar11 != (char *)0x0) && (*pcVar11 == '\0')) {\n        pcVar11 = (char *)0x0;\n      }\n      iVar1 = puVar8[2];\n      if (iVar1 == 1) {\n        local_5c = '\x02';\n        local_54 = 1;\n        goto LAB_003123e2;\n      }\n      if (iVar1 == 3) {\n        cVar4 = '\x02';\nLAB_003124f7:\n        local_5c = cVar4;\n        local_54 = 0;\n      }\n      else {\n        local_5c = '\x01';\n        cVar4 = '\x01';\n        if (iVar1 < 0) goto LAB_003124f7;\n        if (iVar1 < 2) {\n          local_54 = 1;\n        }\n        else {\n          local_54 = 0xfff2;\n          if (iVar1 != 4) goto LAB_003124f7;\n        }\n      }\nLAB_003123e2:\n      local_60 = 0;\n      if (puVar8[3] - 1 < 3) {\n        local_60 = (undefined1)*(undefined4 *)(&DAT_004947f4 + (puVar8[3] - 1) * 4);\n      }\n      pcVar3 = (char *)puVar8[6];\n      if ((pcVar3 == (char *)0x0) || (*pcVar3 == '\0')) {\n        uVar5 = local_54 << 8 | local_54 >> 8;\n      }\n      else {\n        local_34[0] = local_2c;\n        sVar9 = strlen(pcVar3);\n        FUN_00072b90(local_34,pcVar3,pcVar3 + sVar9,0);\n                    \n        cVar4 = FUN_0030f450(param_1,local_34,param_4);\n        if (cVar4 == '\0') {\n          if (local_34[0] != local_2c) {\n            FUN_003ae080(local_34[0]);\n          }\n          uVar5 = 0;\n        }\n        else {\n          uVar5 = local_54 << 8 | local_54 >> 8;\n          if (local_34[0] != local_2c) {\n            FUN_003ae080(local_34[0]);\n          }\n        }\n      }\n      local_36 = uVar5;\n      local_44 = 0;\n      local_40 = 0;\n      local_3c = 0;\n      local_38 = local_5c << 4;\n      local_37 = local_60;\n      iVar2 = *(int *)(param_1 + 0x40);\n      iVar1 = local_50 * 4;\n      uVar7 = FUN_00359950(param_2,param_1,local_58,pcVar11,&local_48);\n      local_50 = local_50 + 1;\n      *(undefined4 *)(iVar2 + iVar1) = uVar7;\n    } while (local_50 < *(int *)(param_1 + 0x38));\n  }\n  return;\n}" primitive_type (function_declarator "FUN_00312340(int param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4)" identifier (parameter_list "(int param_1,undefined4 param_2,undefined4 param_3,undefined4 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 "undefined4 param_4" type_identifier identifier) ))) (compound_statement "{\n  int iVar1;\n  int iVar2;\n  char *pcVar3;\n  char cVar4;\n  ushort uVar5;\n  uint uVar6;\n  undefined4 uVar7;\n  undefined4 *puVar8;\n  size_t sVar9;\n  uint uVar10;\n  char *pcVar11;\n  undefined1 local_60;\n  char local_5c;\n  char *local_58;\n  ushort local_54;\n  int local_50;\n  undefined4 *local_48;\n  undefined4 local_44;\n  undefined4 local_40;\n  undefined4 local_3c;\n  char local_38;\n  undefined1 local_37;\n  ushort local_36;\n  undefined1 *local_34 [2];\n  undefined1 local_2c [28];\n  \n  local_48 = &local_44;\n  if (*(int *)(DAT_005ea7c8 + 8) == 0) {\n                    \n    FUN_002446e0("../../gold/parameters.h",0x5c,"options",param_1);\n  }\n  iVar1 = *(int *)(*(int *)(*(int *)(DAT_005ea7c8 + 8) + 0x593c) + 0xd4);\n  uVar6 = *(uint *)(param_1 + 0x38);\n  if (iVar1 != 0) {\n    FUN_0030c0e0(iVar1,param_1,uVar6,*(undefined4 *)(param_1 + 0x3c));\n    uVar6 = *(uint *)(param_1 + 0x38);\n  }\n  uVar10 = *(int *)(param_1 + 0x44) - *(int *)(param_1 + 0x40) >> 2;\n  if (uVar10 < uVar6) {\n    FUN_002352a0(param_1 + 0x40,uVar6 - uVar10);\n    uVar6 = *(uint *)(param_1 + 0x38);\n  }\n  else if ((uVar6 < uVar10) &&\n          (iVar1 = *(int *)(param_1 + 0x40) + uVar6 * 4, *(int *)(param_1 + 0x44) != iVar1)) {\n    *(int *)(param_1 + 0x44) = iVar1;\n  }\n  local_50 = 0;\n  if (0 < (int)uVar6) {\n    do {\n      puVar8 = (undefined4 *)(local_50 * 0x20 + *(int *)(param_1 + 0x3c));\n      pcVar3 = (char *)*puVar8;\n      pcVar11 = (char *)puVar8[1];\n      local_58 = pcVar3;\n      if ((pcVar3 != (char *)0x0) && (local_58 = (char *)0x0, *pcVar3 != '\0')) {\n        local_58 = pcVar3;\n      }\n      if ((pcVar11 != (char *)0x0) && (*pcVar11 == '\0')) {\n        pcVar11 = (char *)0x0;\n      }\n      iVar1 = puVar8[2];\n      if (iVar1 == 1) {\n        local_5c = '\x02';\n        local_54 = 1;\n        goto LAB_003123e2;\n      }\n      if (iVar1 == 3) {\n        cVar4 = '\x02';\nLAB_003124f7:\n        local_5c = cVar4;\n        local_54 = 0;\n      }\n      else {\n        local_5c = '\x01';\n        cVar4 = '\x01';\n        if (iVar1 < 0) goto LAB_003124f7;\n        if (iVar1 < 2) {\n          local_54 = 1;\n        }\n        else {\n          local_54 = 0xfff2;\n          if (iVar1 != 4) goto LAB_003124f7;\n        }\n      }\nLAB_003123e2:\n      local_60 = 0;\n      if (puVar8[3] - 1 < 3) {\n        local_60 = (undefined1)*(undefined4 *)(&DAT_004947f4 + (puVar8[3] - 1) * 4);\n      }\n      pcVar3 = (char *)puVar8[6];\n      if ((pcVar3 == (char *)0x0) || (*pcVar3 == '\0')) {\n        uVar5 = local_54 << 8 | local_54 >> 8;\n      }\n      else {\n        local_34[0] = local_2c;\n        sVar9 = strlen(pcVar3);\n        FUN_00072b90(local_34,pcVar3,pcVar3 + sVar9,0);\n                    \n        cVar4 = FUN_0030f450(param_1,local_34,param_4);\n        if (cVar4 == '\0') {\n          if (local_34[0] != local_2c) {\n            FUN_003ae080(local_34[0]);\n          }\n          uVar5 = 0;\n        }\n        else {\n          uVar5 = local_54 << 8 | local_54 >> 8;\n          if (local_34[0] != local_2c) {\n            FUN_003ae080(local_34[0]);\n          }\n        }\n      }\n      local_36 = uVar5;\n      local_44 = 0;\n      local_40 = 0;\n      local_3c = 0;\n      local_38 = local_5c << 4;\n      local_37 = local_60;\n      iVar2 = *(int *)(param_1 + 0x40);\n      iVar1 = local_50 * 4;\n      uVar7 = FUN_00359950(param_2,param_1,local_58,pcVar11,&local_48);\n      local_50 = local_50 + 1;\n      *(undefined4 *)(iVar2 + iVar1) = uVar7;\n    } while (local_50 < *(int *)(param_1 + 0x38));\n  }\n  return;\n}" { (declaration "int iVar1;" primitive_type identifier ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "char *pcVar3;" primitive_type (pointer_declarator "*pcVar3" * identifier) ;) (declaration "char cVar4;" primitive_type identifier ;) (declaration "ushort uVar5;" type_identifier identifier ;) (declaration "uint uVar6;" type_identifier identifier ;) (declaration "undefined4 uVar7;" type_identifier identifier ;) (declaration "undefined4 *puVar8;" type_identifier (pointer_declarator "*puVar8" * identifier) ;) (declaration "size_t sVar9;" primitive_type identifier ;) (declaration "uint uVar10;" type_identifier identifier ;) (declaration "char *pcVar11;" primitive_type (pointer_declarator "*pcVar11" * identifier) ;) (declaration "undefined1 local_60;" type_identifier identifier ;) (declaration "char local_5c;" primitive_type identifier ;) (declaration "char *local_58;" primitive_type (pointer_declarator "*local_58" * identifier) ;) (declaration "ushort local_54;" type_identifier identifier ;) (declaration "int local_50;" primitive_type identifier ;) (declaration "undefined4 *local_48;" type_identifier (pointer_declarator "*local_48" * identifier) ;) (declaration "undefined4 local_44;" type_identifier identifier ;) (declaration "undefined4 local_40;" type_identifier identifier ;) (declaration "undefined4 local_3c;" type_identifier identifier ;) (declaration "char local_38;" primitive_type identifier ;) (declaration "undefined1 local_37;" type_identifier identifier ;) (declaration "ushort local_36;" type_identifier identifier ;) (declaration "undefined1 *local_34 [2];" type_identifier (pointer_declarator "*local_34 [2]" * (array_declarator "local_34 [2]" identifier [ number_literal ])) ;) (declaration "undefined1 local_2c [28];" type_identifier (array_declarator "local_2c [28]" identifier [ number_literal ]) ;) (expression_statement "local_48 = &local_44;" (assignment_expression "local_48 = &local_44" identifier = (pointer_expression "&local_44" & identifier)) ;) (if_statement "if (*(int *)(DAT_005ea7c8 + 8) == 0) {\n                    \n    FUN_002446e0("../../gold/parameters.h",0x5c,"options",param_1);\n  }" if (parenthesized_expression "(*(int *)(DAT_005ea7c8 + 8) == 0)" ( (binary_expression "*(int *)(DAT_005ea7c8 + 8) == 0" (pointer_expression "*(int *)(DAT_005ea7c8 + 8)" * (cast_expression "(int *)(DAT_005ea7c8 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(DAT_005ea7c8 + 8)" ( (binary_expression "DAT_005ea7c8 + 8" identifier + number_literal) )))) == number_literal) )) (compound_statement "{\n                    \n    FUN_002446e0("../../gold/parameters.h",0x5c,"options",param_1);\n  }" { (expression_statement "FUN_002446e0("../../gold/parameters.h",0x5c,"options",param_1);" (call_expression "FUN_002446e0("../../gold/parameters.h",0x5c,"options",param_1)" identifier (argument_list "("../../gold/parameters.h",0x5c,"options",param_1)" ( (string_literal ""../../gold/parameters.h"" " string_content ") , number_literal , (string_literal ""options"" " string_content ") , identifier ))) ;) })) (expression_statement "iVar1 = *(int *)(*(int *)(*(int *)(DAT_005ea7c8 + 8) + 0x593c) + 0xd4);" (assignment_expression "iVar1 = *(int *)(*(int *)(*(int *)(DAT_005ea7c8 + 8) + 0x593c) + 0xd4)" identifier = (pointer_expression "*(int *)(*(int *)(*(int *)(DAT_005ea7c8 + 8) + 0x593c) + 0xd4)" * (cast_expression "(int *)(*(int *)(*(int *)(DAT_005ea7c8 + 8) + 0x593c) + 0xd4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(*(int *)(DAT_005ea7c8 + 8) + 0x593c) + 0xd4)" ( (binary_expression "*(int *)(*(int *)(DAT_005ea7c8 + 8) + 0x593c) + 0xd4" (pointer_expression "*(int *)(*(int *)(DAT_005ea7c8 + 8) + 0x593c)" * (cast_expression "(int *)(*(int *)(DAT_005ea7c8 + 8) + 0x593c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(DAT_005ea7c8 + 8) + 0x593c)" ( (binary_expression "*(int *)(DAT_005ea7c8 + 8) + 0x593c" (pointer_expression "*(int *)(DAT_005ea7c8 + 8)" * (cast_expression "(int *)(DAT_005ea7c8 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(DAT_005ea7c8 + 8)" ( (binary_expression "DAT_005ea7c8 + 8" identifier + number_literal) )))) + number_literal) )))) + number_literal) ))))) ;) (expression_statement "uVar6 = *(uint *)(param_1 + 0x38);" (assignment_expression "uVar6 = *(uint *)(param_1 + 0x38)" identifier = (pointer_expression "*(uint *)(param_1 + 0x38)" * (cast_expression "(uint *)(param_1 + 0x38)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x38)" ( (binary_expression "param_1 + 0x38" identifier + number_literal) ))))) ;) (if_statement "if (iVar1 != 0) {\n    FUN_0030c0e0(iVar1,param_1,uVar6,*(undefined4 *)(param_1 + 0x3c));\n    uVar6 = *(uint *)(param_1 + 0x38);\n  }" if (parenthesized_expression "(iVar1 != 0)" ( (binary_expression "iVar1 != 0" identifier != number_literal) )) (compound_statement "{\n    FUN_0030c0e0(iVar1,param_1,uVar6,*(undefined4 *)(param_1 + 0x3c));\n    uVar6 = *(uint *)(param_1 + 0x38);\n  }" { (expression_statement "FUN_0030c0e0(iVar1,param_1,uVar6,*(undefined4 *)(param_1 + 0x3c));" (call_expression "FUN_0030c0e0(iVar1,param_1,uVar6,*(undefined4 *)(param_1 + 0x3c))" identifier (argument_list "(iVar1,param_1,uVar6,*(undefined4 *)(param_1 + 0x3c))" ( identifier , identifier , identifier , (pointer_expression "*(undefined4 *)(param_1 + 0x3c)" * (cast_expression "(undefined4 *)(param_1 + 0x3c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x3c)" ( (binary_expression "param_1 + 0x3c" identifier + number_literal) )))) ))) ;) (expression_statement "uVar6 = *(uint *)(param_1 + 0x38);" (assignment_expression "uVar6 = *(uint *)(param_1 + 0x38)" identifier = (pointer_expression "*(uint *)(param_1 + 0x38)" * (cast_expression "(uint *)(param_1 + 0x38)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x38)" ( (binary_expression "param_1 + 0x38" identifier + number_literal) ))))) ;) })) (expression_statement "uVar10 = *(int *)(param_1 + 0x44) - *(int *)(param_1 + 0x40) >> 2;" (assignment_expression "uVar10 = *(int *)(param_1 + 0x44) - *(int *)(param_1 + 0x40) >> 2" identifier = (binary_expression "*(int *)(param_1 + 0x44) - *(int *)(param_1 + 0x40) >> 2" (binary_expression "*(int *)(param_1 + 0x44) - *(int *)(param_1 + 0x40)" (pointer_expression "*(int *)(param_1 + 0x44)" * (cast_expression "(int *)(param_1 + 0x44)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x44)" ( (binary_expression "param_1 + 0x44" identifier + number_literal) )))) - (pointer_expression "*(int *)(param_1 + 0x40)" * (cast_expression "(int *)(param_1 + 0x40)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x40)" ( (binary_expression "param_1 + 0x40" identifier + number_literal) ))))) >> number_literal)) ;) (if_statement "if (uVar10 < uVar6) {\n    FUN_002352a0(param_1 + 0x40,uVar6 - uVar10);\n    uVar6 = *(uint *)(param_1 + 0x38);\n  }\n  else if ((uVar6 < uVar10) &&\n          (iVar1 = *(int *)(param_1 + 0x40) + uVar6 * 4, *(int *)(param_1 + 0x44) != iVar1)) {\n    *(int *)(param_1 + 0x44) = iVar1;\n  }" if (parenthesized_expression "(uVar10 < uVar6)" ( (binary_expression "uVar10 < uVar6" identifier < identifier) )) (compound_statement "{\n    FUN_002352a0(param_1 + 0x40,uVar6 - uVar10);\n    uVar6 = *(uint *)(param_1 + 0x38);\n  }" { (expression_statement "FUN_002352a0(param_1 + 0x40,uVar6 - uVar10);" (call_expression "FUN_002352a0(param_1 + 0x40,uVar6 - uVar10)" identifier (argument_list "(param_1 + 0x40,uVar6 - uVar10)" ( (binary_expression "param_1 + 0x40" identifier + number_literal) , (binary_expression "uVar6 - uVar10" identifier - identifier) ))) ;) (expression_statement "uVar6 = *(uint *)(param_1 + 0x38);" (assignment_expression "uVar6 = *(uint *)(param_1 + 0x38)" identifier = (pointer_expression "*(uint *)(param_1 + 0x38)" * (cast_expression "(uint *)(param_1 + 0x38)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x38)" ( (binary_expression "param_1 + 0x38" identifier + number_literal) ))))) ;) }) (else_clause "else if ((uVar6 < uVar10) &&\n          (iVar1 = *(int *)(param_1 + 0x40) + uVar6 * 4, *(int *)(param_1 + 0x44) != iVar1)) {\n    *(int *)(param_1 + 0x44) = iVar1;\n  }" else (if_statement "if ((uVar6 < uVar10) &&\n          (iVar1 = *(int *)(param_1 + 0x40) + uVar6 * 4, *(int *)(param_1 + 0x44) != iVar1)) {\n    *(int *)(param_1 + 0x44) = iVar1;\n  }" if (parenthesized_expression "((uVar6 < uVar10) &&\n          (iVar1 = *(int *)(param_1 + 0x40) + uVar6 * 4, *(int *)(param_1 + 0x44) != iVar1))" ( (binary_expression "(uVar6 < uVar10) &&\n          (iVar1 = *(int *)(param_1 + 0x40) + uVar6 * 4, *(int *)(param_1 + 0x44) != iVar1)" (parenthesized_expression "(uVar6 < uVar10)" ( (binary_expression "uVar6 < uVar10" identifier < identifier) )) && (parenthesized_expression "(iVar1 = *(int *)(param_1 + 0x40) + uVar6 * 4, *(int *)(param_1 + 0x44) != iVar1)" ( (comma_expression "iVar1 = *(int *)(param_1 + 0x40) + uVar6 * 4, *(int *)(param_1 + 0x44) != iVar1" (assignment_expression "iVar1 = *(int *)(param_1 + 0x40) + uVar6 * 4" identifier = (binary_expression "*(int *)(param_1 + 0x40) + uVar6 * 4" (pointer_expression "*(int *)(param_1 + 0x40)" * (cast_expression "(int *)(param_1 + 0x40)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x40)" ( (binary_expression "param_1 + 0x40" identifier + number_literal) )))) + (binary_expression "uVar6 * 4" identifier * number_literal))) , (binary_expression "*(int *)(param_1 + 0x44) != iVar1" (pointer_expression "*(int *)(param_1 + 0x44)" * (cast_expression "(int *)(param_1 + 0x44)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x44)" ( (binary_expression "param_1 + 0x44" identifier + number_literal) )))) != identifier)) ))) )) (compound_statement "{\n    *(int *)(param_1 + 0x44) = iVar1;\n  }" { (expression_statement "*(int *)(param_1 + 0x44) = iVar1;" (assignment_expression "*(int *)(param_1 + 0x44) = iVar1" (pointer_expression "*(int *)(param_1 + 0x44)" * (cast_expression "(int *)(param_1 + 0x44)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x44)" ( (binary_expression "param_1 + 0x44" identifier + number_literal) )))) = identifier) ;) })))) (expression_statement "local_50 = 0;" (assignment_expression "local_50 = 0" identifier = number_literal) ;) (if_statement "if (0 < (int)uVar6) {\n    do {\n      puVar8 = (undefined4 *)(local_50 * 0x20 + *(int *)(param_1 + 0x3c));\n      pcVar3 = (char *)*puVar8;\n      pcVar11 = (char *)puVar8[1];\n      local_58 = pcVar3;\n      if ((pcVar3 != (char *)0x0) && (local_58 = (char *)0x0, *pcVar3 != '\0')) {\n        local_58 = pcVar3;\n      }\n      if ((pcVar11 != (char *)0x0) && (*pcVar11 == '\0')) {\n        pcVar11 = (char *)0x0;\n      }\n      iVar1 = puVar8[2];\n      if (iVar1 == 1) {\n        local_5c = '\x02';\n        local_54 = 1;\n        goto LAB_003123e2;\n      }\n      if (iVar1 == 3) {\n        cVar4 = '\x02';\nLAB_003124f7:\n        local_5c = cVar4;\n        local_54 = 0;\n      }\n      else {\n        local_5c = '\x01';\n        cVar4 = '\x01';\n        if (iVar1 < 0) goto LAB_003124f7;\n        if (iVar1 < 2) {\n          local_54 = 1;\n        }\n        else {\n          local_54 = 0xfff2;\n          if (iVar1 != 4) goto LAB_003124f7;\n        }\n      }\nLAB_003123e2:\n      local_60 = 0;\n      if (puVar8[3] - 1 < 3) {\n        local_60 = (undefined1)*(undefined4 *)(&DAT_004947f4 + (puVar8[3] - 1) * 4);\n      }\n      pcVar3 = (char *)puVar8[6];\n      if ((pcVar3 == (char *)0x0) || (*pcVar3 == '\0')) {\n        uVar5 = local_54 << 8 | local_54 >> 8;\n      }\n      else {\n        local_34[0] = local_2c;\n        sVar9 = strlen(pcVar3);\n        FUN_00072b90(local_34,pcVar3,pcVar3 + sVar9,0);\n                    \n        cVar4 = FUN_0030f450(param_1,local_34,param_4);\n        if (cVar4 == '\0') {\n          if (local_34[0] != local_2c) {\n            FUN_003ae080(local_34[0]);\n          }\n          uVar5 = 0;\n        }\n        else {\n          uVar5 = local_54 << 8 | local_54 >> 8;\n          if (local_34[0] != local_2c) {\n            FUN_003ae080(local_34[0]);\n          }\n        }\n      }\n      local_36 = uVar5;\n      local_44 = 0;\n      local_40 = 0;\n      local_3c = 0;\n      local_38 = local_5c << 4;\n      local_37 = local_60;\n      iVar2 = *(int *)(param_1 + 0x40);\n      iVar1 = local_50 * 4;\n      uVar7 = FUN_00359950(param_2,param_1,local_58,pcVar11,&local_48);\n      local_50 = local_50 + 1;\n      *(undefined4 *)(iVar2 + iVar1) = uVar7;\n    } while (local_50 < *(int *)(param_1 + 0x38));\n  }" if (parenthesized_expression "(0 < (int)uVar6)" ( (binary_expression "0 < (int)uVar6" number_literal < (cast_expression "(int)uVar6" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n    do {\n      puVar8 = (undefined4 *)(local_50 * 0x20 + *(int *)(param_1 + 0x3c));\n      pcVar3 = (char *)*puVar8;\n      pcVar11 = (char *)puVar8[1];\n      local_58 = pcVar3;\n      if ((pcVar3 != (char *)0x0) && (local_58 = (char *)0x0, *pcVar3 != '\0')) {\n        local_58 = pcVar3;\n      }\n      if ((pcVar11 != (char *)0x0) && (*pcVar11 == '\0')) {\n        pcVar11 = (char *)0x0;\n      }\n      iVar1 = puVar8[2];\n      if (iVar1 == 1) {\n        local_5c = '\x02';\n        local_54 = 1;\n        goto LAB_003123e2;\n      }\n      if (iVar1 == 3) {\n        cVar4 = '\x02';\nLAB_003124f7:\n        local_5c = cVar4;\n        local_54 = 0;\n      }\n      else {\n        local_5c = '\x01';\n        cVar4 = '\x01';\n        if (iVar1 < 0) goto LAB_003124f7;\n        if (iVar1 < 2) {\n          local_54 = 1;\n        }\n        else {\n          local_54 = 0xfff2;\n          if (iVar1 != 4) goto LAB_003124f7;\n        }\n      }\nLAB_003123e2:\n      local_60 = 0;\n      if (puVar8[3] - 1 < 3) {\n        local_60 = (undefined1)*(undefined4 *)(&DAT_004947f4 + (puVar8[3] - 1) * 4);\n      }\n      pcVar3 = (char *)puVar8[6];\n      if ((pcVar3 == (char *)0x0) || (*pcVar3 == '\0')) {\n        uVar5 = local_54 << 8 | local_54 >> 8;\n      }\n      else {\n        local_34[0] = local_2c;\n        sVar9 = strlen(pcVar3);\n        FUN_00072b90(local_34,pcVar3,pcVar3 + sVar9,0);\n                    \n        cVar4 = FUN_0030f450(param_1,local_34,param_4);\n        if (cVar4 == '\0') {\n          if (local_34[0] != local_2c) {\n            FUN_003ae080(local_34[0]);\n          }\n          uVar5 = 0;\n        }\n        else {\n          uVar5 = local_54 << 8 | local_54 >> 8;\n          if (local_34[0] != local_2c) {\n            FUN_003ae080(local_34[0]);\n          }\n        }\n      }\n      local_36 = uVar5;\n      local_44 = 0;\n      local_40 = 0;\n      local_3c = 0;\n      local_38 = local_5c << 4;\n      local_37 = local_60;\n      iVar2 = *(int *)(param_1 + 0x40);\n      iVar1 = local_50 * 4;\n      uVar7 = FUN_00359950(param_2,param_1,local_58,pcVar11,&local_48);\n      local_50 = local_50 + 1;\n      *(undefined4 *)(iVar2 + iVar1) = uVar7;\n    } while (local_50 < *(int *)(param_1 + 0x38));\n  }" { (do_statement "do {\n      puVar8 = (undefined4 *)(local_50 * 0x20 + *(int *)(param_1 + 0x3c));\n      pcVar3 = (char *)*puVar8;\n      pcVar11 = (char *)puVar8[1];\n      local_58 = pcVar3;\n      if ((pcVar3 != (char *)0x0) && (local_58 = (char *)0x0, *pcVar3 != '\0')) {\n        local_58 = pcVar3;\n      }\n      if ((pcVar11 != (char *)0x0) && (*pcVar11 == '\0')) {\n        pcVar11 = (char *)0x0;\n      }\n      iVar1 = puVar8[2];\n      if (iVar1 == 1) {\n        local_5c = '\x02';\n        local_54 = 1;\n        goto LAB_003123e2;\n      }\n      if (iVar1 == 3) {\n        cVar4 = '\x02';\nLAB_003124f7:\n        local_5c = cVar4;\n        local_54 = 0;\n      }\n      else {\n        local_5c = '\x01';\n        cVar4 = '\x01';\n        if (iVar1 < 0) goto LAB_003124f7;\n        if (iVar1 < 2) {\n          local_54 = 1;\n        }\n        else {\n          local_54 = 0xfff2;\n          if (iVar1 != 4) goto LAB_003124f7;\n        }\n      }\nLAB_003123e2:\n      local_60 = 0;\n      if (puVar8[3] - 1 < 3) {\n        local_60 = (undefined1)*(undefined4 *)(&DAT_004947f4 + (puVar8[3] - 1) * 4);\n      }\n      pcVar3 = (char *)puVar8[6];\n      if ((pcVar3 == (char *)0x0) || (*pcVar3 == '\0')) {\n        uVar5 = local_54 << 8 | local_54 >> 8;\n      }\n      else {\n        local_34[0] = local_2c;\n        sVar9 = strlen(pcVar3);\n        FUN_00072b90(local_34,pcVar3,pcVar3 + sVar9,0);\n                    \n        cVar4 = FUN_0030f450(param_1,local_34,param_4);\n        if (cVar4 == '\0') {\n          if (local_34[0] != local_2c) {\n            FUN_003ae080(local_34[0]);\n          }\n          uVar5 = 0;\n        }\n        else {\n          uVar5 = local_54 << 8 | local_54 >> 8;\n          if (local_34[0] != local_2c) {\n            FUN_003ae080(local_34[0]);\n          }\n        }\n      }\n      local_36 = uVar5;\n      local_44 = 0;\n      local_40 = 0;\n      local_3c = 0;\n      local_38 = local_5c << 4;\n      local_37 = local_60;\n      iVar2 = *(int *)(param_1 + 0x40);\n      iVar1 = local_50 * 4;\n      uVar7 = FUN_00359950(param_2,param_1,local_58,pcVar11,&local_48);\n      local_50 = local_50 + 1;\n      *(undefined4 *)(iVar2 + iVar1) = uVar7;\n    } while (local_50 < *(int *)(param_1 + 0x38));" do (compound_statement "{\n      puVar8 = (undefined4 *)(local_50 * 0x20 + *(int *)(param_1 + 0x3c));\n      pcVar3 = (char *)*puVar8;\n      pcVar11 = (char *)puVar8[1];\n      local_58 = pcVar3;\n      if ((pcVar3 != (char *)0x0) && (local_58 = (char *)0x0, *pcVar3 != '\0')) {\n        local_58 = pcVar3;\n      }\n      if ((pcVar11 != (char *)0x0) && (*pcVar11 == '\0')) {\n        pcVar11 = (char *)0x0;\n      }\n      iVar1 = puVar8[2];\n      if (iVar1 == 1) {\n        local_5c = '\x02';\n        local_54 = 1;\n        goto LAB_003123e2;\n      }\n      if (iVar1 == 3) {\n        cVar4 = '\x02';\nLAB_003124f7:\n        local_5c = cVar4;\n        local_54 = 0;\n      }\n      else {\n        local_5c = '\x01';\n        cVar4 = '\x01';\n        if (iVar1 < 0) goto LAB_003124f7;\n        if (iVar1 < 2) {\n          local_54 = 1;\n        }\n        else {\n          local_54 = 0xfff2;\n          if (iVar1 != 4) goto LAB_003124f7;\n        }\n      }\nLAB_003123e2:\n      local_60 = 0;\n      if (puVar8[3] - 1 < 3) {\n        local_60 = (undefined1)*(undefined4 *)(&DAT_004947f4 + (puVar8[3] - 1) * 4);\n      }\n      pcVar3 = (char *)puVar8[6];\n      if ((pcVar3 == (char *)0x0) || (*pcVar3 == '\0')) {\n        uVar5 = local_54 << 8 | local_54 >> 8;\n      }\n      else {\n        local_34[0] = local_2c;\n        sVar9 = strlen(pcVar3);\n        FUN_00072b90(local_34,pcVar3,pcVar3 + sVar9,0);\n                    \n        cVar4 = FUN_0030f450(param_1,local_34,param_4);\n        if (cVar4 == '\0') {\n          if (local_34[0] != local_2c) {\n            FUN_003ae080(local_34[0]);\n          }\n          uVar5 = 0;\n        }\n        else {\n          uVar5 = local_54 << 8 | local_54 >> 8;\n          if (local_34[0] != local_2c) {\n            FUN_003ae080(local_34[0]);\n          }\n        }\n      }\n      local_36 = uVar5;\n      local_44 = 0;\n      local_40 = 0;\n      local_3c = 0;\n      local_38 = local_5c << 4;\n      local_37 = local_60;\n      iVar2 = *(int *)(param_1 + 0x40);\n      iVar1 = local_50 * 4;\n      uVar7 = FUN_00359950(param_2,param_1,local_58,pcVar11,&local_48);\n      local_50 = local_50 + 1;\n      *(undefined4 *)(iVar2 + iVar1) = uVar7;\n    }" { (expression_statement "puVar8 = (undefined4 *)(local_50 * 0x20 + *(int *)(param_1 + 0x3c));" (assignment_expression "puVar8 = (undefined4 *)(local_50 * 0x20 + *(int *)(param_1 + 0x3c))" identifier = (cast_expression "(undefined4 *)(local_50 * 0x20 + *(int *)(param_1 + 0x3c))" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_50 * 0x20 + *(int *)(param_1 + 0x3c))" ( (binary_expression "local_50 * 0x20 + *(int *)(param_1 + 0x3c)" (binary_expression "local_50 * 0x20" identifier * number_literal) + (pointer_expression "*(int *)(param_1 + 0x3c)" * (cast_expression "(int *)(param_1 + 0x3c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x3c)" ( (binary_expression "param_1 + 0x3c" identifier + number_literal) ))))) )))) ;) (expression_statement "pcVar3 = (char *)*puVar8;" (assignment_expression "pcVar3 = (char *)*puVar8" identifier = (cast_expression "(char *)*puVar8" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar8" * identifier))) ;) (expression_statement "pcVar11 = (char *)puVar8[1];" (assignment_expression "pcVar11 = (char *)puVar8[1]" identifier = (cast_expression "(char *)puVar8[1]" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar8[1]" identifier [ number_literal ]))) ;) (expression_statement "local_58 = pcVar3;" (assignment_expression "local_58 = pcVar3" identifier = identifier) ;) (if_statement "if ((pcVar3 != (char *)0x0) && (local_58 = (char *)0x0, *pcVar3 != '\0')) {\n        local_58 = pcVar3;\n      }" if (parenthesized_expression "((pcVar3 != (char *)0x0) && (local_58 = (char *)0x0, *pcVar3 != '\0'))" ( (binary_expression "(pcVar3 != (char *)0x0) && (local_58 = (char *)0x0, *pcVar3 != '\0')" (parenthesized_expression "(pcVar3 != (char *)0x0)" ( (binary_expression "pcVar3 != (char *)0x0" identifier != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) && (parenthesized_expression "(local_58 = (char *)0x0, *pcVar3 != '\0')" ( (comma_expression "local_58 = (char *)0x0, *pcVar3 != '\0'" (assignment_expression "local_58 = (char *)0x0" identifier = (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) , (binary_expression "*pcVar3 != '\0'" (pointer_expression "*pcVar3" * identifier) != (char_literal "'\0'" ' escape_sequence '))) ))) )) (compound_statement "{\n        local_58 = pcVar3;\n      }" { (expression_statement "local_58 = pcVar3;" (assignment_expression "local_58 = pcVar3" identifier = identifier) ;) })) (if_statement "if ((pcVar11 != (char *)0x0) && (*pcVar11 == '\0')) {\n        pcVar11 = (char *)0x0;\n      }" if (parenthesized_expression "((pcVar11 != (char *)0x0) && (*pcVar11 == '\0'))" ( (binary_expression "(pcVar11 != (char *)0x0) && (*pcVar11 == '\0')" (parenthesized_expression "(pcVar11 != (char *)0x0)" ( (binary_expression "pcVar11 != (char *)0x0" identifier != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) && (parenthesized_expression "(*pcVar11 == '\0')" ( (binary_expression "*pcVar11 == '\0'" (pointer_expression "*pcVar11" * identifier) == (char_literal "'\0'" ' escape_sequence ')) ))) )) (compound_statement "{\n        pcVar11 = (char *)0x0;\n      }" { (expression_statement "pcVar11 = (char *)0x0;" (assignment_expression "pcVar11 = (char *)0x0" identifier = (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) })) (expression_statement "iVar1 = puVar8[2];" (assignment_expression "iVar1 = puVar8[2]" identifier = (subscript_expression "puVar8[2]" identifier [ number_literal ])) ;) (if_statement "if (iVar1 == 1) {\n        local_5c = '\x02';\n        local_54 = 1;\n        goto LAB_003123e2;\n      }" if (parenthesized_expression "(iVar1 == 1)" ( (binary_expression "iVar1 == 1" identifier == number_literal) )) (compound_statement "{\n        local_5c = '\x02';\n        local_54 = 1;\n        goto LAB_003123e2;\n      }" { (expression_statement "local_5c = '\x02';" (assignment_expression "local_5c = '\x02'" identifier = (char_literal "'\x02'" ' escape_sequence ')) ;) (expression_statement "local_54 = 1;" (assignment_expression "local_54 = 1" identifier = number_literal) ;) (goto_statement "goto LAB_003123e2;" goto statement_identifier ;) })) (if_statement "if (iVar1 == 3) {\n        cVar4 = '\x02';\nLAB_003124f7:\n        local_5c = cVar4;\n        local_54 = 0;\n      }\n      else {\n        local_5c = '\x01';\n        cVar4 = '\x01';\n        if (iVar1 < 0) goto LAB_003124f7;\n        if (iVar1 < 2) {\n          local_54 = 1;\n        }\n        else {\n          local_54 = 0xfff2;\n          if (iVar1 != 4) goto LAB_003124f7;\n        }\n      }" if (parenthesized_expression "(iVar1 == 3)" ( (binary_expression "iVar1 == 3" identifier == number_literal) )) (compound_statement "{\n        cVar4 = '\x02';\nLAB_003124f7:\n        local_5c = cVar4;\n        local_54 = 0;\n      }" { (expression_statement "cVar4 = '\x02';" (assignment_expression "cVar4 = '\x02'" identifier = (char_literal "'\x02'" ' escape_sequence ')) ;) (labeled_statement "LAB_003124f7:\n        local_5c = cVar4;" statement_identifier : (expression_statement "local_5c = cVar4;" (assignment_expression "local_5c = cVar4" identifier = identifier) ;)) (expression_statement "local_54 = 0;" (assignment_expression "local_54 = 0" identifier = number_literal) ;) }) (else_clause "else {\n        local_5c = '\x01';\n        cVar4 = '\x01';\n        if (iVar1 < 0) goto LAB_003124f7;\n        if (iVar1 < 2) {\n          local_54 = 1;\n        }\n        else {\n          local_54 = 0xfff2;\n          if (iVar1 != 4) goto LAB_003124f7;\n        }\n      }" else (compound_statement "{\n        local_5c = '\x01';\n        cVar4 = '\x01';\n        if (iVar1 < 0) goto LAB_003124f7;\n        if (iVar1 < 2) {\n          local_54 = 1;\n        }\n        else {\n          local_54 = 0xfff2;\n          if (iVar1 != 4) goto LAB_003124f7;\n        }\n      }" { (expression_statement "local_5c = '\x01';" (assignment_expression "local_5c = '\x01'" identifier = (char_literal "'\x01'" ' escape_sequence ')) ;) (expression_statement "cVar4 = '\x01';" (assignment_expression "cVar4 = '\x01'" identifier = (char_literal "'\x01'" ' escape_sequence ')) ;) (if_statement "if (iVar1 < 0) goto LAB_003124f7;" if (parenthesized_expression "(iVar1 < 0)" ( (binary_expression "iVar1 < 0" identifier < number_literal) )) (goto_statement "goto LAB_003124f7;" goto statement_identifier ;)) (if_statement "if (iVar1 < 2) {\n          local_54 = 1;\n        }\n        else {\n          local_54 = 0xfff2;\n          if (iVar1 != 4) goto LAB_003124f7;\n        }" if (parenthesized_expression "(iVar1 < 2)" ( (binary_expression "iVar1 < 2" identifier < number_literal) )) (compound_statement "{\n          local_54 = 1;\n        }" { (expression_statement "local_54 = 1;" (assignment_expression "local_54 = 1" identifier = number_literal) ;) }) (else_clause "else {\n          local_54 = 0xfff2;\n          if (iVar1 != 4) goto LAB_003124f7;\n        }" else (compound_statement "{\n          local_54 = 0xfff2;\n          if (iVar1 != 4) goto LAB_003124f7;\n        }" { (expression_statement "local_54 = 0xfff2;" (assignment_expression "local_54 = 0xfff2" identifier = number_literal) ;) (if_statement "if (iVar1 != 4) goto LAB_003124f7;" if (parenthesized_expression "(iVar1 != 4)" ( (binary_expression "iVar1 != 4" identifier != number_literal) )) (goto_statement "goto LAB_003124f7;" goto statement_identifier ;)) }))) }))) (labeled_statement "LAB_003123e2:\n      local_60 = 0;" statement_identifier : (expression_statement "local_60 = 0;" (assignment_expression "local_60 = 0" identifier = number_literal) ;)) (if_statement "if (puVar8[3] - 1 < 3) {\n        local_60 = (undefined1)*(undefined4 *)(&DAT_004947f4 + (puVar8[3] - 1) * 4);\n      }" if (parenthesized_expression "(puVar8[3] - 1 < 3)" ( (binary_expression "puVar8[3] - 1 < 3" (binary_expression "puVar8[3] - 1" (subscript_expression "puVar8[3]" identifier [ number_literal ]) - number_literal) < number_literal) )) (compound_statement "{\n        local_60 = (undefined1)*(undefined4 *)(&DAT_004947f4 + (puVar8[3] - 1) * 4);\n      }" { (expression_statement "local_60 = (undefined1)*(undefined4 *)(&DAT_004947f4 + (puVar8[3] - 1) * 4);" (assignment_expression "local_60 = (undefined1)*(undefined4 *)(&DAT_004947f4 + (puVar8[3] - 1) * 4)" identifier = (binary_expression "(undefined1)*(undefined4 *)(&DAT_004947f4 + (puVar8[3] - 1) * 4)" (parenthesized_expression "(undefined1)" ( identifier )) * (cast_expression "(undefined4 *)(&DAT_004947f4 + (puVar8[3] - 1) * 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(&DAT_004947f4 + (puVar8[3] - 1) * 4)" ( (binary_expression "&DAT_004947f4 + (puVar8[3] - 1) * 4" (pointer_expression "&DAT_004947f4" & identifier) + (binary_expression "(puVar8[3] - 1) * 4" (parenthesized_expression "(puVar8[3] - 1)" ( (binary_expression "puVar8[3] - 1" (subscript_expression "puVar8[3]" identifier [ number_literal ]) - number_literal) )) * number_literal)) ))))) ;) })) (expression_statement "pcVar3 = (char *)puVar8[6];" (assignment_expression "pcVar3 = (char *)puVar8[6]" identifier = (cast_expression "(char *)puVar8[6]" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar8[6]" identifier [ number_literal ]))) ;) (if_statement "if ((pcVar3 == (char *)0x0) || (*pcVar3 == '\0')) {\n        uVar5 = local_54 << 8 | local_54 >> 8;\n      }\n      else {\n        local_34[0] = local_2c;\n        sVar9 = strlen(pcVar3);\n        FUN_00072b90(local_34,pcVar3,pcVar3 + sVar9,0);\n                    \n        cVar4 = FUN_0030f450(param_1,local_34,param_4);\n        if (cVar4 == '\0') {\n          if (local_34[0] != local_2c) {\n            FUN_003ae080(local_34[0]);\n          }\n          uVar5 = 0;\n        }\n        else {\n          uVar5 = local_54 << 8 | local_54 >> 8;\n          if (local_34[0] != local_2c) {\n            FUN_003ae080(local_34[0]);\n          }\n        }\n      }" if (parenthesized_expression "((pcVar3 == (char *)0x0) || (*pcVar3 == '\0'))" ( (binary_expression "(pcVar3 == (char *)0x0) || (*pcVar3 == '\0')" (parenthesized_expression "(pcVar3 == (char *)0x0)" ( (binary_expression "pcVar3 == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) || (parenthesized_expression "(*pcVar3 == '\0')" ( (binary_expression "*pcVar3 == '\0'" (pointer_expression "*pcVar3" * identifier) == (char_literal "'\0'" ' escape_sequence ')) ))) )) (compound_statement "{\n        uVar5 = local_54 << 8 | local_54 >> 8;\n      }" { (expression_statement "uVar5 = local_54 << 8 | local_54 >> 8;" (assignment_expression "uVar5 = local_54 << 8 | local_54 >> 8" identifier = (binary_expression "local_54 << 8 | local_54 >> 8" (binary_expression "local_54 << 8" identifier << number_literal) | (binary_expression "local_54 >> 8" identifier >> number_literal))) ;) }) (else_clause "else {\n        local_34[0] = local_2c;\n        sVar9 = strlen(pcVar3);\n        FUN_00072b90(local_34,pcVar3,pcVar3 + sVar9,0);\n                    \n        cVar4 = FUN_0030f450(param_1,local_34,param_4);\n        if (cVar4 == '\0') {\n          if (local_34[0] != local_2c) {\n            FUN_003ae080(local_34[0]);\n          }\n          uVar5 = 0;\n        }\n        else {\n          uVar5 = local_54 << 8 | local_54 >> 8;\n          if (local_34[0] != local_2c) {\n            FUN_003ae080(local_34[0]);\n          }\n        }\n      }" else (compound_statement "{\n        local_34[0] = local_2c;\n        sVar9 = strlen(pcVar3);\n        FUN_00072b90(local_34,pcVar3,pcVar3 + sVar9,0);\n                    \n        cVar4 = FUN_0030f450(param_1,local_34,param_4);\n        if (cVar4 == '\0') {\n          if (local_34[0] != local_2c) {\n            FUN_003ae080(local_34[0]);\n          }\n          uVar5 = 0;\n        }\n        else {\n          uVar5 = local_54 << 8 | local_54 >> 8;\n          if (local_34[0] != local_2c) {\n            FUN_003ae080(local_34[0]);\n          }\n        }\n      }" { (expression_statement "local_34[0] = local_2c;" (assignment_expression "local_34[0] = local_2c" (subscript_expression "local_34[0]" identifier [ number_literal ]) = identifier) ;) (expression_statement "sVar9 = strlen(pcVar3);" (assignment_expression "sVar9 = strlen(pcVar3)" identifier = (call_expression "strlen(pcVar3)" identifier (argument_list "(pcVar3)" ( identifier )))) ;) (expression_statement "FUN_00072b90(local_34,pcVar3,pcVar3 + sVar9,0);" (call_expression "FUN_00072b90(local_34,pcVar3,pcVar3 + sVar9,0)" identifier (argument_list "(local_34,pcVar3,pcVar3 + sVar9,0)" ( identifier , identifier , (binary_expression "pcVar3 + sVar9" identifier + identifier) , number_literal ))) ;) (expression_statement "cVar4 = FUN_0030f450(param_1,local_34,param_4);" (assignment_expression "cVar4 = FUN_0030f450(param_1,local_34,param_4)" identifier = (call_expression "FUN_0030f450(param_1,local_34,param_4)" identifier (argument_list "(param_1,local_34,param_4)" ( identifier , identifier , identifier )))) ;) (if_statement "if (cVar4 == '\0') {\n          if (local_34[0] != local_2c) {\n            FUN_003ae080(local_34[0]);\n          }\n          uVar5 = 0;\n        }\n        else {\n          uVar5 = local_54 << 8 | local_54 >> 8;\n          if (local_34[0] != local_2c) {\n            FUN_003ae080(local_34[0]);\n          }\n        }" if (parenthesized_expression "(cVar4 == '\0')" ( (binary_expression "cVar4 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n          if (local_34[0] != local_2c) {\n            FUN_003ae080(local_34[0]);\n          }\n          uVar5 = 0;\n        }" { (if_statement "if (local_34[0] != local_2c) {\n            FUN_003ae080(local_34[0]);\n          }" if (parenthesized_expression "(local_34[0] != local_2c)" ( (binary_expression "local_34[0] != local_2c" (subscript_expression "local_34[0]" identifier [ number_literal ]) != identifier) )) (compound_statement "{\n            FUN_003ae080(local_34[0]);\n          }" { (expression_statement "FUN_003ae080(local_34[0]);" (call_expression "FUN_003ae080(local_34[0])" identifier (argument_list "(local_34[0])" ( (subscript_expression "local_34[0]" identifier [ number_literal ]) ))) ;) })) (expression_statement "uVar5 = 0;" (assignment_expression "uVar5 = 0" identifier = number_literal) ;) }) (else_clause "else {\n          uVar5 = local_54 << 8 | local_54 >> 8;\n          if (local_34[0] != local_2c) {\n            FUN_003ae080(local_34[0]);\n          }\n        }" else (compound_statement "{\n          uVar5 = local_54 << 8 | local_54 >> 8;\n          if (local_34[0] != local_2c) {\n            FUN_003ae080(local_34[0]);\n          }\n        }" { (expression_statement "uVar5 = local_54 << 8 | local_54 >> 8;" (assignment_expression "uVar5 = local_54 << 8 | local_54 >> 8" identifier = (binary_expression "local_54 << 8 | local_54 >> 8" (binary_expression "local_54 << 8" identifier << number_literal) | (binary_expression "local_54 >> 8" identifier >> number_literal))) ;) (if_statement "if (local_34[0] != local_2c) {\n            FUN_003ae080(local_34[0]);\n          }" if (parenthesized_expression "(local_34[0] != local_2c)" ( (binary_expression "local_34[0] != local_2c" (subscript_expression "local_34[0]" identifier [ number_literal ]) != identifier) )) (compound_statement "{\n            FUN_003ae080(local_34[0]);\n          }" { (expression_statement "FUN_003ae080(local_34[0]);" (call_expression "FUN_003ae080(local_34[0])" identifier (argument_list "(local_34[0])" ( (subscript_expression "local_34[0]" identifier [ number_literal ]) ))) ;) })) }))) }))) (expression_statement "local_36 = uVar5;" (assignment_expression "local_36 = uVar5" identifier = identifier) ;) (expression_statement "local_44 = 0;" (assignment_expression "local_44 = 0" identifier = number_literal) ;) (expression_statement "local_40 = 0;" (assignment_expression "local_40 = 0" identifier = number_literal) ;) (expression_statement "local_3c = 0;" (assignment_expression "local_3c = 0" identifier = number_literal) ;) (expression_statement "local_38 = local_5c << 4;" (assignment_expression "local_38 = local_5c << 4" identifier = (binary_expression "local_5c << 4" identifier << number_literal)) ;) (expression_statement "local_37 = local_60;" (assignment_expression "local_37 = local_60" identifier = identifier) ;) (expression_statement "iVar2 = *(int *)(param_1 + 0x40);" (assignment_expression "iVar2 = *(int *)(param_1 + 0x40)" identifier = (pointer_expression "*(int *)(param_1 + 0x40)" * (cast_expression "(int *)(param_1 + 0x40)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x40)" ( (binary_expression "param_1 + 0x40" identifier + number_literal) ))))) ;) (expression_statement "iVar1 = local_50 * 4;" (assignment_expression "iVar1 = local_50 * 4" identifier = (binary_expression "local_50 * 4" identifier * number_literal)) ;) (expression_statement "uVar7 = FUN_00359950(param_2,param_1,local_58,pcVar11,&local_48);" (assignment_expression "uVar7 = FUN_00359950(param_2,param_1,local_58,pcVar11,&local_48)" identifier = (call_expression "FUN_00359950(param_2,param_1,local_58,pcVar11,&local_48)" identifier (argument_list "(param_2,param_1,local_58,pcVar11,&local_48)" ( identifier , identifier , identifier , identifier , (pointer_expression "&local_48" & identifier) )))) ;) (expression_statement "local_50 = local_50 + 1;" (assignment_expression "local_50 = local_50 + 1" identifier = (binary_expression "local_50 + 1" identifier + number_literal)) ;) (expression_statement "*(undefined4 *)(iVar2 + iVar1) = uVar7;" (assignment_expression "*(undefined4 *)(iVar2 + iVar1) = uVar7" (pointer_expression "*(undefined4 *)(iVar2 + iVar1)" * (cast_expression "(undefined4 *)(iVar2 + iVar1)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + iVar1)" ( (binary_expression "iVar2 + iVar1" identifier + identifier) )))) = identifier) ;) }) while (parenthesized_expression "(local_50 < *(int *)(param_1 + 0x38))" ( (binary_expression "local_50 < *(int *)(param_1 + 0x38)" identifier < (pointer_expression "*(int *)(param_1 + 0x38)" * (cast_expression "(int *)(param_1 + 0x38)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x38)" ( (binary_expression "param_1 + 0x38" identifier + number_literal) ))))) )) ;) })) (return_statement "return;" return ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) ))) (compound_statement { (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 (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * 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 IDENT ;) (declaration TYPE (pointer_declarator * (array_declarator IDENT [ LIT ])) ;) (declaration TYPE (array_declarator IDENT [ LIT ]) ;) (expression_statement (assignment_expression IDENT = (pointer_expression & 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 ") , IDENT ))) ;) })) (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 (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) )))) + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ))) ;) (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 = (binary_expression (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) - (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) >> LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < IDENT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (binary_expression IDENT + LIT) , (binary_expression IDENT - IDENT) ))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) }) (else_clause else (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT < IDENT) )) && (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + (binary_expression IDENT * LIT))) , (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) != IDENT)) ))) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) })))) (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT < (cast_expression ( (type_descriptor TYPE) ) IDENT)) )) (compound_statement { (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT * LIT) + (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) && (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) , (binary_expression (pointer_expression * IDENT) != (char_literal ' escape_sequence '))) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) })) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) && (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) == (char_literal ' escape_sequence ')) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) })) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (char_literal ' escape_sequence ')) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (goto_statement goto statement_identifier ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (char_literal ' escape_sequence ')) ;) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = IDENT) ;)) (expression_statement (assignment_expression IDENT = LIT) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (char_literal ' escape_sequence ')) ;) (expression_statement (assignment_expression IDENT = (char_literal ' escape_sequence ')) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (goto_statement goto statement_identifier ;)) (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (goto_statement goto statement_identifier ;)) }))) }))) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = LIT) ;)) (if_statement if (parenthesized_expression ( (binary_expression (binary_expression (subscript_expression IDENT [ LIT ]) - LIT) < LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( IDENT )) * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression & IDENT) + (binary_expression (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) - LIT) )) * LIT)) ))))) ;) })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) || (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) == (char_literal ' escape_sequence ')) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT << LIT) | (binary_expression IDENT >> LIT))) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT , (binary_expression IDENT + IDENT) , LIT ))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (char_literal ' escape_sequence ')) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) != IDENT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (subscript_expression IDENT [ LIT ]) ))) ;) })) (expression_statement (assignment_expression IDENT = LIT) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT << LIT) | (binary_expression IDENT >> LIT))) ;) (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) != IDENT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (subscript_expression IDENT [ LIT ]) ))) ;) })) }))) }))) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT << LIT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (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 = (binary_expression IDENT * LIT)) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT , IDENT , (pointer_expression & IDENT) )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + IDENT) )))) = IDENT) ;) }) while (parenthesized_expression ( (binary_expression IDENT < (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) ;) })) (return_statement return ;) })))
(function_definition "void FUN_00312340(int param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4)\n\n{\n  int iVar1;\n  int iVar2;\n  char *pcVar3;\n  char cVar4;\n  ushort uVar5;\n  uint uVar6;\n  undefined4 uVar7;\n  undefined4 *puVar8;\n  size_t sVar9;\n  uint uVar10;\n  char *pcVar11;\n  undefined1 local_60;\n  char local_5c;\n  char *local_58;\n  ushort local_54;\n  int local_50;\n  undefined4 *local_48;\n  undefined4 local_44;\n  undefined4 local_40;\n  undefined4 local_3c;\n  char local_38;\n  undefined1 local_37;\n  ushort local_36;\n  undefined1 *local_34 [2];\n  undefined1 local_2c [28];\n  \n  local_48 = &local_44;\n  if (*(int *)(DAT_005ea7c8 + 8) == 0) {\n                    \n    FUN_002446e0("../../gold/parameters.h",0x5c,"options",param_1);\n  }\n  iVar1 = *(int *)(*(int *)(*(int *)(DAT_005ea7c8 + 8) + 0x593c) + 0xd4);\n  uVar6 = *(uint *)(param_1 + 0x38);\n  if (iVar1 != 0) {\n    FUN_0030c0e0(iVar1,param_1,uVar6,*(undefined4 *)(param_1 + 0x3c));\n    uVar6 = *(uint *)(param_1 + 0x38);\n  }\n  uVar10 = *(int *)(param_1 + 0x44) - *(int *)(param_1 + 0x40) >> 2;\n  if (uVar10 < uVar6) {\n    FUN_002352a0(param_1 + 0x40,uVar6 - uVar10);\n    uVar6 = *(uint *)(param_1 + 0x38);\n  }\n  else if ((uVar6 < uVar10) &&\n          (iVar1 = *(int *)(param_1 + 0x40) + uVar6 * 4, *(int *)(param_1 + 0x44) != iVar1)) {\n    *(int *)(param_1 + 0x44) = iVar1;\n  }\n  local_50 = 0;\n  if (0 < (int)uVar6) {\n    do {\n      puVar8 = (undefined4 *)(local_50 * 0x20 + *(int *)(param_1 + 0x3c));\n      pcVar3 = (char *)*puVar8;\n      pcVar11 = (char *)puVar8[1];\n      local_58 = pcVar3;\n      if ((pcVar3 != (char *)0x0) && (local_58 = (char *)0x0, *pcVar3 != '\0')) {\n        local_58 = pcVar3;\n      }\n      if ((pcVar11 != (char *)0x0) && (*pcVar11 == '\0')) {\n        pcVar11 = (char *)0x0;\n      }\n      iVar1 = puVar8[2];\n      if (iVar1 == 1) {\n        local_5c = '\x02';\n        local_54 = 1;\n        goto LAB_003123e2;\n      }\n      if (iVar1 == 3) {\n        cVar4 = '\x02';\nLAB_003124f7:\n        local_5c = cVar4;\n        local_54 = 0;\n      }\n      else {\n        local_5c = '\x01';\n        cVar4 = '\x01';\n        if (iVar1 < 0) goto LAB_003124f7;\n        if (iVar1 < 2) {\n          local_54 = 1;\n        }\n        else {\n          local_54 = 0xfff2;\n          if (iVar1 != 4) goto LAB_003124f7;\n        }\n      }\nLAB_003123e2:\n      local_60 = 0;\n      if (puVar8[3] - 1 < 3) {\n        local_60 = (undefined1)*(undefined4 *)(&DAT_004947f4 + (puVar8[3] - 1) * 4);\n      }\n      pcVar3 = (char *)puVar8[6];\n      if ((pcVar3 == (char *)0x0) || (*pcVar3 == '\0')) {\n        uVar5 = local_54 << 8 | local_54 >> 8;\n      }\n      else {\n        local_34[0] = local_2c;\n        sVar9 = strlen(pcVar3);\n        FUN_00072b90(local_34,pcVar3,pcVar3 + sVar9,0);\n                    \n        cVar4 = FUN_0030f450(param_1,local_34,param_4);\n        if (cVar4 == '\0') {\n          if (local_34[0] != local_2c) {\n            FUN_003ae080(local_34[0]);\n          }\n          uVar5 = 0;\n        }\n        else {\n          uVar5 = local_54 << 8 | local_54 >> 8;\n          if (local_34[0] != local_2c) {\n            FUN_003ae080(local_34[0]);\n          }\n        }\n      }\n      local_36 = uVar5;\n      local_44 = 0;\n      local_40 = 0;\n      local_3c = 0;\n      local_38 = local_5c << 4;\n      local_37 = local_60;\n      iVar2 = *(int *)(param_1 + 0x40);\n      iVar1 = local_50 * 4;\n      uVar7 = FUN_00359950(param_2,param_1,local_58,pcVar11,&local_48);\n      local_50 = local_50 + 1;\n      *(undefined4 *)(iVar2 + iVar1) = uVar7;\n    } while (local_50 < *(int *)(param_1 + 0x38));\n  }\n  return;\n}" (primitive_type "void") (function_declarator "FUN_00312340(int param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4)" (identifier "FUN_00312340") (parameter_list "(int param_1,undefined4 param_2,undefined4 param_3,undefined4 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 "undefined4 param_4" (type_identifier "undefined4") (identifier "param_4")) () ")"))) (compound_statement "{\n  int iVar1;\n  int iVar2;\n  char *pcVar3;\n  char cVar4;\n  ushort uVar5;\n  uint uVar6;\n  undefined4 uVar7;\n  undefined4 *puVar8;\n  size_t sVar9;\n  uint uVar10;\n  char *pcVar11;\n  undefined1 local_60;\n  char local_5c;\n  char *local_58;\n  ushort local_54;\n  int local_50;\n  undefined4 *local_48;\n  undefined4 local_44;\n  undefined4 local_40;\n  undefined4 local_3c;\n  char local_38;\n  undefined1 local_37;\n  ushort local_36;\n  undefined1 *local_34 [2];\n  undefined1 local_2c [28];\n  \n  local_48 = &local_44;\n  if (*(int *)(DAT_005ea7c8 + 8) == 0) {\n                    \n    FUN_002446e0("../../gold/parameters.h",0x5c,"options",param_1);\n  }\n  iVar1 = *(int *)(*(int *)(*(int *)(DAT_005ea7c8 + 8) + 0x593c) + 0xd4);\n  uVar6 = *(uint *)(param_1 + 0x38);\n  if (iVar1 != 0) {\n    FUN_0030c0e0(iVar1,param_1,uVar6,*(undefined4 *)(param_1 + 0x3c));\n    uVar6 = *(uint *)(param_1 + 0x38);\n  }\n  uVar10 = *(int *)(param_1 + 0x44) - *(int *)(param_1 + 0x40) >> 2;\n  if (uVar10 < uVar6) {\n    FUN_002352a0(param_1 + 0x40,uVar6 - uVar10);\n    uVar6 = *(uint *)(param_1 + 0x38);\n  }\n  else if ((uVar6 < uVar10) &&\n          (iVar1 = *(int *)(param_1 + 0x40) + uVar6 * 4, *(int *)(param_1 + 0x44) != iVar1)) {\n    *(int *)(param_1 + 0x44) = iVar1;\n  }\n  local_50 = 0;\n  if (0 < (int)uVar6) {\n    do {\n      puVar8 = (undefined4 *)(local_50 * 0x20 + *(int *)(param_1 + 0x3c));\n      pcVar3 = (char *)*puVar8;\n      pcVar11 = (char *)puVar8[1];\n      local_58 = pcVar3;\n      if ((pcVar3 != (char *)0x0) && (local_58 = (char *)0x0, *pcVar3 != '\0')) {\n        local_58 = pcVar3;\n      }\n      if ((pcVar11 != (char *)0x0) && (*pcVar11 == '\0')) {\n        pcVar11 = (char *)0x0;\n      }\n      iVar1 = puVar8[2];\n      if (iVar1 == 1) {\n        local_5c = '\x02';\n        local_54 = 1;\n        goto LAB_003123e2;\n      }\n      if (iVar1 == 3) {\n        cVar4 = '\x02';\nLAB_003124f7:\n        local_5c = cVar4;\n        local_54 = 0;\n      }\n      else {\n        local_5c = '\x01';\n        cVar4 = '\x01';\n        if (iVar1 < 0) goto LAB_003124f7;\n        if (iVar1 < 2) {\n          local_54 = 1;\n        }\n        else {\n          local_54 = 0xfff2;\n          if (iVar1 != 4) goto LAB_003124f7;\n        }\n      }\nLAB_003123e2:\n      local_60 = 0;\n      if (puVar8[3] - 1 < 3) {\n        local_60 = (undefined1)*(undefined4 *)(&DAT_004947f4 + (puVar8[3] - 1) * 4);\n      }\n      pcVar3 = (char *)puVar8[6];\n      if ((pcVar3 == (char *)0x0) || (*pcVar3 == '\0')) {\n        uVar5 = local_54 << 8 | local_54 >> 8;\n      }\n      else {\n        local_34[0] = local_2c;\n        sVar9 = strlen(pcVar3);\n        FUN_00072b90(local_34,pcVar3,pcVar3 + sVar9,0);\n                    \n        cVar4 = FUN_0030f450(param_1,local_34,param_4);\n        if (cVar4 == '\0') {\n          if (local_34[0] != local_2c) {\n            FUN_003ae080(local_34[0]);\n          }\n          uVar5 = 0;\n        }\n        else {\n          uVar5 = local_54 << 8 | local_54 >> 8;\n          if (local_34[0] != local_2c) {\n            FUN_003ae080(local_34[0]);\n          }\n        }\n      }\n      local_36 = uVar5;\n      local_44 = 0;\n      local_40 = 0;\n      local_3c = 0;\n      local_38 = local_5c << 4;\n      local_37 = local_60;\n      iVar2 = *(int *)(param_1 + 0x40);\n      iVar1 = local_50 * 4;\n      uVar7 = FUN_00359950(param_2,param_1,local_58,pcVar11,&local_48);\n      local_50 = local_50 + 1;\n      *(undefined4 *)(iVar2 + iVar1) = uVar7;\n    } while (local_50 < *(int *)(param_1 + 0x38));\n  }\n  return;\n}" ({ "{") (declaration "int iVar1;" (primitive_type "int") (identifier "iVar1") (; ";")) (declaration "int iVar2;" (primitive_type "int") (identifier "iVar2") (; ";")) (declaration "char *pcVar3;" (primitive_type "char") (pointer_declarator "*pcVar3" (* "*") (identifier "pcVar3")) (; ";")) (declaration "char cVar4;" (primitive_type "char") (identifier "cVar4") (; ";")) (declaration "ushort uVar5;" (type_identifier "ushort") (identifier "uVar5") (; ";")) (declaration "uint uVar6;" (type_identifier "uint") (identifier "uVar6") (; ";")) (declaration "undefined4 uVar7;" (type_identifier "undefined4") (identifier "uVar7") (; ";")) (declaration "undefined4 *puVar8;" (type_identifier "undefined4") (pointer_declarator "*puVar8" (* "*") (identifier "puVar8")) (; ";")) (declaration "size_t sVar9;" (primitive_type "size_t") (identifier "sVar9") (; ";")) (declaration "uint uVar10;" (type_identifier "uint") (identifier "uVar10") (; ";")) (declaration "char *pcVar11;" (primitive_type "char") (pointer_declarator "*pcVar11" (* "*") (identifier "pcVar11")) (; ";")) (declaration "undefined1 local_60;" (type_identifier "undefined1") (identifier "local_60") (; ";")) (declaration "char local_5c;" (primitive_type "char") (identifier "local_5c") (; ";")) (declaration "char *local_58;" (primitive_type "char") (pointer_declarator "*local_58" (* "*") (identifier "local_58")) (; ";")) (declaration "ushort local_54;" (type_identifier "ushort") (identifier "local_54") (; ";")) (declaration "int local_50;" (primitive_type "int") (identifier "local_50") (; ";")) (declaration "undefined4 *local_48;" (type_identifier "undefined4") (pointer_declarator "*local_48" (* "*") (identifier "local_48")) (; ";")) (declaration "undefined4 local_44;" (type_identifier "undefined4") (identifier "local_44") (; ";")) (declaration "undefined4 local_40;" (type_identifier "undefined4") (identifier "local_40") (; ";")) (declaration "undefined4 local_3c;" (type_identifier "undefined4") (identifier "local_3c") (; ";")) (declaration "char local_38;" (primitive_type "char") (identifier "local_38") (; ";")) (declaration "undefined1 local_37;" (type_identifier "undefined1") (identifier "local_37") (; ";")) (declaration "ushort local_36;" (type_identifier "ushort") (identifier "local_36") (; ";")) (declaration "undefined1 *local_34 [2];" (type_identifier "undefined1") (pointer_declarator "*local_34 [2]" (* "*") (array_declarator "local_34 [2]" (identifier "local_34") ([ "[") (number_literal "2") (] "]"))) (; ";")) (declaration "undefined1 local_2c [28];" (type_identifier "undefined1") (array_declarator "local_2c [28]" (identifier "local_2c") ([ "[") (number_literal "28") (] "]")) (; ";")) (expression_statement "local_48 = &local_44;" (assignment_expression "local_48 = &local_44" (identifier "local_48") (= "=") (pointer_expression "&local_44" (& "&") (identifier "local_44"))) (; ";")) (if_statement "if (*(int *)(DAT_005ea7c8 + 8) == 0) {\n                    \n    FUN_002446e0("../../gold/parameters.h",0x5c,"options",param_1);\n  }" (if "if") (parenthesized_expression "(*(int *)(DAT_005ea7c8 + 8) == 0)" (( "(") (binary_expression "*(int *)(DAT_005ea7c8 + 8) == 0" (pointer_expression "*(int *)(DAT_005ea7c8 + 8)" (* "*") (cast_expression "(int *)(DAT_005ea7c8 + 8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(DAT_005ea7c8 + 8)" (( "(") (binary_expression "DAT_005ea7c8 + 8" (identifier "DAT_005ea7c8") (+ "+") (number_literal "8")) () ")")))) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n                    \n    FUN_002446e0("../../gold/parameters.h",0x5c,"options",param_1);\n  }" ({ "{") (expression_statement "FUN_002446e0("../../gold/parameters.h",0x5c,"options",param_1);" (call_expression "FUN_002446e0("../../gold/parameters.h",0x5c,"options",param_1)" (identifier "FUN_002446e0") (argument_list "("../../gold/parameters.h",0x5c,"options",param_1)" (( "(") (string_literal ""../../gold/parameters.h"" (" """) (string_content "../../gold/parameters.h") (" """)) (, ",") (number_literal "0x5c") (, ",") (string_literal ""options"" (" """) (string_content "options") (" """)) (, ",") (identifier "param_1") () ")"))) (; ";")) (} "}"))) (expression_statement "iVar1 = *(int *)(*(int *)(*(int *)(DAT_005ea7c8 + 8) + 0x593c) + 0xd4);" (assignment_expression "iVar1 = *(int *)(*(int *)(*(int *)(DAT_005ea7c8 + 8) + 0x593c) + 0xd4)" (identifier "iVar1") (= "=") (pointer_expression "*(int *)(*(int *)(*(int *)(DAT_005ea7c8 + 8) + 0x593c) + 0xd4)" (* "*") (cast_expression "(int *)(*(int *)(*(int *)(DAT_005ea7c8 + 8) + 0x593c) + 0xd4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(*(int *)(DAT_005ea7c8 + 8) + 0x593c) + 0xd4)" (( "(") (binary_expression "*(int *)(*(int *)(DAT_005ea7c8 + 8) + 0x593c) + 0xd4" (pointer_expression "*(int *)(*(int *)(DAT_005ea7c8 + 8) + 0x593c)" (* "*") (cast_expression "(int *)(*(int *)(DAT_005ea7c8 + 8) + 0x593c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(DAT_005ea7c8 + 8) + 0x593c)" (( "(") (binary_expression "*(int *)(DAT_005ea7c8 + 8) + 0x593c" (pointer_expression "*(int *)(DAT_005ea7c8 + 8)" (* "*") (cast_expression "(int *)(DAT_005ea7c8 + 8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(DAT_005ea7c8 + 8)" (( "(") (binary_expression "DAT_005ea7c8 + 8" (identifier "DAT_005ea7c8") (+ "+") (number_literal "8")) () ")")))) (+ "+") (number_literal "0x593c")) () ")")))) (+ "+") (number_literal "0xd4")) () ")"))))) (; ";")) (expression_statement "uVar6 = *(uint *)(param_1 + 0x38);" (assignment_expression "uVar6 = *(uint *)(param_1 + 0x38)" (identifier "uVar6") (= "=") (pointer_expression "*(uint *)(param_1 + 0x38)" (* "*") (cast_expression "(uint *)(param_1 + 0x38)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x38)" (( "(") (binary_expression "param_1 + 0x38" (identifier "param_1") (+ "+") (number_literal "0x38")) () ")"))))) (; ";")) (if_statement "if (iVar1 != 0) {\n    FUN_0030c0e0(iVar1,param_1,uVar6,*(undefined4 *)(param_1 + 0x3c));\n    uVar6 = *(uint *)(param_1 + 0x38);\n  }" (if "if") (parenthesized_expression "(iVar1 != 0)" (( "(") (binary_expression "iVar1 != 0" (identifier "iVar1") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n    FUN_0030c0e0(iVar1,param_1,uVar6,*(undefined4 *)(param_1 + 0x3c));\n    uVar6 = *(uint *)(param_1 + 0x38);\n  }" ({ "{") (expression_statement "FUN_0030c0e0(iVar1,param_1,uVar6,*(undefined4 *)(param_1 + 0x3c));" (call_expression "FUN_0030c0e0(iVar1,param_1,uVar6,*(undefined4 *)(param_1 + 0x3c))" (identifier "FUN_0030c0e0") (argument_list "(iVar1,param_1,uVar6,*(undefined4 *)(param_1 + 0x3c))" (( "(") (identifier "iVar1") (, ",") (identifier "param_1") (, ",") (identifier "uVar6") (, ",") (pointer_expression "*(undefined4 *)(param_1 + 0x3c)" (* "*") (cast_expression "(undefined4 *)(param_1 + 0x3c)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x3c)" (( "(") (binary_expression "param_1 + 0x3c" (identifier "param_1") (+ "+") (number_literal "0x3c")) () ")")))) () ")"))) (; ";")) (expression_statement "uVar6 = *(uint *)(param_1 + 0x38);" (assignment_expression "uVar6 = *(uint *)(param_1 + 0x38)" (identifier "uVar6") (= "=") (pointer_expression "*(uint *)(param_1 + 0x38)" (* "*") (cast_expression "(uint *)(param_1 + 0x38)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x38)" (( "(") (binary_expression "param_1 + 0x38" (identifier "param_1") (+ "+") (number_literal "0x38")) () ")"))))) (; ";")) (} "}"))) (expression_statement "uVar10 = *(int *)(param_1 + 0x44) - *(int *)(param_1 + 0x40) >> 2;" (assignment_expression "uVar10 = *(int *)(param_1 + 0x44) - *(int *)(param_1 + 0x40) >> 2" (identifier "uVar10") (= "=") (binary_expression "*(int *)(param_1 + 0x44) - *(int *)(param_1 + 0x40) >> 2" (binary_expression "*(int *)(param_1 + 0x44) - *(int *)(param_1 + 0x40)" (pointer_expression "*(int *)(param_1 + 0x44)" (* "*") (cast_expression "(int *)(param_1 + 0x44)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x44)" (( "(") (binary_expression "param_1 + 0x44" (identifier "param_1") (+ "+") (number_literal "0x44")) () ")")))) (- "-") (pointer_expression "*(int *)(param_1 + 0x40)" (* "*") (cast_expression "(int *)(param_1 + 0x40)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x40)" (( "(") (binary_expression "param_1 + 0x40" (identifier "param_1") (+ "+") (number_literal "0x40")) () ")"))))) (>> ">>") (number_literal "2"))) (; ";")) (if_statement "if (uVar10 < uVar6) {\n    FUN_002352a0(param_1 + 0x40,uVar6 - uVar10);\n    uVar6 = *(uint *)(param_1 + 0x38);\n  }\n  else if ((uVar6 < uVar10) &&\n          (iVar1 = *(int *)(param_1 + 0x40) + uVar6 * 4, *(int *)(param_1 + 0x44) != iVar1)) {\n    *(int *)(param_1 + 0x44) = iVar1;\n  }" (if "if") (parenthesized_expression "(uVar10 < uVar6)" (( "(") (binary_expression "uVar10 < uVar6" (identifier "uVar10") (< "<") (identifier "uVar6")) () ")")) (compound_statement "{\n    FUN_002352a0(param_1 + 0x40,uVar6 - uVar10);\n    uVar6 = *(uint *)(param_1 + 0x38);\n  }" ({ "{") (expression_statement "FUN_002352a0(param_1 + 0x40,uVar6 - uVar10);" (call_expression "FUN_002352a0(param_1 + 0x40,uVar6 - uVar10)" (identifier "FUN_002352a0") (argument_list "(param_1 + 0x40,uVar6 - uVar10)" (( "(") (binary_expression "param_1 + 0x40" (identifier "param_1") (+ "+") (number_literal "0x40")) (, ",") (binary_expression "uVar6 - uVar10" (identifier "uVar6") (- "-") (identifier "uVar10")) () ")"))) (; ";")) (expression_statement "uVar6 = *(uint *)(param_1 + 0x38);" (assignment_expression "uVar6 = *(uint *)(param_1 + 0x38)" (identifier "uVar6") (= "=") (pointer_expression "*(uint *)(param_1 + 0x38)" (* "*") (cast_expression "(uint *)(param_1 + 0x38)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x38)" (( "(") (binary_expression "param_1 + 0x38" (identifier "param_1") (+ "+") (number_literal "0x38")) () ")"))))) (; ";")) (} "}")) (else_clause "else if ((uVar6 < uVar10) &&\n          (iVar1 = *(int *)(param_1 + 0x40) + uVar6 * 4, *(int *)(param_1 + 0x44) != iVar1)) {\n    *(int *)(param_1 + 0x44) = iVar1;\n  }" (else "else") (if_statement "if ((uVar6 < uVar10) &&\n          (iVar1 = *(int *)(param_1 + 0x40) + uVar6 * 4, *(int *)(param_1 + 0x44) != iVar1)) {\n    *(int *)(param_1 + 0x44) = iVar1;\n  }" (if "if") (parenthesized_expression "((uVar6 < uVar10) &&\n          (iVar1 = *(int *)(param_1 + 0x40) + uVar6 * 4, *(int *)(param_1 + 0x44) != iVar1))" (( "(") (binary_expression "(uVar6 < uVar10) &&\n          (iVar1 = *(int *)(param_1 + 0x40) + uVar6 * 4, *(int *)(param_1 + 0x44) != iVar1)" (parenthesized_expression "(uVar6 < uVar10)" (( "(") (binary_expression "uVar6 < uVar10" (identifier "uVar6") (< "<") (identifier "uVar10")) () ")")) (&& "&&") (parenthesized_expression "(iVar1 = *(int *)(param_1 + 0x40) + uVar6 * 4, *(int *)(param_1 + 0x44) != iVar1)" (( "(") (comma_expression "iVar1 = *(int *)(param_1 + 0x40) + uVar6 * 4, *(int *)(param_1 + 0x44) != iVar1" (assignment_expression "iVar1 = *(int *)(param_1 + 0x40) + uVar6 * 4" (identifier "iVar1") (= "=") (binary_expression "*(int *)(param_1 + 0x40) + uVar6 * 4" (pointer_expression "*(int *)(param_1 + 0x40)" (* "*") (cast_expression "(int *)(param_1 + 0x40)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x40)" (( "(") (binary_expression "param_1 + 0x40" (identifier "param_1") (+ "+") (number_literal "0x40")) () ")")))) (+ "+") (binary_expression "uVar6 * 4" (identifier "uVar6") (* "*") (number_literal "4")))) (, ",") (binary_expression "*(int *)(param_1 + 0x44) != iVar1" (pointer_expression "*(int *)(param_1 + 0x44)" (* "*") (cast_expression "(int *)(param_1 + 0x44)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x44)" (( "(") (binary_expression "param_1 + 0x44" (identifier "param_1") (+ "+") (number_literal "0x44")) () ")")))) (!= "!=") (identifier "iVar1"))) () ")"))) () ")")) (compound_statement "{\n    *(int *)(param_1 + 0x44) = iVar1;\n  }" ({ "{") (expression_statement "*(int *)(param_1 + 0x44) = iVar1;" (assignment_expression "*(int *)(param_1 + 0x44) = iVar1" (pointer_expression "*(int *)(param_1 + 0x44)" (* "*") (cast_expression "(int *)(param_1 + 0x44)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x44)" (( "(") (binary_expression "param_1 + 0x44" (identifier "param_1") (+ "+") (number_literal "0x44")) () ")")))) (= "=") (identifier "iVar1")) (; ";")) (} "}"))))) (expression_statement "local_50 = 0;" (assignment_expression "local_50 = 0" (identifier "local_50") (= "=") (number_literal "0")) (; ";")) (if_statement "if (0 < (int)uVar6) {\n    do {\n      puVar8 = (undefined4 *)(local_50 * 0x20 + *(int *)(param_1 + 0x3c));\n      pcVar3 = (char *)*puVar8;\n      pcVar11 = (char *)puVar8[1];\n      local_58 = pcVar3;\n      if ((pcVar3 != (char *)0x0) && (local_58 = (char *)0x0, *pcVar3 != '\0')) {\n        local_58 = pcVar3;\n      }\n      if ((pcVar11 != (char *)0x0) && (*pcVar11 == '\0')) {\n        pcVar11 = (char *)0x0;\n      }\n      iVar1 = puVar8[2];\n      if (iVar1 == 1) {\n        local_5c = '\x02';\n        local_54 = 1;\n        goto LAB_003123e2;\n      }\n      if (iVar1 == 3) {\n        cVar4 = '\x02';\nLAB_003124f7:\n        local_5c = cVar4;\n        local_54 = 0;\n      }\n      else {\n        local_5c = '\x01';\n        cVar4 = '\x01';\n        if (iVar1 < 0) goto LAB_003124f7;\n        if (iVar1 < 2) {\n          local_54 = 1;\n        }\n        else {\n          local_54 = 0xfff2;\n          if (iVar1 != 4) goto LAB_003124f7;\n        }\n      }\nLAB_003123e2:\n      local_60 = 0;\n      if (puVar8[3] - 1 < 3) {\n        local_60 = (undefined1)*(undefined4 *)(&DAT_004947f4 + (puVar8[3] - 1) * 4);\n      }\n      pcVar3 = (char *)puVar8[6];\n      if ((pcVar3 == (char *)0x0) || (*pcVar3 == '\0')) {\n        uVar5 = local_54 << 8 | local_54 >> 8;\n      }\n      else {\n        local_34[0] = local_2c;\n        sVar9 = strlen(pcVar3);\n        FUN_00072b90(local_34,pcVar3,pcVar3 + sVar9,0);\n                    \n        cVar4 = FUN_0030f450(param_1,local_34,param_4);\n        if (cVar4 == '\0') {\n          if (local_34[0] != local_2c) {\n            FUN_003ae080(local_34[0]);\n          }\n          uVar5 = 0;\n        }\n        else {\n          uVar5 = local_54 << 8 | local_54 >> 8;\n          if (local_34[0] != local_2c) {\n            FUN_003ae080(local_34[0]);\n          }\n        }\n      }\n      local_36 = uVar5;\n      local_44 = 0;\n      local_40 = 0;\n      local_3c = 0;\n      local_38 = local_5c << 4;\n      local_37 = local_60;\n      iVar2 = *(int *)(param_1 + 0x40);\n      iVar1 = local_50 * 4;\n      uVar7 = FUN_00359950(param_2,param_1,local_58,pcVar11,&local_48);\n      local_50 = local_50 + 1;\n      *(undefined4 *)(iVar2 + iVar1) = uVar7;\n    } while (local_50 < *(int *)(param_1 + 0x38));\n  }" (if "if") (parenthesized_expression "(0 < (int)uVar6)" (( "(") (binary_expression "0 < (int)uVar6" (number_literal "0") (< "<") (cast_expression "(int)uVar6" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar6"))) () ")")) (compound_statement "{\n    do {\n      puVar8 = (undefined4 *)(local_50 * 0x20 + *(int *)(param_1 + 0x3c));\n      pcVar3 = (char *)*puVar8;\n      pcVar11 = (char *)puVar8[1];\n      local_58 = pcVar3;\n      if ((pcVar3 != (char *)0x0) && (local_58 = (char *)0x0, *pcVar3 != '\0')) {\n        local_58 = pcVar3;\n      }\n      if ((pcVar11 != (char *)0x0) && (*pcVar11 == '\0')) {\n        pcVar11 = (char *)0x0;\n      }\n      iVar1 = puVar8[2];\n      if (iVar1 == 1) {\n        local_5c = '\x02';\n        local_54 = 1;\n        goto LAB_003123e2;\n      }\n      if (iVar1 == 3) {\n        cVar4 = '\x02';\nLAB_003124f7:\n        local_5c = cVar4;\n        local_54 = 0;\n      }\n      else {\n        local_5c = '\x01';\n        cVar4 = '\x01';\n        if (iVar1 < 0) goto LAB_003124f7;\n        if (iVar1 < 2) {\n          local_54 = 1;\n        }\n        else {\n          local_54 = 0xfff2;\n          if (iVar1 != 4) goto LAB_003124f7;\n        }\n      }\nLAB_003123e2:\n      local_60 = 0;\n      if (puVar8[3] - 1 < 3) {\n        local_60 = (undefined1)*(undefined4 *)(&DAT_004947f4 + (puVar8[3] - 1) * 4);\n      }\n      pcVar3 = (char *)puVar8[6];\n      if ((pcVar3 == (char *)0x0) || (*pcVar3 == '\0')) {\n        uVar5 = local_54 << 8 | local_54 >> 8;\n      }\n      else {\n        local_34[0] = local_2c;\n        sVar9 = strlen(pcVar3);\n        FUN_00072b90(local_34,pcVar3,pcVar3 + sVar9,0);\n                    \n        cVar4 = FUN_0030f450(param_1,local_34,param_4);\n        if (cVar4 == '\0') {\n          if (local_34[0] != local_2c) {\n            FUN_003ae080(local_34[0]);\n          }\n          uVar5 = 0;\n        }\n        else {\n          uVar5 = local_54 << 8 | local_54 >> 8;\n          if (local_34[0] != local_2c) {\n            FUN_003ae080(local_34[0]);\n          }\n        }\n      }\n      local_36 = uVar5;\n      local_44 = 0;\n      local_40 = 0;\n      local_3c = 0;\n      local_38 = local_5c << 4;\n      local_37 = local_60;\n      iVar2 = *(int *)(param_1 + 0x40);\n      iVar1 = local_50 * 4;\n      uVar7 = FUN_00359950(param_2,param_1,local_58,pcVar11,&local_48);\n      local_50 = local_50 + 1;\n      *(undefined4 *)(iVar2 + iVar1) = uVar7;\n    } while (local_50 < *(int *)(param_1 + 0x38));\n  }" ({ "{") (do_statement "do {\n      puVar8 = (undefined4 *)(local_50 * 0x20 + *(int *)(param_1 + 0x3c));\n      pcVar3 = (char *)*puVar8;\n      pcVar11 = (char *)puVar8[1];\n      local_58 = pcVar3;\n      if ((pcVar3 != (char *)0x0) && (local_58 = (char *)0x0, *pcVar3 != '\0')) {\n        local_58 = pcVar3;\n      }\n      if ((pcVar11 != (char *)0x0) && (*pcVar11 == '\0')) {\n        pcVar11 = (char *)0x0;\n      }\n      iVar1 = puVar8[2];\n      if (iVar1 == 1) {\n        local_5c = '\x02';\n        local_54 = 1;\n        goto LAB_003123e2;\n      }\n      if (iVar1 == 3) {\n        cVar4 = '\x02';\nLAB_003124f7:\n        local_5c = cVar4;\n        local_54 = 0;\n      }\n      else {\n        local_5c = '\x01';\n        cVar4 = '\x01';\n        if (iVar1 < 0) goto LAB_003124f7;\n        if (iVar1 < 2) {\n          local_54 = 1;\n        }\n        else {\n          local_54 = 0xfff2;\n          if (iVar1 != 4) goto LAB_003124f7;\n        }\n      }\nLAB_003123e2:\n      local_60 = 0;\n      if (puVar8[3] - 1 < 3) {\n        local_60 = (undefined1)*(undefined4 *)(&DAT_004947f4 + (puVar8[3] - 1) * 4);\n      }\n      pcVar3 = (char *)puVar8[6];\n      if ((pcVar3 == (char *)0x0) || (*pcVar3 == '\0')) {\n        uVar5 = local_54 << 8 | local_54 >> 8;\n      }\n      else {\n        local_34[0] = local_2c;\n        sVar9 = strlen(pcVar3);\n        FUN_00072b90(local_34,pcVar3,pcVar3 + sVar9,0);\n                    \n        cVar4 = FUN_0030f450(param_1,local_34,param_4);\n        if (cVar4 == '\0') {\n          if (local_34[0] != local_2c) {\n            FUN_003ae080(local_34[0]);\n          }\n          uVar5 = 0;\n        }\n        else {\n          uVar5 = local_54 << 8 | local_54 >> 8;\n          if (local_34[0] != local_2c) {\n            FUN_003ae080(local_34[0]);\n          }\n        }\n      }\n      local_36 = uVar5;\n      local_44 = 0;\n      local_40 = 0;\n      local_3c = 0;\n      local_38 = local_5c << 4;\n      local_37 = local_60;\n      iVar2 = *(int *)(param_1 + 0x40);\n      iVar1 = local_50 * 4;\n      uVar7 = FUN_00359950(param_2,param_1,local_58,pcVar11,&local_48);\n      local_50 = local_50 + 1;\n      *(undefined4 *)(iVar2 + iVar1) = uVar7;\n    } while (local_50 < *(int *)(param_1 + 0x38));" (do "do") (compound_statement "{\n      puVar8 = (undefined4 *)(local_50 * 0x20 + *(int *)(param_1 + 0x3c));\n      pcVar3 = (char *)*puVar8;\n      pcVar11 = (char *)puVar8[1];\n      local_58 = pcVar3;\n      if ((pcVar3 != (char *)0x0) && (local_58 = (char *)0x0, *pcVar3 != '\0')) {\n        local_58 = pcVar3;\n      }\n      if ((pcVar11 != (char *)0x0) && (*pcVar11 == '\0')) {\n        pcVar11 = (char *)0x0;\n      }\n      iVar1 = puVar8[2];\n      if (iVar1 == 1) {\n        local_5c = '\x02';\n        local_54 = 1;\n        goto LAB_003123e2;\n      }\n      if (iVar1 == 3) {\n        cVar4 = '\x02';\nLAB_003124f7:\n        local_5c = cVar4;\n        local_54 = 0;\n      }\n      else {\n        local_5c = '\x01';\n        cVar4 = '\x01';\n        if (iVar1 < 0) goto LAB_003124f7;\n        if (iVar1 < 2) {\n          local_54 = 1;\n        }\n        else {\n          local_54 = 0xfff2;\n          if (iVar1 != 4) goto LAB_003124f7;\n        }\n      }\nLAB_003123e2:\n      local_60 = 0;\n      if (puVar8[3] - 1 < 3) {\n        local_60 = (undefined1)*(undefined4 *)(&DAT_004947f4 + (puVar8[3] - 1) * 4);\n      }\n      pcVar3 = (char *)puVar8[6];\n      if ((pcVar3 == (char *)0x0) || (*pcVar3 == '\0')) {\n        uVar5 = local_54 << 8 | local_54 >> 8;\n      }\n      else {\n        local_34[0] = local_2c;\n        sVar9 = strlen(pcVar3);\n        FUN_00072b90(local_34,pcVar3,pcVar3 + sVar9,0);\n                    \n        cVar4 = FUN_0030f450(param_1,local_34,param_4);\n        if (cVar4 == '\0') {\n          if (local_34[0] != local_2c) {\n            FUN_003ae080(local_34[0]);\n          }\n          uVar5 = 0;\n        }\n        else {\n          uVar5 = local_54 << 8 | local_54 >> 8;\n          if (local_34[0] != local_2c) {\n            FUN_003ae080(local_34[0]);\n          }\n        }\n      }\n      local_36 = uVar5;\n      local_44 = 0;\n      local_40 = 0;\n      local_3c = 0;\n      local_38 = local_5c << 4;\n      local_37 = local_60;\n      iVar2 = *(int *)(param_1 + 0x40);\n      iVar1 = local_50 * 4;\n      uVar7 = FUN_00359950(param_2,param_1,local_58,pcVar11,&local_48);\n      local_50 = local_50 + 1;\n      *(undefined4 *)(iVar2 + iVar1) = uVar7;\n    }" ({ "{") (expression_statement "puVar8 = (undefined4 *)(local_50 * 0x20 + *(int *)(param_1 + 0x3c));" (assignment_expression "puVar8 = (undefined4 *)(local_50 * 0x20 + *(int *)(param_1 + 0x3c))" (identifier "puVar8") (= "=") (cast_expression "(undefined4 *)(local_50 * 0x20 + *(int *)(param_1 + 0x3c))" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(local_50 * 0x20 + *(int *)(param_1 + 0x3c))" (( "(") (binary_expression "local_50 * 0x20 + *(int *)(param_1 + 0x3c)" (binary_expression "local_50 * 0x20" (identifier "local_50") (* "*") (number_literal "0x20")) (+ "+") (pointer_expression "*(int *)(param_1 + 0x3c)" (* "*") (cast_expression "(int *)(param_1 + 0x3c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x3c)" (( "(") (binary_expression "param_1 + 0x3c" (identifier "param_1") (+ "+") (number_literal "0x3c")) () ")"))))) () ")")))) (; ";")) (expression_statement "pcVar3 = (char *)*puVar8;" (assignment_expression "pcVar3 = (char *)*puVar8" (identifier "pcVar3") (= "=") (cast_expression "(char *)*puVar8" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*puVar8" (* "*") (identifier "puVar8")))) (; ";")) (expression_statement "pcVar11 = (char *)puVar8[1];" (assignment_expression "pcVar11 = (char *)puVar8[1]" (identifier "pcVar11") (= "=") (cast_expression "(char *)puVar8[1]" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "puVar8[1]" (identifier "puVar8") ([ "[") (number_literal "1") (] "]")))) (; ";")) (expression_statement "local_58 = pcVar3;" (assignment_expression "local_58 = pcVar3" (identifier "local_58") (= "=") (identifier "pcVar3")) (; ";")) (if_statement "if ((pcVar3 != (char *)0x0) && (local_58 = (char *)0x0, *pcVar3 != '\0')) {\n        local_58 = pcVar3;\n      }" (if "if") (parenthesized_expression "((pcVar3 != (char *)0x0) && (local_58 = (char *)0x0, *pcVar3 != '\0'))" (( "(") (binary_expression "(pcVar3 != (char *)0x0) && (local_58 = (char *)0x0, *pcVar3 != '\0')" (parenthesized_expression "(pcVar3 != (char *)0x0)" (( "(") (binary_expression "pcVar3 != (char *)0x0" (identifier "pcVar3") (!= "!=") (cast_expression "(char *)0x0" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (&& "&&") (parenthesized_expression "(local_58 = (char *)0x0, *pcVar3 != '\0')" (( "(") (comma_expression "local_58 = (char *)0x0, *pcVar3 != '\0'" (assignment_expression "local_58 = (char *)0x0" (identifier "local_58") (= "=") (cast_expression "(char *)0x0" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (, ",") (binary_expression "*pcVar3 != '\0'" (pointer_expression "*pcVar3" (* "*") (identifier "pcVar3")) (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'")))) () ")"))) () ")")) (compound_statement "{\n        local_58 = pcVar3;\n      }" ({ "{") (expression_statement "local_58 = pcVar3;" (assignment_expression "local_58 = pcVar3" (identifier "local_58") (= "=") (identifier "pcVar3")) (; ";")) (} "}"))) (if_statement "if ((pcVar11 != (char *)0x0) && (*pcVar11 == '\0')) {\n        pcVar11 = (char *)0x0;\n      }" (if "if") (parenthesized_expression "((pcVar11 != (char *)0x0) && (*pcVar11 == '\0'))" (( "(") (binary_expression "(pcVar11 != (char *)0x0) && (*pcVar11 == '\0')" (parenthesized_expression "(pcVar11 != (char *)0x0)" (( "(") (binary_expression "pcVar11 != (char *)0x0" (identifier "pcVar11") (!= "!=") (cast_expression "(char *)0x0" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (&& "&&") (parenthesized_expression "(*pcVar11 == '\0')" (( "(") (binary_expression "*pcVar11 == '\0'" (pointer_expression "*pcVar11" (* "*") (identifier "pcVar11")) (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")"))) () ")")) (compound_statement "{\n        pcVar11 = (char *)0x0;\n      }" ({ "{") (expression_statement "pcVar11 = (char *)0x0;" (assignment_expression "pcVar11 = (char *)0x0" (identifier "pcVar11") (= "=") (cast_expression "(char *)0x0" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";")) (} "}"))) (expression_statement "iVar1 = puVar8[2];" (assignment_expression "iVar1 = puVar8[2]" (identifier "iVar1") (= "=") (subscript_expression "puVar8[2]" (identifier "puVar8") ([ "[") (number_literal "2") (] "]"))) (; ";")) (if_statement "if (iVar1 == 1) {\n        local_5c = '\x02';\n        local_54 = 1;\n        goto LAB_003123e2;\n      }" (if "if") (parenthesized_expression "(iVar1 == 1)" (( "(") (binary_expression "iVar1 == 1" (identifier "iVar1") (== "==") (number_literal "1")) () ")")) (compound_statement "{\n        local_5c = '\x02';\n        local_54 = 1;\n        goto LAB_003123e2;\n      }" ({ "{") (expression_statement "local_5c = '\x02';" (assignment_expression "local_5c = '\x02'" (identifier "local_5c") (= "=") (char_literal "'\x02'" (' "'") (escape_sequence "\x02") (' "'"))) (; ";")) (expression_statement "local_54 = 1;" (assignment_expression "local_54 = 1" (identifier "local_54") (= "=") (number_literal "1")) (; ";")) (goto_statement "goto LAB_003123e2;" (goto "goto") (statement_identifier "LAB_003123e2") (; ";")) (} "}"))) (if_statement "if (iVar1 == 3) {\n        cVar4 = '\x02';\nLAB_003124f7:\n        local_5c = cVar4;\n        local_54 = 0;\n      }\n      else {\n        local_5c = '\x01';\n        cVar4 = '\x01';\n        if (iVar1 < 0) goto LAB_003124f7;\n        if (iVar1 < 2) {\n          local_54 = 1;\n        }\n        else {\n          local_54 = 0xfff2;\n          if (iVar1 != 4) goto LAB_003124f7;\n        }\n      }" (if "if") (parenthesized_expression "(iVar1 == 3)" (( "(") (binary_expression "iVar1 == 3" (identifier "iVar1") (== "==") (number_literal "3")) () ")")) (compound_statement "{\n        cVar4 = '\x02';\nLAB_003124f7:\n        local_5c = cVar4;\n        local_54 = 0;\n      }" ({ "{") (expression_statement "cVar4 = '\x02';" (assignment_expression "cVar4 = '\x02'" (identifier "cVar4") (= "=") (char_literal "'\x02'" (' "'") (escape_sequence "\x02") (' "'"))) (; ";")) (labeled_statement "LAB_003124f7:\n        local_5c = cVar4;" (statement_identifier "LAB_003124f7") (: ":") (expression_statement "local_5c = cVar4;" (assignment_expression "local_5c = cVar4" (identifier "local_5c") (= "=") (identifier "cVar4")) (; ";"))) (expression_statement "local_54 = 0;" (assignment_expression "local_54 = 0" (identifier "local_54") (= "=") (number_literal "0")) (; ";")) (} "}")) (else_clause "else {\n        local_5c = '\x01';\n        cVar4 = '\x01';\n        if (iVar1 < 0) goto LAB_003124f7;\n        if (iVar1 < 2) {\n          local_54 = 1;\n        }\n        else {\n          local_54 = 0xfff2;\n          if (iVar1 != 4) goto LAB_003124f7;\n        }\n      }" (else "else") (compound_statement "{\n        local_5c = '\x01';\n        cVar4 = '\x01';\n        if (iVar1 < 0) goto LAB_003124f7;\n        if (iVar1 < 2) {\n          local_54 = 1;\n        }\n        else {\n          local_54 = 0xfff2;\n          if (iVar1 != 4) goto LAB_003124f7;\n        }\n      }" ({ "{") (expression_statement "local_5c = '\x01';" (assignment_expression "local_5c = '\x01'" (identifier "local_5c") (= "=") (char_literal "'\x01'" (' "'") (escape_sequence "\x01") (' "'"))) (; ";")) (expression_statement "cVar4 = '\x01';" (assignment_expression "cVar4 = '\x01'" (identifier "cVar4") (= "=") (char_literal "'\x01'" (' "'") (escape_sequence "\x01") (' "'"))) (; ";")) (if_statement "if (iVar1 < 0) goto LAB_003124f7;" (if "if") (parenthesized_expression "(iVar1 < 0)" (( "(") (binary_expression "iVar1 < 0" (identifier "iVar1") (< "<") (number_literal "0")) () ")")) (goto_statement "goto LAB_003124f7;" (goto "goto") (statement_identifier "LAB_003124f7") (; ";"))) (if_statement "if (iVar1 < 2) {\n          local_54 = 1;\n        }\n        else {\n          local_54 = 0xfff2;\n          if (iVar1 != 4) goto LAB_003124f7;\n        }" (if "if") (parenthesized_expression "(iVar1 < 2)" (( "(") (binary_expression "iVar1 < 2" (identifier "iVar1") (< "<") (number_literal "2")) () ")")) (compound_statement "{\n          local_54 = 1;\n        }" ({ "{") (expression_statement "local_54 = 1;" (assignment_expression "local_54 = 1" (identifier "local_54") (= "=") (number_literal "1")) (; ";")) (} "}")) (else_clause "else {\n          local_54 = 0xfff2;\n          if (iVar1 != 4) goto LAB_003124f7;\n        }" (else "else") (compound_statement "{\n          local_54 = 0xfff2;\n          if (iVar1 != 4) goto LAB_003124f7;\n        }" ({ "{") (expression_statement "local_54 = 0xfff2;" (assignment_expression "local_54 = 0xfff2" (identifier "local_54") (= "=") (number_literal "0xfff2")) (; ";")) (if_statement "if (iVar1 != 4) goto LAB_003124f7;" (if "if") (parenthesized_expression "(iVar1 != 4)" (( "(") (binary_expression "iVar1 != 4" (identifier "iVar1") (!= "!=") (number_literal "4")) () ")")) (goto_statement "goto LAB_003124f7;" (goto "goto") (statement_identifier "LAB_003124f7") (; ";"))) (} "}")))) (} "}")))) (labeled_statement "LAB_003123e2:\n      local_60 = 0;" (statement_identifier "LAB_003123e2") (: ":") (expression_statement "local_60 = 0;" (assignment_expression "local_60 = 0" (identifier "local_60") (= "=") (number_literal "0")) (; ";"))) (if_statement "if (puVar8[3] - 1 < 3) {\n        local_60 = (undefined1)*(undefined4 *)(&DAT_004947f4 + (puVar8[3] - 1) * 4);\n      }" (if "if") (parenthesized_expression "(puVar8[3] - 1 < 3)" (( "(") (binary_expression "puVar8[3] - 1 < 3" (binary_expression "puVar8[3] - 1" (subscript_expression "puVar8[3]" (identifier "puVar8") ([ "[") (number_literal "3") (] "]")) (- "-") (number_literal "1")) (< "<") (number_literal "3")) () ")")) (compound_statement "{\n        local_60 = (undefined1)*(undefined4 *)(&DAT_004947f4 + (puVar8[3] - 1) * 4);\n      }" ({ "{") (expression_statement "local_60 = (undefined1)*(undefined4 *)(&DAT_004947f4 + (puVar8[3] - 1) * 4);" (assignment_expression "local_60 = (undefined1)*(undefined4 *)(&DAT_004947f4 + (puVar8[3] - 1) * 4)" (identifier "local_60") (= "=") (binary_expression "(undefined1)*(undefined4 *)(&DAT_004947f4 + (puVar8[3] - 1) * 4)" (parenthesized_expression "(undefined1)" (( "(") (identifier "undefined1") () ")")) (* "*") (cast_expression "(undefined4 *)(&DAT_004947f4 + (puVar8[3] - 1) * 4)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(&DAT_004947f4 + (puVar8[3] - 1) * 4)" (( "(") (binary_expression "&DAT_004947f4 + (puVar8[3] - 1) * 4" (pointer_expression "&DAT_004947f4" (& "&") (identifier "DAT_004947f4")) (+ "+") (binary_expression "(puVar8[3] - 1) * 4" (parenthesized_expression "(puVar8[3] - 1)" (( "(") (binary_expression "puVar8[3] - 1" (subscript_expression "puVar8[3]" (identifier "puVar8") ([ "[") (number_literal "3") (] "]")) (- "-") (number_literal "1")) () ")")) (* "*") (number_literal "4"))) () ")"))))) (; ";")) (} "}"))) (expression_statement "pcVar3 = (char *)puVar8[6];" (assignment_expression "pcVar3 = (char *)puVar8[6]" (identifier "pcVar3") (= "=") (cast_expression "(char *)puVar8[6]" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "puVar8[6]" (identifier "puVar8") ([ "[") (number_literal "6") (] "]")))) (; ";")) (if_statement "if ((pcVar3 == (char *)0x0) || (*pcVar3 == '\0')) {\n        uVar5 = local_54 << 8 | local_54 >> 8;\n      }\n      else {\n        local_34[0] = local_2c;\n        sVar9 = strlen(pcVar3);\n        FUN_00072b90(local_34,pcVar3,pcVar3 + sVar9,0);\n                    \n        cVar4 = FUN_0030f450(param_1,local_34,param_4);\n        if (cVar4 == '\0') {\n          if (local_34[0] != local_2c) {\n            FUN_003ae080(local_34[0]);\n          }\n          uVar5 = 0;\n        }\n        else {\n          uVar5 = local_54 << 8 | local_54 >> 8;\n          if (local_34[0] != local_2c) {\n            FUN_003ae080(local_34[0]);\n          }\n        }\n      }" (if "if") (parenthesized_expression "((pcVar3 == (char *)0x0) || (*pcVar3 == '\0'))" (( "(") (binary_expression "(pcVar3 == (char *)0x0) || (*pcVar3 == '\0')" (parenthesized_expression "(pcVar3 == (char *)0x0)" (( "(") (binary_expression "pcVar3 == (char *)0x0" (identifier "pcVar3") (== "==") (cast_expression "(char *)0x0" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (|| "||") (parenthesized_expression "(*pcVar3 == '\0')" (( "(") (binary_expression "*pcVar3 == '\0'" (pointer_expression "*pcVar3" (* "*") (identifier "pcVar3")) (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")"))) () ")")) (compound_statement "{\n        uVar5 = local_54 << 8 | local_54 >> 8;\n      }" ({ "{") (expression_statement "uVar5 = local_54 << 8 | local_54 >> 8;" (assignment_expression "uVar5 = local_54 << 8 | local_54 >> 8" (identifier "uVar5") (= "=") (binary_expression "local_54 << 8 | local_54 >> 8" (binary_expression "local_54 << 8" (identifier "local_54") (<< "<<") (number_literal "8")) (| "|") (binary_expression "local_54 >> 8" (identifier "local_54") (>> ">>") (number_literal "8")))) (; ";")) (} "}")) (else_clause "else {\n        local_34[0] = local_2c;\n        sVar9 = strlen(pcVar3);\n        FUN_00072b90(local_34,pcVar3,pcVar3 + sVar9,0);\n                    \n        cVar4 = FUN_0030f450(param_1,local_34,param_4);\n        if (cVar4 == '\0') {\n          if (local_34[0] != local_2c) {\n            FUN_003ae080(local_34[0]);\n          }\n          uVar5 = 0;\n        }\n        else {\n          uVar5 = local_54 << 8 | local_54 >> 8;\n          if (local_34[0] != local_2c) {\n            FUN_003ae080(local_34[0]);\n          }\n        }\n      }" (else "else") (compound_statement "{\n        local_34[0] = local_2c;\n        sVar9 = strlen(pcVar3);\n        FUN_00072b90(local_34,pcVar3,pcVar3 + sVar9,0);\n                    \n        cVar4 = FUN_0030f450(param_1,local_34,param_4);\n        if (cVar4 == '\0') {\n          if (local_34[0] != local_2c) {\n            FUN_003ae080(local_34[0]);\n          }\n          uVar5 = 0;\n        }\n        else {\n          uVar5 = local_54 << 8 | local_54 >> 8;\n          if (local_34[0] != local_2c) {\n            FUN_003ae080(local_34[0]);\n          }\n        }\n      }" ({ "{") (expression_statement "local_34[0] = local_2c;" (assignment_expression "local_34[0] = local_2c" (subscript_expression "local_34[0]" (identifier "local_34") ([ "[") (number_literal "0") (] "]")) (= "=") (identifier "local_2c")) (; ";")) (expression_statement "sVar9 = strlen(pcVar3);" (assignment_expression "sVar9 = strlen(pcVar3)" (identifier "sVar9") (= "=") (call_expression "strlen(pcVar3)" (identifier "strlen") (argument_list "(pcVar3)" (( "(") (identifier "pcVar3") () ")")))) (; ";")) (expression_statement "FUN_00072b90(local_34,pcVar3,pcVar3 + sVar9,0);" (call_expression "FUN_00072b90(local_34,pcVar3,pcVar3 + sVar9,0)" (identifier "FUN_00072b90") (argument_list "(local_34,pcVar3,pcVar3 + sVar9,0)" (( "(") (identifier "local_34") (, ",") (identifier "pcVar3") (, ",") (binary_expression "pcVar3 + sVar9" (identifier "pcVar3") (+ "+") (identifier "sVar9")) (, ",") (number_literal "0") () ")"))) (; ";")) (expression_statement "cVar4 = FUN_0030f450(param_1,local_34,param_4);" (assignment_expression "cVar4 = FUN_0030f450(param_1,local_34,param_4)" (identifier "cVar4") (= "=") (call_expression "FUN_0030f450(param_1,local_34,param_4)" (identifier "FUN_0030f450") (argument_list "(param_1,local_34,param_4)" (( "(") (identifier "param_1") (, ",") (identifier "local_34") (, ",") (identifier "param_4") () ")")))) (; ";")) (if_statement "if (cVar4 == '\0') {\n          if (local_34[0] != local_2c) {\n            FUN_003ae080(local_34[0]);\n          }\n          uVar5 = 0;\n        }\n        else {\n          uVar5 = local_54 << 8 | local_54 >> 8;\n          if (local_34[0] != local_2c) {\n            FUN_003ae080(local_34[0]);\n          }\n        }" (if "if") (parenthesized_expression "(cVar4 == '\0')" (( "(") (binary_expression "cVar4 == '\0'" (identifier "cVar4") (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n          if (local_34[0] != local_2c) {\n            FUN_003ae080(local_34[0]);\n          }\n          uVar5 = 0;\n        }" ({ "{") (if_statement "if (local_34[0] != local_2c) {\n            FUN_003ae080(local_34[0]);\n          }" (if "if") (parenthesized_expression "(local_34[0] != local_2c)" (( "(") (binary_expression "local_34[0] != local_2c" (subscript_expression "local_34[0]" (identifier "local_34") ([ "[") (number_literal "0") (] "]")) (!= "!=") (identifier "local_2c")) () ")")) (compound_statement "{\n            FUN_003ae080(local_34[0]);\n          }" ({ "{") (expression_statement "FUN_003ae080(local_34[0]);" (call_expression "FUN_003ae080(local_34[0])" (identifier "FUN_003ae080") (argument_list "(local_34[0])" (( "(") (subscript_expression "local_34[0]" (identifier "local_34") ([ "[") (number_literal "0") (] "]")) () ")"))) (; ";")) (} "}"))) (expression_statement "uVar5 = 0;" (assignment_expression "uVar5 = 0" (identifier "uVar5") (= "=") (number_literal "0")) (; ";")) (} "}")) (else_clause "else {\n          uVar5 = local_54 << 8 | local_54 >> 8;\n          if (local_34[0] != local_2c) {\n            FUN_003ae080(local_34[0]);\n          }\n        }" (else "else") (compound_statement "{\n          uVar5 = local_54 << 8 | local_54 >> 8;\n          if (local_34[0] != local_2c) {\n            FUN_003ae080(local_34[0]);\n          }\n        }" ({ "{") (expression_statement "uVar5 = local_54 << 8 | local_54 >> 8;" (assignment_expression "uVar5 = local_54 << 8 | local_54 >> 8" (identifier "uVar5") (= "=") (binary_expression "local_54 << 8 | local_54 >> 8" (binary_expression "local_54 << 8" (identifier "local_54") (<< "<<") (number_literal "8")) (| "|") (binary_expression "local_54 >> 8" (identifier "local_54") (>> ">>") (number_literal "8")))) (; ";")) (if_statement "if (local_34[0] != local_2c) {\n            FUN_003ae080(local_34[0]);\n          }" (if "if") (parenthesized_expression "(local_34[0] != local_2c)" (( "(") (binary_expression "local_34[0] != local_2c" (subscript_expression "local_34[0]" (identifier "local_34") ([ "[") (number_literal "0") (] "]")) (!= "!=") (identifier "local_2c")) () ")")) (compound_statement "{\n            FUN_003ae080(local_34[0]);\n          }" ({ "{") (expression_statement "FUN_003ae080(local_34[0]);" (call_expression "FUN_003ae080(local_34[0])" (identifier "FUN_003ae080") (argument_list "(local_34[0])" (( "(") (subscript_expression "local_34[0]" (identifier "local_34") ([ "[") (number_literal "0") (] "]")) () ")"))) (; ";")) (} "}"))) (} "}")))) (} "}")))) (expression_statement "local_36 = uVar5;" (assignment_expression "local_36 = uVar5" (identifier "local_36") (= "=") (identifier "uVar5")) (; ";")) (expression_statement "local_44 = 0;" (assignment_expression "local_44 = 0" (identifier "local_44") (= "=") (number_literal "0")) (; ";")) (expression_statement "local_40 = 0;" (assignment_expression "local_40 = 0" (identifier "local_40") (= "=") (number_literal "0")) (; ";")) (expression_statement "local_3c = 0;" (assignment_expression "local_3c = 0" (identifier "local_3c") (= "=") (number_literal "0")) (; ";")) (expression_statement "local_38 = local_5c << 4;" (assignment_expression "local_38 = local_5c << 4" (identifier "local_38") (= "=") (binary_expression "local_5c << 4" (identifier "local_5c") (<< "<<") (number_literal "4"))) (; ";")) (expression_statement "local_37 = local_60;" (assignment_expression "local_37 = local_60" (identifier "local_37") (= "=") (identifier "local_60")) (; ";")) (expression_statement "iVar2 = *(int *)(param_1 + 0x40);" (assignment_expression "iVar2 = *(int *)(param_1 + 0x40)" (identifier "iVar2") (= "=") (pointer_expression "*(int *)(param_1 + 0x40)" (* "*") (cast_expression "(int *)(param_1 + 0x40)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x40)" (( "(") (binary_expression "param_1 + 0x40" (identifier "param_1") (+ "+") (number_literal "0x40")) () ")"))))) (; ";")) (expression_statement "iVar1 = local_50 * 4;" (assignment_expression "iVar1 = local_50 * 4" (identifier "iVar1") (= "=") (binary_expression "local_50 * 4" (identifier "local_50") (* "*") (number_literal "4"))) (; ";")) (expression_statement "uVar7 = FUN_00359950(param_2,param_1,local_58,pcVar11,&local_48);" (assignment_expression "uVar7 = FUN_00359950(param_2,param_1,local_58,pcVar11,&local_48)" (identifier "uVar7") (= "=") (call_expression "FUN_00359950(param_2,param_1,local_58,pcVar11,&local_48)" (identifier "FUN_00359950") (argument_list "(param_2,param_1,local_58,pcVar11,&local_48)" (( "(") (identifier "param_2") (, ",") (identifier "param_1") (, ",") (identifier "local_58") (, ",") (identifier "pcVar11") (, ",") (pointer_expression "&local_48" (& "&") (identifier "local_48")) () ")")))) (; ";")) (expression_statement "local_50 = local_50 + 1;" (assignment_expression "local_50 = local_50 + 1" (identifier "local_50") (= "=") (binary_expression "local_50 + 1" (identifier "local_50") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "*(undefined4 *)(iVar2 + iVar1) = uVar7;" (assignment_expression "*(undefined4 *)(iVar2 + iVar1) = uVar7" (pointer_expression "*(undefined4 *)(iVar2 + iVar1)" (* "*") (cast_expression "(undefined4 *)(iVar2 + iVar1)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar2 + iVar1)" (( "(") (binary_expression "iVar2 + iVar1" (identifier "iVar2") (+ "+") (identifier "iVar1")) () ")")))) (= "=") (identifier "uVar7")) (; ";")) (} "}")) (while "while") (parenthesized_expression "(local_50 < *(int *)(param_1 + 0x38))" (( "(") (binary_expression "local_50 < *(int *)(param_1 + 0x38)" (identifier "local_50") (< "<") (pointer_expression "*(int *)(param_1 + 0x38)" (* "*") (cast_expression "(int *)(param_1 + 0x38)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x38)" (( "(") (binary_expression "param_1 + 0x38" (identifier "param_1") (+ "+") (number_literal "0x38")) () ")"))))) () ")")) (; ";")) (} "}"))) (return_statement "return;" (return "return") (; ";")) (} "}")))

/* WARNING: Function: __x86.get_pc_thunk.ax replaced with injection: get_pc_thunk_ax */
/* WARNING: Enum "DT": Some values do not have unique names */
/* WARNING: Enum "ELFOSABI": Some values do not have unique names */
/* DWARF original prototype: void do_add_symbols(Sized_pluginobj<32,_true> * this, Symbol_table *
   symtab, Read_symbols_data * param_2, Layout * layout) */

void __thiscall
var_11::Sized_pluginobj<32,var_33>::do_add_symbols
          (Sized_pluginobj<32,var_33> *this,Symbol_table *symtab,Read_symbols_data *param_2,
          Layout *layout)

{
  anon_union_16_2_edb7204a_for_basic_string<char,var_12::char_traits<char>,var_12::var_3<char>var_5>var_29
  *var_30;
  type_1 *var_9;
  type_2 var_17;
  type_2 var_16;
  char *var_19;
  int var_21;
  char cVar6;
  bool bVar7;
  type_3 uVar8;
  type_4 var_14;
  type_5 *pSVar10;
  type_6 *plVar11;
  size_t var_27;
  type_4 var_13;
  char *var_20;
  type_7 local_60;
  char var_32;
  char *local_58;
  type_3 var_23;
  int var_18;
  var_1<32,var_33> var_2;
  type_7 symbuf [16];
  basic_string<var_4,_std::char_traits<var_4>,var_12::var_3<var_4>var_5> var_6;
  
  var_2.p_ = (var_7<32> *)symbuf;
  if (parameters->options_ == (type_8 *)0x0) {
                    /* WARNING: Subroutine does not return */
    var_8("../../gold/parameters.h",0x5c,"options");
  }
  var_9 = parameters->options_->plugins_->recorder_;
  var_14 = (this->super_Pluginobj).nsyms_;
  if (var_9 != (type_1 *)0x0) {
    Plugin_recorder::var_10(var_9,(type_9 *)this,var_14,(this->super_Pluginobj).syms_);
    var_14 = (this->super_Pluginobj).nsyms_;
  }
  var_17 = (this->super_Pluginobj).symbols_.
            super__Vector_base<var_11::type_5*,var_12::var_3<var_11::type_5*>var_5>._M_impl._M_finish;
  var_16 = (this->super_Pluginobj).symbols_.
            super__Vector_base<var_11::type_5*,var_12::var_3<var_11::type_5*>var_5>._M_impl._M_start;
  var_13 = (int)var_17 - (int)var_16 >> 2;
  if (var_13 < var_14) {
    std::vector<var_11::type_5*,var_12::var_3<var_11::type_5*>var_5>::var_15
              (&(this->super_Pluginobj).symbols_,var_14 - var_13);
    var_14 = (this->super_Pluginobj).nsyms_;
  }
  else if ((var_14 < var_13) && (var_16 = var_16 + var_14, var_17 != var_16)) {
    (this->super_Pluginobj).symbols_.
    super__Vector_base<var_11::type_5*,var_12::var_3<var_11::type_5*>var_5>._M_impl._M_finish = var_16;
  }
  var_18 = 0;
  if (0 < (int)var_14) {
    do {
      plVar11 = (this->super_Pluginobj).syms_ + var_18;
      var_19 = plVar11->name;
      var_20 = plVar11->version;
      local_58 = var_19;
      if ((var_19 != (char *)0x0) && (local_58 = (char *)0x0, *var_19 != '\0')) {
        local_58 = var_19;
      }
      if ((var_20 != (char *)0x0) && (*var_20 == '\0')) {
        var_20 = (char *)0x0;
      }
      var_21 = plVar11->def;
      if (var_21 == 1) {
        var_32 = '\x02';
        var_23 = 1;
        goto LAB_003123e2;
      }
      if (var_21 == 3) {
        cVar6 = '\x02';
LAB_003124f7:
        var_32 = cVar6;
        var_23 = 0;
      }
      else {
        var_32 = '\x01';
        cVar6 = '\x01';
        if (var_21 < 0) goto LAB_003124f7;
        if (var_21 < 2) {
          var_23 = 1;
        }
        else {
          var_23 = 0xfff2;
          if (var_21 != 4) goto LAB_003124f7;
        }
      }
LAB_003123e2:
      local_60 = '\0';
      var_14 = plVar11->visibility - 1;
      if (var_14 < 3) {
        local_60 = (type_7)*(type_10 *)(var_22 + var_14 * 4);
      }
      var_19 = plVar11->comdat_key;
      if ((var_19 == (char *)0x0) || (*var_19 == '\0')) {
        uVar8 = var_23 << 8 | var_23 >> 8;
      }
      else {
        var_30 = &var_6.field_2;
        var_6._M_dataplus._M_p = (type_2)var_30;
        var_27 = var_24(var_19);
        std::__cxx11::basic_string<var_4,var_12::char_traits<var_4>,var_12::var_3<var_4>var_5>::
        var_25<var_26*>(&var_6,var_19,var_19 + var_27,0);
                    /* try { // try from 0031255b to 0031255f has its CatchHandler @ 0031261e */
        bVar7 = Pluginobj::var_28(&this->super_Pluginobj,&var_6,layout);
        if (bVar7) {
          uVar8 = var_23 << 8 | var_23 >> 8;
          if ((anon_union_16_2_edb7204a_for_basic_string<var_4,var_12::char_traits<var_4>,var_12::var_3<var_4>var_5>var_29
               *)var_6._M_dataplus._M_p != var_30) {
            var_31(var_6._M_dataplus._M_p);
          }
        }
        else {
          if ((anon_union_16_2_edb7204a_for_basic_string<var_4,var_12::char_traits<var_4>,var_12::var_3<var_4>var_5>var_29
               *)var_6._M_dataplus._M_p != var_30) {
            var_31(var_6._M_dataplus._M_p);
          }
          uVar8 = 0;
        }
      }
      symbuf._14_2_ = uVar8;
      symbuf[0] = '\0';
      symbuf[1] = '\0';
      symbuf[2] = '\0';
      symbuf[3] = '\0';
      symbuf[4] = '\0';
      symbuf[5] = '\0';
      symbuf[6] = '\0';
      symbuf[7] = '\0';
      symbuf[8] = '\0';
      symbuf[9] = '\0';
      symbuf[10] = '\0';
      symbuf[0xb] = '\0';
      symbuf[0xc] = var_32 << 4;
      symbuf[0xd] = local_60;
      var_16 = (this->super_Pluginobj).symbols_.
                super__Vector_base<var_11::type_5*,var_12::var_3<var_11::type_5*>var_5>._M_impl._M_start +
                var_18;
      pSVar10 = Symbol_table::add_from_pluginobj<32,var_33>(symtab,this,local_58,var_20,&var_2);
      var_18 = var_18 + 1;
      *var_16 = pSVar10;
    } while (var_18 < (this->super_Pluginobj).nsyms_);
  }
  return;
}


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

/* WARNING: Function: __i686.get_pc_thunk.ax replaced with injection: get_pc_thunk_ax */

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

{
  int iVar1;
  int iVar2;
  char *pcVar3;
  char cVar4;
  ushort uVar5;
  uint uVar6;
  undefined4 uVar7;
  undefined4 *puVar8;
  size_t sVar9;
  uint uVar10;
  char *pcVar11;
  undefined1 local_60;
  char local_5c;
  char *local_58;
  ushort local_54;
  int local_50;
  undefined4 *local_48;
  undefined4 local_44;
  undefined4 local_40;
  undefined4 local_3c;
  char local_38;
  undefined1 local_37;
  ushort local_36;
  undefined1 *local_34 [2];
  undefined1 local_2c [28];
  
  local_48 = &local_44;
  if (*(int *)(DAT_005ea7c8 + 8) == 0) {
                    /* WARNING: Subroutine does not return */
    FUN_002446e0("../../gold/parameters.h",0x5c,"options",param_1);
  }
  iVar1 = *(int *)(*(int *)(*(int *)(DAT_005ea7c8 + 8) + 0x593c) + 0xd4);
  uVar6 = *(uint *)(param_1 + 0x38);
  if (iVar1 != 0) {
    FUN_0030c0e0(iVar1,param_1,uVar6,*(undefined4 *)(param_1 + 0x3c));
    uVar6 = *(uint *)(param_1 + 0x38);
  }
  uVar10 = *(int *)(param_1 + 0x44) - *(int *)(param_1 + 0x40) >> 2;
  if (uVar10 < uVar6) {
    FUN_002352a0(param_1 + 0x40,uVar6 - uVar10);
    uVar6 = *(uint *)(param_1 + 0x38);
  }
  else if ((uVar6 < uVar10) &&
          (iVar1 = *(int *)(param_1 + 0x40) + uVar6 * 4, *(int *)(param_1 + 0x44) != iVar1)) {
    *(int *)(param_1 + 0x44) = iVar1;
  }
  local_50 = 0;
  if (0 < (int)uVar6) {
    do {
      puVar8 = (undefined4 *)(local_50 * 0x20 + *(int *)(param_1 + 0x3c));
      pcVar3 = (char *)*puVar8;
      pcVar11 = (char *)puVar8[1];
      local_58 = pcVar3;
      if ((pcVar3 != (char *)0x0) && (local_58 = (char *)0x0, *pcVar3 != '\0')) {
        local_58 = pcVar3;
      }
      if ((pcVar11 != (char *)0x0) && (*pcVar11 == '\0')) {
        pcVar11 = (char *)0x0;
      }
      iVar1 = puVar8[2];
      if (iVar1 == 1) {
        local_5c = '\x02';
        local_54 = 1;
        goto LAB_003123e2;
      }
      if (iVar1 == 3) {
        cVar4 = '\x02';
LAB_003124f7:
        local_5c = cVar4;
        local_54 = 0;
      }
      else {
        local_5c = '\x01';
        cVar4 = '\x01';
        if (iVar1 < 0) goto LAB_003124f7;
        if (iVar1 < 2) {
          local_54 = 1;
        }
        else {
          local_54 = 0xfff2;
          if (iVar1 != 4) goto LAB_003124f7;
        }
      }
LAB_003123e2:
      local_60 = 0;
      if (puVar8[3] - 1 < 3) {
        local_60 = (undefined1)*(undefined4 *)(&DAT_004947f4 + (puVar8[3] - 1) * 4);
      }
      pcVar3 = (char *)puVar8[6];
      if ((pcVar3 == (char *)0x0) || (*pcVar3 == '\0')) {
        uVar5 = local_54 << 8 | local_54 >> 8;
      }
      else {
        local_34[0] = local_2c;
        sVar9 = strlen(pcVar3);
        FUN_00072b90(local_34,pcVar3,pcVar3 + sVar9,0);
                    /* try { // try from 0031255b to 0031255f has its CatchHandler @ 0031261e */
        cVar4 = FUN_0030f450(param_1,local_34,param_4);
        if (cVar4 == '\0') {
          if (local_34[0] != local_2c) {
            FUN_003ae080(local_34[0]);
          }
          uVar5 = 0;
        }
        else {
          uVar5 = local_54 << 8 | local_54 >> 8;
          if (local_34[0] != local_2c) {
            FUN_003ae080(local_34[0]);
          }
        }
      }
      local_36 = uVar5;
      local_44 = 0;
      local_40 = 0;
      local_3c = 0;
      local_38 = local_5c << 4;
      local_37 = local_60;
      iVar2 = *(int *)(param_1 + 0x40);
      iVar1 = local_50 * 4;
      uVar7 = FUN_00359950(param_2,param_1,local_58,pcVar11,&local_48);
      local_50 = local_50 + 1;
      *(undefined4 *)(iVar2 + iVar1) = uVar7;
    } while (local_50 < *(int *)(param_1 + 0x38));
  }
  return;
}

